中文译本 · 原作 Daniel Bourdeau《Unsolved Historical Ciphers》 以 CC BY 4.0 发布,本页由 JIC 翻译,非原作者官方版本,译文如有出入以英文原页为准 · 查看英文原页 ↗
55 70 ·8· 36 50 32 90 06 93 ·8· 73 ·1·1· 36 50 23 22 07 92 20
h o r i c e u to la r i s p o st a
……用 Biermann 和 Bosbach 的1628年密钥解出的1629年8月4日急件开头;1 和 8 是虚码

维也纳 → 罗马 · 带名码本和虚码的同音替换密码 · 1629年8月至11月

Pallotto 致 Barberini,1629年

Giovanni Battista Pallotta
发信人Giovanni Battista Pallotta
Francesco Barberini
收信人Francesco Barberini

塞萨洛尼基大主教、驻皇帝宫廷教廷大使 Giovanni Battista Pallotto 阁下的登记簿中有二十八段加密文字:梵蒂冈城,BAV, Barb.lat. 6960,已在 DigiVatLib 上全卷数字化。DECODE 把它们收录为 R286–R313,全部标为 “Non-decrypted”(记录中没有解读),而总目条目曾说这些密码隐藏的内容不得而知。

其实内容是已知的。Hans Kiewning 于1897年依据罗马方面自己的解读件刊印了这些急件,登记簿的明文页逐字证实了这一比定。密钥也是已知的:Norbert Biermann 和 Thomas Bosbach 于2018年为姊妹卷 Barb.lat. 6956 复原了它,而 George Lasry 早已发现 6960 用的就是这个密钥。把它套用到 DECODE 的转录上,每条记录都能读出连贯的意大利语;6956 密钥中缺少的约 1,750 个三位码组仍未解决。

Daniel Bourdeau · 发布于 · 更新于 · 密钥认定于

方法:用已知密钥读出 · 范围:完整

2026年9月21日更新。George Lasry 来信说:“Barberiniani Latini 6960 uses the same key as Barberiniani Latini 6956 (which was found by Norbert Biermann and Thomas Bosbach). I found this years ago, but the DECODE DB was never updated.”(Barberiniani Latini 6960 与 Barberiniani Latini 6956 用的是同一个密钥(后者由 Norbert Biermann 和 Thomas Bosbach 找到)。我多年前就发现了,但 DECODE 数据库一直没有更新。)如 第 00 节 所示,这个密钥能解读这些密文。下面的分析记录的是密钥知晓之前所做的攻击;它们都失败了。其中的测量数据依然成立。它唯一的正面发现只对了一半:这种密码确实使用长度不一的固定码组,但分析由此得出它不可能是同音替换的结论,而字母其实正是同音替换。它关于密钥不为人知的结论已被取代。
摘要(2026年9月20日)。Barb.lat. 6960 是 Pallotto 1629年下半年出使皇帝宫廷期间的 Barberini 登记簿,那几个月曼托瓦继承问题正把皇帝和法国推向战争。全卷 194 页中,全由数码写成的纸页与意大利语明文页交替出现。DECODE 收录了其中二十八张加密纸页,既无解读,也没有说明其内容。而它们的内容自1897年起就已出版:Hans Kiewning 所编 Nuntiaturberichte aus Deutschland 1629年卷,以 dechiffr. 为标题刊印了 Pallotto 的约四十份急件,取自罗马收到并解读的副本,即今 ASV, Nunz. di Germania 119。第一张加密纸页 pp. 5–6 用明文题作 Di Vienna 4 di Agosto,就是 Kiewning 的 Nr. 153;它两侧的登记簿明文页文字一路贯穿这张密码纸页,与该文件的措辞完全一致,而 p. 13 是它的第二份附件,同样逐字相符。所以内容是已知的;而密钥,在9月20日时还不知道。这种密码是数字式的,书写时不加分隔,其代码宽度无法确定:在全部 112,805 个数字中,任何地方都看不出两位或三位代码的相位偏好。8月4日急件开头的二十七个字母确实能按两位代码对齐,然后对齐就彻底断了。一项对照表明,二十七低于这批材料的偶然基线,所以那次吻合什么也证明不了。没有声称得到部分密钥:一项留出检验显示,从急件一部分学到的码表对其余部分的预测,并不比把字母打乱后的同一码表更好(每字母 0.355 次证实,对照均值 0.359),所以对齐器报告的 55% 一致率不过是对齐器在拟合猜词。不过这次失败有一个测定了的原因。在合成密文上(同一明文用随机两位密钥加密),同一套流程能从干净的转录中复原整个密钥;数字错误率为 0.5% 时复原 100 个代码中的 87 个,1.7% 时只有 7 个,因为每插入或漏掉一个数字,其后所有代码的相位都会翻转。所以方法本身是有效的。第三项检验更进一步:密文与已知明文之间可证明一致的最长两位对齐是 39 个字母,而打乱明文或倒转密文的对照给出 36 到 39,同样噪声水平下的合成密文则给出 207。真实材料恰好落在其偶然基线上。因此转录噪声并不足以解释。第四项检验又在整部印本(1,161,303 个字母)中搜索任意四段密文窗口的明文,代码宽度取二、三、四,所用方法经过校准,即使在真实噪声水平下也能在 254 个窗口中找出 16 个植入的加密,且无误报。结果一无所获。所以这些密文不是印本中任何文本的固定宽度替换。只有一项检验结果为阳性:数字流中有三十九个重复的二十四位数字串,而偶然情况下一个也不该有;谨慎使用的同音替换密码不会产生这种现象。这指向一种名码本,它每次都用同样的方式书写每个词或音节,码组长度不一。后来又有一个发现:DECODE 自己的转录中带有约 640 条明文批注,其中五条记录里还有直接写在页面上的解读。这些急件大多是混合信件,即在意大利语明文中夹着简短的加密分句,这就是从印本中取的猜词无法与之匹配的原因。下一次尝试应当从这里开始。9月20日的状态,已被上方的更新取代:内容早已出版;密钥未复原,不声称有部分密钥,所有固定宽度假设都已被校准过的对照排除。剩下两种可能:变长名码本,或者加密段落的意大利语原文根本没有出版,因为印本用德语对其作了摘要。

