中文译本 · 原作 Daniel Bourdeau《Unsolved Historical Ciphers》 以 CC BY 4.0 发布,本页由 JIC 翻译,非原作者官方版本,译文如有出入以英文原页为准 · 查看英文原页 ↗
S2 oo 9 al x u1 M r1 n1 x r1 · D oo n1 D 9 H2 S2 r1
[ri]solutamente · concluse

费拉拉 → 法国 · 由图形符号构成、带名码本的同音替换密码 · 1529年2月23日和27日

Sormano 与 Passano 自费拉拉致弗朗索瓦一世,1529年2月

弗朗索瓦一世
致弗朗索瓦一世

BnF Français 3096 第63、65、66号 · 弗朗索瓦一世驻费拉拉使节的三封密信 · 在缩微胶片上试了八种方法均告失败;随后套用了 George Lasry 2023年的密钥,它与这里推出的22个值中的20个一致

公爵的答复:per cosa dil mondo non voler … se alcunamente accetare il regno · 本页更正了自己先前的两项说法

Arya Sanketbhai Patel · 发布于 · 更新于

方法:用已知密钥读出 · 程度:部分(占该密码的5%)

摘要。弗朗索瓦一世驻费拉拉使节1529年2月23日和27日的三封信,BnF Français 3096 第63、65、66号,用的是由图形符号构成、带名码本的同音替换密码。密钥是George Lasry 的,2023年发表在 Tomokiyo 的 cryptiana 上,依据本卷中带注的 f. 113 构建。它是在从缩微胶片复原密钥的八次尝试都失败之后才找到的:这位书写者用了大约三十六种字形来表示约二十个值,而1960年代的缩微胶片分辨不出它们。随后把 Lasry 的密钥用于第65号的几小段,并与副本第66号核对。在找到这套密钥之前,这里推出了22个值,其中20个与他的表一致;错的两个恰恰是阻碍进展的那两个。核心段落是公爵的答复:“risolutamente concluse per cosa dil mondo non voler … se alcunamente accetare il regno”,他断然表示无论如何都绝不接受王国。文献方面的发现可以独立成立:第63号被认为遗失的第三页、以明写段落为孪生副本提供猜词的副本,以及第二位署名者的身份。程度:部分,约5%的密文已解密;三封信的完整转录尚待完成。第00节更正了本页先前的两项说法。

00 先说两处更正

这份报告先前说过两件不实的事。在此说明。

01 文件,以及一页并未遗失的纸

Gaspare Sormano 是米兰法学家,国王让他“resident aupres de mon cousin le duc de Ferrare”;他和一位只署名Ioachin的同僚,在1529年2月法国正在失去意大利之际,从费拉拉写信给弗朗索瓦一世。这些信收在一部 Fontanieu 汇编里,数字化自一卷黑白缩微胶片,每帧是一个双页跨页;画布编号等于张号加四,这一点已在两张标有张号的叶上核定。目录的描述有三处需要更正。

件号字母叶密码
62Sormano → 国王,1529年3月22日f. 113短段落,行间解读
63Sormano 与 Ioachin → 国王,2月penultimoff. 115、116和123四个页面,密集;一处注释
64Langeac 与 Ioachin → 国王,威尼斯,5月6日ff. 117–118无
65Sormano 与 Ioachin → 国王,2月23日ff. 119–120三个页面,密集
66同上,背注“duplicata”ff. 121–122三个页面,密集
67Sormano 致乌尔比诺公爵信的抄本f. 124四行,页边解读

第63号是完整的,它的最后一页是 f. 123。这封信在 f. 116v 页脚处句子写到一半就断了,而目标描述只说它的最后一叶不在目录所暗示的位置。它就是 f. 123,装订时错了位,放在副本之后:页脚编号为“3”,而 ff. 115和116的编号是“1”和“2”;它接续那句断掉的话,以落款和“Sormano, Joachin”两个签名结束,日期为“Da Ferr[ara] p[en]ultimo de Febraro M D XXVIIII”。它空白的背面横写着地址背注“…et Sormano / de penultimo febraro 1529”。所以这封信终究是有日期的,而1529年2月的penultimo是27日,不是目录给出的28日。与其余各件编在一起的第64号根本没有密文;而 f. 116v 上有第三处未被记录的解读:一个双字形码组上方写着“de Venetiani”,这表明这种密码带有名码本。

02 为孪生副本提供猜词的副本

