分組加密算法發(fā)展及安全性
在多數(shù)情況下,數(shù)據(jù)加密是保證信息機(jī)密性的唯一方法。據(jù)不完全統(tǒng)計(jì),到目前為止,已經(jīng)公開(kāi)發(fā)表的各種加密算法多達(dá)數(shù)百種。如果按照收發(fā)雙方密鑰是否相同來(lái)分類(lèi),可以將這些加密算法分為私鑰加密算法和公鑰加密算法,而分組加密算法屬于私鑰加密算法。粗略地講,分組加密算法是用一個(gè)固定的變換對(duì)一個(gè)比較大的明文數(shù)組進(jìn)行操作。
一、分組加密算法的發(fā)展
分組加密算法即對(duì)明文文件加密時(shí),首先需要對(duì)明文進(jìn)行分組,每組的長(zhǎng)度都不相同,然后對(duì)每組明文文件分別加密得到等長(zhǎng)的密文。分組加密算法的特點(diǎn)是加密密鑰與解密密鑰相同。分組加密算法主要有DES加密算法,AES加密算法。
1、DES加密算法
DES加密算法利用56比特串長(zhǎng)度的密鑰K來(lái)加密長(zhǎng)度為64位的明文,得到長(zhǎng)度為64位的密文。其主要流程如圖:

DES加密算法由四個(gè)部分組成:
(1)初始置換函數(shù)IP:
X0 = IP(M) = L0R0;
(2)獲取子密鑰Ki:流程圖如圖所示。
其中第1、2、9、16輪是循環(huán)左移1位,其余輪是循環(huán)左移2位;
(3)計(jì)算函數(shù)F:
F函數(shù)由擴(kuò)展置換(E)、異或、S盒替代和P盒置換組成,可表示為f (Ri-1 , Ki) = P(S(E(Ri-1) ⊕ Ki));
(4)末置換函數(shù)IP-1:
C = IP-1(R16L16) ? ? ? ? 16次迭代可表示為:Li := Ri-1 Ri := Li-1 ⊕ f (Ri-1 , Ki),i = 1, 2, …, 16
2、多重DES加密算法
為提高DES加密算法的安全性能,并充分利用有關(guān)DES的現(xiàn)有軟件和硬件資源,可以使用多重DES加密算法。多重DES就是是用多個(gè)密鑰利用DES對(duì)明文進(jìn)行多次加密。使用多重DES可以增加密鑰量,從而大大提高抵抗對(duì)密鑰的窮舉搜索攻擊的能力。
(1) 雙重DES加密算法
設(shè)K1和K2是兩個(gè)長(zhǎng)度為56為的密鑰,給定明文M,則密文為 C = Ek2(Ek1(M))。其模型為:

如果對(duì)于任意兩個(gè)56為的密鑰K1和K2,都存在一個(gè)56位的密鑰K3,使得DESK2(DESK1(M))=DESK3(M),則雙重DES就等價(jià)于是用一個(gè)56位的單重DES。在這種情況下,雙重DES以及任意多重DES都沒(méi)有任何實(shí)際價(jià)值,因?yàn)樗鼈儾粌H沒(méi)有提高安全性能,反而增加了計(jì)算量。幸運(yùn)的是,已經(jīng)證明雙重DES并不等價(jià)于是用一個(gè)56位密鑰的單重DES。
(2)三重DES 加密算法
設(shè)K1,K2,K3是三個(gè)長(zhǎng)度為56位的密鑰。給定明文M,則密文為C=DESK3(DESK2-1(DESK1(M))),其模型為:

在三重DES加密算法中,如果K1=K2或K2=K3,則三重DES就退化為使用一個(gè)56位密鑰的單重DES。在三重DES的中間一步采用解密形式的目的僅僅是為了可以和用三重DES對(duì)單重DES加密的數(shù)據(jù)進(jìn)行解密。
3、AES加密算法
AES加密算法又稱(chēng)Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。
AES加密算法被設(shè)計(jì)為支持128/192/256 bit (/32=Nb)數(shù)據(jù)塊大小,128/192/256 bit (/32=Nk)密鑰長(zhǎng)度,在10進(jìn)制里,對(duì)應(yīng)3.4×1038、6.2×1057、1.1×1077個(gè)密鑰。
AES的迭代次數(shù)Nr,分組長(zhǎng)度Nb,與密鑰長(zhǎng)度Nk的關(guān)系如表:

AES加密算法中,各種運(yùn)算是以字節(jié)為單位來(lái)進(jìn)行處理,分組長(zhǎng)度為128位,分為16個(gè)字節(jié),按順序排列為4×4的矩陣。每一輪迭代都經(jīng)歷字節(jié)代替變換SubBytes(),行移位變換ShiftRows(),列混合變換MixColuMns(),和圈密鑰加法變換AddRoundKey()。需要注意的是第一輪迭代之先進(jìn)行一個(gè)AddRoundKey(),最后一輪迭代只進(jìn)行SubBytes(),ShiftRows()和AddRoundKey()。
字節(jié)代替變換是一個(gè)關(guān)于字節(jié)的可逆非線(xiàn)性變換,包括有限域 GF(28)上的求逆運(yùn)算和有限域GF(2)上的放射運(yùn)算??梢酝ㄟ^(guò)查字節(jié)代替表來(lái)完成字節(jié)代替變換; 行移位變換對(duì)一個(gè)狀態(tài)的每一行循環(huán)左移不同的位移量。第0行不移位,第一行循環(huán)左移1個(gè)字節(jié),第二行循環(huán)左移2個(gè)字節(jié),第三行循環(huán)左移3個(gè)字節(jié); 列混合變換對(duì)一個(gè)狀態(tài)逐列進(jìn)行變換,它將一個(gè)狀態(tài)的每一列視為有限域GF(28)上的一個(gè)多項(xiàng)式,并與固定多項(xiàng)式a(x)={03}x3+{01}x2+{01}x+{02}相乘后模x4+1。
圈密鑰加法變換將一個(gè)圈密鑰按位異或到一個(gè)狀態(tài)上,圈密鑰的長(zhǎng)度為4個(gè)字節(jié),圈密鑰按順序取自擴(kuò)展密鑰。擴(kuò)展密鑰是由原始密鑰經(jīng)過(guò)擴(kuò)展后得到的。

