한국어 번역 · 원저 Daniel Bourdeau, 《Unsolved Historical Ciphers》는 CC BY 4.0으로 공개되었다. 이 페이지는 JIC가 번역했으며 원저자의 공식 판본이 아니다. 번역과 원문이 다를 경우 영어 원문이 우선한다 · 영어 원문 보기 ↗
33 29 a m 22 29 17 16 z g l u 16 a 47 m
23 22 13 m 31 29 m a 41 l l 22 29 a
27 16 f i 16 22 29 m a 47 a 12 o

바르샤바 → 모라비아? · 숫자로 된 동음이자 암호, 한 글자에 기호 최대 두 개 · 1627

“Di Varsouia 24 Xbre 1627”

1627년 12월 24일 · Österreichisches Staatsarchiv, HHStA, Staatskanzlei Interiora, Chiffrenschlüssel Kt. 14 Fasc. 20 f. 176 · DECODE R1408

숫자 부호군 300개와 흩어진 글자들로, 날짜 줄만 평문이다. DECODE에는 해독이 없다 · 키는 암호문만으로 복원했다. 어려운 암호는 아니다. 한 글자에 기호가 최대 두 개인 동음이자 치환이며, 알파벳이 숫자 위에 순서대로 놓여 있다 · 철자된 단어는 모두 해독되었고, 단어 코드 열 개는 문맥으로 풀이했다

Daniel Bourdeau · 게시 · 갱신

방법: 암호문만으로 키 복원 · 범위: 완전

요약. S. Tomokiyo는 오스트리아 문서고의 가변 길이 숫자 코드에 관한 글에서 이 한 쪽짜리 편지를 전사하고, 날짜 줄로 보아 언어가 이탈리아어라는 점만 언급했다. 숫자와 글자는 띄어쓰기 없이 쓰여 있다. 그의 구분으로는 두 자리 부호군 295개, 세 자리 부호군 13개, 따로 떨어진 a와 m 108개, 그리고 글자 쌍 몇 개가 나온다. 12와 33 사이의 두 자리 부호군은 평범한 이탈리아어의 빈도 분포를 보이고, 글자 a와 m은 텍스트를 전혀 담고 있지 않으며, 5-gram 언어 모델과 사전 적용률로 점수를 매기는 솔버(담금질 기법)는 무작위 시작에서도 시드를 준 시작에서도 하나의 키로 수렴한다. 그 키는 순서대로 놓인 알파벳이다(홀수 13–33이 a부터 m까지, 짝수 14–32가 n부터 z까지). 솔버에게는 이를 전혀 알려 주지 않았다. 글자 쌍은 자음을, 드문 부호군 01–09와 40–50은 음절과 불변화사를, 세 자리 부호군은 단어를 나타낸다. 철자된 단어는 모두 해독된다. 필자는 얼마 전 Nikolsburg에서 환대를 받았는데, 수신인에게 “이 지극히 고귀하신 [왕비]”의 아들 가운데 한 명에게 약속된 Olmütz 참사회원 자리가 아직 수여되지 않았으며, “이 두 폐하”께서 그것을 원하신다고 전하고, 그 일을 처리하거나 속히 답해 달라고 청한다. 상태: 철자된 단어는 모두 해독됨. 단어 코드 열 개와 작은 부호군 세 개는 문맥으로 풀이함. 이미지와 키 묶음이 있으면 이를 확정할 수 있을 것이다.

01 문서

DECODE의 공개 기록: 한 쪽, 암호, Non-decrypted(해독 없음), 암호 유형 Simple substitution, Homophonic substitution, 숫자 기호 집합, 행 안의 평문, 전사 있음, 임시 날짜 1600–1799. 이미지와 문서는 로그인이 필요해 보지 못했다. Tomokiyo: “첫머리의 유일한 평문 ‘Di Varsouia 24 Xbre 1627’은 언어가 이탈리아어임을 보여 준다 … 원본 필사본에서 숫자와 글자는 띄어쓰기 없이 쓰여 있지만, 두 자리 또는 세 자리 부호군으로 나눈 내 구분은 꽤 명확하다고 생각한다. 일부 글자는 묶어야 할 수도 있다(예: ‘zg’, ‘pr’, ‘fi’, ‘ll’).” 그 쌍들을 묶은 그의 전사:

