seegongsik
보안

어떻게 몰래 열쇠 나눠 갖기

두 사람이 같은 자물쇠를 쓰려면 같은 열쇠가 있어야 한다. 그런데 그 열쇠를 어떻게 건넬까? 우편으로 보내면 중간에서 누가 베낄 수 있고, 직접 만나자니 너무 멀어요. 놀랍게도 열쇠를 한 번도 보내지 않고 두 사람이 같은 열쇠를 갖는 방법이 있다. 둘이 함께 만들어 내는 것이다.

01

빠른 열쇠를 안전하게 나눠야 해요

앞 레슨에서 본 공개키 암호는 안전하지만 계산이 무거워 느리다. 긴 내용을 통째로 이것으로 주고받으면 너무 오래 걸려요. 그래서 실제 내용은 대칭키 암호로 빠르게 잠근다.
문제는 대칭키를 쓰려면 두 사람이 똑같은 열쇠를 가져야 한다는 점이다. 대칭키 레슨에서 막혔던 키 배송 문제가 여기서 다시 나온다. 공개키로 대칭키를 잠가 보내는 방법도 있지만, 이번에는 아예 열쇠를 보내지 않는 다른 길을 살펴본다.

어느 열쇠 방식을 쓸까
두 방식을 눌러 장단점을 견줘요.

공개키와 대칭키를 눌러 견줘 보자. 공개키는 안전하지만 느리고, 대칭키는 빠르지만 같은 열쇠를 나눠 가져야 해요.

빠른 대칭키를 쓰고 싶은 마음은 분명하다. 하지만 그 열쇠를 그냥 보내면 위험해요. 중간에서 누가 베끼면 자물쇠가 아무리 튼튼해도 소용이 없다.
그러니 열쇠 자체는 길에 내보내지 않으면서 두 사람이 같은 열쇠를 갖는 방법이 필요하다. 이 방법을 물감 섞기에 빗대어 그려 보자.

02

공개 색에 비밀 색을 섞어요

두 사람을 가람과 나래라고 하자. 먼저 둘이 함께 쓸 공개 색 하나를 정한다. 이 색은 누가 봐도 상관없어요. 다음으로 각자 남에게 절대 보여 주지 않을 비밀 색을 하나씩 고른다.
가람은 공개 색에 자기 비밀 색을 섞어 새 색을 만들고, 나래도 공개 색에 자기 비밀 색을 섞어 새 색을 만든다. 그리고 이 섞인 색만 서로에게 보낸다. 물감은 한번 섞이면 어떤 색을 섞었는지 다시 갈라내기 어렵다는 점이 중요하다.

가람
공개 색
+
비밀 색
보낼 색
나래
공개 색
+
비밀 색
보낼 색
각자 공개 색에 비밀 색을 눌러 섞어요. 비밀 색은 보내지 않아요.

가람과 나래가 각자 공개 색에 비밀 색을 섞도록 눌러 보자. 섞인 두 색만 서로에게 보내지고, 비밀 색은 손에 그대로 남아요.

이제 가람은 나래가 보낸 섞인 색을, 나래는 가람이 보낸 섞인 색을 들고 있다. 둘 다 공개 색도 안다. 아직은 서로 다른 색을 들고 있지만, 한 단계만 더 가면 같아져요.
각자 받은 색에 자기 비밀 색을 한 번 더 섞으면 두 사람이 똑같은 색에 이른다. 왜 그런지 직접 확인해 보자.

03

둘이 같은 최종 색에 도달해요

가람이 든 것은 나래의 비밀 색이 섞인 색이고, 가람은 여기에 자기 비밀 색을 섞는다. 그러면 공개 색에 두 사람의 비밀 색이 모두 섞인 색이 된다. 나래도 똑같이 가람의 비밀 색이 섞인 색에 자기 비밀 색을 섞어요.
섞는 순서는 달라도 들어간 색이 같으니 결과는 같다. 그래서 두 사람은 똑같은 최종 색에 이른다. 이 최종 색이 둘만 아는 공유 비밀이고, 이것을 대칭키로 쓴다.

가람
받은 색
+
내 비밀 색
최종 색
나래
받은 색
+
내 비밀 색
최종 색
받은 색에 자기 비밀 색을 눌러 다시 섞어요.

가람과 나래가 받은 색에 자기 비밀 색을 한 번 더 섞도록 눌러 보자. 두 사람이 똑같은 최종 색에 이르는 것이 보여요.

