中文译本 · 原作 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

三百个数码组和零星的字母,只有日期行是明写;DECODE 没有列出解读 · 密钥仅凭密文复原。这不是一种难的密码:同音替换,每个字母至多两个符号,字母表按正常顺序排在数码上 · 每个拼写出来的词都已解密,十个词代码根据上下文作注

Daniel Bourdeau · 发布于 · 更新于

方法:仅凭密文复原密钥 · 范围:完整

摘要。S. Tomokiyo 在他关于奥地利档案中变长数码代码的文章里转录了这封一页的信,只指出日期行表明语言是意大利语。数码和字母写得连成一片;按他的分组,得到295个两位数码组、13个三位数码组、108个零散的 a 和 m,以及少数几个字母对。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:“The only cleartext at the beginning ‘Di Varsouia 24 Xbre 1627’ indicates the language is Italian … the numbers and letters are written without space in the original manuscript, but I believe my grouping into two- or three-digit groups is fairly straightforward. It is possible that some letters should be grouped (e.g., ‘zg’, ‘pr’, ‘fi’, ‘ll’).”(“开头唯一的明写部分‘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)、56个 m、52个 a、7个 ll、5个 zg、4个 fi、3个 lu、2个 pr、2个 th,以及 o、p、n 各一个。

还没开始求解,就能看出三点。数码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 各近三十,n l r t s c d 在十到十八之间)。码组01–09和40–50太罕见,不可能是字母,又罕见得太均匀,也不可能是元音的同音符。而字母 a 和 m 占了全部记号的四分之一,不可能是字母:把它们当作符号处理,两者退火后都落到同一个元音上,这是任何意大利语文本都不允许的,所以它们是虚码。在解密结果中它们落在词尾,这是那位书记员每写完一个词就丢一个虚码的习惯。

02 复原密钥

  1. 只对数字做5-gram 退火(去掉虚码,文本在三位数代码处切开,使用为 Lucca 信件构建的意大利语模型):六个种子结果不一致,但其中一个已经读出 avere, questa, un caricato, aiuto, subito, bene。强制让十九个高频数码对应不同字母也无济于事;在253个5-gram 的规模上,模型偏爱 e t r s 一锅粥。
  2. 一元词切分计分器退化成 di la il di la。弃用。
  3. 5-gram 加词典覆盖率:语言模型得分,加上每个被三个字母及以上词典词覆盖的字母1奈特,交换只限于高频数码,罕见码组的字母自由分配。从随机密钥出发,六个种子中有两个收敛到同一个密钥(−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),而12紧挨在 a 下方,是字母表以外的一个符号。
  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)是枢机主教 Franz von Dietrichstein 的驻地,他从1599年到1636年任 Olmütz 主教,并任摩拉维亚总督,Olmütz 的教士职位由他授予。1627年12月的波兰王后是奥地利的 Constance,斐迪南二世的妹妹;她的几个幼子恰恰就在这几年获得圣职俸禄:Charles Ferdinand 自1625年起任 Breslau 主教,John Albert 自1621年起任 Ermland 主教。因此,这封信读起来像是一位用意大利语写信的代理人给 Dietrichstein(而不是给皇帝)的提醒:他把枢机主教的承诺从 Nikolsburg 带到了华沙(或者,按 mi confidò 的读法,他在那里听枢机主教说,承诺是枢机主教本人向王后作出的),承诺没有兑现,国王和王后在等着,他希望要么得到教士职位,要么得到一个答复。这也能解释为什么这份文件放在 Chiffrenschlüssel(密码密钥)系列中,而不是在某份通信里:它是和它的密钥归档在一起的。这些都不在密码之中。加密文本中既没有提到写信人,也没有提到收信人;日期行之外如果还有明写部分,也在 DECODE 登录墙后面的图像上。

06 方法与文件

  1. 密文取自 Tomokiyo 的文章,按他的建议合并字母对;计数和重合指数已核对(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/).