DES的優勢和劣勢
我正在尋找 DES 的優勢和劣勢。
我知道 DES 是一種在 64 位塊和 56 位密鑰(扣除 8 位後)上執行的塊 fiestel 密碼。而且我意識到DES在當今時代對蠻力的抵抗力很弱。
但我希望首先了解,為什麼 DES 最初如此強大。即它如何防禦常見的攻擊。其次:除了密鑰空間之外,是否有任何 DES 特定的弱點可以被實際利用?如果是這樣,是否有明顯的解決方案來防止這種弱點?
作為旁注,我在數學上不是很傾向於,所以可能需要高級解釋,另外我對雙或三重 DES 不感興趣。
維基百科文章@SEJPM 連結到的內容大概是您所能得到的最高水平的概述。我們可以詳細說明一些觀點。
在當今時代,DES 對蠻力的抵抗力很弱。
實際上,它幾乎在標準化後就對蠻力很弱。根據維基百科的文章,密碼在 1977 年被標準化。進一步閱讀,在關於蠻力攻擊的部分:
1977 年,Diffie 和 Hellman 提出了一種價值約 2000 萬美元的機器,可以在一天內找到 DES 密鑰。
因此,有爭議的是 DES從來沒有強大的力量攻擊(無論如何標準化的後 NSA 諮詢版本 - 最初設計者確實提出了“真實”密鑰大小)。
原來DES為什麼這麼強
讓我們看一下文章中關於攻擊比蠻力更快的部分:
- 差分密碼分析是 DES 比較強大的一個領域。據了解,IBM 和 NSA 在設計 DES 時都知道差分密碼分析,並選擇對這些資訊保密。存在針對 DES 的差異攻擊,但它們不像針對其他一些密碼(即FEAL)
那樣具有破壞性
- 對差分攻擊的抵抗力是由 S-box 的差分特性決定的。DES s-box 的設計考慮了這一點。
- “微分”是一對差異:函式的兩個輸入之間的差異,以及兩個相應輸出之間的差異。對於具有給定差異的一對輸入,出現這種輸出差異的機率是攻擊的基礎。
是否有任何可以實際利用的 DES 特定弱點?
繼續在文章的同一部分繼續討論線性密碼分析。
眾所周知,DES 在編寫時考慮到了對線性密碼分析的防禦。上述攻擊是否構成“實際”中斷是有爭議的;這些攻擊只需要已知的明文-密文對,實際上在實踐中並不少見(即HTTP GET)並且可以實際獲取,但它確實需要大量這樣的對。
- 可以通過適當地選擇 s-box 值來防禦線性密碼分析,類似於差分密碼分析。“線性度”可能是一個有點模糊的概念,難以理解。如果過於簡化,s-box 應該與任何線性方程盡可能不同。基本上,應該很難想出一個簡單的方程來準確地逼近 s-box 的方程。
DES 有弱密鑰
- 更強的密鑰計劃應該防止弱密鑰
- 弱密鑰在技術上並不常見,但可以說所有56 位密鑰都是弱密鑰
- 這在技術上與密碼一起使用的操作模式的安全性比密碼本身更相關
為@Ella 的回答增加一個額外的視角:DES 的軟體成本很高,而且很難在恆定時間內有效實施。DES 的設計考慮了硬體,因此它使用的操作可以非常有效地轉換為自定義電路(例如位排列,歸結為簡單的佈線),但在軟體方面相對昂貴得多。
DES 的很大一部分是“S-box”,它是 6→4 個函式。典型的 DES 實現將使用查找表,將位排列合併到表中(即每個表的輸出是一個 32 位字,它將 4 位 S-box 輸出映射到其排列位置)。在那裡可以觀察到這樣的實現。不幸的是,這意味著加密需要對依賴於秘密數據的索引進行數組訪問,這可能會導致成功的側通道攻擊(簡而言之,這些訪問從 CPU 的 1 級記憶體中“踢出”先前的數據,使得執行相同記憶體行的不可告人的訪問速度變慢,攻擊者可以檢測到)。製作不受此問題影響的恆定時間 DES 實現需要一些繁重的技巧,例如位切片,而沒有並行加密模式的好處(因為 DES 和 3DES 通常與 CBC 模式一起使用,而不是 CTR)。在那裡可以看到一種這樣的實現,雖然它是恆定時間的,但它也比基於表的實現慢三倍,按照現代標準,這已經很慢了。
三重 DES(“3DES”)修復了 DES 的大部分密碼分析問題,除了 64 位塊大小,它接近於允許實際攻擊;但是,它也使性能問題惡化了三倍。
因此,我們可以說 DES 及其“改進” 3DES 在概念上有一個很大的弱點,那就是它們很難安全有效地實現,從而導致令人不安的取捨(實際上,不安全的實現,因為實施者總是偏愛可以衡量的性能,而不是無法衡量的安全性)。