购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

秘密书信的演进

秘密书信的历史非常悠远。被罗马哲学家及政治家西塞罗(Cicero,公元前106年-公元前43年 )誉为“史学之父”的希罗多德(Herodotus,公元前484年?-公元前425年? )即讲过一些最早的秘密书信故事。希罗多德在《历史》( The Historys )—书中记载了希腊与波斯于公元前5世纪时的冲突。他把这些冲突视为自由对抗奴役、独立的希腊城邦对抗暴虐的波斯人的争战。根据他的记述,就是秘密书信的技术拯救了希腊,使他们幸免于被号称万王之王的波斯暴君薛西斯(Xerxes,公元前519年?-公元前465年)征服的厄运。

希腊与波斯之间的宿怨在薛西斯于波斯波利斯 (Persepolis)建造城市,作为傲世帝国的新首都后达到临界点。所有帝国境内的王国,乃至邻近城邦,都纷纷献上贡品与珍礼,唯独雅典与斯巴达明目张胆地置身其外。为报复这份无礼的羞辱,薛西斯开始整饬武力,宣称要“扩张波斯帝国的领土,使帝国国界齐同上帝的疆域,阳光所到之处无一不在吾人国境之内”。接下来的五年,他秘密集结了有史以来最强大的武力;公元前480年,他已就绪,准备发动一场突袭了。

偏偏这些波斯军队的集结行动竟被一位名叫狄马拉图斯 (De-maratus)的希腊人给瞧见了。狄马拉图斯被祖国驱逐而住在一个叫苏萨(Susa)的波斯城市里。虽然遭受流放,他对希腊仍存忠诚之心,因此决定送封信警告斯巴达人薛西斯的侵袭计划。问题是,这封信要怎么送才不会被波斯守卫拦截下来呢?希罗多德记述道:

被发现的风险很高,而只有一个办法能顺利送出这封信:将一副可对折的木制写字板上的蜡刮下来,把薛西斯的企图写在木头上,再用一层蜡把这则信息盖住。这样一来,这些木板看似一片空白,沿路卫兵也就不会找它们麻烦。这则信息抵达目的地时,没有人猜得到其中的奥秘。据我了解,是克利欧明斯(Cleomenes)的女儿,亦即李奥尼狄斯(Leonides)的妻子戈尔戈(Gorgo)瞧出端倪,告诉旁人:把蜡刮掉,就会发现木头上有字。他们照做之后发现了信息,接着便转告其他希腊人。

这道警告让原本毫无防备的希腊人开始进行武装准备。城邦所拥有的银矿收益原本由城民均分,现在则改交给海军支用,建造了两百艘战舰。

至此,薛西斯已丧失奇袭先机。公元前480年9月23日,波斯舰队抵达雅典附近的萨拉米斯湾(Bay of Salamis)时,希腊人已做好应战准备。他们把波斯舰队诱进海湾时,薛西斯还以为希腊海军已是囊中之物。希腊人自知他们舰队的船身小、数量少,留在外海会全军覆没,回到海湾内则有机会以智取胜。风向一改,波斯人就被一股脑儿吹进海湾里,窘迫地迎战希腊人。波斯公主雅特弥夏(Artemisia)三面受围,尝试退回外海,却撞到自己的随行船只,引起一阵恐慌,导致更多波斯船只互撞。希腊人趁势发动猛烈的攻击,短短一天之内,波斯的庞大武力随即宣告屈服。

狄马拉图斯的秘密通讯法只是单纯地把信息藏起来。希罗多德所记述的另一个事件,也是用隐藏法就足以保障信息的传输安全。希斯泰尤斯(Histaiaues)鼓动米里图斯 (Miletus)的亚里斯达哥拉斯(Aristagoras)反叛波斯国王。希斯泰尤斯把信差的头发剃光,将信息写在他的头皮上,等他头发又长出来了,才让他去传送秘令,那个时代对行事速度的要求显然宽松些。表面上,这位信差未带任何不妥物品,因此旅程中未受任何干扰。抵达目的地后,再度把发丝剃除,把头伸给指定的收讯人瞧瞧,他的任务就完成了。

这种掩饰信息存在性的保密通讯法称为隐匿法(steganography),源自希腊文steganos和graphein两个单词,前者意为“掩蔽的”,后者则是“书写”。自希罗多德时代起,两千年来隐匿法的应用以千奇百怪的形式遍及世界各地。例如,古代的中国人把信息写在柔细的丝布上,揉成一个小球,覆上蜡,再让信差吞进这粒蜡球。16世纪的意大利科学家乔凡尼·波塔(Giovanni Porta)解说了在煮熟的蛋里藏匿信息的方法:用一盎司明矾和一品脱醋所混成的液体当作墨水写在蛋壳上。这种溶剂会穿透富含气孔的蛋壳,而在硬化的蛋白表层上留下信息——你得剥掉蛋壳才看得到。使用隐形墨水写信也是隐匿法的一种。早在公元1世纪,老普林尼 (Pliny the Elder)就解释道:thithymallus植物的汁液可以用作隐形墨水。它的汁液干掉后会变透明,但稍微加热就会焦掉而变成棕色。很多有机液体也有类似特性,因为它们富含碳质而很容易焦黑。事实上,就连现代间谍,当配发的隐形墨水用光时,也会想到用自己的尿液来应急。

