密碼演化史-1

碼書筆記

隱私權是所有人的一項根本權利,可是如何防止自己的信息被其他人竊取呢?想讓信息不被攔截在互聯網時代已經不可能了,我們要做的是讓其他人即使攔截到了信息也不明白它傳達了什麼,這就是密碼的作用。

隱匿法

密碼不是一步到位的,到現在還一直在發展中。在最開始,人們想到的很樸素的保守秘密辦法就是不讓其他人看到秘密。在戰爭期間,信差會打扮成各種各樣的人來瞞過敵方的偵查,以便將情報傳遞出去。希羅多德記錄了一個信差先將自己的頭髮剃光,然後將信息寫在頭皮上,等頭髮長出來後再去傳遞這則消息。偵探劇裡的隱形墨水也是一種,將信息用隱形墨水寫到紙上,幹了之後字跡隱去,肉眼不可見,等到送到目的地,用火烤一烤字跡就顯形了,如果隱形墨水用光了,甚至可以使用尿液來應急。

密碼法

隱匿法雖然可以隱藏信息,但是一旦被發現信息就直接洩露了,因為隱匿法的保密方式是將信息本體隱藏起來。與之相對的,密碼法追求的是隱藏信息的意義,即使信息被發現了,敵方也看不懂,這樣也實現了信息的保密。

密碼法通過發信人和收信人約定好的規則將把信息轉譯成不可理解的文字或符號,這就是我們熟知的加密。

密碼演化史-1

由於密碼法比隱匿法有更強的保密性,所以幾千年來密碼法有了長足進步,不過隱匿法和密碼法並不是二選一的,可以將兩者結合使用,先將信息混淆然後在秘密的送達出去。

密碼法實際上又分為兩類:移位法和替代法。

移位法密碼

移位密碼是將字母重新排列一下,而不更改字母的表示。最簡單的二排籬笆法就是將奇數位字母寫在一排,偶數位字母寫在一排,然後連接起來。

譬如我們要加密明文hello world, 我們可以如下進行(密碼學裡明文使用小寫,密文使用大寫)

H L O O L

E L W R D

收信人只要逆向執行這個過程就可以復原信息。移位法本質就是對信息的重新排列,也可以使用三排籬笆法,四排籬笆法等。

凱撒挪移密碼法

移位法只是使用明文信息的重新排列,雖然文本長了之後排列方式有非常多種,但是發信人和收信人之間需要約定好一種排列方式,不便於記憶。凱撒挪移密碼法是凱撒大帝發明的,方式是將密文字母向前挪移幾位來替代明文。如下是一種挪移了三位的密碼:

a b c d e f g .. x y z

D E F G H I J .. A B C

挪移位數可以是1-25。

一般替代密碼法

凱撒挪移式密碼只有25種,但如果我們隨意指定字母間的對應關係,這樣就可以產生26! 種密碼,這就是一般替代密碼。

每種密碼法都可以視為某種一般加密法--稱為算法加上密鑰的組合。密鑰是用來指定特定加密算法的演算細節。算法是公開的,密鑰是保密的。密鑰的重要性遠高於算法,這是密碼學上顛撲不破的真理。

凱撒挪移密碼的密鑰就是挪移位數,對於一般替代法,密鑰可以是任意單詞或詞組,剩下的字母按順序排列到後面即可,而不用全部字母隨機重排。譬如我們選用密鑰 hello world,先將重複字母去掉,然後排列就得到下面的密碼集:

明文 a b c d e f g h .... x y z

密文 H E L O W R D A .... X Y Z

這個密鑰不好,因為後面的三位重複對應了。

除了要保密密鑰之外,安全的密碼法還必須有龐大的可以密鑰。像凱撒挪移密碼只有25種,如果其他人猜測你加密使用的這種形式,最多需要測試25次就可以找到答案了。一般替代法卻有 26! = 4 * 10^26 種可能,絕對不可能通過暴力枚舉來破解,因此一般替代法的安全性很高。

替代式密法的破解

有秘密自然就有人會想要窺探秘密。編碼者已經有了簡單又強大的密碼法可用,難題到了解碼者手中。

最先找到破解方法的是阿拉伯的密碼分析家肯迪,他發現,在正常的文章中其實各個字母的出現次數並不是均等的,譬如在英文中出現次數最多的是e,其次是t,a.. 因此跟不需要檢查所有的可能密鑰,只要分析一下密文裡各個符號出現的頻率,然後與明文字母對應起來,就可以揭開加密信息的內容了。這種方法稱為頻率分析法

替代式密碼的變種

一般替代法被破解之後,人們想出了很多種方式來增強替代法的強度。譬如加入虛元,可以理解為噪音,頻率分析法是基於每個字母出現的頻率來分析的,虛元的目的就是讓每個字母出現的頻率基本一致,這樣就無法通過簡單的頻率替換來破解了。

另一種方式是故意拼錯字,這樣也可以扭曲正常字母的頻率分佈。還有一種是改變對應方式,現在是一個字母對應一個字母,我們可以使用一個或多個符號來代替一個單詞,不過這樣的方式得編寫一本密碼簿,很不方便。

