- 分組密碼是一種加密解密算法,將輸入明文分組當作一個整體處理,輸出一個等長的密文分組
- 分組密碼一般採用Feistel結構,有許多相同的輪函數組成,每一輪裏對數據的一半進行代換,然後置換數據的兩個部分,拓展初始的密鑰使得每一輪使用不同的子密鑰
- DES是應用最廣泛的分組密碼
乘積密碼:由香農引進,基於替代和置換兩個基本操作
香農認爲,應對基於統計分析的密碼破譯,必須對明文采用擴散和混淆兩種處理
擴散使得明文結構消失,混淆使得明文和密文關係更加複雜
一、分組密碼
- 分組加密器的本質是一個巨大的替換機
- 64位的分組就有2^64種輸入
- 採用乘積加密的思想,即輪流使用代替和置換
- 大多數基於Feistel密碼結構
1.Feistel密碼結構的設計動機
分組密碼對n比特的明文進行分組操作,產生一個n比特的密文分組,共有2^n個不同的明文分組,每一種都必須產生一個不同的密文分組,這種變換稱爲可逆的或者非奇異的
可逆的是一對一前後可以互相推,多用於加密解密等場所
不可逆的是多對一,只能單向進行,常用於生成摘要,確保傳輸完整性
正是由於生成摘要有多對一的特性,容易導致篡改,因此又引入數字簽名確保摘要的對應性
2.Feistel密碼結構
3.Feistel加密器設計原則
- 分組長度:分組越長安全性越高,但是加密解密效率越低,常取64位
- 密鑰長度:越長越安全,但是加密解密效率越低,128是常用長度
- 迭代次數:迭代次數越多越安全,通常取16次
- 子密鑰產生算法:越複雜密碼分析越困難
- 輪循環函數:越複雜抗密碼分析能力越強
解密:以密文作爲算法的輸入,以相反的次序使用密鑰
二、數據加密標準DES
1.細節
- 將明文分成左右兩部分 Li = R(i–1) Ri = Li–1 xor F(R(i–1), Ki)
- 使用置換表將32位右半部R拓展爲48位
- 與48位子密鑰做異或
- 48位結果送給8個S-盒(做替換),得到32位結果
- 使用32位置換表P,把32位結果再進行一次置換
2.S盒
八個將6位數據映射成四位數據的S盒
6到4的映射規則是
- l外側的第1位和第6位用作行選擇
- l其餘4位(2-5bit)用作列選擇
- l這樣每盒就有4行16列,輸出4位,8個S盒輸出32位
3.DES安全強度
安全強度很大程度上取決於密鑰長度,但是隨着計算機運算能力的提升,窮舉搜索的能力也越來越高,因此引入多重DES算法
4.雙重DES
多重加密的最簡單形式就是進行兩次加密,每次使用不同的密鑰
C=Ek2(Ek1(P))
P=Dk1(Dk2(C))
所以密鑰長度是56 * 2=112位
雙重DES容易遭遇中途相遇攻擊meet-in-the-middle
只要連續使用兩次密碼這種攻擊總是有效
因爲X=Ek1(P) = Dk2(E),所以從兩端分別向中間推導尋找匹配的X值
5.使用兩個密鑰的三重DES
C=Ek1(Dk2(Ek1(P)))
如果k1=k2,則相當於單重DES,已用於密鑰管理標準
目前還沒有針對三重DES可行的攻擊方法
注意:三重DES一定是加密解密過程交替的,即在表達上一定是EDE或者DED形式,三個過程也可以採用三個不同的密鑰
後來發展出高級加密標準AES