第66号几乎逐字重复第65号,背注为“duplicata”,但两位文书加密的是不同的段落。第66号明写“fatta che hebbimo la reverentia a Madama Rainea et al Sr Don Hercole”的地方,第65号把它放在一段密文里;第66号写出“per la grandezza sua ricercava tempo per meglio pensarvi, presimo aspettar la sua final risposta, et in sto mezzo col Sr Don Hercole di nuovo fossimo, et fattogli intender”的地方,第65号加了密;反过来,第65号明写“et presentato le lre di vra Mta di credenza … et in nome di vra Mta”的地方,第66号加了密。核对了四处相互对应的段落。结果是,这对信件自己就提供了猜词,而且是文书本人的拼写,而不是后人的转述;把两份明文合在一起,不碰密文就能复原2月23日那封信的大部分内容。

03 密钥,以及它验证到了什么程度

BnF Français 3096 第124张正面:四行符号密文,左侧页边有同时代的解读
BnF Français 3096,f. 124r:Sormano 致乌尔比诺公爵信的抄本。四行密文,用一个双横参照符号连到左侧页边由同时代人写下的解读:“un cappitaneo suizzeri nominato calzolite ch al p[rese]nto si retrovava ne l’aquila…”。161个明文字母对应约161个字形。图像:法国国家图书馆,fr. 3096 f. 124r,经 Gallica(btv1b9060015d)。

这种密码是逐字母对应的同音符号字母表,每个常用元音有三四种写法,每个辅音一两种,另有名码本、一个句号标记和一个连接标记。Sormano 在第62号里也明写了这一点:他是应 Ioachin 的要求“in la mia cifra”写的。复原的链条很短,可以核查:

二十二个值,其中十三个经过两重确认,同音符结构也已理清。然后就停住了。

04 密钥复原为何停下:八种方法

障碍在于图像:这位书写者用了几种字形,它们之间的差别比胶片能记录的还小(区分i和l的两个像rho的形状,三角形与alpha,chi与带钩的4,一笔直画与带尾的4)。试过的每种方法都栽在这几对上。

方法结果
对切分出的字形做二值掩码重叠(Jaccard)把错误的配对排得最近
模糊化、容许平移的掩码余弦相似度,在一行已知文本上调参区分度0.017;聚类40%
最近模板分类,用第1行去分类第2行正确率26%
灰度NCC图块,留一法正确率11%
人眼阅读,事先知道明文21个字母对17个
人眼阅读,事先不知道明文不成意大利文
语言模型 Viterbi 解码流畅的编造意大利文
自动画框,再在7倍放大下人工识别看得清,仍自相矛盾

另外还查了两种可能。IIIF 服务报告整幅跨页母图为8657 × 5876,每页约4,300像素,所以上面用的放大裁图只是对一个50到60像素字形的插值,不存在更多细节。而且这一卷里没有密钥表。

第七行是个警告。处理有噪声的替换密码,标准做法是把字形转录当作概率性的,在语言模型下解码,而这些信件提供了7,194个拼写正确的明文字符,足以训练一个模型。用161个已标注猜词字形算出的最近样本发射得分、一个意大利语字符4-gram模型和 Viterbi 解码,第65号加密的结论部分出来是这样的:

echeretantacontaracherarandetolandicheretrarerararen
onerarererarereranetarenenondendetonderiochera
raralentanererenetondiondereteneranecherandeta

这看上去是流畅的意大利文,却完全是编出来的。发射准确率低于约40%时,语言模型就不再纠正字形模型,而是开始从语料中最常见的模式(che、tanta、ra、onde)生成文本,拼凑起来什么意思也没有。读者如果不拿它去和字形核对,就会把它当成解读归档。对这些段落的任何所谓解读,都应该要求它拿出逐个字形的证据。

05 这些信讲了什么

这里的一切都来自明写段落,或来自这一卷之外。没有任何内容是解码得来的。

出使。Ioachin 于“Zobia passata”(上周四)到达费拉拉,径直前往 Sormano 的寓所,向他出示国王的指示和授权,两人定下了口径。他们向Madama Rainea(法国的勒妮,前一年嫁给埃尔科莱·德·埃斯特)和埃尔科莱大人致意,呈上国书,以“molte efficacissime ragion”向阿方索一世公爵提出国王的建议,提醒他“la grande opera che in beneficio della sua persona, stato, casa et successione vra Mta havea fatto”。公爵感谢他们“la cosi grande et honorata offerta”,说他不仅乐意,而且恳请国王惠允[密文],却不肯给出答复:“la cosa per la grandezza sua ricercava tempo per meglio pensarvi”。他们等候他的最终答复,同时通过“veramente desideroso far servicio a vra Mta”的埃尔科莱大人做工作。他们的后备人选是元帅 Trivulzio,信中三次提到他:他在公爵面前的“auttorita et credito”会“assai conferira et servira”,预计他前往威尼斯时会途经费拉拉,2月23日的信就是以等候他作结的。

