【编者按】
从古典密码到量子密码,再到当前广泛应用的二维码,密码演变跨越了数千年。《破译者:人类密码史》一书详细记录了世界密码学发展历程,鲜活刻画人类秘密通信的5000年,内容涵盖密码源起史、军事应用史、机制沿革史、技术革命史、文化演进史、大众生活史等等方面。本文摘编自该书。
密码文学也要大大感谢爱伦·坡。自爱伦·坡指明道路以来,其他作家纷纷将密写用于他们的故事;而且,在这些故事中,可被恰当地称为《金甲虫归来》或《金甲虫之子》的作品亦不在少数,因为它们都采用同样的藏宝主题。(读读这些故事,再读读《金甲虫》,爱伦·坡的天分跃然而出。)但其他作品的密码插曲通常写得不赖,作家的水平也体现在处理密码内容的方式上。这些密码可能更可信,它们的破译阐述得更清楚,它们与情节的联系更紧密,说明它们在这里不仅仅是个装饰。它们一般都是简单密码,因为对一个复杂密码的说明或破译会大大拖累叙事的节奏,所需解释也会超过小说读者的忍受限度。当然有时,作者本人的知识亦不足以有效写作这个话题。
许多著名作家在他们的作品中提到密码学。1852年,《名利场》作者、身高6英尺4英寸(约193厘米)的威廉·梅克皮斯·萨克雷在《亨利·埃斯蒙德的历史》(The History of Henry Esmond)中用了一个卡尔达诺漏格板,这部小说被称为他最优美的作品,为此他曾在不列颠博物馆研究了好几个月。在他的书中,一段有关阴谋的描述谈到密码,阴谋者企图把后来的詹姆斯三世推上英格兰王位;就是在这场阴谋中,阿特伯里主教被判有罪,定罪的主要证据就是密码分析。不过这里没写到密码分析,只提到一封密信的传递。
密写的神秘为儒勒·凡尔纳的三本小说增添了悬念。总的来说,他对密码内容的处理和其他技术内容一样出色。但由于一次在生理或心理上的描述不符合实际,他的两个破译被搞砸了。这些损害了他密码分析的可信性,比技术上不现实对他科学幻想所造成的伤害还要大,因为它们违背了不可改变的自然法则,而幻想只是超越了人类当时的科技能力。另一方面,就像他预见了潜艇、登月和快速环球旅行一样,凡尔纳也预见到一种密码分析法。
他以一个三层密码开始了他第二本巨著《地心游记》的写作,这部作品奠定了他的声誉。奥托·黎登布洛克教授刚买了一本古如尼文手稿,写在一片羊皮纸上的密码从手稿里飘了出来。它也用如尼文写成,有21个六字母组。黎登布洛克把它转换成罗马字母,无任何意义。接着他以栅栏密码形式重排字母,再转抄,还是不走运。后来,他年轻的侄子阿克赛尔“无意识地”用转抄了字的纸扇风,透过纸背看到文字,发现它只是一段倒写的拉丁文字。此处它的可信度在几个方面打了折扣:透过纸读字就这么容易吗?阿克赛尔有能力领会倒写字母的意义吗?也许没有。但所有这些都在阅读明文的激动中被忘掉:“勇敢的探险者,7月之前,当斯卡尔塔里斯(山)的阴影落在斯奈费尔火山口时,你可以顺着山口而下,抵达地心。我到过那里。阿尔纳·萨克努赛姆(Arne Saknussemm)。”黎登布洛克和阿克赛尔按照破译出的指示到达了地心。
在《亚马孙漂流记》(La Jangada)中,雅里凯法官用普通单表替代方法未能解开一封密信,确定它是一种格伦斯菲尔德系统(数字密钥维热纳尔密码),因为它包含一堆三字母重码。这个推断十分牵强,因为许多密码能生成同样的三字母重码,由此该结论不成立。不管怎样,按照格伦斯菲尔德密码,雅里凯根据外部信息,尝试以名字Ortega(奥泰加)作为信末签名的可能词,进行破译。他立即发现,最后六个字母SUVJHD,在字母表中全部落在Ortega的字母后面,与他的假设相符。雅里凯用这个可能词还原出密钥432513,用它测试密信开头。密钥以4开头的概率是六分之一,他幸运地取得突破,当场读出明文。虽然这种浅显的方法以前就很可能被人用过,但凡尔纳1881年的这段说明却是初次在出版物中出现。甚至可以看成是20年后,巴泽里埃斯出版同样方法的前身,他用一个可能词还原多表替代密钥,吹嘘说它是“一种全新的破译方法,卡西斯基、克尔克霍夫、若斯和瓦莱里奥都没有描述过!”在《桑道夫伯爵》(Mathias Sandorff)中,凡尔纳的最后一次密码描写没有提到破译,因为萨卡尼发现了信息加密漏格板。在这本1885年出版的书中,凡尔纳引用了爱德华·弗莱斯纳·冯·沃斯特罗韦茨(Eduard Fleissner von Wostrowitz)四年前出版、神化漏格板的《密码学手册》(Handbuch der Kryptographie)。凡尔纳可能还读过比《桑道夫伯爵》早两年出版的克尔克霍夫《军事密码学》,因为凡尔纳在讨论优秀密码的要求时,所用语言风格像极了克尔克霍夫。但他学克尔克霍夫没学到家,因为他宣称漏格板和加密代码是不可破的。
在描写夏洛克·福尔摩斯(Sherlock Holmes)的侦探小说中,他不止一次而是三次碰到密码(不包括一个简单的闪光信号系统和一个字谜)。《“格洛里亚斯科特”号》(The ‘Gloria Scott’)中,这个大侦探发现,秘密信息由每三个单词中的最后一个单词组成,藏在一篇隐语文章里。《恐怖谷》(The Valley of Fear)中,福尔摩斯得到宿敌莫里亚蒂教授同伙的一封数字密信,不仅出色地推断出它是个书本代码,而且找到了那本书。这本书随处可得,版本统一。因此《圣经》被排除,因为它虽然无处不在,但页码标准不一;还因为,“依我看,莫里亚蒂一伙人身边几乎不会携带《圣经》”。唯一同时符合两项要求的是《惠特克年鉴》(Whitaker’s Almanac)。最新版本译出无意义的Mahratta Government pig’s bristles,但去年的版本给出了完整意义。就这样,福尔摩斯都不必知道密码分析,全凭他有名的推理能力,破译了密信。
但他对密码的掌握(他精通自己职业所涉及的所有知识)在《跳舞小人》(Adventure of the Dancing Men)故事里显现了出来。这些跳舞小人是手脚指向不同方向的人物线条画,它们共同构成了密码符号。美国暴徒阿贝·斯兰尼是“芝加哥最危险的恶棍”,他青梅竹马的前恋人埃尔茜嫁给了一个英国乡绅。斯兰尼用小人密码给埃尔茜写信。乡绅抄下用粉笔写在窗台和工具房的信息,带给福尔摩斯。福尔摩斯破译了信息,但未能阻止悲剧,斯兰尼在一次交火中打死乡绅,逃之夭夭。福尔摩斯从破译的信息中知道了他住在哪里,于是用自己还原的密码符号精心编写了一条信息,寄给他一张便条,催他Come here at once(速来)。(福尔摩斯的计划大概借自托马斯·菲利普,1587年,后者为了诈出巴宾顿针对伊丽莎白阴谋中准备行刺者的姓名,在一封给苏格兰玛丽女王的信中伪造了一段密码附言。)斯兰尼天真地以为,只有埃尔茜和他的芝加哥匪帮同伙能读懂这个密码,因此这张便条肯定来自她。他回到乡绅家,当即被捕,并承认了罪行。
夏洛克·福尔摩斯破译的一条跳舞小人密码信息
福尔摩斯,按他自己的说法:“精熟各种密写形式,本人就此写过一篇小专著,分析了160种不同密码,但我承认,这个我从未见过。”当然,他指的是用跳舞小人密码,“让人以为它们只是小孩的涂鸦”,将自己单表替代的特征隐藏起来。他立即着手破译,没走任何弯路,这说明他一眼就认出了它们属这一类密码。他的工作比其他分析虚构密码的分析家要难得多,因为他的文字极短,混乱,晦涩,满是专有名词。它前后由5条简短英文信息组成:(1)Am here Abe Slaney;(2)At Elriges;(3)Come Elsie;(4)Never;(5)Elsie prepare to meet thy God。但开始时,福尔摩斯只有第一条信息,他以此打开突破口,直到增加了后来的三条信息,他才破开密码。它共有38个字母,其中8个只出现1次;9个单词中4个是专名,其他5个均不位于最常用的10个英语单词之列;这10个最常用单词一般占到英语文章的四分之一。
如此艰难的破译显示出这个大侦探灵活强大的思维能力。福尔摩斯显然更倾向于运用他的严密推理(频率分析)来破译这封密信,他就是这样开始的。第一条信息包含15个跳舞小人,其中4个欢快地展开四肢,3个左腿弯曲,福尔摩斯立即把4个展开四肢的小人标记为e。现在,不管是字母频率还是其他统计现象,在这么小的样本中都靠不住;很有可能3个弯腿小人,或者某种姿势只出现一次的几个小人之一代表e,甚至第一条信息里根本就没有e。难以相信福尔摩斯不知道这一点。不管怎么说,他“较有把握地”把那个符号确定为e。当然,他对了,但是为什么?福尔摩斯无疑认出拿旗子的小人是词尾标记,注意到4个伸展四肢的小人里有2个拿着旗子,马上联系到一个众所周知的事实:e是英语中最常见的结尾字母。他敏捷的头脑大概还观察到与e相连的小人各不相同。但这些都是在不经意间闪过他的超级大脑,这也许有助解释他的推理为什么总是那么快,因此,他解释给华生听时没把它说出来,也许他只是不想拿所有这些细节增加后者的负担。
但他确实认识到,对于第一条信息,不管是频率分析还是任何其他手段都不能再奏效,于是他选择等待更多文字。随着接下来三条信息的到达,他看出频率分析对这么短的文字没用。当钟爱的推理手段行不通时,他灵活地转向归纳方法。他的表现十分出色。他首先猜测,在一个拥有五字母的单词中,第二和第四个字母为e,该单词是never(不);他再推测,Elsie(埃尔茜)的名字也许会出现在信息中,并且找到了它。凭借这些对应,他取得了很大进展,再经过更多艰苦努力,终于完成了破译。
一些装腔作势的密码学家讥笑福尔摩斯花了两小时才破开这些密信,在此过程中,“小人和字母”画满了“一张又一张纸”。但破解该密信所花的时间不仅可以理解,而且令人钦佩。若按字母顺序排列,这些小人看上去就是在毫无规律地乱舞;如果按舞蹈动作顺序排下来,字母又毫无规律可循。换句话说,跳舞小人密码完全是随意的。福尔摩斯迷俱乐部“贝克街杂牌军”的一些成员,其中包括亚历山大·伍尔科特、克里斯托弗·莫利和富兰克林·罗斯福,曾为找到某种密码小人结构规律工作到深夜,纯粹白费力气。福尔摩斯本人在他给斯兰尼的“速来”信息里只用了已经还原的字母。这个事实表明,他没找到任何规律,使他在编写那条信息时哪怕多一点点自由度。而且如果有这么一个密钥形式,福尔摩斯肯定会发现它。密码发明人、埃尔茜的父亲、“匪帮头子”帕特里克的跳舞小人想法可能来自一个以人类图案为基础的密码,这个密码出现在美国陆军通信兵部队创始人艾伯特·迈尔的半官方《通信手册》中;或者来自稍晚一些,一个将小矮人用作密码符号的美国专利发明人;或者来自无处不在的烧炭党,他们的口令是双手前伸合十,应答则是两拳一上一下按在胸前。福尔摩斯或许知道这些可能的来源。但即使帕特里克的想法确实来自其中之一,符号也已经被他改得面目全非,因此密码分析成为解决问题的唯一方式。
在跳舞小人例子中,还有最后一点需要澄清,它解释了所有出版物中出现的密码错误。在最早的《跳舞小人》版本中,密信用同样的小人代表Never中的v和prepare中的p,用相同的小人表示Abe中的b和Never中的r,贝克街杂牌军在这个问题上花费了大量精力。正是在寻找“正确”版本的过程中,他们错误地假设密码表具有某种规律,编制手和腿的位置表,推测未出现在密信中的八个字母(f、j、k、q、u、w、x、z)的密文符号。他们还试图找到错误的原因。但他们努力的唯一效果,就是表明为什么福尔摩斯是大师,而他们只能是学生。所有这些人只会闭门造车,从不研究事实。有观点认为,这些错误“存在于故事里恶棍的信息中,如果你愿意,可以归因于这个可怜恶棍的困惑和绝望”,但没人提到那个乡绅在抄写这些信息带给福尔摩斯时同样可能发生的错误。实际上,这些错误既不是斯兰尼的,也不是乡绅的,因为在福尔摩斯破译密信时,这些错误并不存在。如果原件用同样符号代替v和p,福尔摩斯在猜出Never后,就会部分还原出明文vrevare,而不是他显示两个p未知的?re?are。同理,如果r和b在原件中混淆了,他在猜出Never后会(把正确的Abe)显示成部分破译?re,但实际上,他显示出一个部分破译??e,b依然未知。因此,福尔摩斯自己的描述证明,错误并不在原始信息中——幸亏不是,因为它们出现在分析的关键节点上,如果是那样,再加上其他困难,即使是福尔摩斯,恐怕也读不出这些密信。因此,错误一定是华生医生把真作传递给世界时发生的,后期版本加重了华生最初的错误,但这些错误已经经历了在事实方面出名马虎和靠不住的文学和新闻人物之手,不值一提。
《破译者:人类密码史》,[美]戴维·卡恩(David Kahn)著,朱鸿飞、张其宏译,金城出版社2021年6月。