講到概率論出現之後,傳統的移位法就不好使了。
維吉尼亞加密法,就是為了對抗頻率分析出現的——使用這套加密方法之後,字母的頻率特征會消失。
壹般認為,做出這套加密法的是法國外交官布萊斯·德·維吉尼亞。
但這個結論有很多爭議,在他之前40多年的德國煉金術士約翰尼斯發明的表格法,也包含其中關鍵部分;在他之前80多年,意大利詩人萊昂也提出過這種方法的關鍵部分。
壹個發明到底歸屬誰有必要考據細節嗎?
當然沒有。我主要是想指出壹個規律——凡是出現了壹個發明權壹堆人搶的情況,就說明那個領域已經形成了成熟的行業。
密碼學也是如此。我們暫且認為維吉尼亞就是發明人吧。問題來了,他壹個外交官怎麽會對密碼學研究那麽深呢?有兩個原因:
在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套。於是我們就這樣指定:
妳說這聽著怎麽這麽亂啊?具體每個字母移動多少位竟然要單獨指定,太麻煩了吧?
如果原文只是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世紀初,現代科學已經在歐洲出現了。科學理論用得好就能生出新技術,新技術解決壹個個困難,讓人類更願意把精力投入到科學中,於是又產生出更多的技術,形成了壹個正反饋。
在這樣壹個新環境裏,出現了壹個有意思的情況:
維吉尼亞加密法是這樣,維吉尼亞加密法的破解也壹樣是這樣。
這並不是偶然,而是現代科學出現後的常態,在任何領域都是如此。
知道了這個規律,我們就會少壹分對偉大發明家的崇拜,多壹分對背後科學原理的敬畏。