Ioachin 是谁。目录中的“Joachim de Vaulx”和热那亚谈判代表Gian Gioacchino de Passano,Vaux 领主是同一个人,法国人简称他 Jean Joachim。有三点证据:弗朗索瓦一世写给 Jean du Bellay 的信中提到“Monsr de Vaulx, Jean Joaquin”;David Potter 的清单注明 Passano“fut envoyé a Ferrare d’où il écrit le 23 février (BnF, fr. 3096, fo. 119-121)”,那就是第65号;Molini 刊印的威尼斯来信中,写信人说到“le lettere … da Ferrara per il Sig. Gaspar Sormano et per me Ioachin”。

实际提出的是什么。国王约在1529年1月30日写给 du Bellay 的信说明了 Passano 所负的使命:“A ceste cause expedie icelluy de Vaulx avec pouvoir de proposer aux Venitiens, Fleurentins, duc de Millan et de Ferrare [et autres] afin si faire se peult une si saincte salut[aire alliance]”:即一个以教皇为首、法国和英国为缔约方的反皇帝的意大利总同盟,“moyen de rompre les desseings et entreprinses de l’Empereur et d’avoir toute l’Ytallie contre luy”。这就是信中所说的“instruction et mandato”,那份“cosi grande et honorata offerta”也必然与此有关。本条目的目标描述断言阿方索“拒绝为自己接受那不勒斯王国,也拒绝法军统帅之职”。国王的指示描述的是同盟,而不是王国,而弗朗索瓦一世对那不勒斯的权利主张只维持到那年8月的康布雷和约,所以许以王国是可能的,但在查阅过的来源中没有证据。我由此错误地断定这一说法没有依据。密文的结论有利于这一说法(见下一节)。同盟是此行的差事;王国显然也摆在了桌面上。

第67号,靠页边注解读出来。一位名叫 Calzolari 的瑞士队长带着1,200名步兵(瑞士人和德意志雇佣步兵)驻在拉奎拉,他们想投过来“al beneficio de la lega”。Sormano 认为此事“nõ de picolo momento a beneficio della lega et damno d’inimici”;威尼斯人只肯付自己那一份,费拉拉又筹不到钱,与其等国王回复而坐失良机,他便以自己的信用向乌尔比诺公爵作保,答应在费拉拉或佛罗伦萨开一张可靠的汇票,并保证国王会付款。Molini 刊印的5月6日威尼斯来信显示了这件事所属的行动:同盟正在把帝国的雇佣兵从那不勒斯王国收买过来(“quelli Alamani che si leveranno dal servicio de gli nemici … al soldo de la lega si conduchino”),而敌方“per meglio asicurarssi de l’Abruzo, et maxime de l’Aquila”在那里修起了一座要塞。

06 用 Lasry 的密钥解密

George Lasry 的 Sormano 密码密钥表:每行标一个字母,各列出该符号约十个手写样本
Sormano 密码,密钥由 George Lasry 于2023年复原:这张示例表依据 BnF Français 3096 f. 113 构建,也就是本卷里那份带注的对照。a有四种写法,e四种,i四种,o三种,u/v四种,s两种,另有双字母cc和ll:大约三十六种写法对应约二十个值。每个值有十个样本,才使它们能够区分开来;缺了这一点,八种方法都败下阵来。图像:George Lasry 制表(2023),依据 BnF fr. 3096 f. 113,经 S. Tomokiyo,Cryptiana。

这里推出的22个值中有20个一致。对照这张表,我从两份同时代解读中独立推出的值(n、c、a两次、p、i三次、t、o两次、s、u/v两次、e、r、m、q、h)全部吻合。错了两个:数字4是i,不是e;数字3是a,不是o。正是这两处错误造成了卡住calzolite的那些矛盾。这张表还提供了我缺少的值(数字9=l,带点方框=ll,双f=f,大写S=g,交叉横杠=cc),并纠正了一个猜测:我当作句号标记归档的带点圆圈,其实是字母i。

这套密钥从头到尾都验证得通。第65号中有一段的明文由其孪生副本明写给出,在这一段上,密钥给出的正是孪生副本里的原话:

glyphs   S2 oo 9  al x  u1 M  r1 n1 x  r1   D  oo n1 D  9  H2 S2 r1
key      s  o  l  v  t  a  m  e  n  t  e    c  o  n  c  l  v  s  e
         [ri]solutamente                    concluse

