花卷
上期我们讲到,罗西诺尔依靠他天才般的破译本领一路从路易十三身边的私人顾问干到了路易十四的首席密码学家,他对法国当时使用的密码表进行了大量的改进,通过扩充字典的单词数量以及使用“两部式”设计大幅提高了密码的强度。不过他的功绩到这里还不算完,我们这个故事的主题——“伟大密码”到现在还只字未提呢!
上阵父子兵
俗话说人比人气死人,罗西诺尔不但在事业上风风光光,还收获了圆满的爱情,妥妥的人生赢家。1645年,罗西诺尔45岁,这一年,黎塞留的下一任红衣主教马扎然给罗西诺尔封了个不小的官位,也就在这一年,罗西诺尔娶到了一位大家闺秀——凯瑟琳·昆汀(Catherine Quentin),家庭事业双丰收啦。凯瑟琳出身贵族,嫁给罗西诺尔的时候只有23岁,可以说是年轻漂亮又有身份,不僅如此,罗西诺尔和凯瑟琳还生了一儿一女,人生简直是圆满了。
为什么要说这段事情呢?那是因为罗西诺尔的儿子——博纳旺蒂尔·罗西诺尔(Bonaventure Rossignol),名字太长,还是简称小罗西诺尔好了——也是一位相当重要的人物。要知道,负责加密和破译意味着接触各种国家机密这等事儿绝对少不了,我要是国王,我肯定要挑最信得过的人来干这事,罗西诺尔当然就是这么一个人。不过,圣贤也熬不过生老病死,罗西诺尔百年之后咋办?又不能随便把这个工作甩给别人,想来想去,也只能让儿子继承自己的衣钵了。
好在小罗西诺尔还是很争气的,从小在老爸的培养下就展现出了跟他老爸当年一样的才华,或者说,有了老爸的教导,应该是青出于蓝而胜于蓝才对吧。反正,小罗西诺尔长大之后,就被他老爸安排在身边一起做事,到老罗西诺尔去世之前,他们应该也共同工作了至少30年,正可谓是上阵父子兵。在他们的努力下,法国对于各种情报的控制达到了一个新的高度,后来甚至专门搞出一个部门来,就负责拦截和破译那些可疑的信件,这个部门起了个名字叫“Cabinet Noir”,就是小黑屋的意思,多么形象!之后很多国家跟风抄袭这个名字,比如英国和美国叫“Black Chamber”,其实都是一个意思。我们标题当中说的那个“伟大密码”,就是在这段时间中,由他们父子二人共同设计出来的。
伟大密码
路易十四上台之后,对于罗西诺尔父子的功绩也是赞赏有加,他觉得破译密码这个事情太重要了,当时别的国家用的密码都是大路货,破译起来不能说毫不费力吧,至少对于那些重要的内容,绝对是能看懂个八九不离十的。路易十四感觉很爽,不过他也担心,万一别的国家也有像罗西诺尔这样的大牛,那可怎么办?尽管罗西诺尔已经采用两部式设计提高了密码的强度,但是这招别人也已经学会了呀,我得让罗西诺尔整出点他们都不会的高级货来。
于是,路易十四让罗西诺尔父子帮他设计了一套最高等级的专用密码,这套密码仅供处理与王室相关的最重要机密信息。它必须特别强大,至少在路易十四在位这段时间得保证让别人破译不出来。这个要求确实挺高的,罗西诺尔之前的两个方法,也就是增加字典的单词量和采用两部式设计,其实并没有改变nomenclator的基本思路,也就是以字母表为基础进行置换的思路,于是怎么才能另辟蹊径就成了能否让老板满意的关键。
功夫不负有心人,罗西诺尔父子最终还是出色地完成了这个任务,要不然这一家子怎么能名垂千古呢?他们搞出来的这套密码,就叫作“伟大密码”(Grand Chiffre)。这个名字听上去好厉害,所以伟大密码到底是个啥样的密码呢?这套密码写出来就是一组一组的数字,每一组数字的范围都是从1到500多,显然这玩意儿跟当时常见的nomenclator弄出来的东西相比,至少看起来完全不一样。而且伟大密码还有不同的版本,用的虽然都是这些数字,但不同版本之间的编码不通用,这样一来,还可以对不同的收件方设计不同的密码表,提高了破译的难度。
那么这个所谓的“伟大密码”有没有达到路易十四的要求呢?真的达到了,而且还超额完成了任务!就像我们前面提到的,伟大密码是国王“特供”的,那么用这套密码加密的信息必然都是国家的顶级机密,这种机密当然必须得由罗西诺尔家族的人亲自处理,因为伟大密码的设计和原理本身也是绝密,不可能让外人知道的,就连路易十四本人应该都不清楚这套密码具体是怎么设计的。于是,伟大密码就成了罗西诺尔家族世代相传的“传家宝”。当然了,有了这个,也就能确保子子孙孙都能混这口饭吃,这铁饭碗也是相当铁呐。
不过,有句话说得好,富不过三代,这句话在罗西诺尔家族居然也应验了,因为小罗西诺尔的儿子小小罗西诺尔(Antoine-Bonaventure Rossignol,这个名字把他爷爷和他爹的名字给合体了)成了掌握伟大密码的最后一代,后面不知道为啥就没传下去。于是,伟大密码的秘密被小小罗西诺尔一起带到了坟墓里,以前用这套密码加密过的那些文件也成了一大堆莫名其妙的数字,没人能看懂里面写的是啥了。
破解玄机
为什么说伟大密码是“超额完成了任务”呢?因为在小小罗西诺尔死后,有很多很多密码破译专家试图破译伟大密码,想看看路易十四的档案馆里有什么可以挖的八卦。最关键的是,法国人自己也想知道这段时间发生了什么事啊。然而令人震惊的是,之后将近200年时间里,居然没有一个人能破译这套密码!估计罗西诺尔祖孙三代正在九泉之下偷着乐呢。
但是你也别小看了人们的好奇心和毅力,挖八卦爆猛料的诱惑可是吸引着很多人去打这个传说级别的Boss的,到了200多年之后的19世纪末,总算是有个人出来把这个大Boss给干掉了,这个人就是艾提恩·贝塞里(étienne Bazeries)。贝塞里是一位法军的密码学家,在“一战”的时候也帮助法军破译过各种密电,他对密码学做出过不小的贡献,其中之一就是破译了“伟大密码”。
贝塞里破译伟大密码花了整整3年的时间,当然了,跟过去200年没人破译得出来相比,其实还是相当快的吧,而且当时也没有电子计算机,所以贝塞里也没什么手段可以作弊,应该算是公平竞争了。后来他把自己破译伟大密码的过程写成了一本书,名叫《破译神秘数字》(Les Chiffres secrets dévoilés),下面我们就来看看贝塞里到底是怎么破译这些“神秘数字”的吧。
首先,贝塞里先琢磨了一下这些数字到底有什么规律,他发现总共有587个不同的数字,这个数量比较尴尬,因为如果是一般的字母表置换密码,不可能出现这么多种编码,一个字母一个码,再加上空码和平衡字母频率的“一字多码”,最多几十个码就够了。如果是字典的话,587个编码又太少了,我们之前说,那个时候的字典密码的词汇量都在1 000个以上,500多个词也不够使啊。估计之前200年时间里面,很多人都直接在这里卡住了,因为实在不知道这587个编码到底编的是什么码,简直太奇葩了。
贝塞里接着猜,如果不是一个字母一个码,会不会是两个字母组合起来一个码呢?法语有26个字母,如果两个字母一个码,那差不多有26×26=676个码,跟587个差不多,也许是去掉了一些不可能出现的组合,所以数量变少了?反正贝塞里就先朝着这个方向继续猜,他找出了几个出现频率最高的数字,然后用频率分析法,希望能够对上法语中出现频率最高的几个字母组合。不过这个结果特别诡异,似乎只有很少几个字母组合能对得上,其他大部分都对不上,用这种方法破译出来的结果根本还是看不懂。
到这里,贝塞里自己似乎也开始怀疑人生了,我们法国老祖宗这葫芦里卖的到底是什么药!他又想了很久,忽然灵机一动,难道说,这个编码不是代表字母,不是代表字母组合,也不是代表单词,而是代表音节?和英语不一样,法语、德语这些语言都是有严格的拼读规则的,换句话说,就跟汉语拼音一样,看着就能念出来,所以每种发音都是固定的字母组合。但是每个音节的字母数量是不固定的,可以是一个字母,也可以是好几个字母,怪不得之前这么多人都没摸着门道,因为这种密码不是给文字编码,而是给“读音”编码!
那么贝塞里这回到底猜对了没有呢?他开始尝试验证这个猜想,不过还是遇到了不小的困难。他先列出了几个法语中出现频率最高的音节,然后他发现,“124 22 125 46 x”这个序列在一篇密文中会多次出现,其中第5个数字有几种不同的变化。由于伟大密码大多用来加密国王的军事命令,再对照法语中常见的音节,贝塞里猜测前4个数字分别代表les、en、ne、mi,而第5个数字代表复数变化,连起来就是“les ennemis”,意思是“敌人”,这个词在军事命令中当然会经常出现,没毛病!
在密码破译中,只要猜对了一个单词,后面就可以像玩拼字游戏一样顺藤摸瓜了。贝塞里觉得自己总算是上道了,他开始兴奋起来,伟大密码的秘密也开始被他一点一点地揭开。最终,贝塞里成功还原了整个伟大密码的结构。首先,这套密码主要采用音节来编码,这个方式实在过于古怪,也真的成功骗过了很多人,除了音节之外,也有一些编码是代表单个字母、后缀变化(单复数、阴阳性等)甚至是某些完整单词。其次,这套密码也继承了罗西诺尔所提倡的两部式设计,也就是说,它的编码排列顺序是打乱的,和字母排列顺序无关。还有,这套密码也采用了一字多码的方式来抵御频率分析,比如上面提到的复数变化,就对应了五六个不同的编码。此外,这套密码中还包含各种干扰码,比如空码,贝塞里还发现了一种特殊的编码,这个编码的意思是忽略上一个编码,可谓是煞费苦心呐!
铁面人之谜
随着伟大密码被破解,路易十四时代的很多资料也就跟着被挖了出来,那么人们到底发现了什么八卦呢?其中流传最广的一件事还得说是关于铁面人的身份之谜。
铁面人(LHomme au Masque de Fer)是路易十四时代的一个非常神秘的人物,这个人一直被关在监狱里,而且整天戴着一个面具,不过这个面具倒不是铁的,而是黑色绒布的,至于为啥要叫铁面人现在谁也搞不清了。当时只有极少数人能见到铁面人,而且据说几乎没人见过他的真面目,就连死后下葬都用了一个假名,所以好多人都在猜这人到底是谁。其中最有名的一个说法出自大仲马的《三个火枪手》,说铁面人是路易十四的孪生兄弟。当然了,这毕竟是小说里写的,谁也不知道是真是假。
贝塞里在破译了偉大密码之后,发现了一封路易十四写给一个将军的信,信里说的是让他去把另一个叫维维恩·德·布隆德(Vivien de Bulonde)的将军给抓起来,因为布隆德在1691年的库内奥战役中面对敌军临阵脱逃,贻误战机,必须马上抓起来问罪。这封信破译出来是这样的:
国王陛下要求你立即拦下布隆德将军,并将他拘禁在皮内罗要塞,夜晚派人严加看守,白天允许他在城墙上散步,但他的脸必须覆盖着一个330 309
这里有两个没有被破译出来的编码:330和309。贝塞里根据上下文猜了一下,觉得330应该代表面具,而309应该是个句号,所以这个布隆德将军很有可能就是铁面人。不过贝塞里的这个说法也不是很站得住脚,因为330这个编码在其他文章里根本没出现过,所以找不到其他的佐证来证明这个编码指的就是面具。更何况,其他史料也不太支持这一说法,比如说布隆德将军被抓起来问罪是公开消息,甚至都登上了报纸,根本不像铁面人这么神秘兮兮的,而且他几个月之后就被放出来了,这点罪名也不至于在监狱里关一辈子。至于铁面人的真实身份到底是什么,恐怕将会是一个永远的谜团吧。
(完)