어떻게 한 번 잠그면 열쇠로만 여는 자물쇠, 암호화
편지를 봉투에 넣지 않고 여러 사람 손을 거쳐 전한다고 하자. 중간에 편지를 받아 넘기는 사람마다 내용을 그대로 읽을 수 있다. 아무 처리 없이 인터넷으로 보낸 메시지가 바로 이런 편지예요. 암호화는 이 편지를 열쇠 없이는 읽을 수 없는 뒤죽박죽 글자로 바꾼다. 중간에서 누가 가로채도 뜻을 알 수 없고, 맞는 열쇠를 가진 사람만 원래 글로 되돌려 읽는다.
그냥 보낸 글은 누구나 읽어요
메시지는 상대에게 곧장 가지 않는다. 공유기, 통신사 장비, 중계 서버 같은 여러 중간 지점을 차례로 거쳐 도착해요. 글을 아무 처리 없이 그대로 보내면 이 길을 지나는 동안 거치는 곳마다 내용을 읽을 수 있다.
이렇게 손대지 않은 원래 글을 평문이라고 부른다. 평문은 봉투 없는 편지와 같다.
길 위의 중간 지점을 하나씩 눌러 보자. 평문이라 어느 지점에서든 내용이 그대로 보여요.
어느 지점을 눌러도 같은 글이 그대로 보였다. 대부분의 지점은 받은 것을 넘겨줄 뿐이지만, 한 곳이라도 마음먹으면 내용을 읽고 베낄 수 있다는 것이 문제예요. 공용 와이파이처럼 누가 운영하는지 모르는 길이라면 더욱 그렇다.
비밀번호나 카드 번호가 이렇게 지나간다고 생각하면 아찔하다. 그래서 보내기 전에 남이 못 읽게 잠가 두는데, 그 잠그는 일이 암호화다.
잠그면 뜻 없는 글이 돼요
암호화는 평문을 정해진 방법에 따라 뒤섞어 읽어도 뜻을 알 수 없는 글로 바꾸는 일이다. 이렇게 잠긴 글을 암호문이라고 한다. 암호문에도 글자는 보이지만 의미는 사라져서 그저 뒤죽박죽일 뿐이에요.
이때 뒤섞는 방법은 열쇠와 짝을 이룬다. 같은 방법이라도 열쇠가 다르면 전혀 다른 암호문이 나오고, 그 열쇠가 있어야만 거꾸로 풀 수 있다.
잠그기를 눌러 평문을 암호화해 보자. 읽을 수 있던 글이 뜻 없는 암호문으로 바뀌어요.
잠그기를 누르자 또렷하던 글이 알아볼 수 없는 글자로 바뀌었다. 내용을 지운 것이 아니라 열쇠 없이는 못 읽게 잠가 둔 것이에요. 여기서 해시와의 차이가 드러난다. 해시는 되돌릴 수 없는 지문을 만들지만, 암호화는 열쇠만 있으면 원래 글로 되돌릴 수 있다.
그렇다면 이 뒤죽박죽은 어떻게 다시 원래 글이 될까? 답은 잠글 때 쓴 열쇠에 있다.
올바른 열쇠로만 풀려요
잠긴 암호문을 다시 읽으려면 열쇠로 풀어야 한다. 이 일을 복호화라고 부른다. 맞는 열쇠를 대면 뒤죽박죽이던 글이 원래 평문으로 돌아와요. 자물쇠에 맞는 열쇠를 꽂아 여는 것과 같다.
틀린 열쇠를 대면 글은 풀리지 않는다. 그래서 열쇠를 가진 사람만 내용을 볼 수 있고, 열쇠가 없는 중간의 누구도 암호문을 평문으로 되돌리지 못한다.
열쇠를 하나 고르고 풀기를 눌러 보자. 맞는 열쇠면 원문이 돌아오고, 틀린 열쇠면 풀리지 않아요.
맞는 열쇠로는 원문이 돌아왔고 틀린 열쇠로는 막혔다. 이 점이 암호화를 쓸모 있게 만든다. 잠그는 방법 자체는 널리 알려져 있어도 괜찮아요. 오히려 공개된 방법을 많은 전문가가 오래 검증한 것이 더 믿을 만하다.
진짜 비밀은 열쇠 하나다. 방법은 공개하고 열쇠만 숨긴다는 이 원칙을 케르크호프스의 원리라고 부른다. 그렇다면 잠그고 푸는 일은 실제로 어디에서 우리를 지켜 줄까?
보낼 때도 저장할 때도 지켜요
암호화가 비밀을 지키는 자리는 크게 두 곳이다. 첫째는 전송 중이다. 메시지가 인터넷을 건너며 중간 지점을 지날 때 암호화해 두면, 누가 가로채도 손에 쥐는 것은 암호문뿐이에요.
둘째는 저장할 때다. 파일이나 데이터가 휴대폰이나 서버에 가만히 담겨 있는 동안에도, 기기를 잃어버리거나 서버가 털리면 누군가 들여다볼 수 있다. 암호화해서 저장하면 열쇠 없이는 그 저장본을 읽지 못한다.
전송 중과 저장 시를 번갈아 눌러 보자. 어느 경우든 엿보는 사람이 쥐는 것은 암호문뿐이라 내용이 지켜져요.
전송 중이든 저장 중이든 암호화된 글은 열쇠 없이는 뒤죽박죽일 뿐이었다. 중요한 데이터는 보낼 때도 잠그고 담아 둘 때도 잠가야 양쪽에서 비밀이 지켜져요. 다만 암호화는 내용을 못 읽게 할 뿐, 누가 보냈는지나 중간에 바뀌지 않았는지까지 저절로 보증하지는 않는다. 그 문제는 뒤에서 전자 서명으로 다룬다.
그리고 한 가지가 더 남았다. 잠그고 푸는 데 꼭 필요한 열쇠를 주고받는 사람끼리 어떻게 안전하게 나눠 가질까?
정리
정리하면 이렇다. 그냥 보낸 평문은 길 위의 누구나 읽을 수 있다. 암호화는 평문을 열쇠로 잠가 뜻 없는 암호문으로 바꾸고, 맞는 열쇠로만 풀리게 한다. 그래서 열쇠를 가진 사람만 내용을 본다.
덕분에 보낼 때도 저장할 때도 비밀이 지켜져요. 잠그는 방법은 알려져도 되고, 비밀은 열쇠 하나에 모여 있다.
핵심을 차례로 눌러 되짚어 보자. (평문은 엿보임 → 잠그면 암호문 → 맞는 열쇠로만 풀림 → 전송과 저장을 지킴)
이제 비밀을 지키는 가장 기본적인 도구를 손에 넣었다. 잠그고, 열쇠로만 풀고, 보낼 때도 담아 둘 때도 지키는 것이다. 하지만 좋은 자물쇠가 있어도 열쇠를 흘리면 소용이 없어요.
다음 레슨에서는 같은 열쇠 하나로 잠그고 푸는 대칭키 암호를 살펴보고, 그 열쇠를 멀리 있는 상대에게 어떻게 건넬지라는 골치 아픈 문제와 마주한다.