基于IDEA加密算法的十進(jìn)制短分組加密算法

IDEA加密算法,被廣泛應(yīng)用于各種領(lǐng)。在某些特定場(chǎng)合,我們基于IDEA加密算法,提出了一種新穎的十進(jìn)制短分組加密技術(shù)。該十進(jìn)制分組密碼采用IDEA密碼的輪變換結(jié)構(gòu),并重新定義其中的三種基本運(yùn)算以滿足十進(jìn)制加密的需要。與IDEA、AES、DES等分組加密算法不同的是,加解密過(guò)程中的明文、密文及各個(gè)中間狀態(tài)都是等長(zhǎng)的十進(jìn)制數(shù)分組。

一、基于IDEA加密算法的十進(jìn)制短分組加密算法原理

由于異或運(yùn)算對(duì)十進(jìn)制數(shù)沒(méi)有可逆性,所以要對(duì)IDEA加密算法中的運(yùn)算進(jìn)行重新設(shè)計(jì)。考慮到加密算法對(duì)十進(jìn)制數(shù)的可逆性,同時(shí)保證加密算法的性能,此算法采用十進(jìn)制模加運(yùn)算、十進(jìn)制模乘運(yùn)算和十進(jìn)制數(shù)異或運(yùn)算三種基本運(yùn)算。加密算法可以對(duì)8位、16位、32位和64位四種長(zhǎng)度的十進(jìn)制明文分組進(jìn)行加解密,密鑰取相應(yīng)明文長(zhǎng)度的兩倍。下面我們就以32位長(zhǎng)度的明文分組為例,討論此加密算法的實(shí)現(xiàn)原理。

1、加密算法中的三種運(yùn)算

由于IDEA加密算法中的三種運(yùn)算:二進(jìn)制的異或運(yùn)算、模216整數(shù)加法、模216+1整數(shù)乘法對(duì)十進(jìn)制數(shù)不再適用,所以要對(duì)IDEA加密算法中的運(yùn)算進(jìn)行重新設(shè)計(jì)。

(1)十進(jìn)制模加運(yùn)算+

十進(jìn)制模加運(yùn)算記為+。本文采用模100000000加法。

(2)十進(jìn)制模乘運(yùn)算☉

十進(jìn)制模乘運(yùn)算記為☉。相乘運(yùn)算后模比100000000大的素?cái)?shù),本文采用模100000007乘法。

(3)十進(jìn)制數(shù)異或運(yùn)算⊕

十進(jìn)制數(shù)異或運(yùn)算記為⊕。A⊕B即B按A的相應(yīng)位變化,若B的相應(yīng)位是奇數(shù)則A相應(yīng)位作加5運(yùn)算,若B的相應(yīng)位為偶數(shù),則A相應(yīng)位作加0運(yùn)算,即:

C=A⊕B<=>C[i]=(A[i]+B[i]*5)%10

2、算法的輪變換

基于IDEA加密算法的十進(jìn)制短分組加密算法首先進(jìn)行8輪相似的迭代變換,迭代變換過(guò)程如圖所示。

基于IDEA加密算法的十進(jìn)制短分組加密算法

基于IDEA加密算法的十進(jìn)制短分組加密算法

3、密鑰擴(kuò)展算法

借鑒了IDEA的密鑰擴(kuò)展流程,解密子密鑰與加密子密鑰的關(guān)系與IDEA一致。由64位原始密鑰生成52個(gè)8位子密鑰,前八輪每輪使用6個(gè)子密鑰,輸出變換的第九輪使用4個(gè)子密鑰。64位加密密鑰被分為8個(gè)8位子密鑰(前8個(gè)子密鑰分別記作Z1,Z2,…,Z8)。然后密鑰被左移12位,并再次劃分為8個(gè)子密鑰,下一輪左移13位也劃分為8個(gè)子密鑰。上述兩個(gè)左移方式交替進(jìn)行,重復(fù)這一過(guò)程,直到生成所有的52個(gè)子密鑰。同IDEA一樣,解密子密鑰與加密子密鑰之間的關(guān)系如下表所示:

基于IDEA加密算法的十進(jìn)制短分組加密算法

4、算法的加密和解密

基于IDEA的十進(jìn)制加密算法的加密流程由上述三種運(yùn)算構(gòu)成,進(jìn)行8輪迭代,最后進(jìn)行末輪輸出變換。整個(gè)加密算法的具體加密流程和解密流程如下圖所示:

基于IDEA加密算法的十進(jìn)制短分組加密算法

在上圖中,左邊是加密流程,右邊是解密流程。在對(duì)IDEA中的運(yùn)算進(jìn)行重新定義后,必須保證加密運(yùn)算與解密運(yùn)算的可逆性。本文加密算法滿足這一性質(zhì),下面給出理論證明?,F(xiàn)在從下往上考慮。對(duì)加密過(guò)程的最后一個(gè)輸出變換,以下關(guān)系成立:

Y1=W81☉Z49Y2=W83+Z50Y3=W82+Z51Y4=W84☉Z52

解密過(guò)程中第1輪的第1步產(chǎn)生以下關(guān)系:

J11=Y1☉U1J12=Y2+U2J13=Y3+U3J14=Y4☉U4

將解密子密鑰由加密子密鑰表達(dá)并將Y1,Y2,Y3,Y4代入以下關(guān)系,有:

