經典密碼學雜談

 

摘要:

本文首先介紹加密法的發展歷程,後將結合案例介紹兩種經典的加密法以及其對應的密碼分析方法,最後將總結以上說談,並簡單的介紹其餘的經典加密法。

關鍵詞:加密法;密碼分析;加密法發展史;Vigenere加密法;keyword加密法;

 

概述

“蘆花灘上有扁舟, 俊傑黃昏獨自遊, 義到盡頭原是命, 反躬逃難必無憂。”

這是一首出自《水滸傳》中吳用留下的藏頭反詩;電視劇《裂變》中漢奸“蝙蝠”也曾使用數字對應書本頁面和文字的方法傳遞消息給日寇;電影《暗算》中更是提到了黃依依解決多種密文的具體情節;甚至連動畫片《名偵探柯南》也出現了skytale加密的細節。事實上,密文不僅存在於熒幕中,而且深入到生活的方方面面,例如用於存儲互聯網消息的cookie、以及互聯網安全中常提到的數字簽名、在銀行等網站上填寫個人信息時,都會用一定的手段將明文加密成密文傳輸到在遠處的服務器中,可以說,在互聯網的世界裏,只要有比特流動,就一定會有加密的存在。爲此,各大高校還設立了專門的學科,如密碼學、密碼分析學、密碼史等。不得不說,密碼的發展更數學密切相關、大多數的密碼學家都兼任數學家的身份,而密碼學,這一學科在戰爭時代更是快速地發展。以下將會介紹密碼學的發展史、以及一些經典密碼學的典型加密方法和其對應的解密方法的介紹、文章最後會簡單地提及現代密碼學的一些實現手段。

加密手段與解密手段

常見的加密手段有三種:編碼法、加密法和夾帶加密法;

編碼法

編碼法類似於計算機的編譯[1]過程,在計算機編譯過程中,以ASCII碼爲例,計算機會將字母A編譯成0x41,B編譯爲0x42以此類推。我們之所以會很清楚0x43對應字母C,是因爲我們知道ASCII碼錶,假設我們對ASCII碼錶一無所知,那麼0x44究竟代表什麼我們就不得而知了。而編碼法就是這樣一種加密手段,即將明文按照一本寫好的編碼簿翻譯成密文,在受到密文後,解讀者需要一本一模一樣的編碼簿才能解讀出具體的明文。

加密法

加密法則不同,一種常用的加密法是將字母轉化爲數字,例如用一下方法:

從右圖中我們看出a對應的是11,並且令底頻率字母j等於i,這樣,每一個字母都有與之對應的數字,而我們可以對數字按照一定的算法進行運算即可得出相應的密文數字,此時,解讀者要解讀出這些密文,則需要知道形成這一密文的運算法則[2],並更具這一運算法則進行逆運算即可得出明文。

 

圖1

夾帶加密法[3]

夾帶加密法是指在不將明文處理成難以解讀的密文的情況下,想辦法將明文隱藏起來。例如小時候使用隱形筆寫字就屬於這種加密方法。又如吳用的藏頭詩也屬於這一類加密手段。歷史資料記載,希臘人在傳遞消息的時候,曾經把奴隸剃成光頭,並將文字刻在奴隸的頭上,待到奴隸的頭髮長出來時,將奴隸送給對方,以便讓對方獲得信息。這也屬於夾帶法的範疇。

解密手段

常見的解密手段可分爲三類,首先是密文攻擊,在只有密文的情況下解讀出明文叫密文攻擊;

另外還有明文攻擊,即在知道某段明文一定存在的情況下[4],將密文解讀成明文的手段;第三種是選取明文攻擊,即事先泄露對方感興趣的話題,使對方針對這一話題的信息加密成密文,這樣在截獲密文後,就可以清晰的知道密文中一定包含這一話題有關的內容。例如二戰中美國暴露給日本中途島的信息,從而得出AC對應中途島這一結論,就是利用了選取明文攻擊。

經典密碼學的發展歷史

加密法的出現可以追溯到200BC甚至更遠,那個時候,希臘作家polybius發明了一種名爲polybius cipher的加密法,這是一種單碼加密[5],其加密手段大致如圖1所示,即將字母對應成數字,當然,可以亂序地將字母填充在該矩陣中得到不同的對應模式。早期的密碼還有斯巴達克人所發明的一種skytale的加密工具如右圖所示: 

其加密原來是將紙條繞在一根加密棒上,同時在繞在上面的紙條上寫下明文,展開後就可以得到亂序的密文了,本質上是一種夾帶加密法。

希伯來人也發明了早期的加密法:如atbah、atbash、albam等。這些加密法原理上是將字母與某個密文符號一一對應起來的加密手段。後來羅馬大帝凱撒在軍事上曾用凱撒加密法對明文進行加密,防止密碼泄露。凱撒加密法是將明文的字母按標準字母表向後移動若干位,得到一種對應模式;例如a對應d、b就對應e、明文zhuozebinK對應ckxrchelq;可以說這些加密法都很容易破解,例如對凱撒加密法K,我們可以窮舉所有的可能,可以得出密文ckxrchelq對應的所有字符串,則其中一定存在明文:可以看出,移動三位可以得到真正的明文。於是密碼被破解。

此後的幾百年裏,出現了一種名單碼加密法[6],其中的代表有關鍵詞加密法,直到14世紀、15世紀仍在歐洲廣泛使用。這時候已經出現了對此種加密手段的解密方法。爲了彌補這種不足,出現許多新的加密法。如仿射加密法、多文字加密法,這類加密法的解決原理與關鍵詞加密法一樣,並且安全性甚至較之更低。單碼加密法持續的時間最久,甚至在美國南北戰爭期間也在使用。

