-
인터넷: 암호화와 공개 키
-
안녕하세요, 저는 미아 길에프너에요. 저는 UC 버클리에서
컴퓨터 과학을 전공했고
-
지금은 국방부에서 일하고 있어요. 여기서 저는 정보를
안전하게 지키는 업무를 맡고 있죠.
-
인터넷은 공개되어 있고 공용 시스템이에요.
우리는 공유된 선과 연결을 통해 정보를 주고 받죠.
-
하지만 공개된 시스템이라고 하더라도
비공개로 교환하는 데이터가 많죠.
-
예를 들어 신용카드번호, 은행 정보,
암호, 이메일 같은거요.
-
그러면 어떻게 해야 비공개 정보를 안전하게 지킬까요?
모든 종류의 데이터는 암호화, 스크램블링 또는
-
원래의 텍스트를 숨기는 메시지 변경 등의
프로세스를 통해 비밀이 유지됩니다.
-
여기서 해독은 메시지를 읽을 수 있도록
언스크램블링하는 프로세스이죠.
-
이것은 간단한 아이디어이고, 인류는
수 세기 동안 이렇게 해왔어요. 잘 알려진
-
최초의 방법은 시저의 암호였죠.
로마의 장군인 줄리우스 시저의 이름을 딴거죠.
-
시저는 군대의 명령을 암호화하여
중간에서 적이 가로채더라도
-
읽을 수 없게 만들었죠.
시저의 암호는 메시지의 각 글자를
-
알파벳에 매칭되는 특정 숫자로
대체하는 알고리즘이에요.
-
만약 숫자를 보내는 사람과
받는 사람만 안다면, 이것을 키라고 부르죠.
-
이렇게 되면 읽는 사람이 비밀 메시지를
해독할 수 있죠.
-
예를 들어, 오리지널 메시지가 'HELLO'라고 하고,
시저의 암호에서 5를 사용하면,
-
암호화된 메시지는 이것이 되죠...
이 메시지를 해독하려면, 수신자는
-
키를 사용하여 간단히 거꾸로 돌릴 수 있죠.
하지만 여기에는 큰 문제가 있어요.
-
가능한 키를 모두 시도해보면, 누구라도 쉽게
암호화된 메시지를 풀 수 있어요.
-
영어 알파벳은 26자 밖에 없으므로,
26개의 키만 시도해보면 메시지를 해독할 수 있죠.
-
26개의 가능한 키를 시도해 보는 것은 어렵지 않아요.
기껏해야 1-2시간이면 되죠.
-
그래서 좀 더 어렵게 해보자면, 모든 글자를
똑같은 수로 이동하는 대신에,
-
각 글자를 다른 숫자만큼 돌리는 거에요.
이 예에서, 10자리 키로 각 글자의 포지션을
-
바꾸어 더 긴 메시지를
암호화할 수 있습니다.
-
이 키가 얼마나 어려울까요. 10자리를
암호화하면 답이 100억개가 될 수 있어요.
-
분명 이것은 인간의 한계를 넘는 것이죠.
몇 백년이 걸릴 거에요.
-
하지만 오늘날 보통의 컴퓨터라면,
100억 개의 가능성을 시도하는 데 몇 초면 됩니다.
-
따라서 현대의 세계에서는 나쁜 사람들이
연필 대신에 컴퓨터로 무장하고 있죠.
-
나쁜 사람들이 암호를 풀 수 없게 만들려면
얼마나 어렵게 암호화해야 할까요?
-
너무 어렵다는 말은 일정 시간 안에
계산해야 할 가능성이 너무 많다는 의미입니다.
-
오늘날 보안통신은 256비트 키를 사용합니다.
나쁜 사람들의 컴퓨터가 메시지를 가로채면
-
키를 찾고 메시지를 해독할 때까지
엄청나게 많은 가능성을 시도해봐야 되는거죠.
-
100,000대의 슈퍼 컴퓨터가 있고
각 컴퓨터가 초당 몇 천조의 키를
-
시도할 수 있다고 하더라도
모든 옵션을 시도하여
-
256비트 암호로 보호된 메시지를 해독하는 데
몇 백억년이 걸릴 것입니다.
-
물론 컴퓨터 칩이 매년 2배 더 빨라지고
크기는 절반으로 줄어들고 있죠.
-
이러한 기하급수적인 발전이 계속된다면,
오늘날의 불가능한 문제도
-
수 백년 후면 해결될 겁니다.
256비트도 안전해지지 않게 되겠죠.
-
사실 이미 표준 키 길이를 늘려서
컴퓨터 발전 속도를 따라 잡고 있습니다.
-
좋은 소식은 더 긴 키를 사용해도
암호화하는게 더 어려워지지는 않습니다.
-
하지만 암호를 풀기 위해 시도해야 하는
추측의 수는 기하급수적으로 증가하죠.
-
보내는 사람과 받는 사람이 동일한 키를
공유하여 메시지를 변환하고 해석하는 것을
-
대칭 암호화하고 합니다. 시저의 암호같은
대칭 암호화를 사용하려면,
-
미리 양쪽이 비밀리에 비밀 키에 동의해야 합니다.
그래서 사람끼리 만나는 경우에는 좋지만,
-
하지만 인터넷은 공개되어 있기 때문에,
두 컴퓨터가 비밀리에 "만나" 비밀 키를
-
공유할 수 없습니다. 그래서 컴퓨터는 비대칭 암호화
즉, 누구와도 교환할 수 있는 공개 키와
-
공유되지 않는 비공개 키를 사용합니다.
공개 키는 데이터를 암호화하는 데
-
사용되고 누구라도 이것으로 비밀 메시지를
만들 수 있습니다. 하지만, 비밀은 비공개 키로
-
액세스할 수 있는 컴퓨터로만 암호화할 수 있습니다.
이 방법은 우리가 지금 당장 볼 수 없는
-
수학으로 이루어집니다. 이렇게 생각해보죠.
지금 개인 우편함이 있다고 상상해봐요.
-
누구나 거기에 우편물을 넣을 수 있지만,
열쇠가 필요해요. 이제 내가 그 열쇠를
-
복사해서 친구에게 주거나
아니면 일반에게 공개할 수도 있죠.
-
친구나 심지어 모르는 사람도 공개 열쇠를
사용해서 우편함을 열어 메시지를 넣을 수 있지만,
-
우편함을 열고 받은 비밀 메시지를 보려면
비공개 열쇠가 있어야 되요.
-
그리고 반대로 비밀 메시지를
친구에게 보내려면 공개 열쇠로
-
친구의 우편함에 넣을 수 있어요.
이런 식으로 비공개 키에 대한 합의 없이도
-
비밀 메시지를 교환할 수 있지요. 공개 키 암호 방식은
공개된 인터넷에서 사용하는 보안 메시징의 기초입니다.
-
SSL 및 TLS로 알려진 보안 프로토콜을 포함하여
-
이 방식으로 웹을 탐색하는 사용자를 보호합니다.
오늘날 컴퓨터는 이 방식을 사용하죠.
-
브라우저의 주소창에 조그만 자물쇠나
https라는 글자가 그것을 나타내죠.
-
이는 곧 컴퓨터가 공개 키 암호화로
교환되는 데이터를 보호함을 의미합니다.
-
점점 더 많은 사람들이 인터넷을 이용함에 따라,
더 많은 비공개 데이터가 전송됩니다.
-
그리고 데이터 보호에 대한 필요성이
점점 더 중요해지죠.
-
그리고 컴퓨터가 더욱 더 빨라짐에 따라
컴퓨터가 해독하기 어려운
-
새로운 방법의 암호화를 개발해야 합니다.
이것이 저의 업무이지만 계속해서 변하고 있어요.