00 密钥,由他人找到

姊妹卷 Barb.lat. 6956 收有同一教廷大使任期内1628年5月至8月的七十张加密纸页(DECODE R215–R285 和 R318)。其密钥于2018年3月由 Norbert Biermann 复原,Thomas Bosbach 也独立复原了它。他们的两份密钥、一份合并密钥和一份解读样例,作为附件文档存放在 DECODE 的第一条密文记录 R215 下,而不是作为密钥记录。这就是本项目抓取元数据时从未见到它们的原因。DECODE 至今仍把 6960 的全部二十八条记录标为 “Non-decrypted”。

这套系统:

把这个密钥套用到 DECODE 对 6960 全部二十八条记录的转录上,用动态规划把数字流切分为一位、两位和三位单元,每条记录都能读出连贯的意大利语。R286 开头是 ho riceuto la risposta datami in scritto,正是 Kiewning Nr. 153 的开头几个词。约 2,000 个名码本码组可以用 6956 密钥解出。约 1,750 个三位码组不在其中;它们大概是1629年特有的人名和头衔,仍待解决。约有 200 个数字与任何代码都对不上,这与志愿者转录中的笔误相符。未经编辑的输出在代码库中(targets/pallotto1629/key6956/decrypt_6960.txt).

这个密钥也解释了下面每一种攻击为何失败。一个虚码或一个三位码组会使其后所有两位代码的相位发生偏移,所以任何固定宽度的对齐都撑不过几个词。初次猜词匹配正是在这里中断的: 8 位于 ho 之后,却被当成了一个两位代码的第一个数字。第 04 节报告的那些长重复数字串,就是每次都以同样方式书写的名码本码组和音节码组。

01 卷册与二十八段密文