隐匿法的寿命这么长,表示它显然是相当的安全。不过它有一个根本弱点。万一敌人搜查信差身体,发现信息,秘密通讯的内容马上就曝光了。一旦信息被拦截到,所有安全措施皆前功尽弃。一板一眼的卫兵可能依例搜查每位过境的旅人、刮一刮任何蜡板、烤一烤空白纸张、剥剥熟蛋的壳、剃剃人们的头等,多多少少总有些信息会败露的。

因此,就在隐匿法发展的同时,也衍生出了“密码法”(cryptography)。密码法这个词源自希腊文kryptos,“隐藏”的意思。密码法的目标不是将信息本身隐藏起来,而是隐藏信息的意义;它的程序称为“加密”(encryption)——把信息转译成无法理解的文字或符号,也就是依据发信人与收信人预先协议好的规则来改写信息。收信人依照改写规则转换信息,就能还原信息的意义了。而不清楚改写规则的敌人,即使办得到,也得大费周章,才能把加密文字转换回原始信息。

密码法和隐匿法虽然没什么关联,却可合并使用,以强化安全性。例如,属于隐匿法的微缩小点(microdot)在第二次世界大战期间相当普及。在南美洲的德国情报人员把一页文字摄影、缩小成直径不到1厘米的小点,然后藏置在一封看似无关紧要的信函里,伪装成句点。1941年,FBI接获密报,首度找到微缩小点。这份情报告知美国人注意寻找信纸表面上微微发亮的小点,这些小点即是胶卷。这些被拦截下来的微缩小点,大多可以直接读取内容,有时德国情报员会预作防范,先将信息加密再摄影,如此一来,美国人就没辙了。所以,美国人虽拦截、阻绝了一些通讯,但遇到密码法与隐匿法并用的情况,就无法获知德国间谍活动的新消息。由此可见,密码法是秘密通讯两门技术中较强的一个,因为它有防止信息落入敌手的能力。

事实上,密码法本身又可分成两类:移位法(transposition)与替代法(substitution)。移位法是将信息里的字母调动顺序。这个方法不适用于非常简短的信息,像是只有一个单词的,因为少数几个字母的重组方式实在有限。举例来说,三个字母就只有六种排列方式,例如COW、CWO、OCW、OWC、WCO、WOC。不过,字母数目一增加,排列方式的数目就会急速升高,除非确知改写步骤,否则不可能拼回原始信息。“For example, consider this short sentence.”这句话只有35个字母,却有超过50,000,000,000,000,000,000,000,000,000,000种的排列方式。假使每人每秒检查一种排列方式,全世界的人都日以继夜做这项检查工作,也需要宇宙寿命1,000倍的时间才能检查完所有组合。

加密信息时,若将字母随意搬家,它的安全度一定非常高,因为即使是短短的句子,拦截到它的敌人也没办法解译出来。只是,这有个缺点。移位法等于是在制造回文谜,困难度可以非常惊人的回文谜 ;如果字母的重组毫无章法,那么,不仅是敌人,就连原收信人也没办法解读。所以,字母的重组必须遵循发信人与收信人预先约定好的规则,这样的移位法才有实际效用。例如,有些学童会使用“篱笆式”(rail fence)的移位法来传递消息,也就是把信息内容的奇数位字母写成一排、偶数位字母写在另一排,再把偶数位字母接到奇数位字母后面。例如:

收信人只要逆向执行这个程序,就能复原信息。规则性移位法的形式很多,包括三排篱笆法,亦即先把信息改写成三排字母,而不是两排。还有一种方法是:将字母两两对调顺序,亦即第一个字母和第二个字母互调,第三个字母和第四个字母互调,以此类推。

图2:从发信人的密码棒解下来时,这皮带上的字母犹如随意胡写的,S、T、S、F……唯有把这皮带缠绕在一根直径正确的密码棒上,信息才会重现。