二、分組加密算法的安全性
1、DES加密算法的安全性
(1)DES加密算法 的密鑰長(zhǎng)度( 56 位)可 能太??;
(2)DES 加密算法的迭代次數(shù)可能太少;
(3)S 盒中可能有不安全因素;
(4)DES 加密算法的一些關(guān)鍵部分不應(yīng)當(dāng)保密;
(5)DES加密算法的密鑰中存在弱密鑰,半弱密鑰和互補(bǔ)密鑰。
2、 雙重DES加密算法的安全性
雙重DES加密算法無(wú)法抵抗中途相遇攻擊,設(shè)K1和K2是兩個(gè)長(zhǎng)度為56位的密鑰,C=DESK2(DESK1(M)),則顯然有DESK1(M)=DESK2-1(C)。假設(shè)明文M以及與之對(duì)應(yīng)的C已知,密鑰K1和K2未知?,F(xiàn)在我們來(lái)利用中途相遇攻擊的方法找到正確的K1和K2。
首先,用所有256個(gè)可能的密鑰K1’對(duì)M進(jìn)行加密,得到256各密文C’,將所有的(K1’, C’)按C’從小到大或從大到小的順序排成一個(gè)表L。
然后,用每一個(gè)可能的密鑰K2’對(duì)C進(jìn)行解密得到C’’,在表L中查找C’’。滿(mǎn)足C’’= C’的(K1’, C’)和(K1’, C’’)可能有很多。
因此,當(dāng)C’’= C’時(shí),再選擇一個(gè)明文M’以及對(duì)應(yīng)的密文C1,檢驗(yàn)C1=DESK2’(DESK1’(M’))是否成立。
如果上式成立,則我們就接受K1’和K2’為正確的K1和K2。
3、三重DES加密算法的安全性
三重DES加密算法可抵抗中途相遇攻擊,可以很好的抗窮舉攻擊,使用3個(gè)不同的密鑰,密鑰將達(dá)到168位,安全性是很好的(目前沒(méi)有什么密碼分析方法可以不使用窮舉密鑰來(lái)攻擊DES)。但3重DES加密算法使用不同的3個(gè)密鑰會(huì)增加你系統(tǒng)秘鑰管理的負(fù)擔(dān),軟件實(shí)現(xiàn)的效率低(每個(gè)分組作3次DES _ 變換,DES變換的設(shè)計(jì)初衷本來(lái)就是方便用硬件實(shí)現(xiàn)),只支持64位分組(對(duì)大量數(shù)據(jù)來(lái)說(shuō),分組太小了)。
4、AES 加密算法的安全性
AES加密算法對(duì)密鑰的選取沒(méi)有任何限制,每輪常數(shù)的不同消除了密鑰的對(duì)稱(chēng)性,密鑰擴(kuò)展的非線(xiàn)性消除了相同密鑰的可能性,加解密使用不同的變換,消除了在DES里出現(xiàn)的弱密鑰和半弱密鑰存在的可能性。能有效地抵抗密鑰已知的攻擊方法的攻擊,目前最有效的攻擊還是窮盡密鑰搜索攻擊。
分組加密算法的安全性主要依賴(lài)于密鑰,通過(guò)某個(gè)置換來(lái)實(shí)現(xiàn)對(duì)明文分組的加密變換。為了保證加密算法的安全強(qiáng)度,對(duì)加密算法應(yīng)有如下要求:
(1)分組長(zhǎng)度足夠大。當(dāng)分組長(zhǎng)度較小時(shí),分組密碼類(lèi)似于古典的代替密碼,它仍然保留了明文的統(tǒng)計(jì)信息,這種統(tǒng)計(jì)信息將給攻擊者留下可乘之機(jī),攻擊者可以有效地窮舉明文空間,得到密碼變換本身。
(2)密鑰量足夠大。分組密碼的密鑰所確定密碼變換只是所有置換中極小一部分。如果這一部分足夠小,攻擊者可以有效地窮舉明文空間所確定所有的置換。這時(shí),攻擊者就可以對(duì)密文進(jìn)行解密,以得到有意義的明文。
(3)密碼變換足夠復(fù)雜。使攻擊者除了窮舉法以外,找不到其他快捷的破譯方法。
小知識(shí)之分組加密
分組加密是將明文消息編碼表示后的數(shù)字(簡(jiǎn)稱(chēng)明文數(shù)字)序列,劃分成長(zhǎng)度為n的組(可看成長(zhǎng)度為n的矢量),每組分別在密鑰的控制下變換成等長(zhǎng)的輸出數(shù)字(簡(jiǎn)稱(chēng)密文數(shù)字)序列。









