몰래 열쇠 나눠 갖기
두 사람이 같은 자물쇠를 쓰려면 같은 열쇠가 있어야 해요. 그런데 그 열쇠를 어떻게 건네죠? 우편으로 보내면 중간에서 누가 베껴 갈 수 있어요. 만나서 주자니 멀리 있고요. 놀랍게도, 열쇠를 직접 보내지 않고도 둘이 같은 열쇠를 가질 방법이 있어요. 함께 만들어 갖는 거예요.
빠른 열쇠를 안전하게 나눠야 해요
앞에서 공개키와 개인키, 두 열쇠를 봤죠.
공개키로 잠그면 개인키로만 열려서 아주 안전해요.
그런데 한 가지 약점이 있어요.
공개키 방식은 계산이 무거워서 느려요.
긴 편지 전체를 이걸로 주고받으면 너무 오래 걸려요.
그래서 실제로는 빠른 자물쇠 하나를 따로 써요.
잠그는 열쇠와 여는 열쇠가 같은 자물쇠,
이걸 대칭키라고 불러요.
대칭키는 빠른 대신, 둘이 똑같은 열쇠를 가져야 해요.
바로 그 같은 열쇠를 어떻게 안전히 나눠 갖느냐가 오늘의 문제예요.
두 방식을 눌러 견줘봐요. 공개키는 안전하지만 느리고, 대칭키는 빠르지만 같은 열쇠를 나눠 가져야 해요.
빠른 대칭키를 쓰고 싶은 마음은 분명해요.
문제는 그 열쇠를 그냥 보내면 위험하다는 거예요.
중간에서 누가 그 열쇠를 베껴 가면
자물쇠가 아무리 튼튼해도 소용이 없어요.
열쇠를 가진 사람이 다 열어볼 테니까요.
그러니 열쇠 자체를 길에 내보내지 않으면서
둘이 같은 열쇠를 갖는 방법이 필요해요.
그 방법을 색깔 섞기로 한번 그려볼게요.
공개 색에 비밀 색을 섞어요
두 사람을 가람과 나래라고 해요.
먼저 둘 다 아는 공개 색 하나를 정해요.
이 색은 누가 봐도 괜찮아요. 숨기지 않아요.
그다음 각자 마음속에 비밀 색을 하나씩 정해요.
이 비밀 색은 절대 남에게 보여주지 않아요.
가람은 공개 색에 자기 비밀 색을 섞어 새 색을 만들고,
나래도 공개 색에 자기 비밀 색을 섞어 새 색을 만들어요.
그리고 이 섞인 색만 서로에게 보내요.
비밀 색이 아니라, 섞인 색만요.
색은 한번 섞이면 어떤 두 색을 섞었는지 되돌리기 어려워요.
공개 색에 각자의 비밀 색을 눌러 섞어봐요. 섞인 두 색만 서로에게 보내져요. 비밀 색은 보내지 않아요.
이제 가람은 나래가 보낸 섞인 색을,
나래는 가람이 보낸 섞인 색을 손에 들고 있어요.
둘 다 공개 색도 알고 있고요.
하지만 아직은 각자 다른 색을 들고 있어요.
같은 열쇠가 되려면 한 단계가 더 남았어요.
여기서 작은 마법 같은 일이 일어나요.
각자 받은 색에 자기 비밀 색을 한 번 더 섞으면
두 사람이 똑같은 색에 도달하거든요.
왜 같아지는지 다음에서 직접 확인해봐요.
둘이 같은 최종 색에 도달해요
가람이 손에 든 건 나래의 비밀이 섞인 색이에요.
여기에 가람이 자기 비밀 색을 또 섞어요.
그러면 공개 색에 두 사람의 비밀 색이 다 섞인 색이 돼요.
나래도 똑같이 해요.
나래가 든 건 가람의 비밀이 섞인 색,
거기에 나래 자기 비밀 색을 또 섞어요.
결과는 역시 공개 색에 두 비밀 색이 다 섞인 색이에요.
섞는 순서가 달라도 들어간 색이 같으면 결과는 같아요.
그래서 둘은 똑같은 최종 색에 도달해요.
이 최종 색이 바로 둘만 아는 공유 비밀, 곧 대칭키예요.
두 칸의 최종 색이 똑같아졌죠.
열쇠 자체는 한 번도 길에 나가지 않았어요.
오간 건 공개 색과, 각자 섞은 색뿐이에요.
그런데도 둘은 같은 열쇠를 손에 넣었어요.
이게 키 교환의 핵심이에요.
같은 비밀을 보내는 게 아니라 함께 만드는 거예요.
그럼 자연스레 이런 걱정이 들어요.
오가는 색을 누가 다 엿보면 어떻게 되죠?
그래도 안전할까요?
엿봐도 최종 색은 못 만들어요
길에서 오가는 색을 다 지켜보는 사람을 생각해봐요.
이 사람은 공개 색을 알아요. 누구나 아니까요.
가람이 보낸 섞인 색도 봤고,
나래가 보낸 섞인 색도 봤어요.
그럼 최종 색을 만들 수 있을까요?
없어요.
최종 색을 만들려면 누군가의 비밀 색이 필요한데,
비밀 색은 한 번도 길에 나오지 않았거든요.
섞인 색에서 비밀 색만 다시 끄집어내기도 아주 어렵고요.
그래서 엿보는 사람은 같은 최종 색에 도달하지 못해요.
이게 키 교환이 지켜주는 방어의 핵심이에요.
엿보는 사람이 가진 것을 눌러 짚어봐요. 공개 색과 오간 섞인 색은 보여도, 비밀 색이 없어 최종 색은 못 만들어요.
엿보는 사람의 손에는 빈칸이 남았죠.
비밀 색이라는 마지막 조각이 없어서예요.
공개된 정보만으로는 최종 색을 못 채워요.
그래서 가람과 나래는 안심하고
이 최종 색을 둘만의 대칭키로 쓸 수 있어요.
빠른 대칭키를, 길에 열쇠를 흘리지 않고 손에 넣은 거예요.
이제 한 가지만 짚고 정리해요.
키 교환은 공개키로 내용을 암호화하는 것과는 다른 일이에요.
자주 헷갈리는 지점이라 마지막에 또렷이 갈라둘게요.
정리해볼까요
한 줄로 모으면 이래요.
공개키는 안전하지만 느려서,
실제 내용은 빠른 대칭키로 주고받아요.
그 대칭키는 보내는 게 아니라 함께 만들어요.
공개 색에 각자 비밀 색을 섞어 교환하고,
받은 색에 자기 비밀 색을 다시 섞으면
둘이 같은 최종 색, 곧 공유 비밀에 도달해요.
엿보는 사람은 비밀 색이 없어 그 색을 못 만들어요.
끝으로, 키 교환은 공개키 암호화와는 다른 일이에요.
키 교환은 같은 비밀을 함께 만드는 절차고, 그 뒤에 대칭키로 빠르게 주고받아요.
두 개념을 눌러 갈라봐요. 키 교환은 공유 비밀을 함께 만드는 일, 공개키 암호화는 공개키로 내용을 잠그는 일이에요.
이제 멀리 떨어진 두 사람이
열쇠를 길에 흘리지 않고도
같은 비밀을 함께 가질 수 있다는 걸 알게 됐어요.
공개 색에 비밀 색을 섞고, 섞인 색만 교환하고,
각자 비밀 색을 다시 섞어 같은 최종 색에 닿는 것.
이 단순한 색깔 섞기가
우리가 안전하게 인터넷을 쓰는 바탕이에요.
다음엔 이렇게 만든 안전한 통로 위에서
상대가 진짜 그 사람이 맞는지
어떻게 확인하는지 함께 살펴봐요.