历史上第一件军用密码装置——公元前5世纪的斯巴达密码棒(scytale),则采用了另一种形式的移位法。密码棒是一根木棒(如图2),缠绕上一条皮革或羊皮纸,发信人在密码棒上横向写下信息,再解下这条皮带。展开来看,皮带上的长串字母没有任何意义,借此方法即可搅乱信息的内容。有时候,信差会把它当作腰带,有字母的那一面当然向内藏,系在腰上——也算是隐匿法的一种。收信人把这条皮带缠绕在直径相同的密码棒上,就可以还原信息了。公元前404年,一位遍体鳞伤的信差来到斯巴达将领利桑德(Lysander)面前,在这趟自波斯出发的艰困旅程中,只有他和四位同伴幸存。利桑德接过这位信差的腰带,缠绕到他的密码棒上,得知波斯的发纳巴祖斯(Phamabazus)准备侵袭他。多亏了密码棒,利桑德得以预先防范,从而击退了敌军。

除了移位法外,另一种方法是替代法。早在公元4世纪,婆罗门学者跋舍耶那(Vatsyayana)所写的《爱欲经》( kāma-sūtra )即曾提到用替代法加密信息,而它的方法还是得自于公元前四世纪的古文稿。《爱欲经》鼓励妇女学习64种技艺,如烹饪、服饰、按摩、制作香水等。此外还有一些有点儿出人意料的技艺,像是魔术、下棋、书籍装帧与木工。第45项则是秘密书信(mlecchita-vikalpa),理由是可帮助妇女隐瞒她们的暧昧关系。其中一项建议方法是:先将字母随意配对,再用配对字母取代信息里的原始字母。如果将这方法套用到罗马字母,我们可以为字母进行如下的配对:

这么一来,发信人可以把meet at midnight (子夜见面)改写成CUUZ VZ CGXSGIBZ。这种秘密书写即称为替代式密码法(substitution cipher),因为原始信息的每个字母都用另一个字母取代,可说是跟移位式密码法(transposition cipher)互补的一种方法。移位法是字母的内涵不变,位置变;替代法则是字母的内涵变了,位置不变。

替代式密码法在军事上的应用首度记载于恺撒大帝(Julius Caesar) 的《高卢战纪》( Gallic Wars )。恺撒提到他如何送信给被围困许久而正考虑投降的西塞罗。他采用的替代法是用希腊字母取代罗马字母,把信息转译成敌人看不懂的符号。恺撒记述了这则讯息的戏剧性传递过程:

信差受到指示,如果无法送达,就把信绑在皮带上,随矛掷进防御阵地里去。这位高卢人怕危险不敢靠近,便依指示把矛丢掷过去。这支矛恰巧卡在楼塔上,卡了两天,都未被我军发现。直到第三天,才被一位士兵看到,拿下来交给西塞罗。他读毕之后,召集全军公开宣达,众人听罢顿时欢欣鼓舞

恺撒使用秘密书信的次数非常频繁,瓦莱里·普洛布斯(Valerius Probus)写了一篇论文专门讨论他的密码法,可惜此书已失传。幸好,苏东尼乌斯(Suetonius)写于公元2世纪的《十二帝王传》( Lives of the Caesars )详细记载了恺撒常用的一种替代式密码法 。这位罗马皇帝把信息内容的字母——改成比它后三位的字母,例如将A写成D,将B写成E。在此顺便介绍一下密码学家常用的术语:原始信息所用的字母集称为明文字母(plain alphabet),替代字母所组成的字母集则称为密码字母(cipher alphabet)。如图3,把明文字母列在密码字母上面,就可以清楚看出密码字母挪移了三位。因此,这类替代法通常被称为恺撒挪移式密码法(Caesar shift cipher)或简称恺撒密码法(Caesar cipher)。所有原始讯息字母一一由另一个字母或符号取代的替代法,都属于密码法(cipher)。

虽然苏东尼乌斯只提到一种挪移了三位的恺撒密码法,这类密码法的挪移数当然并不限于一种,如果使用26个英文字母,它的挪移位数可以是1到25,而得出25种互异的密码法。此外,我们也不一定要挪移固定位数,大可随意指定明文字母与密码字母间的对应关系,如此可产生数量非常庞大的密码法。这样的对应方式超过400,000,000,000,000,000,000,000,000种,我们也就可以有相同数目的密码法。

图3:应用于简短信息的恺撒密码法。恺撒密码法的定义是:密码字母集相对于明文字母集挪移了一定数目的位置(在此例是挪移了三位)。密码学的惯例是:明文字母集用小写,密码字母集用大写。同样地,原始信息,亦即明文,也是用小写;加密过的信息,亦即密码文,则用大写。

每种密码法都可视为某种一般加密法——称为算法(algorithm)——再加上一把钥匙(key)的组合结果。钥匙是用来指定特定加密程序的演算细节。在上述例子,算法是指以密码字母集里的字母——取代明文字母集里的字母,而且密码字母集可以是明文字母集的任何一种重组结果。钥匙则定义加密过程中所用的密码字母集。我以图4说明算法和钥匙的关系。

