6.3 DES分析 評論者使用放大鏡來分析 DES,測量區塊加密法之某些預期特性強度的測試已經進行,DES 的元件也被仔細審查是否符合建構的準則。 本節討論主題 特性 設計準則 DES 的弱點
6.3.1 特性 區塊加密法想要達成的兩個特性為崩塌影響以及完整性影響。
崩塌影響 崩塌影響(avalanche effect)意指在明文(或金鑰)的一個小改變會造成在密文中的重大改變。
範例6.7 為了檢查 DES 的崩塌影響,我們(以相同的金鑰)加密兩個明文區塊。兩個明文區 塊僅有一個位元不同,試著觀察在每個回合中位元差異的數量。 P.163下
範例6.7 (續) 雖然兩個明文區塊僅有最右邊的位元不同,其密文卻有 29 個位元不同。這表示改變大約 1.5% 的明文將產生大約 45% 的密文變化。表 6.17 顯示每一個回合的改變情形,其中早在第三回合就已發生重大改變。 表 6.17
完整性影響 完整性影響(completeness effect)意指密文的每一個位元需要由明文的許多位元來決定。DES 的 P-box 與 S-box 會產生混淆與擴散,顯示具有非常強的完整性影響。
6.3.2 設計準則 S-Box P-Box 回合數量 在設計上提供位元從每個回合至下一回合的混淆與擴散。 提供位元擴散。 DES使用十六個回合的Feistel加密法。密文完全是明文與密文的隨機函數。
6.3.3 DES的弱點 S-Box的弱點 P-Box的弱點 加密金鑰的弱點
表6.18 弱金鑰
圖 6.11 使用弱金鑰進行兩次加密及解密
範例6.18 我們嘗試使用表 6.18 的第一把弱金鑰來加密一個區塊內容兩次。在使用相同弱金鑰 加密一個區塊兩次後,將會出現原始明文區塊。注意我們使用加密演算法兩次,並非進行一次加 密後再接著進行一次解密。 P.167
表6.19 半弱金鑰
6.3.3 DES的弱點 (續)
圖 6.12 一個半弱金鑰對的加密與解密
範例6.9 隨機挑選到一把弱金鑰、一把半弱金鑰或一把可能的弱金鑰的機率為何? 解法:DES 的金鑰範圍大小為 256。上述所有的金鑰數目為 64(即為 4 + 12 + 48)。因此挑選到 其中一把金鑰的機率為 8.8 × 10−16,這幾乎是不可能的。
金鑰補數 在金鑰範圍(256)裡,很明顯地一半的金鑰與另一半的金鑰互為補數。 金鑰補數(key complement)可以經由每一位元反向(將 0 改變為 1,或將 1 改變為 0)來得到。金鑰補數是否會簡化密碼分析的工作呢?答案是肯定的。攻擊者可以僅使用一半的可能金鑰(255)來執行暴力攻擊法。因為: 換句話說,如果使用金鑰補數來加密明文的補數,會得到密文的補數。攻擊者不需測試 所有 256 把可能的金鑰,可以僅測試一半,然後再取其結果的補數。
範例6.10 測試我們所宣稱的金鑰補數。使用任意一把金鑰以及一個明文來計算其相對的密文。如果我們擁有金鑰補數及明文,則可以得到密文的補數(見表 6.20)。 表 6.20
6.4 多重DES 對DES主要的批評是金鑰長度。幸運的是,DES並非一個群。這表示我們可以使用雙重DES或三重DES來增加金鑰長度。 本節討論主題 雙重 DES 三重 DES
6.4 多重DES (續) 一個取代動作會將群中所有可能的輸入映射至所有可能的輸出。 圖6.13
6.4.1 雙重DES 中間相遇攻擊 使用稱為中間相遇攻擊(meet-in-the-middle attack)的已知明文攻 擊,證明雙重 DES 僅些微地改善此弱點(僅達 257 次測試),並非很大的提升(達 2112 次測 試)。
圖 6.14 雙重 DES 的中間相遇攻擊
圖 6.15 中間相遇攻擊的表格
圖 6.16 使用兩把金鑰的三重 DES
使用三把金鑰的三重DES 由於已知明文攻擊有可能成功破解使用兩把金鑰的三重 DES,因而促使某些應用採取使用三把金鑰的三重DES(triple DES with three keys)。許多應用均採取使用三把金鑰的三重DES,例如 PGP(見第十六章)。
6.5 DES安全性 由於 DES 是第一個重要的區塊加密法,因此經過許多嚴密的審查。在所有的意圖攻擊當中,有三個非常重要:暴力攻擊法、差異破密分析以及線性破密分析。 本節討論主題 暴力攻擊法 差異破密分析 線性破密分析
6.5.1 暴力攻擊法 我們已經討論過 DES 其短加密金鑰的弱點。結合這個弱點與金鑰補數的弱點,很清楚地,DES 可以使用 255 次加密來破解。
6.5.2 差異破密分析 DES 的設計者已知關於這類的攻擊,並且設計 S-box 及選擇使用十六個回合,使得 DES 特別能夠抵抗這類的攻擊。 注意 我們在附錄N中展示一個DES差異破密分析的例子。
6.5.3 線性破密分析 線性破密分析較差異破密分析來得新穎。比起差異破密分析,DES 較易遭受線性破密分析的攻擊,這是因為 DES 設計者尚未知曉此類攻擊。S-box 幾乎不能抵抗線性破密分析。目前已經證明使用 243 對已知明文便可破解 DES。然而,從實際的角度來看,找到這麼多對已知明文是不可行的。 注意 我們在附錄N中展示一個DES線性破密分析的例子。