열쇠 두 개의 마법, 공개키
지난 강에서 같은 열쇠 하나로 잠그고 푸는 방법을 봤어요. 빠르고 깔끔했지만 한 가지 골치가 남았죠. 멀리 있는 사람에게 그 열쇠를 어떻게 몰래 건네느냐는 문제요. 그런데 만약 잠그는 열쇠와 푸는 열쇠가 서로 다르다면 어떨까요? 잠그는 열쇠는 온 세상에 나눠줘도 되고, 푸는 열쇠는 나만 꼭 쥐고 있다면요.
열쇠가 두 개예요
지난 강의 대칭키는 열쇠가 하나였어요.
그 하나로 잠그고 그 하나로 풀었죠.
공개키 암호는 이게 달라요.
짝을 이루는 열쇠 두 개를 써요.
하나는 공개키예요.
이름 그대로 누구에게나 나눠줘도 돼요.
다른 하나는 개인키예요.
이건 나만 꼭 쥐고 절대 안 내줘요.
두 열쇠는 한 짝으로 같이 만들어져서
서로 짝이 맞는 형제 같은 사이예요.
두 열쇠를 눌러 살펴봐요. 공개키는 누구에게나 나눠주고, 개인키는 나만 쥐고 있어요.
공개키는 활짝 펼쳐 둬도 괜찮았죠.
개인키는 깊이 숨겨 둬야 했고요.
같은 짝이지만 역할이 정반대예요.
하나는 세상에 알리고
하나는 끝까지 비밀로 지켜요.
여기서 자연스러운 질문이 생겨요.
열쇠가 두 개라면
잠글 때는 어느 걸 쓰고
풀 때는 어느 걸 쓰는 걸까요?
다음에서 잠그는 쪽부터 봐요.
공개키로 잠가요
누군가에게 비밀 메시지를 보내고 싶다고 해봐요.
먼저 그 사람의 공개키를 구해요.
공개키는 누구나 가질 수 있으니 쉽게 얻어요.
그 공개키로 메시지를 잠가요.
공개키로 잠그는 건
받은 자물쇠를 메시지에 채우는 것과 같아요.
자물쇠는 누구나 채울 수 있어요.
하지만 한번 채우면
잠근 사람 자신도 못 열어요.
공개키로는 잠그기만 되고 풀기는 안 되거든요.
공개키를 눌러 메시지를 잠가봐요. 누구나 가진 공개키로 자물쇠가 채워져요.
공개키를 누르니 메시지가 잠겼죠.
이제 메시지는 알아볼 수 없는 모양이 됐어요.
중요한 점은 이거예요.
잠그는 데 쓴 건 비밀이 아닌 공개키였어요.
그러니 잠그는 일은 정말 누구나 할 수 있어요.
그런데 막상 잠가 놓고 보니
잠근 사람 자신도 다시 못 열어요.
공개키로 잠근 자물쇠를 여는 열쇠는 따로 있어요.
그 열쇠는 과연 무엇일까요?
다음에서 풀어봐요.
개인키로만 풀려요
공개키로 잠근 자물쇠는
오직 그 짝 개인키로만 풀려요.
같은 짝의 개인키를 대면 딸깍 열리고
엉뚱한 다른 키를 대면 꿈쩍도 안 해요.
심지어 잠글 때 썼던 그 공개키로도 못 열어요.
잠그는 열쇠와 푸는 열쇠가
아예 다른 거예요.
그래서 개인키를 가진 단 한 사람만
그 메시지를 읽을 수 있어요.
공개키를 온 세상이 가지고 있어도
읽는 권한은 개인키 주인에게만 있어요.
여러 열쇠를 차례로 대봐요. 짝 개인키만 자물쇠를 열고, 다른 키는 모두 실패해요.
짝 개인키를 댔을 때만 열렸죠.
공개키도, 엉뚱한 키도 다 실패했어요.
이 비대칭이 공개키 암호의 핵심이에요.
잠그기는 누구나, 풀기는 단 한 사람.
잠그는 권한은 활짝 열어 두고
푸는 권한만 단단히 잠가 둔 거예요.
바로 이 성질 덕분에
지난 강의 골치였던 문제가 풀려요.
열쇠를 비밀로 배송할 필요가
아예 사라지거든요.
다음에서 그 해결을 봐요.
키 배송 문제가 풀려요
대칭키에서는 같은 열쇠 하나를
둘이 똑같이 가지고 있어야 했어요.
그래서 그 열쇠를 몰래 건네는 일이 골치였죠.
도중에 누가 가로채면 끝이니까요.
공개키는 이 걱정이 없어요.
받을 사람의 공개키는 공개해도 안전해요.
누가 가져가도 그걸로는 잠그기만 되니까요.
푸는 개인키는 처음부터 주인 손을 안 떠나요.
그러니 비밀로 배송할 열쇠가 아예 없어요.
위험한 배송 단계 자체가 사라진 거예요.
두 방식을 눌러 견줘봐요. 대칭키는 비밀 배송이 필요하지만, 공개키는 공개해도 안전해 그 단계가 없어요.
두 방식을 나란히 놓고 보니
차이가 뚜렷했죠.
대칭키 줄에는 비밀 배송이라는
위태로운 단계가 꼭 끼어 있었어요.
공개키 줄에는 그 단계가 통째로 없어요.
공개키를 그냥 공개해 두면 되니까요.
빠른 대칭키와 안전한 키 나눔,
실제로는 둘을 함께 쓰는 경우가 많지만
그 이야기는 다음 강으로 미뤄요.
지금은 공개키가 키 배송 문제를
어떻게 풀었는지만 또렷이 챙겨요.
정리해볼까요
한 줄로 모으면 이래요.
공개키 암호는 짝을 이루는 열쇠 두 개를 써요.
공개키는 누구에게나 나눠주고,
개인키는 나만 꼭 쥐고 있어요.
공개키로 잠근 건 오직 짝 개인키로만 풀려요.
잠그기는 누구나, 풀기는 단 한 사람.
그래서 공개키는 공개해도 안전하고,
비밀로 배송할 열쇠가 아예 없어요.
대칭키의 키 배송 문제가 이렇게 풀려요.
공개키는 자물쇠를 나눠주는 것, 개인키는 나만의 열쇠.
핵심을 차례로 눌러 되짚어봐요. (열쇠 두 개 -> 공개키로 잠금 -> 개인키로만 풀림 -> 키 배송 문제 해결)
이제 열쇠 두 개의 마법을 알게 됐어요.
나눠주는 열쇠와 나만의 열쇠로
비밀을 안전하게 주고받는 방법이죠.
이 한 짝의 열쇠는 잠그고 푸는 데만 쓰는 게 아니에요.
순서를 뒤집어 개인키로 먼저 잠그면
이번엔 다른 일을 할 수 있어요.
바로 내가 보낸 게 맞다는 표시,
위조할 수 없는 서명이 돼요.
다음엔 같은 열쇠 한 짝으로 만드는
전자 서명을 함께 살펴봐요.