33 29 a m 22 29 17 16 zg lu 16 a 47 m 23 22 13 m 31 29 m a 41 ll 22 29 a 27 16 fi 16 22 29
m a 47 a 12 o m 33 29 a m pr 21 17 21 m 29 14 a 14 29 17 16 th 24 18 28 zg 25 a 33
29 m 40 23 29 19 16 m 19 a m 27 13 28 21 22 p 45 26 16 m a 29 14 ll 21 fi 26 29 16 06 a
13 a 20 28 21 24 26 13 a 50 21 zg 21 14 29 24 01 33 13 m 100 m 113 m 09 a 28 16 31 21 22 m 46
23 21 22 29 zg 21 m 28 14 a 17 13 05 29 17 13 26 16 a 19 m 16 31 33 29 32 a 13 lu a 28 14 16 a m
44 31 29 a 123 m 24 28 16 29 m a 23 29 25 31 29 m n a 27 13 28 21 14 19 16 m 29 16 a 03 a 24
13 18 28 26 16 m 29 fi m 160 a 17 16 22 26 21 m 47 m a ll 13 th a 28 16 31 16 14 26 13 m 19
29 a m 120 m 05 m 21 m 151 a 24 26 13 ll 13 a 33 21 24 24 13 a 29 fi a 21 24 50 17 28 26 29
16 06 a 01 154 m 19 21 01 lu 21 22 13 14 16 m a 157 a 20 28 21 24 ll 21 a m 33 13 21 24 26 13 a m 27
16 m 24 26 33 13 ll 16 m 16 23 29 17 29 16 a m 09 m 09 28 16 26 16 m 50 22 28 29 ll 16 zg 21
m 154 m 29 16 a 31 21 a 24 16 14 16 m 43 a m 24 28 18 31 29 17 13 22 42 a 154 a 23 16 m 13 m
28 16 31 21 22 m 23 13 22 m 21 pr 21 26 28 13 22 21 m 160 m a 223 a 159 m 18 22 29 33 13 a 04
a 01 a 19 21 25 14 29 m 45 22 06 m a 24 28 15 29 26 16 m 13 a 33 21 a 15 21 14 29 25 14 13 m 22 29
24 18 16 24 26 13

토큰 442개: 두 자리 부호군 295개(서로 다른 것 36개), 세 자리 부호군 13개(100 113 120 123 151 154 157 159 160 223), m 56개, a 52개, ll 7개, zg 5개, fi 4개, lu 3개, pr 2개, th 2개, 그리고 o, p, n 각 1개.

풀기 전에 이미 세 가지가 보인다. 숫자 12부터 33까지(30은 한 번도 나오지 않는다)가 숫자 토큰 308개 가운데 265개를 차지하며, 그 빈도 — 35, 35, 29, 27, 이어서 18, 17, 17, 15, 13, 10, 9, 9, 7, 7, 5, 4, 4, 2, 2, 1, 1 — 는 그 길이의 단일 문자 치환 이탈리아어 텍스트의 빈도 그대로다(e a i o는 각각 30개 안팎, n l r t s c d는 10개에서 18개). 부호군 01–09와 40–50은 글자이기엔 너무 드물고, 모음 동음자이기엔 너무 고르게 드물다. 그리고 전체의 4분의 1을 차지하는 글자 a와 m은 글자일 수 없다. 기호로 취급하면 둘 다 같은 모음으로 수렴하는데, 이탈리아어 텍스트에서는 있을 수 없는 일이므로 이들은 허자다. 해독문에서 이들은 단어 끝에 놓이는데, 단어마다 하나씩 떨어뜨려 두는 서기의 습관이다.

