今天的內容是密碼學步入近代化的前奏,雖然還沒有到比特幣區塊鏈的加密算法,但是,今天出現了一個真正意義上的東西:鑰匙。請認真看,文中的舉例是我自己在Excel表格中做出來的,為的是簡單明了,你一看就明白了。
本文將從法國外交官講到鍊金術士,從明朝萬曆十五年講到鹹豐十年,認真的。——前言
頻率分析法出來後,移位和替換法不好用了,那麼怎麼才能消解掉這種概率呢?
萬曆十五年
「小高呀,最近有看什麼書了?」
「最近在看黃仁宇的《萬曆十五年》」
「咱們小高也看萬曆十五年」
「就覺得這本書把有明一代的歷史講明白了」
「看歷史要對比要縱橫著看,那你知道在歐洲的法國萬曆十五年的時候發生了什麼嗎」
「怎麼叫縱橫著看歷史,還真不知道呢」
「你知道維吉尼亞加密法嗎?」
「不知道呀」
「小高,光太亮了,你把窗簾拉上,我給你好好講講維吉尼亞加密法」
——改編自電視劇《人民的名義》
大家都聽說過或者看過一本書叫做《萬曆十五年》(萬曆十五年就是1587年),作者黃仁宇先生寫的是那一年明朝由盛轉衰,維吉尼亞加密法誕生於萬曆十四年,也就是1586年,那個時候這種加密法如果傳到中國就算是奇門遁甲的一類了。
這倒不是開玩笑,因為那個時候歐洲的化學家叫做「鍊金術士」,化學家這個詞要到兩百年之後,化學的祖師爺拉瓦錫先生出生後才有。中國也有鍊金術,比如東晉葛洪、南宋王重陽都是鍊金術士或者煉丹家。中國的煉丹術沒有發展成化學,中國的周易八卦也沒發展成密碼學。所以,過兩百年後要挨打的。
言歸正傳,維吉尼亞加密法發明人是一名法國外交官,叫布萊斯·德·維吉尼亞,也就不要奇怪,那個時期的外交官經常在一個叫做「黑房廳」的地方把信件加密再發出去,有時候,黑房廳的同事還會接外面的活兒,加密解密信件,是要收費的。
維吉尼亞加密法算是第三代加密法,主要目的是對抗頻率分析的解密,使用外交家的這個加密法之後,字母出現的概率就會消失不見。
怎麼做到呢?很簡單,同一個原文字母在信件中出現的時候,卻是不同的密文表達。
直接上圖吧。
這就是維吉尼亞加密法的密碼錶。
這是一個26X26的表格,第一行和第一列都是26個英文字母。第一行代表著原文信息,第一列代表著加密的鑰匙。兩者交匯就是密文。
估計還是有點懵,這樣,鑰匙簡單一點,就一個字母C,那麼,ABCDEFG字母表的順序也是這個表格的順序,C就是第三個字母。那麼,第一排的D加密後得到什麼呢?
就是F,相當於移位兩位,D變成F。這個圖中的第一排的D是原文,第一列中的C就是秘鑰,箭頭匯合之處的F就是加密後的密文。同樣的,如果原文是C,而鑰匙是F,那麼密文就應該是H。
那麼,如果我的鑰匙不是一個字母呢,而是幾個字母呢,比如說,ABC、ABC、ABC就這麼循環下去,但是呢,這個ABC順序性太強不適合做鑰匙,可以是CASH,COIN,你看BCH也不適合做鑰匙,因為B和C挨著加密性就弱了。
你看這樣一串字母看得懂嗎?CVGDQPO
當然看不懂,這就是加密後的樣子,當然看不懂,我現在告訴你鑰匙是BCH。
也就是說BCH三個字母循環作為鑰匙。你能解出原文嗎?
好了,第一個密文是C,鑰匙中對應的是B,先在表格中找鑰匙也就是第一列,也就是B,然後往右邊看到C再往上就是B了,這幾個字母離得太近,我找個遠點的,密文中的J是第三個字母,對應循環中的bch也就是h,所以h是鑰匙,看下圖的箭頭順序,就知道怎麼破解的了。
好了,下面我把Excel表格中做出來的例子,直接呈現給大家,再揣摩一下。
以上加密法是不是很不錯呢?
不是的,以上加密法看似精巧,卻犯了一個大忌,太慢了。加密法要兼顧安全性和效率性。像剛剛這麼搞加密解密,寫信的人非常累,解密的人也非常累。B/C/H這個鑰匙的傳遞還要保密,如果別人知道了也麻煩。對稱加密法就是這樣,對稱加密法是什麼?就是加密和解密是可逆的,只要給我鑰匙,給我點時間,我隨時可以解密——這是後話。
鹹豐十年開始應用
所以呢,這個加密法發明出來之後的兩百年,基本沒有什麼大用,只是小密圈子的娛樂遊戲。後來到了美國南北戰爭時期(1861年到1865年)這個加密法才大規模的使用,原因是後來有了機械法,為了解密專門做了機器破解,這樣的機器未來也會有一些很著名的,比如摁你個馬機(恩尼格瑪密碼機德語發音Enigma),也就是說法國人在明朝萬曆年間發明出來這個加密法,到了1860年(也就是鹹豐十年)火燒圓明園之後,才廣泛使用。
為什麼呢?答案是工業革命。1860年的時候蒸汽機有了。電動機也有了,再枯燥的體力破解的活兒都能交給機器,設計好破解規律就好了。
從這一點來說,當時的清政府就單單在密碼學上就落後了一大截。
如果雙方戰爭再重演一次,很可能是英法聯軍截獲清軍情報後,直接破解,清軍截獲英法聯軍文件後,直接懵逼。這仗還怎麼打?先不說西方船堅炮利,就這一條密碼學你就得廢了。而且,清軍還沒話說,說什麼!
背出來《孫子兵法》「知己知彼,百戰不殆」又怎麼樣,怎麼樣知己知彼,沒有近代科技,不懂破譯的方法,你啥都不知道。祖先給你方法,你得把路徑找出來。
其實,從本文的脈絡,您也看出來下面的密碼學發展了。
密碼學起源於戰爭也會回歸於戰爭,從隱藏法、移位替換法到今天講的維吉尼亞加密法無時無刻不是伴隨著戰爭。下面的密碼學要大發展了,以上的加密還是傳統,不夠神乎其技。為什麼大發展?第一次世界大戰,第二次世界大戰要來了,沒有世界大戰,人類不會這麼快搞出來核裂變;沒有世界大戰,密碼學也不會這麼突飛猛進的發展;沒有經濟危機,中本聰發布比特幣可能還需要一些時間。
歷史的車輪滾滾向前,如果想從另外一個角度看待所處的世界,從另外一個角度看待目前的區塊鏈行業,請稍微懂一些密碼學。
我之所以從法國外交官講到鍊金術士,從明朝萬曆十五年講到鹹豐十年,一方面密碼學的發展中國在之前掉隊了(注意是之前),一方面是為了增加一些趣味性,只有科技的理念進入到每個人的腦子裡,才會迎來真正的大發展。還有一點,密碼學本身是很枯燥的,隱秘的,大家不關注的。
密碼學從來都不是顯學,就像一些真相永遠在歷史的角落裡。
江湖一杯酒,加密二鍋頭。