감옥에 갇힌 메리 여왕은 ‘치환’ 암호를 사용했다.
2차 세계대전에서 발명된 ‘봄브’는 컴퓨터의 조상뻘이라 할 만하다.
암호가 없었다면 정보화 시대는 올 수 없었다.
4월30일 유심 교체를 위해 서울 시내의 한 SKT 매장으로 몰려든 SK텔레콤 가입자들. ©시사IN 박미소
SK텔레콤의 유심 정보 유출로 여전히 어수선하다.
유심에는 민감한 개인정보가 들어 있다.
무엇보다 중요한 것은 ‘암호키’인데 이것이야말로 정보 보안을 지키는 핵심 정보다.
정보 보안이 없으면 정보화 시대도 없다.
이번 화에서는 정보 보안의 바탕인 암호에 대해 알아보자.
16세기 영국의 엘리자베스 여왕에게 메리 여왕은 눈엣가시였다.
엘리자베스가 사생아라고 주장하는 이들에게는 메리가 적법한 왕위 계승자였기 때문이다.
폐위된 메리를 다시 여왕으로 추대하려는 이들은 비밀리에 역모를 꾀했고, 감옥에 수감 중인 메리와 암호화된 문서로 소통하며 음모를 진행했다.
안타까운 일이지만 문서는 발각되고 암호문은 해독되어 1587년 메리는 형장의 이슬로 사라진다.
메리의 암호문은 앤서니 배빙턴에 의해 작성된 것으로 치환 암호의 변형인 ‘노멘클레이터’ 암호였다.
치환 암호는 고대 로마의 카이사르도 사용했던 방법으로, 알파벳의 순서를 바꾸거나 다른 문자로 치환하는 것이다.
간단한 예로 하나의 알파벳을 이웃한 다음 알파벳으로 치환하는 경우를 생각해보자. A→B, B→C, C→D, 이런 식으로 바꾼다는 뜻이다.
예를 들면 이렇다.
원문: I LOVE PHYSICS(나는 물리학을 사랑해)
암호문: J MPWF QIZTJDT
충분히 긴 암호문을 구할 수 있다면 치환 암호는 쉽게 해독할 수 있다.
문자의 사용 빈도를 알아낼 수 있기 때문이다.
영어의 알파벳은 사용 빈도가 다르다.
예를 들어, 빈도가 가장 높은 것은 ‘E’이고, 가장 낮은 것은 ‘Z’다.
따라서 알파벳을 다른 문자로 치환해도 빈도가 가장 높은 문자를 ‘E’라고 추론할 수 있다.
메리의 암호는 빈도 분석으로 해독되었다.
치환 암호의 약점을 보완하는 방법은 암호문에 등장하는 모든 문자의 사용 빈도를 같게 만드는 것이다.
이것은 기술적으로 쉽게 구현할 수 있다.
하지만 이렇게 해도 해독의 단서는 남는다.
영어에서 ‘Q’ 다음에는 거의 언제나 ‘U’가 따라온다.
QUEEN(여왕), QUIZ(퀴즈), QUESTION(질문) 같은 식이다.
‘Q’ 뒤에 ‘X’가 오는 경우는 거의 없다.
이처럼 이웃한 두 문자의 관계와 빈도를 조사하면 평문에 대한 단서를 얻을 수 있다.
암호문을 만들 때 문자들을 최대한 뒤섞어야 한다는 뜻이다.
과일을 대충 자르고 강판에 손으로 갈아서 주스를 만들면 조각이 남는다.
이로부터 재료를 추측할 수도 있다.
하지만 믹서기로 한참을 곱게 갈면 재료를 알기 힘들다.
단서를 없애려면 암호도 기계가 만들어야 한다는 뜻이다.
2차 세계대전 중 독일은 암호 기계 ‘에니그마’를 사용했다.
수많은 톱니바퀴를 이용하여 복잡하게 문자들을 뒤섞는 암호 기계였다.
에니그마를 적이 탈취하더라도 입력하는 ‘암호키’를 모르면 무용지물이었다.
암호키는 일련의 숫자인데 날마다 바뀌었다.
영국 정보부는 기계식 암호를 풀기 위해 ‘봄브’라는 기계식 해독 기계를 만든다.
봄브는 수학자 앨런 튜링의 아이디어였고, 컴퓨터의 조상뻘이라 할 만하다.
이후 독일의 통신은 무방비로 노출된다.
독일이 이 전쟁에서 이겼을 리 없다.
비운의 여왕 메리 스튜어트.
영국의 메리나 2차 세계대전의 독일군에게는 암호가 꼭 필요했을 테다.
이처럼 암호는 특별한 상황에서 쓰이는 것일 뿐, 우리 일상과는 상관없는 게 아닐까? 인터넷 시대가 오지 않았다면 암호는 정말 소수의 사람에게만 필요했으리라. 인터넷뱅킹을 한다고 상상해보자. 우선 은행 사이트에 접속하고 로그인한다.
로그인 비밀번호가 내 컴퓨터에서 은행의 컴퓨터로 이동한다.
비밀번호도 일종의 암호다.
암호의 문제는 비밀번호를 잘 외우고 남에게 알려주지 않는 것으로 끝이 아니다.
비밀번호가 인터넷을 통해 이동할 때 누군가 데이터를 가로채지 않는다고 어떻게 확신할 수 있을까? 카페에서 사용하는 무료 와이파이는 보안이 되지 않는 경우가 많다.
나도 모르는 사이 누군가 데이터를 가로챌 수 있다는 뜻이다.
은행은 도착한 로그인 정보가 정말 그 사람에게서 온 것인지 어떻게 확신할 수 있을까?
휴대폰-기지국-통신사 사이 비밀 신호
은행만 문제일까? 이메일은 어떨까? 휴대전화는 무선통신이므로 사방으로 전파된다.
누군가 도청할 수 있지 않을까? 걱정하지 마시라. 당신이 보내고 받는 중요한 정보는 대부분 암호화되어 있다.
우리는 암호 없이 한순간도 살 수 없다.
정보화 시대는 암호의 시대이기도 하다.
디지털이란 모든 것을 띄엄띄엄한 양으로 나타내는 것이다.
그림이나 소리도 띄엄띄엄한 양, 즉 숫자로 나타낼 수 있다.
모든 데이터는 숫자로 쓸 수 있다.
이것은 어렵지 않다.
모든 문자에 숫자를 하나씩 부여하면 된다.
예를 들어 ‘A’는 ‘65’, ‘Z’는 ‘90’, ‘?’는 ‘63’이다.
이것을 ASCII(아스키 코드)라고 한다.
원문: I LOVE PHYSICS
ASCII: 73 32 76 79 86 69 32 80 72 89 83 73 67 83
이처럼 디지털로 표현된 당신의 음성, 텍스트, 동영상 등 모든 정보는 숫자로 쓸 수 있다.
데이터의 이동, 처리, 암호화의 모든 과정은 계산으로 구현할 수 있다.
사실 컴퓨터는 말 그대로 수를 계산하는(compute) 기계다.
정보화 시대의 학문은 수학이다.
이제 ‘유심’의 작동 과정을 통해 암호에 대해 본격적으로 알아보자. 당신이 전화를 걸면 휴대전화는 가까운 기지국에 전파를 보낸다.
당신의 고유 아이디(주민등록번호 같은 것)와 사용하는 단말기의 고유번호(기계의 주민등록번호)를 기지국으로 보내는 것이다.
기지국은 통신사 서버의 데이터베이스에서 이 개인정보에 해당하는 암호키(Ki)를 찾는다.
암호키와 임의로 생성된 난수(random number)를 이용해 두 가지 숫자를 생성한다.
복잡한 함수로 계산하여 값을 구한다는 뜻이다.
편의상 X, Y라고 하자. 기지국은 난수만 휴대전화로 보낸다.
휴대전화는 받은 난수와 자신이 가진 암호키를 이용하여 동일한 방법으로 X와 Y를 생성한다.
휴대전화는 이렇게 얻어진 X를 기지국으로 보낸다.
휴대전화가 보낸 X와 기지국이 계산한 X가 일치하면 인증된 것이다.
이제부터 (새로운) 암호키 Y로 정보를 암호화하여 통신하면 된다.
제대로 했다면 휴대전화와 기지국이 사용할 암호키 Y는 같다.
2차 세계대전 중 발명된 독일의 암호 기계 ‘에니그마’.
다소 복잡하지만, 누군가 중간에 난수나 X를 가로채본들 암호키나 Y를 알 수 없다.
기지국이 가짜라고 해도 암호키를 모르면 Y를 제대로 계산할 수 없으니, Y로 암호화된 휴대전화가 보낸 정보를 알 수 없다.
이를 위해 휴대전화와 기지국은 동일한 암호키(Ki)를 미리 공유하고 있어야 한다.
정보를 주고받는 두 사람이 동일한 암호키를 공유하는 방식을 ‘대칭키 암호’라고 한다.
스마트폰을 사용할 때 암호키는 휴대전화와 통신사 양쪽에 미리 있어야 한다.
휴대전화는 유심이라는 물리적 장치에, 통신사는 서버에 데이터로 저장되어 있다.
이번에 해킹으로 빠져나간 정보가 바로 통신사 서버에 있던 정보다.
따라서 휴대전화 유심에 저장된 정보를 바꾸거나 유심을 교체하고, 그와 동시에 서버에 당신의 바뀐 정보를 업데이트해야 한다.
‘대칭키 암호’에서 평문을 암호화하는 과정은 주로 AES(Advanced Encryption Standard)라는 알고리즘을 사용한다.
쉽게 설명하자면 데이터를 믹서기에 넣어 형체도 없이 갈아버리는 것이다.
정확히는 복잡한 수학적 변환이다.
중간에 암호키까지 넣어서 버무린 다음 가는 거라 암호화된 데이터에서 단서를 찾기란 거의 불가능하다.
더구나 통신이 새로 일어날 때마다 데이터 암호화에 사용되는 암호키(앞의 예에서 Y)가 계속 바뀐다.
대칭키 암호는 분명 안전한 방법이다.
그러나 쌍방이 동일한 암호키를 미리 가지고 있어야 한다는 것이 단점이다.
처음 방문한 인터넷 웹사이트에서 물건을 구매할 때, 상대방과 나는 공통의 암호키를 가지고 있지 않다.
이런 경우 어떻게 안전한 정보 교환을 할 수 있을까?
열쇠 대신 자물쇠 보내는 역발상
‘공개키 암호’는 암호의 혁명이라 할 만하다.
말 그대로 암호키를 공개하고도 정보를 안전하게 보내는 방법이다.
당신이 누군가에게 비밀 편지를 보낸다고 해보자. 편지를 금고에 담아 자물쇠를 채워서 보내면 된다.
문제는 상대에게 열쇠가 없다는 점이다.
이렇게 해보면 어떨까? 편지를 받을 사람이 먼저 자물쇠만 나에게 보내주는 것이다.
이 자물쇠는 그냥 잠기지만 열 때는 열쇠가 필요하다.
그렇다면 나는 금고에 편지를 넣고 상대가 보내준 자물쇠를 금고에 채워서 보내면 된다.
열쇠는 상대에게만 있으니 보안 문제 해결이다! 마찬가지로 누구나 잠글 수 있지만 특별한 열쇠로만 열리는 수학적 자물쇠가 있으면 된다.
한 방향으로 하기는 쉬운데, 반대 방향으로 하기가 거의 불가능한 수학적 과정이 필요하다는 뜻이다.
바로 소인수분해다.
61×97은? 바로 답이 나오지는 않겠지만 종이와 연필이 있다면 계산할 수 있을 거다.
하지만 “5917은 무엇과 무엇의 곱인가?”라고 묻는다면 답하기 힘들다.
답은 61과 97이다.
이렇게 숫자를 소수들의 곱으로 쪼개는 것을 ‘소인수분해’라고 한다.
컴퓨터도 곱하기는 식은 죽 먹기다.
450자릿수 두 개를 곱하라고 해도 1초가 채 걸리지 않는다.
하지만 900자릿수를 두 개의 소수로 소인수분해하라고 하면 가장 빠른 컴퓨터로 수백 년이 걸린다.
공개키 암호에서 두 개의 소수는 개인키, 즉 열쇠가 된다.
두 수를 곱한 결과는 공개키, 즉 자물쇠다.
상대는 공개키로 정보를 암호화해서 보내면 된다.
공개키 암호 알고리즘에서는 두 소수를 모두 아는 사람만 암호를 풀 수 있다.
이 방법을 제안한 사람들의 이름을 따서 ‘RSA 암호’라고도 부른다.
대충 이야기했지만 정확히 이해하려면 복잡한 수학 이론이 필요하다.
인간 사회는 신뢰를 기반으로 굴러간다.
세금 고지서가 진짜일까, 인터넷 상점이 허위 사이트일까, 직장 상사가 보낸 이메일이 진짜일까, 은행 사이트를 믿을 수 있을까 걱정해야 한다면 사회는 붕괴할 것이다.
정보화 사회의 신뢰를 보장하는 것은 암호이고, 암호는 수학이다.
전쟁터에도, 유심 속에도 은밀한 암호의 세계 [물리학자 김상욱의 ‘격물치지’]