02 키 복원

  1. 숫자만으로 한 5-gram 담금질(허자는 빼고, 텍스트는 세 자리 코드에서 끊고, Lucca 편지를 위해 만든 이탈리아어 모델 사용): 시드 여섯 개가 서로 일치하지 않지만, 하나는 이미 avere, questa, un caricato, aiuto, subito, bene를 읽어 낸다. 자주 나오는 숫자 열아홉 개에 서로 다른 글자를 강제해도 도움이 되지 않는다. 5-gram 253개로는 모델이 e t r s 뒤범벅을 선호한다.
  2. 유니그램 단어 분할 채점기는 di la il di la로 퇴화한다. 폐기했다.
  3. 5-gram과 사전 적용률: 언어 모델 점수에, 세 글자 이상의 어휘집 단어가 덮는 글자 하나마다 1 nat를 더하고, 교환은 자주 나오는 숫자에 한정하며, 드문 부호군에는 글자를 자유롭게 둔다. 무작위 키에서 시작한 시드 여섯 개 가운데 두 개가 같은 키로 수렴한다(−371과 −409). 1단계의 결과를 시드로 주면 세 시드 모두 그 키에 도달한다. 그 단계에서 해독문은 … un caricato d olmi. ad uno gli … suoi figlio hauendo io saputo in corte … uolonta di re … stata messa in esecutione … queste maesta ho stimato oficio … uoto seruitore io le so non suplicare … a uoler fare … prima … subito a me benigna risposta였다.
  4. 대조 실험. 같은 목적 함수를 암호문을 세 번 뒤섞은 것에 적용하면 최고 점수가 −843, −865, −893에 그치며, 원래 순서에서는 −371이다.
  5. 알파벳은 순서대로다. 수렴한 키는 a b c d e f g h i l m을 13 15 17 19 21 23 25 27 29 31 33에, n o p q r s t u를 14 16 18 20 22 24 26 28에 놓는다. 담금질 솔버로서는 이를 알 길이 없었다. 이것으로 한 번씩만 나온 두 숫자도 정해진다. 32는 z이고(짝수 계열이 u x z로 이어진다), a 바로 아래인 12는 알파벳 밖의 기호다.
  6. 나머지는 문맥으로. 드문 기호마다 모든 출현을 나열하고, 그 전부에 맞는 단 하나의 값을 주었다: zg = r(rico·rdo, Nicolspu·rg, confe·rire, servito·re), lu = d(ricor·do, a·d uno, desi·derano), fi = n(ho·nori, inte·ntione, in), ll = t(al·tri, sta·ta, ques·te, servi·tore), th = l(Nico·lspurg, ta·l), pr = ff(fece, e·ffetuare); 01 si, 05 non(ca·non·icato, non è), 06 ne, 09 de, 40과 46 con, 41 al, 42 la, 43 di, 44 de, 45 da, 47 che, 50 se. 하나씩 있는 o, p, n은 그것만 빼면 완전한 단어 안에 있으므로 허자나 전사 실수로 본다.

03 키

131517192123252729313314161820222426283032
abcdefghilmnopqrstu[x]z
2729729744359101335521717151801
llthzglufipr01050609404142434445464750a m
tlrdnffsinonnedeconalladidedaconchese허자
7253424233111112133108

세 번째 행: 출현 횟수. 미확인: 12(존칭 주어, V.S.?), 03(부사), 04(접속사), 그리고 단어 코드 100 113 120 123 151 154 157 159 160 223. 겹글자 ll, zg, th 등은 평문의 이중 글자가 아니다. 이것들은 t r l d n f, 즉 서기가 가장 변화를 주고 싶어 하는 자음들에 대한 키의 대체 기호다.

04 해독

