密碼分析

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

密碼分析(英語:cryptanalysis,來源於希臘語kryptós,即「隱藏」,以及analýein,即「解開」),是研究在不知道通常解密所需要的秘密資訊的情況下對已加密的資訊進行解密的一門學問。一般情況下,要成功解密需要尋找到一個秘密的鑰匙,俗稱破解密碼(破密)。

從廣義的角度看,密碼分析這個詞語有時也泛指繞開某個密碼學演算法密碼協定的嘗試,而不僅僅是針對加密演算法。但是,密碼分析通常不包括並非主要針對密碼演算法或協定的攻擊。儘管這些攻擊方式是計算機安全領域裏的重要考慮因素,而且通常比傳統的密碼分析更加有效。

雖然密碼分析的目標在密碼學的歷史上從未改變,但是實際使用的方法和技巧則隨着密碼學變得越來越復雜而日新月異。密碼學演算法和協定從古代只利用紙筆等工具,發展到第二次世界大戰時的恩尼格瑪密碼機(又稱「謎」,德語Enigma),直到目前的基於電子計算機的方案。而密碼分析也隨之改變了。無限制地成功破解密碼已經不再可能。事實上,只有很少的攻擊是實際可行的。在上個世紀70年代中期,公鑰密碼學作為一個新興的密碼學分支發展起來了。而用來破解這些公鑰系統的方法則和以往完全不同,通常需要解決精心構造出來的純數學問題。其中最著名的就是大數的質因數分解

密碼分析的歷史[編輯]

密碼分析和密碼學共同演化的。這從密碼學史中可以看得很明顯。總是有新的密碼機被設計出來並取代已經被破解的設計,同時也總是有新的密碼分析方法被發明出來以破解那些改進了的方案。事實上,密碼和密碼分析是同一枚硬幣的正反兩面:為了創建安全的密碼,就必須考慮到可能的密碼分析。

經典密碼分析[編輯]

儘管「密碼分析」這個詞是晚近出現的(1920年由William Friedman英語William_Friedman確立),但破解密碼密碼機的方法卻由來已久。世界上最早的破解密碼方法的文字記錄可以追溯到九世紀阿拉伯通才肯迪所著《破解密碼資訊》(A Manuscript on Deciphering Cryptographic Messages),這篇文章論述了一個頻率分析的方法。

頻率分析是破解經典密碼的一個基本方法。在自然語言裏,字母表裏的有些字母比其它的字母出現得更頻繁。例如,在英語裏,字母E很有可能是在任何文字樣本裏出現頻率都最高的字母。同樣的,TH這兩個字母連起來是最有可能出現的字母對。頻率分析法假設密碼沒有隱藏這樣的統計資訊。例如,在簡單的替換密碼中,每個字母只是簡單地被替換成另一個字母,那麼在密文中出現頻率最高的字母就最有可能是E。

頻率分析法除了需要用到統計學外,也需要用到語言學。但隨着密碼演算法的日漸複雜,密碼分析也漸漸變得主要依賴數學方法。這個改變在第二次世界大戰時最為明顯。那時,為了破解軸心國的密碼,需要發展更加複雜的數學方法。而且,自動計算也頭一次被應用到密碼分析中,如密碼炸彈英語Bomba_(cryptography)以及最早的計算機之一,巨人計算機

現代密碼分析[編輯]

儘管第二次世界大戰時計算機的運用使得密碼分析更加容易,這同時也使得新的密碼學方案的復雜程度上升了好幾個數量級。總體來說,破解密碼在現代比起只用紙和筆的年代來說要困難得多了。現在看來,似乎密碼學對純密碼分析來說已經佔了上風。美國歷史學家卡恩(David Kahn英語David_Kahn)在2002年這樣說道:「今天,由數百個商家提供的很多密碼系統都不能被已知的密碼分析方法來破解。確實,在這樣的密碼系統中,即使用選擇明文攻擊,也就是攻擊者可以選擇明文並比對相應的密文,也不能找出可以用來解開其它加密資訊的鑰匙。從某種意義上來說,密碼分析已經死了。但是,故事還沒有結束。密碼分析也許是死了,但是,打個不恰當的比方,其實條條大道通羅馬。」(2002年11月1日在美國國家安全域50周年紀念會上的講話)。卡恩接着又提到,其它的攻擊方式的可能性增加了。例如攔截攻擊,竊聽側信道攻擊,以及用量子計算機來代替傳統計算機做密碼分析[1]頁面存檔備份,存於互聯網檔案館)。

卡恩對於密碼分析所作的論斷也許還為時過早。不安全的密碼並沒有絕跡,美國國家情報機構的密碼分析方法也沒有公開過。在學術界,新的密碼在不斷地被設計出來,也經常地被破解。1984年,Madryga英語Madryga 分組密碼被一種唯密文攻擊破解。1998年,原本提出來要取代DES標准加密演算法的分組密碼 FEAL-4英語FEAL,也因為被學術界發現了很多類似而且實際可行的攻擊而消亡。在工業界,很多密碼也被發現有漏洞。例如,在手機中使用的A5/1A5/2以及CMEA英語CMEA_(cipher)演算法,用一般的計算工具可以在幾小時、幾分鐘內,甚至是實時地被破解。2001年,用來保護無線Wi-Fi網絡的有線等效加密協定(或稱無線加密協定,即WEP)也可以用相關鑰匙攻擊來破解。

密碼分析的後果[編輯]

