CS/정보보호

[정보보호] Public-Key Cryptography

k9yuw 2023. 11. 10. 22:45

Private-Key Cryptography

- Private key가 sender과 receiver에게 동시에 공유되는 symmetric한 암호화 방식이다.

- 모든 party들이 동등하게 정보를 나누어 가지기 때문에, receiver이 정보를 forging(위조)한 후 sender로부터 받은 정보라고 주장하는 것을 막을 수 없다. 

 

Public-Key Cryptography

- 2가지의 키를 사용하는 asymmetric한 암호화 방식이다. 

1) Public Key: 모두에게 공유됨

① message encrypt ② verify signatures 하는데에 사용

2) Private Key: recipient들이 각각 가짐

① message decrypt ② sign signatures 하는데에 사용

▶ public key로부터 private key를 알아낼 수 없다.(Infeasible 하다.)

 

- private-key 방식을 대체하기보다는 보충한다.(Complements rather than replacing)

 

- 사용하는 목적 2가지

1) Key distribution: 제3자(KDC: Key Distribution Center)의 개입 없이 sender과 receiver 사이 key를 공유하기 위함

2) Digital Signatures: Claimed Sender로부터 data가 generate 되었다는 것을 표시 

 

** Private Key와 Public Key 방식의 차이점!

 

Public Key를 사용하여 Encryption

Bob이 Alice한테 정보를 전송할 때, 알려진 Alice의 공개키로 encrypt를 진행하면 Alice는 자신의 private key를 이용하여 decrypt 한다. 

 

Private Key를 사용하여 Encryption

반대로 Bob이 자신의 private key를 사용하여 encrypt 하고, Alice가 공개된 Bob의 Public Key를 이용하여 decrypt 할 수도 있다. 하지만 이는 confidential 하지 않은데, 모두가 공개된 public key를 이용하여 decrypt 할 수 있기 때문이다. 이 방식은 Confidentiality는 떨어지지만, Data Signature을 생성하는데 사용할 수 있다. 즉 Authentication과 Integrity에 초점을 맞춘 방식인 것이다. 

 


키 교환 알고리즘

키를 교환하는 알고리즘의 특성으로는 3가지를 꼽을 수 있다.

1) Encryption / Decryption: Secrecy를 제공

2) Digital Signatures: Authentication을 제공

3) Key Exchange: Session Key(대칭키)를 안전하게 교환

 


Public-Key Requirements

1. Party B가 key pair을 생성해야 한다.

 

2. sender A가 PUb로 M을 encrypt 하여 C를 도출해야 한다.

 

3. receiver B가 PRb로 C를 decrypt 하여 M을 도출해야 한다. 

 

4. PUb로 PRb를 결정하는 것이 computationally infeasible 해야 한다.

5. PUb, C만으로 original message M을 recover 하는 것이 computationally infeasible 해야 한다. 

 

6. public key, private key로 둘다 encrypt 할 수 있다. (두 순서 다 가능)

 

7. practical public key scheme은 trapdoor one-way function을 필요로 한다. 이는 key를 알면 inverse 할 수 있어 쉽게 decrypt 할 수 있는 function을 말한다. 


Public Key Schemes의 Security

이론적으로 Public Key 방식에서 brute force attack은 언제든지 가능하다. 따라서 Countermeasure(대책)으로써 1) brute force를 impractical 하게 할 만큼 key가 커야 하지만, 2) encryption / decryption을 할 수 있도록 충분히 작아야 한다. (Trade-off: 균형을 맞추어야 한다.) 즉 Public key 방식은 Key size가 커야 하기 때문에 private key 방식과 비교하여 더 느리다.