Mi ricordo che, fra li altri honori che [12] mi fece in Nicolspurg, mi confido d’hauer dato intentione a questa Serenissima [100] [113] de uoler conferire un canonicato d’Olmiz ad uno de li [123] suoi figli; hauendo io [03] saputo in [160] corte che tal uolontà di [120] non è [151] stata messa in essecutione, sì [154] desiderano [157] queste Maestà, ho stimato oficio de deuoto seruitore, [154] io le sono, di suplicarla, [154] fo, a uoler far effetuare [160] [223] [159], prima [04] si degni darne subito a me benigna risposta.
[각하께서] Nikolsburg에서 제게 베풀어 주신 여러 영예 가운데, 저는 [각하께서] Olmütz의 참사회원 자리를 [그분의] 아들 가운데 한 명에게 수여하실 뜻이 있음을 이 지극히 고귀하신 [왕비]께 분명히 알려 드렸다고 확신하는 일을 기억합니다. [그 뒤] [이] 궁정에서 [각하의] 그 뜻이 이 두 폐하께서 바라시는 대로 [아직] 실행되지 않았다는 것을 알게 되었기에, 저는 [그분께] 헌신하는 종으로서, 지금 그렇게 하듯이, [이 …]를 실행해 주시기를, [혹은] 우선 제게 곧바로 그에 관한 너그러운 답을 주시기를 간청하는 것이 도리라고 판단했습니다.

05 배경

Nikolsburg(Mikulov)는 1599년부터 1636년까지 Olmütz 주교이자 모라비아 총독이었던 Franz von Dietrichstein 추기경의 본거지였고, Olmütz 참사회원 자리는 그의 임명권 안에 있었다. 1627년 12월의 폴란드 왕비는 페르디난트 2세의 누이인 오스트리아의 Constance였다. 그녀의 어린 아들들은 바로 이 무렵 성직록을 받고 있었다. Charles Ferdinand는 1625년부터 Breslau 주교였고, John Albert는 1621년부터 Ermland 주교였다. 따라서 이 편지는 황제가 아니라 Dietrichstein에게 보낸, 이탈리아어로 쓰는 대리인의 독촉장으로 읽힌다. 그는 추기경의 약속을 Nikolsburg에서 바르샤바로 전했는데(혹은 mi confidò로 읽으면, 추기경이 직접 왕비에게 그 약속을 했다는 말을 그곳에서 추기경에게 들었는데), 약속은 지켜지지 않았고, 국왕과 왕비는 기다리고 있으며, 그는 참사회원 자리든 답이든 받기를 원한다. 이 문서가 서신 묶음이 아니라 Chiffrenschlüssel 계열에 있는 이유도 이것으로 설명된다. 키와 함께 철해졌던 것이다. 이 가운데 어느 것도 암호 안에 있지 않다. 암호화된 텍스트에는 발신자도 수신인도 이름이 나오지 않으며, 날짜 줄 외에 평문이 있다면 그것은 DECODE 로그인 뒤의 이미지에 있다.

06 방법과 파일

  1. Tomokiyo의 글에서 가져온 암호문, 그가 제안한 대로 쌍을 묶음. 빈도와 IC 확인(targets/warsaw/ct.txt).
  2. 숫자에 대한 5-gram 담금질 솔버, 글자를 기호로 취급한 경우와 아닌 경우(targets/warsaw/solve.py, solve2.py).
  3. 이탈리아어 말뭉치에서 만든 어휘집과 단어 분할 채점기(targets/warsaw/wordsolve.py).
  4. 수렴한 5-gram + 적용률 담금질 솔버와 뒤섞은 대조 실험(targets/warsaw/combo.py).
  5. 최종 키와 디코더(targets/warsaw/decode.py, plaintext.txt).

확인한 것: 토큰 수, 무작위 시작과 시드 시작에서의 수렴, 뒤섞은 대조 실험 세 번, 알파벳 순서, 모든 드문 기호의 모든 출현과 그 값의 대조, 전체에 걸친 단어 수준의 이탈리아어. 확인하지 않은 것: 필사본 이미지, 발신자, 수신인, 단어 코드. §05의 귀속은 추론이므로 되풀이하기 전에 검증해야 한다.

07 출처

분석 스크립트와 암호문은 저장소에 있다(targets/warsaw/).