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