이번 포스트에서는 Public key system에 대해서 소개합니다.
Public key system 이전에 전통적으로 많이 사용되던 symmetric key system과 비교하면서 간략하게 개념을 소개하겠습니다.
기존의 symmetric key system에서는 암호화와 복호화에 사용되는 암호 키가 동일했습니다. 따라서 서로 다른 party A, B가 암호화된 메세지를 주고받기 위해서는 서로 동일한 키를 공유해야 했습니다. 이는 정보를 주고받는 과정에서 대칭키가 유출될 위험이 있다는 문제가 있습니다.
Public key system에서는 모두가 한 쌍의 키를 가지고 있고, 이를 각각 public key, private key라고 합니다. 이름에서 알 수 있듯, public key는 공개된 키이고, private key는 소유자 외에는 공개되지 않는 키입니다. Public key system에서는 어떻게 서로 암호화된 메시지를 주고받는 것일까요?
Bob과 Alice가 있다고 가정해 보겠습니다. Bob이 Alice에게만 어떤 중요한 메시지를 보내려고 합니다.
1) Bob은 Alice의 public key를 통해 메시지를 암호화합니다.
2) Alice는 자신의 private key를 통해 메시지를 복호화합니다.
만약 Alice가 아닌 Grace가 와서 메시지를 복호화하려고 시도하면 실패합니다. 암호화할 당시 Alice의 public key를 사용했기 때문입니다.
Public key를 통해 암호화된 메시지를 대응하는 Private key를 통해서만 복호화할 수 있습니다.
Public key system에서는 서로 다른 party가 정보를 주고받기 위해서 키를 공유할 필요가 없습니다.
Public key system은 어떻게 구축되는 것일까요? Private key를 알고 있는 경우에만 특정 정보를 복호화할 수 있게 하려면 어떻게 해야 할까요?
Trapdoor one-way function은 일방향함수의 일종으로, 보통의 일방향함수처럼 함수의 역을 구하는 건 매우 어렵지만 trap door라는 특수한 정보가 있으면 쉽게 역을 찾을 수 있는 함수를 말합니다. 현재 public key system들은 이러한 trapdoor one-way function에 기반을 두고 설계돼 있습니다.
Trapdoor 함수의 특성을 이용해 누구나 자유롭게 암호화할 수 있지만, 반대로 private key를 알고 있어야만 복호화할 수 있도록 하는 것이죠.
사용하는 trapdoor one-way function에 따라 RSA, Diffie-Hellman, Elgamal 암호 체계가 존재합니다.
다음 포스트에서는 RSA 암호 체계에 대해서 알아 보겠습니다.