資訊與網路安全技術第 二章 傳統秘密鑰匙系統  上一頁    

 

2-12 密碼系統的安全性

內容:

  • 2-12 密碼系統的安全性

  • 2-13 密碼破解技巧

2-12-1 密碼系統的真實情況

一般而言,密碼系統常被誤認為僅提供資料的隱密性功能,如此就太小看密碼學的威力了。欲了解密碼學的功能,應從『鑰匙』(Key,或稱金鑰、金匙、關鍵)的觀念來談。鑰匙擁有者通常有加密或解密的權利,因此非特殊身分者不可擁有鑰匙。由此可見,鑰匙是身分的表徵,其功能就如『印章』一般,文件經由『用印』之後,便成為有效的公文。相同的,一份文件經由某人使用鑰匙加密之後,就表示此人對此文件負責,該文件縱使非他本人所發出的,至少他經手審查過。依此觀念密碼學才會有:隱密性、確認性、完整性與不可否認性的功能。

常見密碼系統可將所欲傳送的明文加密成為一些沒有意義的亂碼,這一串亂碼便稱為『密文』,只有擁有解碼鑰匙者方可將密文解譯成明文。但密文在網路上傳輸被盜取之後,果真無法解密回明文嗎?這是值得商榷的問題。在未探討這個問題之前,首先我們來了解密碼系統在網路上運作的一些真實情況:

  • 密碼演算法必須是公開的:在網路上並不可以確定或限制通訊的對象,尤其是電子商務方面,多半與陌生人通訊,並無法私底下告知對方某一特定的密碼演算法。更進一步,我們期望在網路上建立共通標準的密碼演算法規範,所以演算法必須是公開的,何況為了提高演算法的處理速度,已有許多演算法被崁入硬體晶片之內。

  • 明文格式是無法隱藏的:一般來講,某些特殊用途的明文格式都有一定的規範,如稽核檔案、採購清單、信用卡號碼等等。針對某一格式的明文經過編碼加密之後,非常有可能出現一些相似的地方,入侵者經由比對這些相似的地方即可找出破解的方法。更嚴重的,若入侵者可發送一份明文要求傳送端加密的話,也可取得相對應的密文,如此不難找出明文與密文之間的關聯性。

  • 密文是唾手可得的:密文在網路上傳輸,任何人都可輕易取得該資料。如果入侵者有意破解某一系統的話,只要不斷地收集該系統所發出的密文,由同一把鑰匙所加密的密文愈多,則被破解的機率也相對應提昇。

