본문 바로가기

Library/Cryptography

Public Key System

대칭키 암호 시스템은, Encryption / Decryption 과정에서 동일한 키가 사용된, 이와 반대로 비대칭키 암호 시스템에서는, Encryption 과정에서 사용되는 키와 Decryption 과정에서 사용되는 키가 다르다. DES, AES에서와 같은 대칭키, 블럭 암호 시스템에서는 동일한 키가 사용됨으로서 Encrpyion / Decryption 과정을 함께 수행할 수 있기 때문에 상대적으로 속도가 빨라진다는 점을 장점이라고 생각할 수도 있다. 하지만, 결국 Encryption / Decryption 과정에서 키가 필요하므로, Ciphertext를 해석할 키를 상대방에게 안전하게 전달해야 한다는 문제가 생기게 된다.

비대칭 암호 시스템은, 공개키 암호 시스템이라고도 하는데, 이것은 한 키는 비밀로 해야 하지만 다른 한 키는 모두에게 공개할 수 있기 때문이다. 공개키 암호를 사용하기로 한 약속한 어느 집단이 있다고 했을 때, 각각의 사용자들은 다음과 같은 키를 한 쌍씩 가지고 있다.

* Encryption에 필요한 공개키 E
* Decryption에 필요한 개인키(비밀키) D, E로부터 D를 추측할 수 없어야 한다.


키를 공개하고 나면, 메시지를 보내고자 하는 사람은 다음과 같은 과정을 거쳐서 전달한다.

1. 앨리스가 밥에게 메세지 m를 보내려고 한다. 앨리스는 밥의 공개키 E를 찾아낸다.
2. 앨리스는 E를 사용하여 E(m)으로 메세지 m을 Encryption한 다음, E(m)을 밥에게 보낸다.
3. 밥은 자신만 알고 있는 개인키 D를 사용하여 E(m)을 Decryption할 수 있다. D(E(m)) = m


공개키 암호 시스템은 다음과 같은 세 가지 좋은 장점을 가지고 있다.

* 참가자들은 서로 키를 주고 받을 필요가 없기 때문에 새로운 멤버는 원래멤버들에게 거의 영향을 주지 않고 시스템에 참가할 수 있다. 이것은, 대칭키 암호 시스템에서 가장 문제였던 사전에 키를 공유해야 한다는 문제를 해결한다.

* 키의 요구량이 훨씬 줄어든다. 대칭키 암호 시스템을 사용할 경우, n명의 참가자가 있다면 n(n - 1) / 2개의 서로 다른 키가 필요하다. 하지만 비대칭 암호 시스템을 사용한다면 각 참가자는 두 개의 키가 필요하고, 이 키 중 하나만 비밀로 하면 된다. 그러므로 키의 수는 참가자의 단지 두 배만 있으면 된다.

* 공개키 알고리즘은 디지털 서명에 아주 훌륭하게 응용될 수 있다. 즉 공개키와 비밀키가 사용자마다 서로 다르고, 특히 비밀키는 사용자 개인 이외에는 어느 누구도 알 수 없으므로 디지털 서명에 적합하다.


하지만, 공개키 암호 시스템도 몇 가지 단점을 가지고 있는데, 대표적으로

* 아직까지 공개키 암호 시스템은 암호 알고리즘들이 대칭키 방식에 비해 느리며,
* 공개키 알고리즘은 인증된 기관에서 키를 생성하는 것이 필요하며, 키 사용자의 관리가 필요하다.


Reference
최병문, 이영환(2007), 암호의 세계, 경문사