摘要:提出了基于Rijndael算法與RSA算法兩種加密技術(shù)結(jié)合的綜合數(shù)據(jù)安全傳輸方案。
關(guān)鍵詞:Rijndael RSA 數(shù)據(jù)傳輸
中圖分類號:TP309.7 文獻(xiàn)標(biāo)識碼:A 文章編號:1002-2422(2008)03-0003-02
1 Rijndael算法的基本原理
Rijndael算法是基于對稱密鑰進(jìn)行加密的,即在加密和解密數(shù)據(jù)時使用相同的密鑰與初始化向量對數(shù)據(jù)執(zhí)行轉(zhuǎn)換,阻止了未經(jīng)授權(quán)的第三方讀取該數(shù)據(jù),特別適合對大型數(shù)據(jù)流執(zhí)行加密轉(zhuǎn)換后在網(wǎng)絡(luò)中傳輸。
Rijndael加密算法是一種分組長度可變化、密鑰長度可變化的迭代分組密碼算法。其算法由Nr輪循環(huán)組成,每一輪循環(huán)都有一個循環(huán)密鑰,第0輪的循環(huán)密鑰就是初始密鑰,其他輪的循環(huán)密鑰通過密鑰擴(kuò)展和輪子密鑰選取的過程確定。如密鑰長度為128位,輪數(shù)Nr=10,每一輪循環(huán)輸入是128位,產(chǎn)生的輸出也是128位密文分組。前Nr-1輪循環(huán)由4個基本步驟組成:
(1)字節(jié)轉(zhuǎn)換:這是一個非線性變換,有2個步驟組成,即在GF(28)域求乘法的逆運(yùn)算和在GF(28)域作變換,目的是防止微分和線性密碼體制的攻擊;
(2)移動行變換:這是一個線性變換,目的是導(dǎo)致多輪循環(huán)各個位間的擴(kuò)散,即在狀態(tài)State(加密過程的中間結(jié)果)中矩陣的4行分別按O,1,2,3循環(huán)左移:
(3)混合列變換:這是一個線性變換,目的是導(dǎo)致多輪循環(huán)各個位間的擴(kuò)散,將移動行變換的輸出結(jié)果作為域GF(28)的元素值,乘以一個矩陣,結(jié)果再作為GF(28):
(4)加循環(huán)密鑰:循環(huán)密鑰同上層結(jié)果State進(jìn)行按位異或運(yùn)算。
其中最后一個循環(huán)用到了字節(jié)轉(zhuǎn)換、移動行變換和加循環(huán)密鑰3個步驟,沒有用到混合列變換。
Rijndael算法解密過程是加密過程中字節(jié)轉(zhuǎn)換、移動行變換、混合列變換與加循環(huán)的逆運(yùn)算過程。在Rijndael算法中,使用初始化向量來參與密鑰加密數(shù)據(jù)的第一個塊,再將上一數(shù)據(jù)塊參與加密下一數(shù)據(jù)塊,保證了即使明文流中有重復(fù)的塊,在密文流內(nèi)也不會有重復(fù)的塊,使未經(jīng)授權(quán)的第三方無法對密鑰進(jìn)行反向工程。
總之,Rijndael算法匯聚了安全性、效率高、易實(shí)現(xiàn)性和靈活性等優(yōu)點(diǎn)。目前Rijndael算法在加密領(lǐng)域得到了較多應(yīng)用,例如在.NET框架中提供的封裝了實(shí)現(xiàn)Rijndael算法的Rijndael Managed類,可以與.NET框架提供的Cryp-toStream類結(jié)合方便地建立加密/解密傳輸流。
2 公開密鑰RSA算法
2.1公開密鑰RSA算法的思想
RSA算法是1997年由Rivest、Shamir和Adleman提出,基于把一個整數(shù)因數(shù)分解為幾個素?cái)?shù)是非常困難的觀點(diǎn),即公鑰和私鑰是一對大素?cái)?shù)的函數(shù),從一個公鑰中推出明文的難度等同于分解兩個大素?cái)?shù)的乘積。加密與解密操作過程如下:
(1)每個需要通信的用戶有一對密鑰,一個是用于加密的密鑰ke(公鑰);一個是用于解密的密鑰ke(私鑰)。用戶A將公鑰ke公開或發(fā)給需要與之聯(lián)系的用戶B,但私鑰kd要保密;
(2)用戶B使用A的公鑰ke加密通信信息,并寄給A:
(3)A使用私鑰kd解密加密的通信信息,獲到明文。
2.2 RSA算法過程
(1)用戶A選擇需要保密的兩個大素?cái)?shù)p和q,并且計(jì)算n=pq;
(2)用戶A計(jì)算出n的歐拉函數(shù):φ(n)=(p-1)×(q-1);
(3)用戶A從1到φ(n)之間選擇一個和φ(n)互素的數(shù)e作為公鑰;
(4)用戶A通過(d×e)modφ(n)=1,計(jì)算得到密鑰d:
(5)用戶A將n和e公開,作為公鑰,將d保密作為私鑰;
(6)用戶B將明文m加密為c=me(mod n),并將密文c發(fā)送給用戶A:
(7)用戶A通過計(jì)算m=cd(rood n)解密,獲得明文m。
2.3 RSA算法的特點(diǎn)
RSA算法是將兩個大素?cái)?shù)p和q的乘積分解還原,是“單向”運(yùn)算。隨著p、q的位數(shù)增加,通過n找出p、q的難度將會更大,RSA算法的安全性很強(qiáng),在加密解密過程中,需要進(jìn)行大數(shù)的冪運(yùn)算,其加密、解密時間長,速度慢。RSA算法適合加密較短的文件,常用于加密密鑰,或用于數(shù)字簽名。RSA算法在加密領(lǐng)域得到了很多應(yīng)用,在,NET框架中提供封裝了實(shí)現(xiàn)RSA算法的RSACryptoServieeProvider類,可以用于設(shè)計(jì)RSA算法加密解密器。
3 Riindael與RSA算法結(jié)合的綜合數(shù)據(jù)傳輸方案
基于RSA算法的安全性強(qiáng),但速度慢,用于加密密鑰和小文件較適合,而Rjndael算法加密文件速度快,適合大文件加密,但密鑰安全傳送不方便。結(jié)合兩者特點(diǎn),提出了基于Rijndael與RSA算法加密技術(shù)結(jié)合的綜合數(shù)據(jù)安全傳輸方案。方案總體思路是:先利用Rtijndael算法加密器對需傳輸數(shù)據(jù)進(jìn)行加密,再利用RSA算法使用公鑰對Rijndael密鑰和初始化向量進(jìn)行加密,然后通過計(jì)算機(jī)網(wǎng)絡(luò)傳輸加密過的信息和加密過的Rijndael密鑰以及加密過的初始化向量;目的地收信人使用RSA算法的私鑰解密加密過的Rijndael密鑰和初始化向量,獲得解密信息的Rijndael密鑰和初始化向量,并通過Rijndael算法解密器解密發(fā)件人的信息。該方案比傳統(tǒng)的單一加密方案具有更高的安全性并方便了信息傳輸。
4 結(jié)束語
綜合數(shù)據(jù)安全傳輸方案,較傳統(tǒng)單一模式的加密方案能更好保證文件的安全性和完整性,并且能在網(wǎng)絡(luò)中方便公鑰密鑰發(fā)放和加強(qiáng)文件安全性。