在加密中:它是什么以及它是如何工作的? 我們承諾了單字母替換密碼的解決方案。見下文:
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ |
I | Z | S | G | K | B | X | J | F | E | R | T | U | Q | A | W | O | H | M | Y | N | C | V | L | D | P |
密文: ITT VAHR IQG QA WTID UIRKM EISR I GNTT ZAD
明文:全是工作,不玩耍,讓杰克成為一個沉悶的男孩
在這篇博客中,我們將介紹一些眾所周知的對稱加密算法。對稱算法類是指所涉及的每一方都必須訪問相同的密鑰,因此它們關于密鑰的信息是相同或對稱的。在我們的下一篇博客中,我們將介紹非對稱算法,其中所有參與者之間有關密鑰的信息并不相同。讓我們首先研究一個眾所周知的,但現在大部分已停用的對稱算法:DES。
數據加密標準 (DES) 是由 IBM 開發并于 1977 年標準化的對稱加密算法。盡管它已被AES取代(我們將在下面進行研究),但DES的設計選擇為關鍵空間問題提供了一個極好的真實示例。雖然對這些算法如何工作的完整描述遠遠超出了本文的范圍,但讓我們看一下它們設計中舉例說明對稱加密算法重要屬性的部分。
DES 算法在 64 位輸入數據塊上運行,并通過稱為 Feistel 網絡的結構處理每個塊(如右圖所示)。由于該算法在 64 位塊的固定大小輸入上運行,我們稍后需要引入不同的操作模式:將較大的輸入拆分為塊并組合輸出以形成最終密文的方法。正如我們將看到的,它并不像簡單地連接對應于每個塊的 64 位密文那么簡單!
明文輸入首先是排列的,但由于排列是固定的并且是公開的,因此它不會為設計增加安全性——它只是為了減慢缺乏算法硬件實現的對手的速度。需要注意的是,現代加密算法的安全性不依賴于算法任何部分的保密性。相反,只有密鑰被假定為對手不知道。現代密碼設計中的這一重要概念被稱為Kerckhoffs原理。
然后將數據拆分為左 (L0) 和右 (R0) 的一半,右半部分與子鍵 K1(通過算法從主鍵派生)組合。右半部分和子鍵通過函數“f”組合在一起,以紅色突出顯示。
f被稱為Feistel函數,是使DES成為一個難題的重要組成部分。有趣的是,我們將看到,與本文開頭的一般難題示例 f(x) 不同,DES 中的 Feistel 函數 f 實際上不是可逆的!相反,可逆性屬性(使用 DES 解密的能力)來自 Feistel 網絡結構:使用密文塊和子密鑰以相反的順序運行網絡會產生原始明文。
Feistel 函數 f(如下圖所示)的結構是通過擴展和獨占 or 運算符將正確的 32 位數據與子鍵 K 組合在一起來操作的。然后將此組合結果分成 8 個 6 位塊,每個塊通過替換盒或“S-box”。這些 S 盒中的每一個都實現了眾所周知的非線性轉換,將 6 位輸入映射到 4 位輸出。選擇這些映射中的每一個對于DES的安全性至關重要,在標準化之前,NSA用自己的映射替換了原始映射。當時被廣泛認為是惡意的,后來發現NSA的映射可以抵抗一種(當時公開未知的)稱為差分密碼分析的攻擊。
不幸的是,并非所有國家安全局對DES的貢獻都是無私的。最初的設計要求使用64位密鑰,這在1970年代的安全性綽綽有余。然而,NSA強烈主張使用更弱的48位密鑰,該標準最終確定為56位。當時的公開理由是使用每個字節的一個位作為奇偶校驗位(導致只有 64 個有意義位的“56 位”密鑰)來驗證 DES 密鑰是否“有效”。當然,嘗試使用錯誤的密鑰解密將達到相同的目標。如今,56 位 DES 密鑰不提供安全性,因此不應使用 DES 算法。相反,對稱加密算法應該至少使用128位密鑰,這是我們研究的下一個算法滿足的屬性:高級加密標準AES。
AES
1997年,美國國家標準與技術研究院(NIST)宣布了一項開發高級加密標準(AES)的競賽,這是一種將取代DES的對稱加密算法。2001年,Rijndael算法(比利時設計師Vincent Rijmen和Joan Daemen的姓氏組合)被選為獲勝者,并被標準化為AES。它定義為 128、192 和 256 位的密鑰大小,遠大于 DES 使用的 56 位密鑰。
AES 算法使用替換-置換網絡,該網絡類似于 DES 使用的 Feistel 網絡,但不同之處在于替換盒 (S-box) 是可逆的。AES執行四個基本操作:
添加圓鍵
為了混合密鑰材料,從主密鑰派生一個子密鑰以形成 AES 圓形密鑰。狀態數組 s 初始化為 128 位明文輸入塊,并通過 exclusive-or 與 round 鍵的單詞 w 組合以形成更新的狀態。
子字節
與 DES 類似,狀態隨后通過非線性 S 盒進行轉換,在 AES 中,S-box 以可逆的方式將字節映射到字節。根據 Kerckhoffs 原理,這種轉換和 AES 算法的整個描述是眾所周知的。
移位行
此步驟在當前狀態下循環移動最后三行。此操作與 MixColumns 操作一起提供擴散:在整個生成的密文輸出中傳播明文輸入中的微小變化。這種“雪崩效應”可以防止攻擊者知道明文-密文對的攻擊:多次擴散操作,加上每次迭代中添加圓形密鑰的混亂,使得即使知道明文和密文也難以恢復密鑰。
混合列
最終操作將信息混合在一列中,從而提供進一步的擴散效果。
然后,根據所選的密鑰大小,對這些操作組進行多次迭代。
我們已經看到,DES 和 AES 都是分別處理 64 位和 128 位明文塊的對稱加密算法。
審核編輯:郭婷
-
密鑰
+關注
關注
1文章
137瀏覽量
19742 -
DES
+關注
關注
0文章
64瀏覽量
48201
發布評論請先 登錄
相關推薦
評論