DES 演算法的設計思路是什麼?

最近在上信息安全的課程,講到了DES演算法。與類似Floyd-Warshall Algorithm和FFT這樣的演算法不同,書上只是提到了具體的步驟,並沒有相對比較容易的理解的設計動機,也沒有具體解釋到底那些替換和排列表是怎麼生成的。希望能有專業人士解釋一下。


謝邀。DES演算法的關鍵部分是Feistel網路,就是把明文拆成左右兩個部分然後用一組子密鑰不斷的異或、交換。至於DES裡面的各個表,IP和IP-1、E盒和P盒很容易看得出規律,唯獨S盒沒有說法。

DES中S盒來路不明也是密碼學屆的一個著名的謎團。因為由IBM提交NSA的DES設計和最後審批下來的設計不一樣,如密鑰長度由原來的128位縮減至56位,S盒的設計也被更改,不少學者(也可以說是陰謀論)認為DES中隱藏了NSA設計的一個後門,NSA可以用來快速解密使用DES加密的密文。但是至今也沒有人找到這個後門。


@余天升 大牛回答的很詳細了~

如果想對 DES 加密演算法有個更深入的了解,建議看些 Differential Analysis 的論文,並手動嘗試破解 3 ~ 6 輪的 DES 加密(非常的好玩,也是我們當時的密碼學作業之一)。差分攻擊的思路,簡單來說就是用大量的明文-密文對進行分析,而這些明文對具有這樣的性質,兩者的異或和中有半邊為0或特殊值,使其在單輪加密後不變,從而能從後往前倒退。但我們的差分攻擊是建立在有加密程序,即我們可以構造需要的明文對,並黑盒調用加密系統來獲取密文對,從而進行攻擊的前提上。現實生活中不太可能獲得大量的、有效的明文-密文對來攻擊,所以即使現在 DES 還是很安全的,AES 就更安全了。

印象中(記不太清了)破解6輪 DES 加密時最終的密鑰有4位還是5位需要枚舉,差不多已經是 2 ^ 5 次嘗試了。而更高輪 DES 的差分攻擊就是低輪的 concatenation,不過16輪的差分攻擊效率甚至不如 brutal force,這直接導致了人們懷疑設計 DES 的天才們在設計 S 盒和加密輪數時,就已經發現了差分攻擊的方法,才挑了16這個奇妙的數字。(差分攻擊是在 DES 加密演算法公布很多年後才被人們發現的)

嚴格來說初始置換和結束置換不是必須的,單輪的密鑰循環移位什麼的也是浮雲,而且 E 盒與 P 盒都是線性置換,整個 DES 系統里唯獨 S 盒的設計比較獨特,也是個謎團。有測試表明如果不使用官方 S 盒而是使用其他的 S 盒,則安全性顯著下降。


加密是異或,解密再用同樣的密鑰異或,就得到明文了。一共是要異或16還是32輪的樣子。具體來講,就是先給一個隨機數,通過密鑰擴展函數,擴展成X輪密鑰,就可以用於異或明文,完成加密了。解密的時候反著來。

這裡面的道道就在密鑰擴展函數了,要設計得速度快又難破解。然後每一輪加密的時候,可以做的複雜點,不止做異或運算,還可以加入比如移位啦,Sbox之類的運算,進一步提高破解的難度。


推薦看《深入淺出密碼學》對應內容


混淆和擴散wwwwwwwwwwwwwwwwww


推薦閱讀:

有關餘數的簡單方法,不知道是新發現還是已知?
初級程序員,該如何提高?
理論上可以通過除窮舉法以外的方法破解不可逆的加密演算法嗎?
毒酒迷題:現有 1024 瓶美酒,其中 2 瓶有毒。毒藥 24 小時內發作,現有 65 名死囚,怎樣能在 24 小時 01 分內找出 2 瓶毒酒?
x,y是正實數,解方程x^6-y^6=2016xy^2?

TAG:演算法 | 安全 | 密碼學 | 計算機安全 | DES加密 |