두 칸의 최종 색이 똑같아졌다. 열쇠는 한 번도 길에 나가지 않았고, 오간 것은 공개 색과 섞인 색뿐이에요. 그런데도 둘은 같은 열쇠를 손에 넣었다.
같은 비밀을 보내는 것이 아니라 함께 만드는 것, 이것이 키 교환의 핵심이다. 처음 이 방법을 내놓은 두 사람의 이름을 따서 디피·헬먼 키 교환이라고 부르고, 실제로는 물감 대신 큰 수의 계산을 쓴다. 그렇다면 오가는 색을 누가 다 엿보면 어떻게 될까?

04

엿봐도 최종 색은 못 만들어요

길에서 오가는 색을 모두 지켜보는 사람이 있다고 하자. 이 사람은 공개 색을 안다. 가람이 보낸 섞인 색도, 나래가 보낸 섞인 색도 봤어요. 그래도 최종 색은 만들 수 없다.
최종 색을 만들려면 누군가의 비밀 색이 있어야 하는데, 비밀 색은 한 번도 길에 나오지 않았다. 섞인 색에서 비밀 색만 다시 뽑아내는 것도 아주 어렵다. 그래서 엿보는 사람은 같은 최종 색에 이르지 못한다.

엿보는 사람이 본 것
?최종 색 (못 만듦)
엿보는 사람이 길에서 본 것을 하나씩 눌러 짚어요.

엿보는 사람이 길에서 본 것을 하나씩 눌러 짚어 보자. 공개 색과 섞인 색은 다 보여도, 비밀 색이 없어 최종 색은 만들 수 없어요.

엿보는 사람의 손에는 빈칸이 남았다. 비밀 색이라는 마지막 조각이 없기 때문이에요. 그래서 가람과 나래는 이 최종 색을 둘만의 대칭키로 안심하고 쓸 수 있다.
다만 조심할 점이 있다. 엿보기만 하는 사람은 막아도, 중간에서 가람인 척 나래와, 나래인 척 가람과 따로 색을 섞는 사람은 막지 못한다. 그래서 키 교환은 상대가 진짜인지 확인하는 서명, 인증서와 함께 써야 한다. 또 하나, 키 교환은 공개키로 내용을 잠그는 것과는 다른 일이다.

05

정리

정리하면 이렇다. 공개키 암호는 안전하지만 느려서 실제 내용은 빠른 대칭키로 주고받는다. 그 대칭키는 보내는 것이 아니라 함께 만든다. 공개 색에 각자의 비밀 색을 섞어 교환하고, 받은 색에 자기 비밀 색을 다시 섞으면 두 사람이 같은 최종 색, 곧 공유 비밀에 이른다.
엿보는 사람은 비밀 색이 없어 그 색을 만들지 못해요. 키 교환은 같은 비밀을 함께 만드는 절차이고, 공개키로 내용을 잠그는 공개키 암호화와는 다르다.

두 개념을 갈라 보자
두 개념을 눌러 정의와 쓰임을 갈라요. 둘은 다른 일이에요.

두 개념을 눌러 갈라 보자. 키 교환은 공유 비밀을 함께 만드는 일이고, 공개키 암호화는 공개키로 내용을 잠그는 일이에요.

이제 멀리 떨어진 두 사람이 열쇠를 길에 흘리지 않고도 같은 비밀을 함께 가질 수 있다는 것을 알았다. 이 단순한 색 섞기의 원리가 오늘날 웹사이트에 안전하게 접속할 때마다 쓰여요. 브라우저와 서버는 접속할 때마다 이 방식으로 그 연결에만 쓸 새 대칭키를 만들고, 연결이 끝나면 버린다. 그래서 나중에 서버의 개인키가 새더라도 지난 대화는 풀 수 없는데, 이 성질을 전방 비밀성이라고 부른다.
남은 숙제는 중간에 끼어든 가짜를 걸러 내는 일이다. 다음 레슨에서는 개인키로 남긴 표시로 메시지를 정말 그 사람이 보냈는지 확인하는 전자 서명을 다룬다.

한 줄 정리공개키 암호는 안전하지만 느려서 실제 내용은 빠른 대칭키로 주고받는다. 문제는 그 대칭키를 어떻게 안전하게 나눠 갖느냐인데, 답은 함께 만드는 것이다. 물감 섞기로 그려 보면, 두 사람은 함께 아는 공개 색에 각자의 비밀 색을 섞은 색만 서로에게 보내요. 받은 색에 자기 비밀 색을 다시 섞으면 두 사람은 똑같은 최종 색에 이르고, 이것이 공유 비밀, 곧 대칭키가 된다. 엿보는 사람은 공개 색과 섞인 색을 봐도 비밀 색을 모르니 같은 색을 만들지 못한다. 다만 중간에서 양쪽인 척하는 공격은 막지 못하므로 서명과 인증서로 상대를 확인해야 해요.
← 보안
이 페이지가 도움 됐다면 후원하기