無疑,成功的密碼分析影響了歷史的進程。能夠看懂別人本以為是秘密的想法或計劃,這種能力可以成為決定性的優勢。在戰爭期間尤其如此。例如,在第一次世界大戰中,成功地破解齊默爾曼電報是促使美國參戰的直接原因。在第二次世界大戰中,對德國密碼的成功破解,包括恩尼格瑪密碼機(Enigma)和洛侖茲密碼機(Lorenz Cipher),其後果從使歐洲戰場早幾個月結束,到對整個戰爭起決定性作用,各種說法都有(參見ULTRA英語Ultra)。美國也從對日本PURPLE英語PURPLE密碼的密碼分析中受益(參見MAGIC英語Magic_(cryptography))。

一些國家的政府很早就已經意識到了密碼分析對於情報收集的重要性,不管是對於軍事還是外交都一樣。這些國家還建立了專門破解密碼的機構,如英國政府通訊總部(GCHQ),以及美國國家安全域(NSA)。這些機構在當今都非常活躍。2004年,有報道說美國成功破解了伊朗的密碼。但這是純粹的密碼分析還是有其它因素,目前還不清楚 [2]頁面存檔備份,存於互聯網檔案館)。

攻擊類型[編輯]

不同的密碼分析攻擊有不同的效力,對於實際的密碼系統的威脅也不盡相同。有的時候,對於某個密碼系統的攻擊只是停留在理論上,對於任何實際的密碼系統可能並不適用。這就是所謂的「證書式弱點」(certificational weakness)。現代密碼分析的學術研究結果大部分都屬於這一類。從根本上說,某種攻擊方式在實際中的有效性取決於它對於以下幾個問題給出的答案:

  1. 這個攻擊需要何種知識及能力?
  2. 通過攻擊可獲得多少新的秘密資訊?
  3. 這個攻擊需要花多少工夫?(它的計算復雜度為何?)

先驗知識:密碼分析中的情形[編輯]

在攻擊中,通過觀察或研究目標系統,多少會獲得關於這個系統的資訊。隨着能夠獲得資訊多少的假設不同,密碼分析的方法也不盡相同。在密碼分析中最基本的一點,就是假設攻擊者能夠知道系統所用的演算法。這也就是「敵人了解系統」的所謂柯克霍夫原則。這個假設在實際中是合理的。從古至今,有無數的秘密演算法最後終為人所知,而其途徑多種多樣,包括間諜叛變,以及逆向工程。在一些不多見的情況下,密碼機也能夠通過純粹的推演而被重建。例如德國的洛侖茲密碼機(Lorenz Cipher)和日本的PURPLE密碼機,以及其它很多經典密碼。

另外,通常用攻擊模式英語Attack_model來描述攻擊者可以獲得關於系統資訊的方式。攻擊模式包括以下幾種:

  • 唯密文攻擊:攻擊者僅能獲得一些加密過的密文
  • 已知明文攻擊:攻擊者有一些密文並且知道相對應的明文
  • 選擇明文攻擊:攻擊者在開始攻擊之前可以選擇一些明文並從系統中獲得相對應的密文。如果攻擊者在攻擊中途可以根據已經獲得的資訊選擇新的明文並獲得對應的密文,則稱為適應性選擇明文攻擊
  • 選擇密文攻擊:攻擊者在開始攻擊之前可以選擇一些密文並從系統中獲得相對應的明文。如果攻擊者在攻擊中途可以根據已經獲得的資訊選擇新的密文並獲得對應的明文,則稱為適應性選擇密文攻擊
  • 相關鑰匙攻擊英語Related-key attack:與選擇明文(或密文)攻擊類似。不同的是,攻擊者可以得到被兩個不同的鑰匙所加密(或解密)得到的密文(或明文)。攻擊者不知道這兩個鑰匙的數值,但知道這兩個鑰匙之間的關係,比如兩個鑰匙之間相差一個位元。

顯然,這些不同種類的攻擊在實際中可能出現的機會也大不相同。儘管有些攻擊比其它的較為常見,密碼學家在設計演算法時通常會採取保守的方式看待安全問題,總是假設最壞的情形。理由是,如果一個演算法連不現實的攻擊都可以承受,那麼它自然也可以抵抗實際可行的密碼分析。

事實上,這些假設雖然初看上去不切實際,但其實不然。例如在已知明文攻擊中,密碼分析者很有可能能夠知道或猜出明文的一部分。比方說,一封加密過的信有可能是以「敬啟者」開頭,而一個電腦會話則有可能以「用戶名:」開頭。選擇明文攻擊在金鑰密碼中較為少見,但也並非不可能。而在公鑰密碼中,選擇明文攻擊人人都可做到,因為加密用的鑰匙通常是公開或已知的。相關鑰匙攻擊通常只是在理論上的討論,但在實際中也會被用到,例如對WEP的攻擊。

成功密碼分析的類別[編輯]

對於密碼分析的結果來說,其有用的程度也各有不同。密碼學家Lars Knudsen英語Lars_Knudsen於1998年將對於分組密碼的攻擊按照獲得的秘密資訊的不同分為以下幾類:

  • 完全破解 -- 攻擊者獲得秘密鑰匙
  • 全域演繹 -- 攻擊者獲得一個和加密和解密相當的演算法,儘管可能並不知道鑰匙。
  • 實例(局部)演繹 -- 攻擊者獲得了一些攻擊之前並不知道的明文(或密文)。
  • 資訊演繹 -- 攻擊者獲得了一些以前不知道的關於明文密文香農資訊
  • 分辨演算法 -- 攻擊者能夠區別加密演算法和隨機排列

對於其它類型的密碼學演算法,也可以做出類似的分類。

複雜度[編輯]

非對稱密碼學的密碼分析[編輯]

量子計算在密碼分析中的應用[編輯]

密碼分析的方法[編輯]

參考文獻[編輯]

參見[編輯]