J11=Y1☉Z49-1=W81☉Z49☉Z49-1=W81

J12=Y2+-Z50=W83+Z50+-Z50=W83

J13=Y3+-Z51=W82+Z51+-Z51=W82

J14=Y4☉Z52-1=W84☉Z52☉Z52-1=W84

可見(jiàn)解密過(guò)程第1輪第1步的輸出等于加密過(guò)程最后一步輸入中第2個(gè)子段和第3個(gè)子段交換后的值??傻靡韵玛P(guān)系:

W81=I81☉MAR(I81☉I83,I82☉I84)

W82=I83☉MAR(I81☉I83,I82☉I84)

W83=I82⊕MAL(I81⊕I83,I82⊕I84)

W84=I84⊕MAL(I81⊕I83,I82⊕I84)

其中,MAR(X,Y)是MA結(jié)構(gòu)輸入為X和Y時(shí)的右邊輸出,MAL(X,Y)是左邊輸出。則有:

V11=J11⊕MAR(J11⊕J13,J12⊕J14)=W81⊕MAR(W81⊕W82,W83⊕W84)=I81⊕MAR(I81⊕I83,I82⊕I84)⊕MAR[I81⊕MAR(I81⊕I83,I82⊕I84)⊕I83⊕MAR(I81⊕I83,I82⊕I84),I82⊕MAL(I81⊕I83,I82⊕I84)⊕I84⊕MAL(I81⊕I83,I82⊕I84)]=I81⊕MAR(I81⊕I83,I82⊕I84)⊕MAR(I81⊕I83,I82⊕I84)=I81

同理,可有V12=I83,V13=I82,V14=I84。

所以解密過(guò)程第1輪第2步的輸出等于加密過(guò)程倒數(shù)第2步輸入中第2個(gè)子段和第3個(gè)子段交換后的值。

同理可證上圖中每步都有上述類(lèi)似關(guān)系,這種關(guān)系一直保持到V81=I11,V82=I13,V83=I12,V84=I14。即除第2個(gè)子段和第3個(gè)子段交換位置外,解密過(guò)程的輸出變換與加密過(guò)程第1輪第1步的變換完全相同。

綜上可知,整個(gè)解密過(guò)程的輸出等于整個(gè)加密過(guò)程的輸入。

二、基于IDEA加密算法的十進(jìn)制短分組加密算法性能分析

定義1:對(duì)于加密函數(shù)EK(P)中的參數(shù)K和P(解密函數(shù)DK(C)中的參數(shù)K和C),每次加(解)密只改變其中某個(gè)參數(shù)的一位,另一個(gè)參數(shù)保持不變,把多次加(解)密得到的密(明)文相比較,每一位上相異的比率稱(chēng)為加密(解密)擴(kuò)散率[2]。

由定義1可知,擴(kuò)散率越大,相同的明文不同的密鑰加密得到相同的密文的概率就越小,可以更有效的防止攻擊者已知部分密鑰相關(guān)性攻擊。擴(kuò)散率越大,密碼的雪崩效應(yīng)越好,安全性也就越高。

定義2對(duì)于一個(gè)加密算法,若擴(kuò)散率大于等于0.5,則稱(chēng)該加密算法達(dá)到了完全擴(kuò)散。我們對(duì)該算法的加密性能進(jìn)行了軟件仿真測(cè)試分析。分別以8位、16位、32位、64位十進(jìn)制數(shù)為加密分組,進(jìn)行1到8輪的加密、解密運(yùn)算測(cè)試。下面是以32位十進(jìn)制數(shù)為加密分組所得的測(cè)試結(jié)果。加密過(guò)程中明文對(duì)密文的擴(kuò)散率,密鑰對(duì)密文的擴(kuò)散率如圖所示:

基于IDEA加密算法的十進(jìn)制短分組加密算法

解密過(guò)程中密文對(duì)明文的擴(kuò)散率,密鑰對(duì)明文的擴(kuò)散率如圖所示。

基于IDEA加密算法的十進(jìn)制短分組加密算法

從圖中可看出,第1輪加密的輸出就已經(jīng)有了很好的擴(kuò)散性,2輪加密過(guò)后所有擴(kuò)散率均達(dá)到了完全擴(kuò)散。

此加密算法借鑒了IDEA密碼的思想,并對(duì)其中的運(yùn)算進(jìn)行了重新定義,以適應(yīng)十進(jìn)制數(shù)加密、解密的要求。引入的新的十進(jìn)制運(yùn)算能夠很好地完成對(duì)十進(jìn)制分組的加密和解密,并對(duì)加密與解密的可逆性進(jìn)行了理論證明。算法實(shí)現(xiàn)容易,加密解密速度快,加密強(qiáng)度高,具有較高的安全性,該加密算法可廣泛用于各種需要十進(jìn)制數(shù)加密的領(lǐng)域。

小知識(shí)之IDEA加密算法:

IDEA(International Data Encryption Algorithm)是瑞士的James Massey,Xuejia Lai等人提出的加密算法,在密碼學(xué)中屬于數(shù)據(jù)塊加密算法(Block Cipher)類(lèi)。IDEA使用長(zhǎng)度為128bit的密鑰,數(shù)據(jù)塊大小為64bit。從理論上講,IDEA屬于“強(qiáng)”加密算法,至今還沒(méi)有出現(xiàn)對(duì)該算法的有效攻擊算法。