DES算法描述過程:
1.DES算法使用56位的密鑰及附加的8位奇偶校驗位,產生最大64位的分組大小,輸入64位明文,在64位密鑰的控制下產生64位的密文。
2.DES首先利用初始置換IP對X進行換位處理,然后用圖3.5的與密鑰有關的16輪迭代變換,如此循環16此,最后經過逆初始置換IP-1的處理得到密文
初始置換IP用於對明文各位進行換位,為了打亂次序,經過初始置換后,明文X變為 X'=X1'X2'...X64'=X58X50X7,即明文X中的第58位變為X'中的第1位,同理,逆初始置換IP-1將16輪迭代后給出的64bit組進行置換。
DES第一輪加密過程:
公式表達:
Li=Ri-1
Ri=Li-1⨁f(Ri-1,Ki)
DES的i輪密鑰Ki生成過程:
1.設輸入的64bit密鑰K=k1k2...k64,kiϵ{0,1},1≤i≤64,密鑰K中有8位是奇偶校驗位。
2.對於1≤i≤16,Ci=LSi(Ci-1),Di=LSi(Di-1)
3.Ki=PC_2(CiDi),PC_2位固定置換,選擇置換PC_2如表3.4
加密函數f是整個DES算法的核心:
函數f以長度位32的bit串,A=R(32bit)作為第一個輸入,J=K(48bit)作為第二個輸入,產生的輸出是32位的串,具體操作:
1.對於第一個變元A,給定的選擇擴展函數E擴展位48bit的E(A)
2.EA異或J,並按照模2加運算,把結果寫成連續的8個6位串
B=B1B2B3B4B5B6B7B8;
3.然后使用8個S盒,每個S串是一個4X16的矩陣,元素取0-15的整數
4.經過S盒后B縮減為4位。
5.最后P為固定置換
6.8個s盒的輸入/輸出如圖3.7
7.S盒是DES算法中唯一的非線性的也是最安全的。
8.每個S盒都是6輸入4輸出
9.如果給定S盒的輸入b0b1b2b3b4b5,其輸出對應該矩陣的第L行n列對應數的二進制數
10.L為由b0b5形成的十進制表示,n為由b1b2b3b4形成的十進制表示
11.例如,S1的輸入為011001,行選為01(即第1行),列選為1100(即第12列),行列交叉位置的數為9,其4位二進制數表示為1001,所以S1的輸出為1001。
DES解密過程:
DES的解密過程與加密過程相同,但是在16此迭代中使用子密鑰的次序相反
解密時第一次迭代使用子密鑰K16,以此類推
具體過程可形式化地表示為Y=Y1Y2...Y64→R16L16,L0'=R16,R0'=L16。
DES的安全性:
DES的安全性依賴於密鑰。
1.取反性特征:
對於明文組M,密文組C和主密鑰K,如果C=DESk(M),則C逆=DESk逆(M逆)。
2.弱密鑰與半弱密鑰:
大多數密碼體制都有某些明顯的“壞密鑰”,DES也是。對於K,K'ϵF256 ,若由K擴展45出來的加密子密鑰為K1,K2,...,K15,K16,而由K'擴展出來的加密子密鑰卻是K16,K15,...,K2,K1, 即DESK-1=DESK' ,則稱K與K'互為對合。
3.密文與明文、密文與密鑰的相關性:
DES的編碼過程可使每個密文比特都是所有明文比特和所有密鑰比特的復雜混合函數,而要達到這一要求至少需要DES迭代5輪。卡方檢驗證明:DES迭代8輪以后,就可認為輸出輸入不相關
4.密鑰長度:
DES的密鑰太短,其長度為56bit,致使密鑰量256≈1017,不能抵抗窮舉攻擊,事實證明的確如此。
三重DES:
DES的密鑰長度被證明已經不能滿足當前安全的要求,但是為了使用,簡單的方案就是多次使用DES,比如三重DES。
多重DES就是使用多個密鑰利用DES對明文進行多次加密,多重DES可以增加密鑰兩。
設k1,k2,k3是三個長度為56bit的密鑰。 給定明文x,則密文為y=DESk3(DESk2-1(DESk1(x)))。給定密文 y,則明文為x=DESk1-1(DESk2(DESk3-1(y))) 在三重 DES中,如果k1=k2或k2=k3,則三重DES就退化為使用一個56bit單鑰的單重DES。
三重DES的優點:
1.密鑰長度從增加,克服窮舉
2.增強了抗差分分析和線性分析
3.可以繼續使用DES
4.成本小