01 대상
앞면의 접수 도장에 따르면 1935년 4월 24일 Secret Service가 받은 종이 한 장이다. 맨 위에는 구불구불한 필체로 “Secret Service”라고 적혀 있고, 오른쪽 위에 비스듬히 “261”이 있으며, 숫자 세 줄, 대문자 블록 두 줄, 그리고 장화를 꿰뚫은 단검 위에 해골과 교차한 뼈가 그려져 있다. William Friedman은 1959년 강연 가운데 첫 번째 강연의 그림 2로 이것을 실었는데, 그 강연은 NSA가 The Friedman Legacy(1992)로 간행했다. 그는 한 문장만 덧붙였다. 루스벨트 대통령에게 보내진 전치 암호의 진짜 사례로, Secret Service가 해독을 요청했으며, 원망스럽게도 “Did you ever bite a lemon?”이라는 내용이었다는 것이다. 그 해독은 NDOIMDEYLOAUEETVIEBR?에서 한 글자 걸러 하나씩 취한 것이다. 그 아래 줄 OR ELSE YOU DIE!!는 평문이다. Friedman은 숫자에 대해서는 아무 말도 하지 않았다.
Klaus Schmeh는 이 편지를 2015년에, 그리고 2017년 12월에 다시 자신의 Top 50 목록 17번으로 게시했다. 댓글에서 Marc Gutgesell은 짧은 획으로 묶인 쌍이 하나도 반복되지 않으며 따로 떨어진 숫자들은 1부터 9까지라는 점을 지적했다. Thomas Ernst는 쌍 43개를 나열해 그것이 정확히 10부터 52까지임을 발견하고, 블록이 “a doodle, if not a fake”이며 어쩌면 Friedman에게 깨물 레몬을 주려고 만든 것이라고 결론지었다. 그 뒤로 해독은 제안된 적이 없다.
02 전사
사본은 두 가지가 있다. Schmeh의 614픽셀 스캔과 NSA 책에 실린 그림이다. Internet Archive에 그 책의 300 ppi 스캔이 있으며, 여기서 잘라 낸 그 그림이 원본 없이 구할 수 있는 가장 선명한 블록 사본이다.
표준 전사에서 “아포스트로피”로 적힌 것은 두 숫자 사이와 위에 그은 짧은 획이며, 획 아래의 두 숫자는 하나의 수다. 획이 없는 숫자는 단독으로 쓰인 것이다. 그렇게 전사하면 블록은 다음과 같다.
1 7 2 10 15 17 19 21 26 8 32 33 20 37 000000 16 27 12 34 38
28 22 39 40 41 42 48 44 000000 9 3 13 000 18 4 23 24 000
46 29 35 51 5 43 47 000 6 11 36 50 52 30 49 45 25 31 14 —
쌍 43개는 10부터 52까지의 수이며 각각 정확히 한 번 나온다. 따로 떨어진 숫자 아홉 개는 1부터 9까지로 각각 정확히 한 번, 1 7 2 8 9 3 4 5 6의 순서로 나온다. 0 열여덟 개는 6, 6, 3, 3개씩 무리 지어 있다. 그것이 블록의 내용 전부다. 구분자 네 개가 들어간 1부터 52까지의 순열. 댓글 단 두 사람이 알아차린, 숫자 아래에 연필로 적힌 Friedman 또는 Secret Service의 시험용 글자들은 어느 스캔에서도 복원할 수 없다.
03 손으로 쓴 뒤섞기
52개 수의 순열은 공정한 뒤섞기와 비교해 검정할 수 있다. 이 순열은 네 가지 면에서 동시에 탈락한다.
| 통계량 | 관측값 | 52개의 공정한 뒤섞기 | p(뒤섞기 200 000회) |
|---|---|---|---|
| 값과 위치의 순위 상관 | +0.39 | 0 | 0.002 |
| 정확히 +1 차이 나는 이웃 | 5 | 약 1 | 0.003 |
| 상승 사슬(위치가 증가하는 값들) | 16 | 약 26.5 | 200 000분의 1 미만 |
| 합이 53인 이웃 | 4 | 약 1 | 0.018 |
상승 사슬이 가장 강한 신호다. 각 값에서 다음 값으로 따라가 보면, 1 2 3 4 5 6이 블록을 따라 그 순서대로 나타나고, 7 8 9, 21부터 25, 26부터 31, 32부터 36, 37부터 43도 마찬가지다. 필자는 아직 쓰지 않은 수들을 여러 차례 엇갈려 가며 위로 훑어 올라갔고, 건너뛴 수들을 위해 되돌아왔으며, 새 수가 모자라자 39 40 41 42를 한달음에 적었다. 표의 모든 이상치는 그런 종류다. 합이 53인 네 쌍 가운데 세 쌍은 0 무리에 걸쳐 있는데(37|16, 44|9, 47|6), 이는 Gerd가 2017년에 알아차린 것이다. 약간의 초과일 뿐 다른 어떤 것도 의존하지 않는 구조다.
52개로 이루어진 물건이라면 카드 한 벌이 있으므로, 블록을 리플 셔플한 카드 한 벌로 보고도 검정했다. 상승 사슬 열여섯 개는 리플 셔플 네 번이 만들어 내는 수준이지만, 네 번 리플 셔플한 카드 한 벌이 동시에 0.39만큼 위로 쏠리고 연속된 카드 네 장을 늘어놓지는 않는다. Gilbert-Shannon-Reeds 모형에서 이 결합 사건의 확률은 리플 네 번일 때 0.003, 세 번일 때 0.023이다. 손으로 쓴 목록이 카드 한 벌보다 블록을 더 잘 설명한다. 어느 쪽에도 텍스트는 들어 있지 않다.
04 검증할 수 있는 암호 해석들
모든 수가 한 번씩 나오는 블록이 암호일 수 있는 방식은 두 가지뿐이다. 동음자 52개를 각각 한 번씩 쓰는 동음이자 치환이거나, 52자 구절의 글자에 순위를 매겨 도출한 전치 키다. 키가 순서 없이 배정되었다면 어느 해석이든 52자짜리 텍스트를 무엇이든 만들어 낼 수 있으므로, 검증도 반박도 불가능하다. 한 댓글 작성자는 임의의 문장을 끼워 맞추어 이를 보여 주었다. 순서 있는 키, 즉 동음자가 알파벳에 순서대로 배정되었거나 역순열에서 복원한 구절의 글자가 순위를 따라 감소하지 않는 경우라면, 평문은 51개의 경계 선택, 약 66비트로 결정되며, 이는 영어 52자가 지닌 대략 70비트의 잉여도와 맞선다. 아슬아슬하게나마 검증할 수 있다.
검정에는 1부터 52를 알파벳에 감소하지 않게 대응시키는 사상에 대해 담금질 기법을 사용했고, 문자 5-gram 영어 모델로 점수를 매겼다. 여섯 가지 해석(수열 순서와 역순열, 알파벳 정방향과 역방향, 0 무리를 단어 구분으로 볼지 무시할지)에서 각각 60 000단계씩 60회 재시작했다. 대조 실험으로는 Dickens와 Melville의 52자 구절을 순서 있는 동음이자 키로 암호화해 똑같이 공격했다.
| 읽기 | 최고 점수, 글자당 nat | 최고 후보 |
|---|---|---|
| 수열, 알파벳 a에서 z | −3.02 | abadefillbookofmdoomloorstsbadfallsnowassadovyouslod |
| 수열, a에서 z, 0을 단어 구분으로 | −2.70 | abadefillbooko endoonloorsus dad falltoowast adovyouslod |
| 수열, 알파벳 z에서 a | −3.18 | uttooooonsnnolonominoffeedertootooenlatedtoldandenno |
| 역순열, a에서 z | −2.63 | derssteeretiryehereheissuehistwehisthinnootrustoutst |
| 역순열, z에서 a | −3.03 | ttheeetsiteseatstetstreeatssedassseesspooneibeendeed |
| 대조 실험, 구절 8개 | −1.48 ~ −1.97 | 8개 중 7개는 글자의 88–100%를 읽음; 1개는 46% |
블록에서 나온 어떤 결과도 복원된 대조 실험과 글자당 0.6 nat 이내로 근접하지 못하며, 우연한 단어 하나보다 긴 영어 구간을 담은 후보도 없다. 블록 자체의 구조가 순서 있는 키에 불리하게 작용한다. 정방향 알파벳에서는 한 자리 숫자 아홉 개가 모두 a, b, c 중 하나가 되어야 하므로, 모든 후보가 “aba”로 시작한다. 순서 있는 키 해석들은 대조 실험이 허용하는 강도로 배제된다. 순서 없는 키 해석들은 검증할 수 없으며, 검증 불가능한 키와만 양립하는 블록은 낙서와 구별되지 않는다.
05 그것이 의미하는 것
Ernst의 계산은 옳으며, 이 순열은 1부터 52까지를 지어낸 순서로 한 번씩 적은 뒤 0의 연속을 덧붙인 손의 통계적 특성을 지닌다. 그 아래의 글자 줄은 Friedman이 보자마자 해독할 만큼 단순한 전치이고, 위의 숫자 줄은 암호를 흉내 낼 뿐 아무것도 부호화하지 않는다. Ernst가 시사하듯 보낸 사람이 Secret Service를 골탕 먹이려 한 것이든, 단순히 암호란 이렇게 생겼으려니 생각한 대로 베껴 쓴 것이든, 블록에 해독이 없는 까닭은 아무것도 부호화하지 않았기 때문이다. 순서 없는 일회용 키는 원리상 여전히 가능하지만 낙서와 구별할 수 없다.
이 문제는 NSA의 William F. Friedman Collection에 있는 원본 종이(뒷면에는 타자된 텍스트가, 앞면에는 연필로 적은 시험 글자들이 있다)나, 같은 손이 쓴 두 번째 메시지가 나온다면 다시 열릴 것이다.
06 출처
- William F. Friedman, The Friedman Legacy: A Tribute to William and Elizebeth Friedman, NSA Center for Cryptologic History, Sources in Cryptologic History 3, 1992, 강연 I, p. 8 및 fig. 2. FDLP PDF; Internet Archive 스캔(leaf 18), 위 그림의 출처.
- Klaus Schmeh, “Wer knackt die verschlüsselte Nachricht an Präsident Roosevelt?”, Cipherbrain, 2015년 10월 26일, Marc Gutgesell의 댓글 포함.
- Klaus Schmeh, “The Top 50 unsolved encrypted messages: 17. The Roosevelt cryptogram”, 2017년 12월 8일, Thomas Ernst, Thomas, Gerd, Norbert의 댓글 포함.
- 재현 방법:
targets/roosevelt/structure.py및targets/roosevelt/solve_ordered.py은 저장소에 있으며, 전사본은 다음에 있다.targets/roosevelt/cipher.txt.
