维吉尼亚加密法。
讲到概率论出现之后,传统的移位法就不好使了。
维吉尼亚加密法,就是为了对抗频率分析出现的——使用这套加密方法之后,字母的频率特征会消失。
一般认为,做出这套加密法的是法国外交官布莱斯·德·维吉尼亚。
但这个结论有很多争议,在他之前40多年的德国炼金术士约翰尼斯发明的表格法,也包含其中关键部分;在他之前80多年,意大利诗人莱昂也提出过这种方法的关键部分。
一个发明到底归属谁有必要考据细节吗?
当然没有。我主要是想指出一个规律——凡是出现了一个发明权一堆人抢的情况,就说明那个领域已经形成了成熟的行业。
密码学也是如此。我们暂且认为维吉尼亚就是发明人吧。问题来了,他一个外交官怎么会对密码学研究那么深呢?有两个原因:
1. 工作需要,从16世纪起欧洲外交官频繁通信,怎么让信件更安全,自然是个重要问题。
2. 数学是法国的国学,密码和数学关系紧密,所以法国人使用加密法的门槛比较低。
在18世纪初,欧洲各国都有隶属于情报机构,专门负责加密解密的部门,叫“黑房厅”。它是和邮政系统配合运行的。
每天有大批信件本来是从各地寄到邮局,再从邮局分发出去。黑房厅出现后,一部分信就不是从邮局直接递给收信人了,而是要先经过黑房厅,再送到收信人手里。
哪部分信件要绕这么一道弯儿呢?
其实就是所有寄给当地大使馆的信件,会受到这种特殊待遇。因为这里很可能有机密信息。
虽然我直接把内幕说出来了,但黑房厅在当年运作的时候是完全保密的,人不知鬼不觉。信件不能因为破译需要时间,而让对方使领馆人员察觉到递送超时。
以当时最著名的维也纳黑房厅来说,每天早上7点,信件先抵达黑房厅,工作人员小心翼翼的融开封口,由专门的速记员把信件誊写抄录,如果是很偏门的语言,就由专家出马誊写。然后马上把信封好口,在三小时内送回邮局,邮局再按正常流程递送出去。
那时各国都在重要信件上使用了加密法,最初普遍采用替代法和移位法的混合,但对掌握频率分析法的黑房厅来说,总是可以破译。
奥地利除了自己偷看信,还暗中把消息卖给其他国家的情报部门。没过几年,很多国家察觉到自己的加密可能失效了,于是就催生出下一代加密法。
为了弄懂后面新的加密法,我们有必要先来回顾一下第二代加密法存在哪些漏洞。
讲了替代法的破解原理,因为每个字母实际使用的频率是有固定值的,所以不论那些字母被什么符号替代了,都可以从频率上找出它的真身。
玛丽女王就生活在加密法打不过解密法的年代。其实在她被砍头的40年前,新的加密法已经出现了,它是替代法的改进版,叫“多套符号加密法”。
为了掩盖字母使用中暴露的频率特征,解决办法就是用多套符号代替原来的文字,比如原文的字母是A,从前只把它替换成F,现在把它替换成F或者G这两个。那什么时候用F什么时候用G呢?可以自行规定,比如说,字母在奇数位时用F代替,字母在偶数位时用G代替。
从前单套符号替代的时候,凡是文字中频率为7.63%的符号,差不多就代表A了。但现在A由F和G混合在一起,7.63%的特征不再出现,哪个符号代表A就没人知道了,于是频率分析法暂时失效。
而且,多套符号加密法并没满足于2-3套,后来典型使用的是26套。
这个用了26套字符的方法,就是第三代密码“维吉尼亚加密法”。就是它,成功压制了解密一方的频率分析法。
它是一个表格,第一行代表原文的字母,下面每一横行代表原文分别由哪些字母代替,每一竖列代表我们要用第几套字符来替换原文。一共26个字母,一共26套代替法,所以这个表是一个26×26的表。
维吉尼亚密码表
它具体是怎么加密呢?
假设我要给“hello”加密,现在的思路和单套的加密方法不一样了。单套的时候,我们可以指定这个表里任意一横行,比如指定第8行的意思就是说,原文中的字母都往后移8位,只使用这一行的规则,“hello”就变成了PMTTW。
但现在我们的思路是用多套密码,不能只用第8行第8套。于是我们就这样指定:
原文第一个字母用第8套密码代替,第二个字母用第12套密码代替,第三个字母用第5套密码代替,第四个字母用第9套密码代替。
你说这听着怎么这么乱啊?具体每个字母移动多少位竟然要单独指定,太麻烦了吧?
如果原文只是hello这种词还好,要是一封信的话,一个字母一个字母的规定用哪套替代,不但加密费劲,解读也费劲。只能单独再写一本说明书出来,照着它一个字母一个字母的还原,费时费力、容易出错不说,连加密的初衷都实现不了。
因为这份说明书的文字量比原文还要多得多,而且这个说明书还必须以谁都可以看懂的方式书写。想让收信方看明白,必须要送一本加密说明书给对方,如果说明书被截获,内容也就白加密了。
这个问题是这么解决的:
第三代的维吉尼亚加密法在真实使用时,人们事先规定每个字母用了哪套移位法时,并不是毫无规律的瞎指定,而是要约定一个规则,这个规则就叫作 “钥匙”。
钥匙最初只是一个单词,比如,像钥匙是yes,那怎么加密呢?
你看,yes的y是第25个字母,就代表加密时把原文第一个字母往后移25位;yes的第二个字母e是字母表中第5个字母,就代表把原文的第二个字母往后移5位;yes的第三个字母s在字母表中是第19个字母,就代表把原文第3个字母后移19位。这样原文的前三个字母,就分别用了第25套、第5套、第19套替代法。
那原文第4个、第5个、第6个字母怎么解决呢?好办,就按刚刚的规则循环就好。
这样“hello”在钥匙是yes的情况下,就被加密成了FIDJS。
这样的好处是,原文里同一个字母会被加密成不同字符,hello中的两个“l”分别变成了D和J。而且密文中同样的字符也可能代表不同的原文,谁和谁都不对应。
1586年,维吉尼亚把这个想法写在了《密码论》中发表。
而上节课我们说的玛丽女王是在1587年被砍的头,如果她和反叛军能用到这本书里的加密方法,也许会是另一种命运。
维吉尼亚法相比从前的加密法,破解难度上了一个新的台阶,按理说应该倍受青睐吧?结果恰恰相反——它在出现后的200年里,几乎没有人使用。
原因很简单,太麻烦了。咱们第一节课就讲到,真正好用的密码,是在安全性和效率上找到了平衡点。
你想,用单套密码的时候,当年玛丽女王稍作训练,在监狱里就可以抛开字典直接用密文回信,但是如果用维吉尼亚密码的话,估计她老得翻字典。
而且大家也可以设身处地的想想,加密法可是一套26×26的表格,而且还有长短不一的钥匙。每加密一个字母,都要在表格里找来找去,就算是在熟练操作的情况下,加密一个字母也得要3秒钟的时间。写完一篇500字的短文,要3个多小时的高强度工作。慢还不说,这样来回来去的查和写,还容易出错。
所以在它诞生后的200多年时间里,几乎没有人用。既然没人使用,自然200多年也就没有人破解。
直到1861年到1865年美国南北战争时期,维吉尼亚加密法才被广泛使用。
为什么会这样?是因为人们脑子变聪明了,手更快了吗?
不是的,而是因为随着科学技术的发展,那时候加密解密的工作已经可以由机械来完成。1860年代,不但已经有了蒸汽机,也有了电动机,这种有规律的体力活儿机器是最擅长干的,既不会抱怨累,也不太会出错。
从维吉尼亚法推迟200多年才得到实际使用,我们能明白一个道理——
基础学科的发展是工程领域发展的根基,新理论的发明要比产品的发明重要得多。
就算是只限于密码学领域,这个规律也反复出现了多次,而且大都集中在维吉尼亚密码法诞生之后。
因为16世纪初,现代科学已经在欧洲出现了。科学理论用得好就能生出新技术,新技术解决一个个困难,让人类更愿意把精力投入到科学中,于是又产生出更多的技术,形成了一个正反馈。
在这样一个新环境里,出现了一个有意思的情况:
一项技术发明到底归属于谁,总是说不清。做出同样发明的人,在时间上经常只相隔几天或者几个月。
维吉尼亚加密法是这样,维吉尼亚加密法的破解也一样是这样。
这并不是偶然,而是现代科学出现后的常态,在任何领域都是如此。
知道了这个规律,我们就会少一分对伟大发明家的崇拜,多一分对背后科学原理的敬畏。