直到16世紀中期,出現了多碼加密[7]的加密方法。代表有Vigenere加密法,此類加密法如曇花一現,雖然安全性高,但在數學爆炸性發展的時代,Vigenere加密法沒過多久就被解決了。派生的多碼加密法還有自動祕鑰加密法、Nihilst加密法、圓柱面加密法和迴轉輪加密法,其中在二戰期間,聯軍使用的加密法就是迴轉輪加密法。

經典加密法的收官之作是多圖加密法,這種加密方法將多個明文字母對應成多個密文,更具安全性。此後則進入現代加密法的時代。

 

代表性的加密法介紹

關鍵詞加密法

keyword加密法,要求首先選取一個關鍵詞,去掉關鍵詞內的重複字母,如選取“zhuozebin”後的變爲“zhuoebin”,然後將zhuoebin放在開頭(或任意位置開始),其餘的位置按照標準字母表的順序填入,並與標準字母表對應,如下:

 

這樣用此對應關係,明文轉化爲密文。例如:

明文:

sunnysaidthatshelovemebutidontknowthatwhetheritistruthorjustatrick[8]

加密後:

qsjjxqzaornzrqnefktegehsraokjrdjkvrnzrvnerneparaqrpsrnkpcsqrzrpaud

解析

因爲關鍵詞是任意的,不可能窮舉,我們可以採用頻率分析的方法,解決此類的問題。因爲一一對應的單碼加密法保留了用此頻率不變的特徵,根據這一特徵,我們可以統計出字母之間的對應關係。以下統計了各個詞的頻率,從柱形圖中

我們可以清晰地看出明顯的波峯波谷,根據英語的用詞頻率,可

以估計出以下對應關係

 

 
   

 

 

 

 

 

 

 

 

 

 

 

 

 

當然,由於截獲的密文數量不足,統計未免有不當之處。也可以採用雙聯字母的方法估計,如字母組合:th、he、er頻率高,可以猜測高頻率的組合可能是此三者之一,此外還有三聯字母組合的方法確定對應模式。

 

Vigenere加密法

這是一種多碼加密法,一個明文字母對應多個密文字母,同樣選取關鍵詞,如“zhuoebin”,重複關鍵詞並與標準順序的字母表對應,即可形成一種加密方式。即:

zhuoebinzhuoebinzhuoebinzh

         abcdefghyzklmnopqlstuvwxyz

這樣明文與祕鑰通過查找Vigenere表可以得出密文,如za爲z,hb對應i

這樣明文爲:

sunnysaidthatshelovemebutidontknowthatwhetheritistruthorjustatrick

密文爲:

rbhbxwbqqsouhrlftbulgsayuqqnunymsxbuzaqvdximehacgsvvbunydirxbbehje

解析

IC法估算關鍵詞的長度

 

 
   

 

定義IC值爲:

其中fα是密文中α字母出現的頻率,而N密文的長度[9]

計算出IC之後,例如上例所得出的IC值爲0.04382,查表可值,keyword的長度可能是:5,6,7,8;

Kasiski法確定具體的關鍵詞長度

從密文中看出,bu一共出現了兩次

rbhbxwbqqsouhrlftbulgsayuqqnunymsxbuzaqvdximehacgsvvbunydirxbbehje

根據數學推導,可以知道,重複字符串之間間隔的字符串長度爲關鍵詞長度的整數倍,據此我們可以推斷出關鍵詞長度爲16/2=8。

得知關鍵詞長度後,將密文分爲8組,第一組爲第1、 9、 17…組成,以此類推,這樣就可以按頻率法分別求出各自的對應關係即可。

結尾:

關於經典的密碼技術還有很多;最典型的該屬迴轉輪加密法了,也稱爲Enigma加密法。屏幕上的驚悚跌宕的劇情在現實中也是同樣存在的。比如《比爾密碼》就是屬於這類的傳奇。傳說比爾(Beale)於1817年得到了一筆巨大的財富,並將一個盒子交給他的朋友,告訴他10年後沒回來就打開盒子。結果10年後朋友打開時發現裏面竟然是寫滿數據的紙。由此比爾密碼花費了許多人畢生的生命。

自2013年6月棱鏡計劃破產後,網絡安全成爲衆人關注的問題。如何才能防止自己的個人信息被監聽?如何才能避免黑客竊取自己的賬號密碼?如何防止醫院的醫療記錄被盜?如何在戰爭中獲取敵人的情報?都應該是值得思考的問題。

經典加密法遠不止如此,而基於電子技術的現代加密法更是引人入勝。道高一尺魔高一丈,有密碼就會有密碼分析,人類的技術就在於挑戰中進化,在數學中昇華。

 

參考文獻

[1]〔美〕Richard Spillman. 經典密碼學與現代密碼學. 清華大學出版社.

[2] Lori Andrews.I Know Who You Are and I Saw What You Did.中國友誼出版社.

 

 


[1] 將源代碼轉化爲目標文件的過程(二進制),此處用16進製表示2進制

[2] 即祕鑰

[3] 也叫夾帶法

[4] 不一定知道所對應的密文

[5] 即一個明文字母對應一個密文字母

[6] 同5

[7] 即一個明文字母對應多個密文字母

[8] 爲了方便加密和解密,一般明文中不包括符號和空格

[9] 不計入空格和標點符號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章