선생님이 유능한 해커였다는 정보까지 나왔네요! 해커가 있다면 단순히 정보를 훔쳐 보고 전달하는 스파이가 있는 것보다 더 큰 일이에요. 인터넷 곳곳에 도사리는 해커를 피해 중요한 정보를 전달하는 방법, 지금 알려드릴게요!
처음 이용하는 온라인 쇼핑몰에서 장난감을 산다고 생각해 보세요. 원하는 물건을 고른 뒤 온라인 상점 주인에게 계좌정보를 보내고 결제를 해야겠죠. 이때 통장 비밀번호같이 중요한 내용은 비밀코드를 이용해 암호로 만들어야 해요. 그리고 비밀코드를 전달해 내가 만든 암호를 상대방이 풀어낼 수 있게 하고요.
그런데 비밀코드를 전달할 때 처음과 똑같은 문제가 일어나요. 암호 만드는 방법을 중간에 누가 훔쳐보면 그 다음에 어떤 암호로 바꿔도 비밀번호를 금방 해독할 수 있으니까요. 그래서 수학자들과 컴퓨터 과학자들은 아예 문제를 정면 돌파하기로 했어요. 비밀코드를 그냥 공개된 장소에 두고 누가 봐도 상관없게 만든 거죠! 일명 ‘공개 키 암호화’예요.
자, 그럼 원리를 차근차근 살펴볼게요. 공개 키 암호화는 정보를 암호로 만드는 ‘암호화’와 암호를 해독하는 ‘복호화’에 서로 다른 키를 사용해요. 암호화에 사용하는 키는 ‘공개 키’, 복호화에 사용하는 키는 ‘개인 키’죠. 공개 키는 개인 키를 이용해서 풀 수 있는 복잡한 수학 문제로 이뤄져 있어요.
예를 들어 가장 널리 쓰이는 공개 키 암호의 한 종류인 ‘RSA 암호’는 소인수분해 문제를 활용해 키를 만들어요. 두 소수를 정해놓고 곱셈을 하는 건 쉽지만 이 곱셈의 결과물인 아주 큰 수에서 원래 두 소수를 찾는 건 굉장히 어렵고 시간도 오래 걸리는 문제거든요. 정보를 받으려는 사람은 개인 키로는 쉽게 풀 수 있지만 공개 키만 가지고는 풀기 힘든 수학 문제를 만들어 인터넷에 공개해둬요. 누구나 암호를 만들 수 있지만 푸는 건 자신만 할 수 있도록 말이에요.
다시 장난감을 사는 상황으로 돌아가 보죠. 구매자는 온라인 상점 주인이 올려놓은 공개 키를 가져와서 내 계좌번호를 암호로 만들어 전송하고, 상점 주인은 자신만 가진 개인 키를 사용해 이 암호를 다시 원래 숫자로 되돌려요. 그러면 거래가 있을 때마다 키를 분배할 필요도 없고 키를 누가 훔쳐볼까 봐 걱정할 필요도 없어요. 아무도 모르는 곳에 개인 키를 잘 보관하는 문제만 신경 쓰면 되죠! 어때요, 기발하지 않나요?