Barb.lat. 6960 在 DigiVatLib 上,地址 digi.vatlib.it/view/MSS_Barb.lat.6960,194 页,附 IIIF manifest。它是旧的二值缩微胶片扫描,图像服务自己的 info.json 给出的每页最大尺寸是 748 × 1088 像素;服务器返回的更大尺寸都只是由此放大而来。在这个尺寸下,一个数码大约十个像素宽。不过 DECODE 在登录后可见的地方存有同一批纸叶的自制扫描,尺寸为 1491 × 2066(像素面积是前者的四倍)。任何要转录这部手稿的人,都应当用这些扫描,而不是 DigiVatLib 的。

DECODE 的 R286–R313 记录就是那二十八段加密文字;R315 是整卷,在那里被描述为“mixed ciphertext and cleartext”(密文与明文混合)。每条记录的注释给出的页码范围采用同样的 DigiVatLib 页码,所以 DECODE 的第 n 页就是第 n 个画布。范围从 pp. 5–6 到 pp. 192–193,卷册自身的标题说它收的是 Pallotto 的密码 dal 4 agosto al 29 settembre 1629,但记录所载日期最晚到11月29日。

密码纸页横跨整个页宽,写满密密麻麻、连续不断的数码,每页约三十行,每行约六十六个数码。明文页的写法截然不同:写在纸叶右侧的窄栏里,留着很宽的页边。两者在卷中交替出现。

Barb.lat. 6960 第 5 页顶部:明文标题 Di Vienna 4 di Agosto 和 Ill.mo et R.mo Sig.r Card.le P.rone,一行被划掉的明文,然后是四行连续的数码
Barb.lat. 6960,p. 5:第一张加密纸页,用明文题作 Di Vienna 4 di Agosto · Ill.mo et R.mo Sig.r Card.le P.rone,数码上方有一行被划掉的明文开头。图像:© Biblioteca Apostolica Vaticana, Barb.lat. 6960 p. 5。

全部二十八段的转录由志愿者于2019和2020年为 DECODE 完成,可下载为 DOC_R*.txt。它们逐个数字记录数码,因此手稿中(装饰性且不规则的)分组信息丢失了。经测量共 112,805 个数字;最短的 R308 有 854 个,最长的 R306 有 9,332 个,这里详细研究的 R286 有 3,573 个。

02 1897年刊印的内容

相关的版本是 Hans Kiewning(编),Nuntiaturberichte aus Deutschland nebst ergänzenden Aktenstücken. Vierte Abteilung: 17. Jahrhundert,Band 2:Nuntiatur des Pallotto 1628–1630,2:1629(柏林,1897)。它在 archive.org 上的条目为 4-2_20200807,有全文。

Kiewning 依据的是罗马收到的副本,即 ASV, Nunz. di Germania 119,每份加密急件都题作 dechiffr.,并注明罗马方面解读的日期:Nr. 153 是“Pallotto an Barberini, 1629 August 4, dechiffr. 22. August”。因此他刊印的是同时代的解读。实质性段落他照录意大利语原文,其余部分用德语摘要概述,所以覆盖面几乎是完整的。

有两项核对把登记簿与印本联系起来。

8月4日的急件。pp. 5–6 的密码题作 Di Vienna 4 di Agosto,即 Nr. 153。它周围的明文页是登记簿自己誊清的这份急件,与密码分开书写,而且文字一路贯穿这张密码纸页:p. 4 以 … non haver facoltà di accettar altro partito, che’l proposto in 结尾,p. 7 接着写 nome del suo Rè。这句话与 Kiewning 的 Nr. 153 逐字相同。

附件。第 13 页就是 Kiewning 作为 Nr. 153 Beilage II, Propositione P. Valeriano per Sabran 刊印的那份文件(他的来源:Bibl. Barber. LXIX 60 fol. 122)。手稿原文、也就是印本所印的是:

… il quale aggiunse di più, che fatta la pace, quando S. S.tà, come padre comune, proponga una lega et unione di questi eserciti, affine di abbatter il Turco commune nemico del nome christiano, che S. M.tà mandaria plenipotentiarii in Italia, acciò N. S.re potesse concludere così gran negotio, con che il demonio resteria ingannato e burlato.

