인터넷 쇼핑몰에서 물건을 살 때, 다른 사람이 내 컴 퓨터와 인터넷 쇼핑몰의 컴퓨터 사이에 오고가는 정보를 읽 어서 내가 입력한 신용 카드 정보를 빼내면 어쩌나 하고 걱정하는 사람이 많다. 그러나 공개키 암호화 방식을 이용하면 정보를 주고받는 당사자 이외에는 그 정보를 볼 수 없도록 할 수 있다.


공개키 암호화 방식에서는 각각의 컴퓨터가 다른 컴퓨터와 절대로 겹치는 법이 없는 한 쌍의 키를 준비한다. 내 컴퓨터가 준비한 키 쌍을 각각 공개키 A와 비밀키 a라고 하자. 공개키 A는 다른 컴퓨터에 알려주는 데에 사용하고 비밀키 a는 내 컴퓨터에만 보관한다. 공개키 A로 암호화된 정보는 오직 비밀키 a가 있어야만 해독되어 원래의 정보로 만들 수 있으며, 공개키 A를 가지고도 해독될 수 없다. 따라서 비밀키 a만 내 컴퓨터 밖으로 빠져나가지 않게 하면 공개키 A는 다른 컴퓨터에 알려 주어도 무방하다.


이제 인터넷 서점 ‘책마을’에 접속하여 책을 구매하는 경우를 생각해 보자. 책마을 컴퓨터가 공개키 B와 비밀키 b를 가지고 있다고 하면, 내 컴퓨터가 책마을 컴퓨터에 접속하자마자 두 컴퓨터는 자동적으로 자신들의 공개키를 교환한다. 즉 내 컴퓨터는 B를, 책마을 컴퓨터는 A를 알게 되는 것이다. 이제 내가 책을 주문하기 위해서 신용 카드 정보를 내 컴퓨터에 입력하면 내 컴퓨터는 이것을 책마을 컴퓨터의 공개키 B로 암호화하여 전송한다. 책마을 컴퓨터는 암호화된 정보를 자신의 비밀키 b로 해독하여 원래의 신용 카드 정보를 얻는다. 공개키 B로 암호화하여 보내진 정보는 비밀키 b를 갖고 있는 책마을 컴퓨터만 해독할 수 있으므로 다른 사람이 내 신용 카드 정보를 해독하기는 불가능하다.


내 컴퓨터의 공개키 A는 다른 컴퓨터에서도 알 수 있으므로 다른 사람이 나인 척하고 자기 컴퓨터에서 공개키 A를 알려주고 책을 주문한다면 곤란한 문제가 발생할 수 있다. 이러한 문제를 방지하기 위해서는 책마을 컴퓨터가 받고 있는 정보의 송신자가 내 컴퓨터라는 것을 확인해야 한다. 이를 위해서 책마을 컴퓨터는 내 컴퓨터에 ‘책마을만세’와 같은 임의의 단어를 보내면서 이 단어를 내 컴퓨터의 비밀키 a로 암호화한 후, 원래 단어와 암호화된 단어를 함께 보내달라고 요구한다. 공개키 암호화 방식에서는 비밀키 a로 암호화된 정보가 공개키 A로만 해독이 가능하다. 따라서 내 컴퓨터는 원래의 단어와 암호화된 단어를 함께 전송하고, 이 두 정보를 전송 받은 책마을 컴퓨터는 암호화된 단어를 공개키 A로 해독한 후에 전송 받은 원래 단어와 일치하는지 확인한다. 만약 이들이 일치한다면 공개키 A를 가진 컴퓨터(내 컴퓨터)가 보낸 정보임에 틀림없다는 것을 알 수 있다.


어떤 사람은 자기 컴퓨터가 가르쳐 준 공개키 A에서 비밀키 a를 알아내면 어쩌나 하고 걱정할지 모른다. 그러나 이러한 일은 기술적으로만 본다면 거의 불가능하다. 비밀키 a에서는 간단한 계산만으로 공개키 A를 얻을 수 있다. 그러나 공개키 A에서 비밀키 a를 구하기 위해서는 현재 가장 속도가 빠른 슈퍼컴퓨터를 동원하더라도 수십 년 동안 계산해야 할 정도로 엄청난 시간을 필요로 한다. 따라서 공개키 암호화 방식은 일반적으로 사람들이 안심하고 사용해도 좋다고 할 수 있다.