維吉尼亞密碼法

前面提到的密碼法都是一個字母對應一個字母,因此稱為單套密碼法。雖然有多種變種,但是這種加密方法已經被密碼分析家們完全的破解了,這種加密法的缺點就是明文字母只對應密文的一個字母,因此很容易被人使用頻率分析法攻破。

維吉尼亞發明了維吉尼亞密碼法,它的本質是使用多套密碼來加密明文信息。它的加密方式是使用26套字母,叫維吉尼亞方格:

明文 a b c d e .... x y z

1 B C D E F .... Y Z A

2 C D E F G .... Z A B

...

25 Z A B C D .... W X Y

26 A B C D E .... X Y Z

每一套字母就是簡單的凱撒挪移式密碼,當加密時,雙方先約定好使用的密鑰,譬如用 zac,然後加密 deez,我們就去維吉尼亞方格中查找密鑰開頭的字母。d 使用 Z 開頭的密文字母對應為 C,e 使用 A 開頭的密文字母對應為 E,第二個e 使用 C 開頭的密文字母對應為 G,z 從頭使用密鑰對應為 Y,因此 deez 加密為 CEGY。

維吉尼亞密碼法的優點是對於明文中的同一個字母會加密為密文中的不同字母,上面 e 就對應了兩個字母 E 和 G,因此使用上面的頻率分析法就無法破解這個維吉尼亞密碼。

維吉尼亞密碼的密鑰數量也是龐大的,因此不可能被暴力枚舉破解。

巴貝奇破解維吉尼亞密碼法

巴貝奇就是發明了差分機二號,號稱最早的計算機。他也破解了這個當時稱為無法破解的密碼維吉尼亞密碼。

巴貝奇提出的解決辦法很簡單(事後諸葛亮的角度),我們可以再觀察一下上面的加密過程,我們用一個極端的例子來說明巴貝奇的破解方法。

假設我們要加密的是 eeeeee, 按照維吉尼亞方格我們得到加密後的密文是 DEGDEG, 巴貝奇發現,雖然維吉尼亞密碼會將同一個明文字母加密為不同的密文字母,但是由於密鑰的長度是有限的,因此在加密同一個字母(單詞)時,當明文超過密鑰的長度後,維吉尼亞加密的密文開始出現循環,巴貝奇破解維吉尼亞密碼的第一步就是尋找密碼裡的重複字符串來判斷密鑰的長度,譬如例子中有重複串DEG我們可以判定密鑰長度為3。

得到密鑰的長度後,就可以使用頻率分析法來破解了,換句話說,維吉尼亞這種多套字母密碼法本質上是多(N)個單套字母密碼法組成的,像 上面例子就是 3 個,每一個單套密碼法負責加密整個信息的 1/N, 我們將信息分成 N 份,每份使用單獨的頻率分析法就可以將密文解密為明文。

單次密鑰簿密碼法

巴貝奇的破解方法是建立在大量明文使用同一個密鑰的基礎上,如果密文的數量不夠大,沒有重複字符串出現,那麼就無法應用巴貝奇方法來破解。

美軍的一位少校提出了隨機密鑰的概念,密鑰不再是可辨識的單詞而是一串隨機的字母。首先編訂出一本隨機密鑰簿,每一頁包含有一個密鑰,加密信息時,發信人使用第一頁的密鑰來加密信息,收信人也使用第一頁的密鑰來解密信息,當信息被正確的收到之後,就將此頁的密鑰銷燬,下次再發送信息就使用下一頁的隨機密鑰,用完即毀,每把密鑰只使用一次,這個系統就稱為單次密鑰簿法。

單次密鑰簿法的關鍵在於密鑰的隨機性,而使得密碼分析人員無法通過可辨識的單詞來猜測密鑰,編訂這樣一本密鑰簿其實是很難的。另一個就是密鑰簿使用一次就丟棄掉使得發信人與收信人之間要頻繁交換密鑰簿,一旦密鑰簿洩露,所有的秘密也都暴露在敵人眼前。

密碼機械

科技的發展為了使人們不必再費勁的人工加密而發展除了機械加密方式。 最早的密碼機械是密碼盤,分內外兩層,分別刻有26個字母,內層圓盤可轉動,外層字母是明文,內層是密文,這樣就可以實現一個簡單的凱撒挪移式密碼。

為了增強密碼強度,可以使用多個密碼盤,每個密碼盤使用不同的設定,這樣就是多套字母集密碼,如果使用某個密鑰來作為設定,然後循環加密信息的話,就是使用了維吉尼亞密碼法。

密碼機械最有名是德國在二戰時使用的雪畢伍斯設計的奇謎,不過後來被波蘭和英國的密碼分析家們破解了,具體不再詳述。

待續

一直以來發信人和收信人都必須事先約定好加解密的密鑰然後才能開始秘密通信,但真的必須提前約定好密鑰嗎?


分享到:


相關文章: