지금까지 공개 키 암호 시스템이 무엇이며 어떤 기능이 있는지 알아보았습니다. 이제 기존 비밀 키 암호 시스템(대칭 키 암호 시스템)을 사용하던 상황에서 공개 키 암호 시스템을 어떤 목적에서 개발했는지 살펴봅니다.
공개 키 암호 시스템의 등장 배경은 공개 키 암호 시스템의 첫 번째 기능인 공개 키 암호화(수신자 지정 암호화)와 밀접한 관련이 있습니다. 비밀 키 암호 시스템에서 두 사람이 암호화된 메시지를 안전하게 주고받으려면 비밀 키를 공유해야 합니다. 송신자가 암호화할 때 사용한 비밀 키와 동일한 비밀 키가 복호화할 때 필요하기 때문입니다. 그러다 보니 키를 어떻게 안전하게 나눠 가질 것인가 하는 현실적인 문제가 발생합니다. 두 사람이 직접 만나 키를 공유하지 않는 한 멀리 떨어진 사람에게 안전하게 비밀 키를 전달할 방법이 없기 때문이지요. 수신자를 지정할 수 있는 공개 키 암호화 기능(공개 키 암호 시스템의 첫 번째 기능)은 이것의 해결책으로 처음 등장했습니다.
송신자는 비밀 키 암호 시스템으로 암호화한 메시지를 보내면서 ‘자신이 사용한 비밀 키를 공개 키로 암호화하여’ 암호화한 메시지와 함께 전송합니다. 수신자는 자신에게 있는 개인 키로 암호화(공개 키 암호화, 즉 수신자 지정 암호화)된 비밀 키를 복호화하고, 그렇게 얻은 비밀 키로 다시 암호화(비밀 키 시스템으로 암호화)된 메시지를 복호화합니다. 즉, 공개 키와 개인 키를 잘 분배할 수 있는 구조(공개 키 기반 구조 : Public Key Infrastructure, PKI)만 미리 구축한다면 송신자와 수신자는 서로 만나지 않고도 안전하게 통신할 수 있습니다.3
비밀 키 암호 시스템은 순열과 치환을 여러 형태로 반복 배치하는 SP 네트워크 방식으로 구현합니다. 하지만 공개 키 암호 시스템에서는 수학적으로 비대칭적인 연산이 필요합니다.4 이런 비대칭 연산을 처음 제안한 사람이 바로 암호학 역사에서 빼놓을 수 없는 디피(Diffie)와 헬먼(Hellman)입니다.
| 디피와 헬먼 |

3 공개 키 암호 시스템의 두 번째 기능인 전자서명은 그 이후 발전합니다.
4 대칭 연산이 암호화와 복호화 과정에서 동일한 수준의 노력이 필요한 연산이라면, 비대칭 연산은 일방향성 연산으로 암호화와 복호화 과정에서 다른 수준의 노력이 필요한 연산이라고만 간단히 이해합니다. 본문에서 설명하는 일방향 트랩도어 함수가 바로 비대칭 연산의 한 예입니다.