Barb.lat. 6960 第 13 页,窄栏中的意大利语明文:提议教皇以共同之父的身份倡议结盟打击土耳其人,皇帝则派全权代表前往意大利,好让魔鬼落得受骗遭嘲
Barb.lat. 6960,p. 13:1629年8月4日急件的附件,Kiewning 作为 Nr. 153 Beilage II 刊印:P. Valeriano Magno 为 Sabran 拟的提议,结尾为 con che il demonio resteria ingannato e burlato。图像:© Biblioteca Apostolica Vaticana, Barb.lat. 6960 p. 13。

由此可知,这些密码隐藏的是1629年下半年曼托瓦继承危机中的事务:Pallotto 通过嘉布遣会士 P. Valeriano Magno 和帝国大臣 Eggenberg(急件中写作 Echembergh),试图在皇帝与法国使节 Sabran 之间就卡萨莱和蒙费拉托问题进行斡旋,涉及对两个公国的民事而非武装占有、法军撤出苏萨和帝国军队撤出格劳宾登,以及背后的担忧——真正的目的是压服威尼斯,恢复帝国在意大利的权威。

03 密钥知晓之前的攻击

这些数码全是数字,书写时不加分隔。在全部二十八段密文中,各数字的频率不均匀(0 占 16.1%,4 占 4.8%),相邻数字之间约有 0.18 比特的互信息,所以数字流是有结构的。下面的攻击没能找出这种结构。

代码宽度显现不出来。对于固定宽度的数字代码,应当有一个相位明显区别于其他相位。可是一个也没有。把二十八段密文合起来看,两位代码的重合指数在相位 0 为 0.01462,在相位 1 为 0.01466,偶数位和奇数位上的数字分布在每个数字上都相差不到 0.2%。三位代码在三个相位上的表现也一样。

一段猜词对齐了二十七个字母,然后失败。手握 Nr. 153 的明文,R286 的开头按两位代码能精确对齐二十七个字母:

55 70 83 65 03 29 00 69 38 73 11 36 50 23 22 07 92 20 86 72 52 06 38 97 12 33 23
H  O  R  I  C  E  V  U  T  A  L  A  R  I  S  P  O  S  T  A  D  A  T  A  M  I  I

赋值有重复:38 出现两次,两次都是 T;23 出现两次,两次都是 I;纯属偶然的话,大约每 180 次尝试才会出现一次。第二十八个代码出现冲突,从那里开始就再也没有一致性可言。在整份急件上运行带状动态规划对齐器,允许两位代码,并允许为转录笔误做一位和三位的重新同步,再针对一份手工校正的 3,359 字母猜词反复迭代码表直至收敛,得到约 55% 的代码—字母一致率,高于错误对齐给出的 20%,又低于复原出的密钥应有的水平。

唯密文搜索失败。对一百个两位代码做固定多重集模拟退火,在 5,000 个代码的文本上运行,用专门为此从代码库中干净的意大利语语料(1,200 万字符)构建的无空格意大利语五元组模型评分,最终停在每字符 −3.54 的对数概率,而那个时期真实的意大利语约为 −1.5。同一批代码的音节模型(每个两位码组代表一到四个字母)也在已知明文上测试过,对每个有充分例证的代码都退化回单个字母,因此没有找到音节表。

那 55% 并不是部分密钥。一项留出检验说明了这一点。用 R286 的前 55% 对照猜词学习码表,将其冻结,然后把剩余的数字与剩余的猜词对齐,统计证实次数(即该代码已在表中且与之相符的情形)。与八个保留码表但在代码之间打乱字母的对照相比:

每字母证实次数DP 得分
从前半部分学到的密钥0.355−3266
打乱的对照(八次均值)0.359−3313

两者没有分开。在“两位代码加虚码、无数字笔误”模型上做同样的检验,得到 0.440,对照均值 0.431,同样没有分开。一致率只是对齐器在拟合猜词,从中读出的任何部分密钥都会是假象。

阳性对照。用一个随机的两位同音替换密钥加密同一段猜词,按选定比率对数字流做单个数字的插入和删除以制造损伤,再运行完全相同的学习程序。它复原出的真密钥比例为:

数字错误率复原的密钥
0 %100 / 100
0.5 %87 / 100
1.7 %7 / 100
4 %19 / 100