由此可見,密碼系統並非完全可靠的。甚至可以大膽直言,沒有不可能被破解的密碼系統,祇是破解難易程度不同而已。在密碼學中,將密碼系統的防禦被破解能力稱為『強度』(Strength。即是『強度』愈高的密碼系統,愈難破解。另外,最起碼可以肯定的是,一把秘密鑰匙絕不可以使用過久,太久的話,終究會被破解的,甚至要求一把鑰匙只能使用一次(容後介紹)。

2-11-2 密碼系統的計算上安全

密碼系統被破解的容易度,關係著該演算法的複雜度,越複雜的演算法所需的計算時間相對越高。再說為了抗拒暴力攻擊法,最基本的方法是增加鑰匙的長度。簡單的說,任何密碼演算法都有被破解的可能,不管鑰匙的長度如何,都有可能被暴力搜尋出來,關鍵在於破解密碼是否合乎下列兩種條件:

  • 破解密碼所需的成本是否合乎該訊息的價值。

  • 破解密碼所需的時間是否超過該鑰匙的壽命。

如果能克服上述兩個條件的密碼系統,便稱之為『計算上的安全』(Computationally Secure;密碼系統安全與否的衡量標準在於破解者需要多少時間、花費多少成本才能破解密碼。以 DES 密碼系統為例,鑰匙長度為 56 個位元,破解者可能必須嘗試 256把鑰匙來暴力攻擊;可能鑰匙的總數為 256 = 7.2 * 1016,如果每微秒(us)加密一次(執行 DES 演算法),則需要 256 us = 1142 年的計算時間才可以成功;預估未來 10 年電腦的整合處理速度將可以達到每微秒 106次,如此只要 10.01 小時便可測試完畢,而平均只要 5 小時便可以成功。因此,可預估得到 DES 密碼系統已不再是安全了,此癥結在於 DES 系統不夠複雜,演算法太容易被計算出來。唯有發展更複雜的加密演算法,來拖延電腦的計算時間,或是增加鑰匙長度,來增加嘗試鑰匙的數量,才能達到『計算上的安全』。

2-12-3 演算法的複雜度

我們將密碼系統抗拒破解的能力,稱為該系統的『強度』(Strength)。如果一個密碼系統的強度很高的話,則表示較不易被破解,然而破解方法也許是已知明文或已知密文方法。一般來講,破解技巧大多採用『統計分析破解法』,方法是取出密文與明文、或密文與鑰匙之間的關聯性,再以統計分析的方法找出明文或鑰匙;所以對抗統計分析破解法的最根本技巧,便是增加演算法的複雜度,要達成這個目標可由兩方面來看:

  • 『混淆』(Confusion:是指密文與鑰匙之間的關聯性。混淆程度越高,則表示密文與鑰匙之間的關聯性越複雜。也就是說,同一把鑰匙加密多筆明文後,所產生的密文之間的相似性越少越好,如此一來,較困難由許多密文及明文配對推導出加密鑰匙。

  • 擴散』(Diffusion:是指明文與密文之間的關聯性。擴散程度越高,則表示明文與密文之間的關聯性越複雜。也就是說,同一筆明文經過多把鑰匙加密後的密文,所產生的密文之間的相似性越少越好,如此一來,較困難破解出加密演算法。

由此可見,『混淆』與『擴散』能力,就是評估兩個(或兩個以上)明文之間的內容大致上相同,但各自所產生密文之間的差異度。如果差異很大的話,則混淆與擴散能力就愈強,相對其密碼演算法的『強度』就愈高。混淆與擴散能力夠強的密碼系統,較能抵擋『統計分析破解法』。一般破解法大多採用『選擇明文攻擊』。亦是,首先由中間人選擇某些明文發送給傳送端,藉由對方傳送過來的相對應的密文。若所選擇的明文有一定規則的格式,並且已加入一些特殊的文字標誌。此時,混淆能力不足的演算法,所產生的密文就會發生一定規則的變化。如此,破解者就可以利用統計分析的方法找出加密鑰匙。所以比較理想的系統,縱然兩個明文之間只有一個字元的變化,所產生的密文也要有相當大的差異,因此稱之為『混淆』與『擴散』的能力。

2-13 密碼破解技巧

不經加密鑰匙或是使用偽造鑰匙,便能夠將密文解譯回原來的明文,稱之為『密碼破解』(Cryptanalysis。值得注意的是,密碼系統的應用中,密碼演算法是公開的,所有機密性的問題完全在於『鑰匙』,如果鑰匙被盜取或被偽造的話,則密碼系統的所有安全性將會完全崩潰。破解鑰匙最基本的是『統計分析破解法』與『暴力破解法』(Brute-Force Attack兩種方法。前者是統計分析的方法,找出已知明文與密文之間的相依性,再利用此相依性分解出所欲破解密文的相對應明文。暴力破解法即是嘗試鑰匙所有可能出現的情況,來破解密碼系統。因為密碼系統演算法是公開的,且加密後密文是唾手可得的。吾人可利用已知密文與加密演算法,嘗試所有可能出現的鑰匙,如果能將密文解密出合乎正常規格的文件,即是找出通訊鑰匙,再利用此鑰匙盜取其他通訊內容。由此可見,鑰匙長度愈長者,所需嘗試破解的數目相對就越多,如此可以增加鑰匙被破解的困難度(延長其破解時間)。如果一把鑰匙使用太久的話,絕對有可能被破解。

首先,我們將一般密碼破解方法歸類如下:

    • 只知密文破解:破解者蒐集所有可能攔截到的密文,由這些密文之中比對其相似的地方,將密文解譯出明文。只由密文直接破解實在很困難,因為破解者持有的資訊太少。但如果連這樣也可以破解的話,該密碼演算法實在愚不可及。

    • 已知明文破解:破解者使用已知明文與其相對應的密文,來推演出其加密鑰匙。採用『暴力攻擊法』大多達到此破解法。

    • 選擇明文破解:這是非常可怕的破解方法,攻擊者可利用特殊方法(如反射攻擊),將明文發送給傳送端,再由傳送端取得加密後的密文。攻擊者可選擇各種明文格式(如稽核檔、資料記錄檔、文書檔案),要求對方加密。再比對同一資料格式加密的各種型態,便可輕易的推演出它的加密鑰匙。

    • 選擇密文破解:如同選擇明文破解一樣,將密文傳送給接收端,再由接收端得到解密後的明文;如果資訊充足的話,也可以比對出秘密鑰匙。

前面兩種破解方法大多採用暴力攻擊法;後面兩種大多使用統計分析破解法。至於暴力攻擊法是最簡單也最可怕的攻擊技巧,它嘗試所有可能發生的秘密鑰匙,來攻擊密碼系統。譬如,DES 演算法的鑰匙長度為 56 個位元,是 256之中的一種機會,攻擊者連續使用 256個鑰匙來嘗試解出明文。克服暴力攻擊最簡單的方法是,資料在加密之前,先經過壓縮處理。如此的話,攻擊者無論破解成功與否,都無法看出有意義的資料,而不知道是否破解成功。但如此是否能有效防止被破解,也是值得懷疑的,因為壓縮演算法也可能需要公開。

 

翻轉工作室:粘添壽

 

 

資訊與網路安全技術

 

 

 

翻轉電子書系列: