코드북 암호

(난수표 암호에서 넘어옴)

1 개요

Codebook Encryption

암호의 한 가지 방법. 미리 숫자와 단어의 쌍으로 이루어진 코드북(난수표)을 만들어서 암호문을 교환하는 것으로 해독이 어렵고 안전성이 높기 때문에 군용으로 널리 쓰였다.

코드북을 1회용으로 하면 원타임 패드 암호(ONE-TIME PAD ENCRYPTION)가 되며 수학적으로 원타임 패드를 깨는 것은 불가능하다. 하지만 현실적으로 매번 코드북을 갈아치우는 것은 어려우므로 코드북이 두꺼운 책이어서 매번 다른 페이지를 사용하는 식이 아니라면 자연히 같은 페이지를 여러번 재사용하기 마련인데 재사용 회수가 많아지거나 하면 코드북 없이도 결국 빈도분석 등으로 내용을 부분적으로 해독을 할수 있게 된다. 그래서 가능하다면 정기적으로 코드북을 교체해서 안정성을 유지하려 애쓴다.

2 별도의 코드북이 있는 경우의 예시

예를 들어, 다음과 같은 코드북을 만들어서 암호를 보내는 쪽과 암호를 받는 쪽에서 공유를 한다. 예시가 왜 하필??

코드단어
00123나무위키
11210반달하라

이렇게 해두면 "00123 11210"만 전송하면 "나무위키를 반달하라"는 끔찍하고 무시무시한 메시지를 전달할 수 있으나, 해독할 수 있는 코드북이 없으면 뭔 소리인지 알 수 없고 중간에 도청이 되어도 도청자가 메시지를 해독할 수 없게 된다.

물론 코드가 꼭 저런 식으로 숫자로만 되어 있으라는 법은 없다. 다음과 같은 식으로 일반 문장으로 위장하기 위한 코드북을 만들 수도 있다.

코드단어
안성탕면반달하라
맛있다나무위키

이렇게 해 두면 "안성탕면은 맛있다"라고 전송하면 "나무위키를 반달하라"라는 메시지가 전달되는 것이다. 물론 해독할 수 있는 코드북이 없으면 중간에 도청하더라도 도청자는 그냥 안성탕면이 맛있다는 뜻으로 이해할 수 밖에 없다.

코드북 암호의 가장 좋은 예시. 후반부 주목

다만 코드북이 털리면 끝장난다는 치명적인 문제가 있다. 또 코드북은 메시지를 받는 쪽에서도 반드시 가지고 다녀야 하다보니, 전쟁이 길어지다보면 안 털리기가 어렵다. 코드북을 만드는 측에서도 물에 젖으면 쉽게 망가지도록 만들거나 코드북에 쇠를 달아 바닷속에 풍덩하면 못찾게 하는등 궁리를 했지만.

제1차 세계대전이나 제2차 세계대전에서나 독일군, 일본군코드이 털려서 치명타를 받고 말았다.

코드북 안털려도 이 방식을 운용하는 적국이 아국의 전문을 도청한다고 가정하고 역으로 함정을 놓아서 알아내는 방법도 있다. 단 이 방식은 알아낼 수 있는 평문의 정보가 극히 제한적이라는 단점이 존재하지만, 미군은 태평양 전쟁에서 이 방식으로 일본이 다음 공격 목표로 삼은 어느 섬을 지칭하는 암호를 해석해서 역전의 발판을 만들어낸 전력이 있다. 자세한건 미드웨이 해전 참조.

실제 과거 남파간첩이 난수방송을 해독하던 구식 난수표도 이런 코드북의 일종으로 기름종이에 숫자와 단어의 표가 사전식으로 나열되어 있으며 접어서 지갑에 감출 수 있을 정도다. 송신용으로도 쓸 수 있다. 엉? 당신 이런 걸 어떻게 아는 거야? 이런 난수표는 짧아서 아무래도 자주 재사용 되므로 해독당하기 쉽고 성공한 예도 있다.