这种方法在合成文本上有效;它要求转录的数字准确率误差小于约 0.5%。错误率超过约 1% 时,即使手握明文,也无法从这么多文本中复原两位密钥,因为每插入或漏掉一个数字,其后所有代码的相位都会翻转。这也解释了上面的统计中为何看不出相位偏好:散布在三十行中的笔误使整个语料的相位随机化了。

游程长度检验。猜词对齐器可以伪造吻合,因为新出现的代码总可以配一个新字母。伪造不了的是一段长的一致游程:在一个窗口内,重复的代码必须对应同一字母,映射必须保持为函数,所以虚假游程在第一次重复冲突时就会终止。扫描数字偏移与猜词偏移的每一种配对,并在保持一致的前提下延长每段游程:

最长一致游程
真实密码对 Nr. 153 的明文39 个字母
对照:打乱明文字母(五次)39, 39, 36, 38, 36
对照:倒转密文39
合成两位密码,同一文本,1.7% 数字噪声207 个字母
合成两位密码,干净转录2705 个字母

真实材料落在它自己的偶然基线上,而在同样转录噪声下的两位密码能延伸五倍之远。工具是有效的:在那份带噪声的合成文本上,这种方法能复原 100 个密钥代码中的 81 个,而动态规划学习程序只复原了 7 个。又因为这里偶然游程就能达到 36 到 39 个字母,本页开头引用的二十七字母开头吻合低于基线。它不是证据,上面给出的“180 次中一次”的数字也是错的。

所以转录噪声已不足以解释。根据这些证据,这张密码纸页不是 Kiewning 刊印为 Nr. 153 的文本的固定宽度两位加密。下一项检验把范围扩大到整卷。

语料搜索。游程长度检验是把一段密文与一段猜词作比较。这项检验则一次性、精确地把四段密文与整部印本作比较。对于替换密码,相同的代码必然对应相同的字母,所以取一个密码窗口,列出窗口内所有代码相同的位置对,要求明文恰好在这些偏移处重复。这一条件对 Kiewning 全部 1,161,303 个字母只需扫描一遍即可检查,每种间隔用一个位掩码。

通过把真实明文植入语料并用随机密钥加密来校准:

命中真实位置的窗口误报
合成,干净转录253 / 2540
合成,1.7% 数字噪声16 / 2540

因此即使在真实噪声水平下,仍有约 6% 的窗口能精确命中,而且这种方法从不误报。把它用于其中四段密文,取三种代码宽度:

记录宽度 2宽度 3宽度 4
R2860 / 2661 / 2610 / 256
R2920 / 4600 / 4560 / 452
R3060 / 7102 / 7050 / 700
R3110 / 5101 / 5050 / 500

宽度为三时表面上的四次命中都是假象:每一次都落在印本的罗马数字索引里(XIUXXUXXUIXXUIIXXUIII…),这是语料中一段退化的文字,任何重复模式都能匹配。没有真正的命中。按照这一假设,仅 R286 就应当产生八次左右命中,所以一次都看不到的概率约为 e−8。

剩下的可能。这些密文不是卷中任何印出文字的固定宽度替换,既不是 Nr. 153 的,也不是其他任何急件的。剩下两种可能。要么这套系统使用变长码组,无论转录多好,任何固定宽度的对齐都匹配不上(没有相位偏好也指向这一点);要么这些纸页加密的文本不在印本中:Kiewning 用意大利语刊印要点,但把其余部分写成德语摘要,那部分意大利语原文从未付印。密钥(第 00 节)后来证实了第一种。两者都可以检验:前者用同一工具的变长版本,后者把一段密文的长度与其急件中印本只作摘要的部分相比较。

转录质量如何?对照 DECODE 较大的扫描件检查,p. 5 第 1 行与 DECODE 转录在七十四个数字中有两个不同,都是替换,没有长度差异(转录作 93 处扫描件为 73,转录作 30 处扫描件为 38)。第 2 行相差一两个数字,长度可能也不同。所以转录相当接近,在对齐中断的地方没有发现长度错误,那里的中断并非转录造成的假象。因此仍有两种解释,而且仅凭这些材料无法区分:要么转录在别处有足够多的长度错误,以致无法复原;要么这种密码根本不是这段明文的固定宽度替换。