敌人研究拦截下来的加密信息时,也许可以八九不离十地猜对它的算法,却很难推测出它的钥匙。例如,他们或能猜测到,明文的所有字母都根据一套特定的密码字母集——被调换了,但他们却不太可能知道对方用了哪一套密码字母集。只要发信人和收信人谨慎保密好这套密码字母集,亦即钥匙,敌人就解译不出他们拦截到的信息。钥匙的重要性远高于算法,这是密码学上颠扑不破的真理。荷兰语言学家纽文霍夫的奥古斯特·科克荷夫斯(Auguste Kerckhoffs von Nieuwenhof)1883年在《军事密码术》( La Cryptographie militaire )—书所述的“科克荷夫斯原则”明确道出钥匙的重要性:密码系统的安全性不在于防止敌人洞悉密码算法,钥匙的保密才是决定密码安全性的唯一关键。

图4:发信人透过一道加密算法来加密明文信息。算法只是加密通则,还必须选配一把钥匙,才能定义出一套特定的加密系统。把钥匙与算法一起运用到明文信息上,就会产生加密过的信息,亦即密码文。敌人或能在信息传送过程拦截下密码文,但应该无法解译出信息。相对地,知道发信人所用钥匙与算法内容的收信人就能把密码文转换回明文信息。

除了严守钥匙不得泄露外,安全的密码系统还必须有数量庞大的可用钥匙。像恺撒挪移式密码系统的加密强度就相当弱,因为这类系统只有25把钥匙,敌人若拦截到信息,并怀疑它用的演算法是恺撒挪移法时,只需检查25种可能性就能找出答案。可是,发信人若使用一般的替代式算法,亦即他的密码字母集可以是明文字母集的任何一种重组结果,他就有400,000,000,000,000,000,000,000,000把钥匙可以选用。图5所示即为其中一种。就算敌人拦截到这则信息,也知道他用的算法是什么,恐怕还是没有勇气执行检查所有可用钥匙的恐怖工作。即使敌方每秒可检查一种钥匙,也得花上宇宙寿命10亿倍的时间才能检查完这400,000,000,000,000,000,000,000,000种可能性,来破解这则信息。

这类密码的妙处就是:执行容易,安全性却很高。对发信人而言,指定钥匙,亦即定出26个字母在密码字母集里的顺序,是件轻松简单的工作。对敌人而言,用所谓的暴力解法 来检查所有可能性,是根本不可行的。使用此法时,钥匙的定义应该要简易,因为发信人和收信人两方都必须清楚知晓钥匙为何;钥匙愈简单,发生误会的机会就愈少。

图5: —般替代式算法的例子——根据钥匙,一一替换明文的字母。钥匙的内容就是这套可以是明文字母集的任一重组结果的密码字母集。

事实上,只要收信人愿意将可用钥匙的数目略减,钥匙的定义可以更加简单。制定密码字母集时,发信人可以选用一个钥匙词(keyword)或钥匙词组(keyphrase),而不必将全部的字母随机重排。例如,选用JULIUS CAESAR当钥匙词组,然后把空格及重复的字母都去掉(变成JULISCAER),再以这些字母当密码字母集的起始字母。接着,把字母集的其他字母,依照原有顺序,接到钥匙词组字母的后面,就能造出如下的密码字母集:

用这种方式制定出来的密码字母集的好处是,只要记住钥匙词或钥匙词组,就等于记下整套密码字母集了。这一点很重要。如果发信人必须把密码字母集记在一张纸上,敌人就有可能截获这张纸,得到钥匙,而得以阅读所有以这把钥匙加密的通讯内容。若是把钥匙默记在脑袋里,敌人得到它的机会就会小很多。用钥匙词组所能造出来的密码字母集虽然比随机产生的来得少,但数量仍旧很庞大。对敌人而言,检查所有可用钥匙词组以破解信息,仍是一件毫不可行的任务。

简易与牢固的特性,让替代式密码法在秘密通讯界风光了公元1至10世纪之间的一千年。就像生物演化一样,编码者已逐步建立起一套能确保通讯安全的系统,没有必要再继续研发了。既然没有需求,何必要进一步发明呢?重担落到尝试破解替代式密码法的解码者身上。敌方可不可能解得开加密的信息?许多古代学者相信,由于可用钥匙的数目太过庞大,替代式密码法是无法破解的。数个世纪以来,这种看法似乎始终成立。然而,解码者终究会找到一条搜寻钥匙的捷径。破解密码,不再需要数十亿年的时间,抄捷径的话,只要几分钟就可揭开信息内容了。这项突破发生于东方,而且是语言学、统计学与宗教热诚的辉煌结晶。 cFb+UF7uWTh87AqKt5yyX+52HqzTyacTFREYEhsdoeEb9TBtPqYki5iBPs3zDT07

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开