3 코드북이 평범한 책인 경우

1990년대 중반까지 북한에서 사용한 방식은 평범한 책을 코드북으로 이용하는 것이다. 예를 들어 장훈 감독의 영화 의형제에서는 북한 간첩 강동원이 한국의 웹메일을 통해 메세지를 수신하고는 그걸 코드북 암호로 풀이하여 지령을 해독한다. 여기서 등장하는 코드북 암호는 성경. 메일은 평범한 비지니스 거래에 대한 내용이지만 그걸 코드북 암호에 대입하여 해독하면 'XXX를 암살하라'는 식의 지령이 도출된다.

셜록 홈즈 장편 공포의 계곡 도입부에서는 권위있는 연감을 이용한 코드북 암호가 등장한다. 이 경우 대응되는 코드북에 없는 인명과 지명은 그대로 영어로 적어두었다.

실제 사례의 경우로는 1994년 '구국전위' 간첩단 사건이 있다, 당시 안기부는 압수한 플로피디스켓에서 암호를 얻어냈는데 암호 내용에는 '21106 / 22211 / 161102 / 143431'이 반복되고 있었다. 이후 안기부는 이것이 한림출판사 일한사전에 대응되며 그 뜻은 '구국전위'임을 알아냈다.

숫자글자
21106211쪽 6번째
22211222쪽 11번째
1611021611쪽 2번째
1434311434쪽 31번째

4 매뉴얼 프로텍트

PC 게임에는 DOS 시절 정품 패키지에 첨부된 암호표를 이용하여 암호를 입력하는 정품 인증 방식이 있었다. 정식 명칭은 매뉴얼 프로텍트(Manual Protect). 매체가 플로피 디스크였던 시절에 디스크 프로텍트(Disk Protect)[1]와 함께 많이 쓰였던 방식이다. 정품이 아니라면 코드북에 해당되는 암호표가 없기 때문이다.

그러나 당연하게도 암호표를 베껴서 쓰면 정품 사용자로 속일 수 있다는 문제가 존재하고, 반대로 정품 사용자인데 암호표를 잃어버리면 망했어요. 그래서 더 발전된 인증 수단이 나온 오늘날에 와선 당연히 사장된 방식이다. 물론 당시에도 이런 방법을 알고 있었기 때문에 암호표를 소설책 분량으로 만들어 놓거나[2], 암호표 위에 다른 색깔의 글자를 덧씌우고 해당 색깔의 셀로판지를 통해서 보면 나오는 방법[3]으로 대처를 했다. 아예 암호표가 두꺼운 매뉴얼 그 자체였던 경우도 있었다.

이런 방식은 1990년대 중반 매체가 CD-ROM으로 옮겨가면서 사라졌다. CD-RW가 나올때까지 몇 년의 시간차가 있었기에 초창기에는 CD-ROM의 복제가 어려웠기 때문이다. 인터넷이 발달한 지금에 와선 온라인 인증이 가능해졌기에 더 이상 사용되지 않는다.

쿼런틴 시리즈가 이 방식을 사용했으며(다만 어밴던웨어로 돌아다니는 것은 암호 인증 알고리즘이 작동하지 못하도록 해킹이 된 버전이다. 암호 입력 화면에서 그냥 엔터만 치면 'Welcome to Quarantine'이라는 메시지와 함께 게임이 정상적으로 기동된다.), 손노리의 게임에 등장하는 패스맨이라는 캐릭터가 이 인증을 담당하는 캐릭터였다.

5 같이 보기

  1. 플로피 디스크를 특정한 기술로 복사 불가능하게 만들거나 복사를 해도 실행이 안 되도록 하는 방법이었다.
  2. 필기로 베끼자니 토씨 하나 안 틀리고 베껴야 하는데 그 분량의 압박이 대단하고, 그렇다고 복사기로 베끼자니 복사료의 압박이 만만치 않다.
  3. 이러면 복사기로 복사가 안 된다. 셀로판지 대고 일일히 베끼는 방법밖에 없다.