04 这是什么密码

上面每项检验都是阴性。这一项不是,而且它对系统构成了约束。统计全部二十八段密文(112,805 个数字)中重复的数字子串,并与一个数字频率相同的独立对照相比:

子串长度密文中的重复数独立对照比值
4105,170102,8651.0×
664,0839,5906.7×
828,51991313×
1012,109112,000×
169660—
24390—

三十九个重复的二十四位数字串,而偶然情况下一个也不会有。谨慎使用的同音替换密码不会这样,因为同音符的存在就是为了打破重复,而这位书写者却不断重复长串。会这样重复的是代码:一种名码本,其中某个词或音节每次都以同样方式书写。密钥(第 00 节)两者兼有:字母用同音符,音节、词和人名用固定码组。长度不一的固定码组解释了上面每一种固定宽度攻击为何失败。用 BPE 对语料分段,得到 44,816 个词元、266 种词元类型,平均 2.5 个数字,长度分布在一到七之间:属于音节级别,而不是固定宽度。

另外两个假设经检验也不成立。第一份急件的重复谱与其猜词的重复谱在大约每字母一个数字的比例上吻合(3,570 个数字对 3,359 个字母),而用十个数字表示二十一个字母,就意味着这是多音替换密码;那样的话约束就反过来了,相同的字母必然对应相同的数字。最长一致的字母—数字游程:17 个字母,打乱的对照为 18、19 和 18,属于偶然水平。再者,由于加密保持顺序,重复的 BPE 词元每次都应落在同一个明文词上;74 种词元类型中有 16 种如此,对照为 13、12 和 13。不显著。

一处更正。上文第 03 节报告宽度二和三都没有相位偏好。我起初把这当作反对固定宽度代码的证据,那说得太重了:按观测到的数字错误率,一份急件就有约六十处笔误,每处都会翻转该行余下部分的相位,光这一点就足以冲掉真实的相位信号。相位检验没有定论。经过校准的语料搜索才是这一论断的可靠版本,它依然成立。

05 DECODE 转录中的批注

DECODE 的转录是带批注的,而我当初只粗看了第一份的开头。在二十八个文件中共有约 640 个 <CLEARTEXT> 标记,另有五条记录含有 <PLAINTEXT> 行,这是 DECODE 用来表示写在文档本身上的解读的记法。

记录明文标记页面上的解读
R29868
R29663
R30554In un lungo discorso
R30753
R29251
R30935Con l’ord(ina)rio passato intendo che fu scritto da S. M.tà à…
R30822restati più contenti della risolutione
R31314Nel particolare

这些急件大多是混合信件:简短的加密片段逐句夹在意大利语明文中。R308 的纸叶上写着:

Non sono · 369092022550852359029255082700852173166 2 8 · circa il particolare de · 6680650…
数码上方写着:restati più contenti della risolutione

这是一个边界已知、语域合适的精确猜词,而 Kiewning 书中没有它。这也解释了为什么从印本中取的猜词无法匹配这样的记录:加密段落只是一个分句,而印本刊印的是整封信的大意。

这个猜词也对不上。四十一个数字对三十四个字母,数码和注释都已对照 DECODE 的 1523 × 2088 扫描件核对过。在第 04 节所暗示的确定性约束下做穷举搜索,再在允许同音符的条件下搜索一遍:

模型结果
固定宽度 1、2 或 3不吻合(41 不能被 2 整除)
确定性字母代码,码组 1–2 位数字0 个解(精确)
确定性字母代码,码组 1–3 位数字0 个解(精确)
2 位码组,音节 1–3 个字母0 个解(穷举,400 万个节点)
同上,允许同音符0 个解(穷举,730 万个节点)

所以,要么解读者的注释与那段数字串并不精确对齐(他可能只注了一部分,或者一直注到了下一段),要么这套系统比上述任何一种都复杂。这就是9月20日时工作的进展。

06 仍未解决的部分

07 来源

工作文件、DECODE 转录、猜词、对齐器和求解器:targets/pallotto1629/。