信息安全——密碼學之DES介紹

古典密碼是私鑰加密算法
現代密碼(由乘積密碼構成)包括DES, Blowfish, IDEA, LOKI, RC5, Rijndael (AES) 及其它一些算法
先來看看一些基本概念和密碼學的基礎知識:
對稱算法可分爲兩類:分組密碼和流密碼。
       1.分組密碼是將明文分成固定長度的組或塊(如64比特爲一組),然後用同一密鑰和算法對每一塊進行加密,輸出密文的長度也是固定的。
       2.流密碼(stream cipher)的主要原理是通過僞隨機序列發生器產生性能優良的隨機序列,使用該序列與明文序列疊加來輸出密文序列。解密時,再用同一個隨機序列與密文序列進行疊加來恢復明文。
分組密碼中,
S-P network 替換-置換乘積密碼的現代形式
S-P networks 是基於下列兩種最基本的密碼運算(前面介紹過):
替換( Substitution )一個二進制字用其它二進制字替換,這種替換函數就構成密鑰,可以看作是一個大的查表運算,叫做 S-boxes
置換( Permutation )二進制字次序被打亂,重新排序的方法構成密鑰,叫這種變換爲 P-boxes
把這兩種運算組合在一起,一些 S-boxes 由 P-box 連接,這種變換叫做混合變換(mixing transformations )。這種效果進一步解釋爲”雪崩(輸入改變1bit, 導致近一般的比特發生變化)”與”完全性(每個輸出比特是所有輸入比特的複雜函數的輸出)” 。這些設計原理是設計好的分組密碼準則。 “雪崩”保證小的輸入變化導致大的輸出變化。完全性保證每個輸出比特依賴於所有的輸出比特。
由於自己也在學習階段,因此關於des這部分,專業學生都很容易就明白,一次寫得不算詳細,但希望能給大家提供一點思路,嘿嘿 
 
DES利用56比特長度的密鑰K
分組長度64比特,密文64比特
算法分三個階段實現: 1.對明文X,通過一個固定的初始置換IP得到X0。 X0=IP(X)=L0R0 分爲左右兩部分
2.函數F的16次迭代:LiRi(1<=i<=16) Li=Ri-1, Ri=Li-1  F(Ri-1, Ki) 其中Ki是長爲48位的子密鑰。子密鑰K1,K2,…,K16是作爲密鑰K(56位)的函數而計算出的。
3.對比特串R16L16使用逆置換IP-1得到密文Y。 Y=IP-1(R16L16)
DES中使用的其它特定函數
初始置換IP:對明文輸入進行次序的打亂。
逆置換IP-1:
擴展函數E;(32到48)
置換函數P
DES算法概要:
       1.對輸入的明文從右向左按順序每64位分爲一組(不足64位時,在高位補0),並按組進行加密或解密。
       2.進行初始換位。
       3.將換位後的明文分成左、右兩個部分,每部分爲32位長。
       4.進行16輪相同的變換,包括密鑰變換。
       5.將變換後左右兩部分合併在一起。
       6.逆初始變換,輸出64位密文。
DES一輪加密
F(Ri-1, Ki):
函數F有兩個輸入:32的消息A=R(32bits)作第一個輸入,48比特的子密鑰J=K(48bits)作爲第二個輸入。產生的輸出爲長度爲32的位串。
(1)對第一個變元A,先利用擴展函數E,擴展成48位E(A)
(2)計算E(A)+J,結果寫成8個6位串,B=b1b2b3b4b5b6b7b8
(3)使用8個S盒,每個Sj是一個固定的416矩陣,它的元素取0~15的整數。給定長度爲6個比特串,如 Bj=b1b2b3b4b5b6
計算Sj(Bj)如下:b1b6兩個比特確定了Sj的行數, r(0<=r<=3); 而b2b3b4b5四個比特確定了Sj的列數c(0<=c<=15)。最後Sj(Bj)的值爲S-盒矩陣Sj中r行c列的元素(r,c), 得Cj=Sj(Bj)。 (4) 最後,P爲固定置換。
 
DES的爭論
DES的核心是S盒,除此之外的計算是屬線性的。S盒作爲該密碼體制的非線性組件對安全性至關重要。
S盒的設計準則: 1. S盒不是它輸入變量的線性函數 2.改變S盒的一個輸入位至少要引起兩位的輸出改變 3. 對任何一個S盒,如果固定一個輸入比特,其它輸入變化時,輸出數字中0和1的總數近於相等。
公衆仍然不知道S盒的構造中是否還使用了進一步的設計準則(有陷門?)。
密鑰長度是否足夠?
迭代的長度?(8、16、32?)

三重DES
假設兩個密鑰是K1和K2:
(1)用密鑰K1進行DES加密。
(2)用K2對步驟1的結果進行DES解密。
(3)對(2)的結果使用密鑰K1進行DES加密。
3DES的缺點是加、解密速度比DES慢。
加密: C=Ek1[Dk2 [Ek1(P)]]
解密: P=Dk1[Ek2 [Dk1(C)]]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章