公爵的答复。在第65号关于那次觐见的叙述中,紧接在那几个词之后,密文给出“per cosa dil mondo non voler … se alcunamente accetare il regno, né [ta]manco far …”。连同前后的明文:

“… finalmente ringratiandola della cosi grande et honorata offerta che gli era piaciuto fargli, risolutamente concluse per cosa dil mondo non voler … se alcunamente accetare il regno, né [ta]manco far … et il parlar suo fu di sorte che [Jo Sormano mi parue quasi chiaro]…”

他感谢他们如此重大而体面的提议,并断然表示无论如何都绝不愿以任何方式接受王国,甚至也不愿……,这个分句里本该是法军统帅之职,与上文一致,但尚未有把握地解密出来。所以费拉拉的拒绝就在密文里,用的是语气强烈的per cosa dil mondo,而承载它的这个句子,在前面两个词处就受到孪生副本明文的控制。

剩下的是转录。需要对全部三封信做完整转录。我的眼睛仍会把i的四种写法中的某些与o的三种写法混淆,其中有几种都是圆形中间带一个记号,所以个别词需要核对;上面的解密,凡是有孪生副本控制或意大利文毫不含糊的地方,都是可靠的。方法一节里的程序(自动画出字形框,再在约七倍放大下对照 Lasry 的样本用眼睛识别)就是完成它的办法。

07 我曾去找的猜词,现已过时

Molini 的Documenti di storia italiana第二卷刊印了这几位使节的其他信件,连同它们的同时代解读,而且明说了这一点:关于 Sormano 1529年4月13日自费拉拉发出的信,他注明“Alcune espressioni sono in cifra, con sopra l’interpretazione di carattere sincrono, e sono quelle impresse in corsivo”:加密的短语依据行间解读用斜体排出。那封信用的是 Sormano 自己的密码,也就是我们这几封信里的“mia cifra”。

要利用它,就得弄清 Molini 所用的ancien卷号。偏移量是5525:anc. N = Français (N − 5525),经过四次确认——anc. 8621 = fr. 3096(见其自身的说明),anc. 8499 = fr. 2974(“formerly catalogued as 8499”),anc. 8525 = fr. 3000,anc. 8530 = fr. 3005;另外 Potter 为 Molini 称作8525 c. 69的那封信引用 fr. 3000 fo. 69,也独立证实了这一点。随后又在叶面上验证了这一做法:fr. 3000 fo. 74上有密文,也有完整的行间解读,其注释与 Molini 的斜体逐字吻合。它的字形属于另一种密码,混有数字:是 Langeac 和 Passano 的威尼斯密码。

所以有一份文件能破开这些信:BnF Français 2974,第94张,Sormano 1529年4月13日自费拉拉致蒙莫朗西的信,用的是 Sormano 的密码,带有同时代的行间解读,而其文本 Molini 早已刊出。把那份刊印的明文与这些字形对齐,就能在正确的密码里得到一条长猜词,应当能得出整个字母表,每种写法都有若干样本,而这正是这次尝试所缺的。Molini 刊印的五封 Sormano 信件中,只有这一封带有密码说明;其余几封他只说“È autografa”。偏偏这是这一组手稿中法国国家图书馆唯一没有数字化的一份:只有缩微平片,复制底片号S 39769。Molini 没有刊印第63、65、66号,所以这几封至今未刊,也未完全解读。

08 方法,以及下一步该用的程序

由于没有可用的图像处理库,整个流程是纯 Python 写的: sips -s format bmp 写出一个未压缩的BMP并直接解析,然后是阈值分割、连通域、根据水平墨迹分布检测文本带、拆开连写字形并吸收碎片的清理、形状聚类,以及用迭代 Needleman–Wunsch 对齐猜词。在 f. 124r 的猜词上,它找到了4行中的4行文本,161个连通域对应161个字母,这本身就独立证明了这段是逐字母对应的,没有音节码组。

找到的最佳程序,也是最后一个,是混合式的:字形框取自自动切分,这一步是可靠的;每个字形则在约七倍放大的单词级裁图上用眼睛识别。用眼睛转录整行会切错;自动分类会认错;混合法两样都不犯。拿到 fr. 2974 猜词的人应该用的就是这个办法。

10 资料来源

未经验证:这里的每处解读都出自缩微胶片图像或印本,第63、65、66号的加密段落只解读了短短几段。已核查:张号对应、文件清单、第63号的页码和日期、第65号与第66号互补的加密方式、22个密钥值。未核查:巴黎的原件,fr. 2974 fo. 94。