《現(xiàn)代密碼學(xué)原理與實踐》課件第3章_第1頁
《現(xiàn)代密碼學(xué)原理與實踐》課件第3章_第2頁
《現(xiàn)代密碼學(xué)原理與實踐》課件第3章_第3頁
《現(xiàn)代密碼學(xué)原理與實踐》課件第3章_第4頁
《現(xiàn)代密碼學(xué)原理與實踐》課件第3章_第5頁
已閱讀5頁,還剩78頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第3章分組密碼3.1

DES3.2IDEA37

3.3AES41

習(xí)題3

實踐練習(xí)3

分組密碼是將明文分成固定長度的一些段落(分組),在密鑰作用下逐段進行加密的方法。這樣做的好處是處理速度快,可靠性高,軟(硬)件都能實現(xiàn),而且節(jié)省資源,容易標(biāo)準(zhǔn)化。因此,分組密碼得到了廣泛的應(yīng)用,同時也使分組密碼成為許多密碼組件的基礎(chǔ),比如MAC(消息認(rèn)證碼)系統(tǒng)。3.1DES

美國國家標(biāo)準(zhǔn)局1977年公布了由IBM公司研制的DataEncryptionStandard(DES)作為非機要部門的數(shù)據(jù)加密標(biāo)準(zhǔn)。它是迄今為止流行最廣、時間最長的加密算法,也是現(xiàn)代分組加密技術(shù)的典型。原規(guī)定使用期10年,然而10年來并未發(fā)現(xiàn)有任何攻擊能夠威脅到它的安全,且比它更好的標(biāo)準(zhǔn)尚未產(chǎn)生,所以直到20世紀(jì)90年代,它一直在延期使用??梢娝呛艹晒Φ?。此后產(chǎn)生的許多加密方法都直接或間接地受到了它的啟發(fā)。3.1.1DES加密算法[2]明文分組長64bit,m=m1,m2,…,m64。密鑰長56bit,加上每7bit一個奇偶校驗位,共64bit。加密過程可表達為

DES(m)=IP-1·T16·T15…T2·T1·IP(m)(3-1)1.置換與逆置換

IP是初始置換,IP-1是逆置換,分別按表3.1的序號置換數(shù)據(jù)的bit值。不難驗證:IP*IP-1=IP-1*IP=1。表3.1DES加密系統(tǒng)中的IP置換與逆置換表

2.迭代加密運算

將IP置換后的64bit明文分成兩半,各32bit,分別進入加密器的左、右兩個入口,先后經(jīng)T1,T2,…,T16進行16輪迭代加密運算。每輪加密Ti流程如圖3.1所示。其中,表示按位模2加;表示擴展與收縮函數(shù)f(Ri-1,ki)。處理后:

Li=Ri-1,Ri=Li-1f(Ri-1,ki)(3-2)

值得注意的是,在最后一輪加密后,左、右兩半不再交換位置。

3.擴展與收縮函數(shù)

(Ri-1,ki)函數(shù)的具體結(jié)構(gòu)如圖3.2所示。圖3.1第i輪加密Ti流程圖圖3.2擴展與收縮函數(shù)(Ri-1,ki)的結(jié)構(gòu)

圖3.2中符號的說明如下:

(1)E為擴展變換,將32bit擴展為48bit,其方法是將信息的某些bit位重復(fù):

2345456789891011121312131415161716171819202120212223242524252627282928293031321321(2)表示48bit明文與48bit密鑰模2加。

(3)經(jīng)S盒處理,將48bit數(shù)據(jù)變回32bit。

48bit數(shù)據(jù)被分成8組,每組6bit,第i組為b1b2b3b4b5b6,送入Si處理。Si是一個4行16列的表,6bit輸入數(shù)據(jù)中,b1b6構(gòu)成的二進制數(shù)給出行序號(0,1,2,3),b2b3b4b5構(gòu)成的二進制數(shù)給出列序號(0~15)。查表得到0~15的十進制數(shù),化為二進制就是4bit的輸出數(shù)據(jù)(y0y1y2y3)。8個Si分表共輸出32bit。S盒的結(jié)構(gòu)如表3.2所示。

(4)再經(jīng)置換P,結(jié)束本輪加密,最終結(jié)果如表3.3所示。表3.2DES加密系統(tǒng)中的S盒數(shù)據(jù)對照表續(xù)表表3.3f(Ri-1,ki)函數(shù)中P置換的重排列次序4.子密鑰的產(chǎn)生從原始的密鑰出發(fā),為16輪加密產(chǎn)生出16個不同的子密鑰ki(i=1,2,3,…,16):

(1)除去校驗位(8、16、24、32、40、48、56、64位),并按PC-1重排,如表3.4所示。

(2)C0,D0是左右各半,分別按圖3.3所示的流程進行處理。

(3)LSj是循環(huán)左移操作,移動位數(shù)因子密鑰序號j而不同,由表3.5給出。

(4)PC-2把左右兩路數(shù)據(jù)合并,同時再次被重排次序,并且從56bit中選出48bit位(取掉了9、18、22、25、35、38、43、54位),作為子密鑰輸出,如表3.6所示。表3.4產(chǎn)生各輪子密鑰時的PC-1重排方式圖3.3產(chǎn)生子密鑰的流程圖(只畫出兩個,其余相同)表3.5產(chǎn)生各輪子密鑰時循環(huán)左移的位數(shù)表3.6輸出48bit子密鑰的各bit重排列次序【例1】用密鑰program對明文computer加密。

解:密鑰和明文的ASCII碼為

k=0111000001110010011011101100111011100100110000101101101(共56bit)

m=0110001101101111011011010111000001110101011101000110010101110010

明文經(jīng)IP置換后得:

L0=11111111101110000111011001010111

R0=0000000111111110000011010000011

密鑰經(jīng)PC-1分組置換后得:

C0=1110110010011001000110111011

D0=1011010001011000100011100110

各左移1位再通過PC-2變換得48bit子密鑰:

k=00111101100011111100110100110111001111110100100

R0(32bit)經(jīng)E作用擴展為48bit:

R0′=10000000000101111111111010000000110101000000011

再與k1相異或得:

R0′k1=101111011001100000110011101101111110101101001110

分成8組:

101111,011001,100000,110011,101101,111110,101101,001110

通過S盒后輸出32bit:

01110110001101000010011010100001

再經(jīng)過P置換,這才得到(R0,k1)的結(jié)果:

01110110001101000010011010100001然后與L0模2加,賦值給R1,同時原來的R0賦值給L1,完成第1輪加密。得到:

L1=00000000111111110000011010000011

R1=10111011100110001110100011001000如此循環(huán)加密16次,得到:

L16=0101000101010000100000110111000

R16=01101001111111101010111000110011DES的加密結(jié)果,每一比特都是明文m與密鑰k的每一比特的復(fù)雜函數(shù),明文或密鑰每改變一個比特,都會對密文產(chǎn)生巨大影響。3.1.2解密算法

DES的解密十分簡單,仍然使用加密一樣的模塊,次序倒過來就行了。這是因為:

DES(m)=IP-1·T16·T15…T2·T1·IP(m)若取

DES-1(c)=IP-1·T1·T2…T15·T16·IP(c)(3-3)就有

DES-1(c)=DES-1[DES(m)]

=IP-1·T1·T2…T15·T16·IP[IP-1·T16·T15…T2·T1·IP(m)]

首先,IP·IP-1=1,中間IP·IP-1相抵消后,兩個T16相連。加密過程的T16處理前是L15R15,處理后

R16=L15

f(R15,k16),L16=R15

再經(jīng)解密過程的T16處理(見圖3.4),得

L=R15

R=L15

f(R15,k16)f(R15,k16)=L15(模2加時,兩個相同的處理必抵消)

兩個T16處理前是L15R15,處理后仍得到L15R15,可見T16T16=1,同理,各個

TiTi=1i=1,2,3,…,16最后又是IP·IP-1=1,于是

DES-1(DES(m))=m圖3.4T16T16=1的證明3.1.3關(guān)于DES的安全問題

1.弱密鑰有個別密鑰不適合于DES算法,比如使子密鑰產(chǎn)生器中C0和D0為全0或全1的密鑰,無論怎樣循環(huán)移位都不變,致使16次迭代所用的子密鑰不變,造成

T1=T2=…=T16,DESk(m)=(m)或?qū)憺?/p>

DESk(DESk(m))=m

安全性就失去了保證。這樣的密鑰最好不用,它們叫做弱密鑰,共4個,用十六進制表示,它們是:

0101010101010101,1F1F1F1F1F1F1F1F,E0E0E0E0E0E0E0E0,FEFEFEFEFEFEFEFE,

還有12個半弱密鑰k和k′,它們成對使

DESk(m)=(m)它們是:

01FE01FE01FE01FE和FE01FE01FE01FE01,1FE01FE00EF10EF1和E01FE01FF10EF10E,01E001E001F101F1和E001E001F101F101,1FFE1FFE0EFE0EFE和FE1FFE1FFE0EFE0E,011F011F010E010E和1F011F010E010E01,E0FEE0FEF1FEF1FE和FEE0FEE0FEF1FEF12.DES的安全性

DES由于未遇到敵手而超期服役,直到20世紀(jì)90年代,Shamir等人提出“差分分析法”,才對DES構(gòu)成了理論上的威脅。后來的“線性逼近法”需要已知明文,且需要243=4.398×1012對明密文,聯(lián)合十多臺工作站工作十多天才可以搜索到密鑰。

DES終于完成了它的歷史使命,但它的思想還是值得借鑒的。分析表明,DES的薄弱之處不是算法,而是密鑰太短,只有56bit,7個英文字符!為遍歷法搜索提供了可能。3.1.4DES的變形(改進)

1.三重加密方式

針對DES密鑰太短的問題,提出了如圖3.5所示的三重加密方式,使它的復(fù)雜度增加。圖3.5兩種三重DES加密方式2.密文分組連接方式(CBC)

原來的做法是將明文分組加密后,把各組密文連接起來,稱為電碼本方式(ECB)。現(xiàn)改為第一組加密的結(jié)果,與第二組明文相加后再加密。一方面將此密文組輸出,另一方面與下一組明文相加后再加密,作為下一密文分組,最后將各組加密結(jié)果鏈接,如圖3.6(a)所示。

3.密文反饋方式(CFB)

如圖3.6(b)所示,每塊(分組)與前塊送過來的加密結(jié)果相異或后,作為本塊輸出,并加密后送往下一級作同樣的處理。4.輸出反饋方式(OFB)

如圖3.6(c)所示,初始矢量被一次次地加密,分別與每塊(分組)數(shù)據(jù)相異或后,作為本塊輸出,這樣,各塊的密文就是相互獨立的,不再相互影響。圖3.6三種改進的DES加密方式(a)CBC方式;(b)CFB方式;(c)OFB方式3.2IDEA20世紀(jì)90年代,出現(xiàn)了很多優(yōu)秀的加密算法,本節(jié)介紹其中三種。3.2.1IDEA算法[2]

IDEA(InternationalDataEncryptionAlgorithm,國際數(shù)據(jù)加密算法)是由中國學(xué)者朱學(xué)嘉博士和JamesMassey在1990年合作提出的,1992年完成。它的加解密運算速度都很快,無論是用軟件實現(xiàn),還是用硬件實現(xiàn)都不難,成為替代DES的優(yōu)選算法之一。

IDEA的密鑰是128bit,而明文分組仍為64bit,分成四個子塊X1X2X3X4,各16bit,進行8輪循環(huán)迭代加密運算。每次加密的過程如圖3.7所示。圖3.7IDEA迭代加密運算原理

圖3.7中,表示模2加(異或);⊙表示模216+1的乘法;表示模216的加法?!堑谝惠喖用苁褂玫牧鶄€子密鑰,它們來自128bit密鑰的順序分組(每組16bit,共8組)的前六組。第二輪處理的算法相同,只是所用的子密鑰不同,和是第一輪子密鑰取剩下的兩個分組,~則來自128bit密鑰循環(huán)左移25位后再分成8組的前四個分組,而后四個分組留給第三輪子密鑰的~,和則來自128bit鑰再次循環(huán)左移25位之后的8個分組。如此下去,直到第八輪迭代。第九輪不同于前八輪,不再需要和有關(guān)的迭代加密過程,實際上只有如圖3.8所示的一步。最后將~連接起來即是密文。圖3.8IDEA迭代加密的第九輪運算IDEA解密和加密算法相同,只是子密鑰不同。加、解密的密鑰如下:其中,Z-1是Z的模(216+1)的乘法逆元,-Z是Z的模216的加法逆元。由于IDEA的密鑰長度是DES的一倍,所以用同樣的方式攻擊IDEA,所需工作量是DES的272=4.7×1021倍。許多科研部門和軍事部門對IDEA進行攻擊測試,未見成功報道。

【例2】密鑰為computersecurity,對明文Tsinghua加、解密。解:密鑰和明文的ASCII碼為

k=11000110111101101011011000001110…(共8×16=128bit)m=00101010110011101001011001110110…(共8×8=64bit)X1=(0111001101010100)2=29524(注意先輸入的為低位,后輸入的為高位)=(0110111101100011)2=28515(注意高低位順序)

X1⊙=X1·mod(216+1)=29524×28515mod65537=54091=(1101001101001111)2

X1=(0110111001101001)2(0111000001101101)2

=28265+28781mod65536=57046=(1101111011010110)2

按算法迭代8次后,得密文:

c=11011000001100110110100011010010…(共8×8=64bit)

當(dāng)密鑰k改變一位時,所得的密文有29位改變;當(dāng)明文m

改變一位時,所得的密文有31位改變。3.2.2NSSUNSSU是前蘇聯(lián)國家標(biāo)準(zhǔn),密鑰為256bit,迭代32次。明文分成左右32bit,第i輪加密鑰:

Li=Ri-1,Ri=Li-1(Ri-1,ki)(3-4)

ki是第i輪的子密鑰。第i輪加密流程如圖3.9所示。函數(shù)f(Ri-1,ki)的定義是首先Ri-1與ki作模232的加法,即

S←(Ri-1

ki)mod232然后將S分成8組,每組4bit,輸入到8個S盒中。S盒的結(jié)構(gòu)見表3.7。

S盒的輸入(i1,i2,i3,i4)與輸出(j1,j2,j3,j4)的關(guān)系為

(j1,j2,j3,j4)=Sk(i1,i2,i3,i4)圖3.9NSSU的第i次加密流程表3.7NSSU的S盒結(jié)構(gòu)

例如,第1分組

(i1,i2,i3,i4)=(1001)2=9查S盒的第1行,有

S1(9)=11=(1011)2

則(j1,j2,j3,j4)=1011即

j1=1,j2=0,j3=1,j4=1又如,第7分組

(i1,i2,i3,i4)=(1101)2=13

查S盒的第7行,有

S1(13)=8=(1000)2

則輸出為

j1=1,j2=0,j3=0,j4=0

S盒的全體輸出為32bit,循環(huán)左移11位后再與Li-1作運算,即得Ri。子密鑰的產(chǎn)生異常簡單:將256bit密鑰分成8份,每份32bit,稱為一個子密鑰。每輪所用的密鑰按表3.8從這8個子密鑰中選取。表3.8NSSU的子密鑰選取3.2.3TEATEA由英國劍橋大學(xué)的David.W和Roger.N提出,特點是加密速度極快,抗差分攻擊能力強。

TEA的明文為64bit,密鑰為128bit,算法十分簡單。它的迭代次數(shù)可變,32次很充分,16次足夠,8次亦可行。算法如下:S1(初始化)

明文分成v(0)和v(1)兩部分,各32bit,賦值:

y←v(0),z←v(1),Sum←0,Delta←9E3779B9(十六進制數(shù))密鑰分成k(0),k(1),k(2),k(3)四部分,各32bit,且

a←k(0),b←k(1),c←k(2),d←k(3),n←32S2若n>0,則轉(zhuǎn)S3,否則轉(zhuǎn)S4。S3Sum←Sum+Delta;

y←y+(z<<4)+a∧z+Sum∧(z>>5)+b;

z←z+(y<<4)+c∧y+Sum∧(y>>5)+d;

n←n-1,轉(zhuǎn)S2。S4v(0)←y,v(1)←z,結(jié)束。其中,∧是按位異或,即模2加⊕;<<是左移,高位舍棄,低位補零;>>是右移,低位舍棄,高位補零。

TEA的解密算法如下:S1(初始化)y←v(0),z←v(1),Delta←9E3779B9,Sum←C6EF3720;

a←k(0),b←k(1),c←k(2),d←k(3),n←32S2若n>0,則轉(zhuǎn)S3,否則轉(zhuǎn)S4。S3z←z*(y<<4)+c∧y+Sum∧(y>>5)+d;

y←y*(z<<4)+a∧z+Sum∧(z>>5)+b;

Sum←Sum-Delta;

n←n-1,轉(zhuǎn)S2。S4v(0)←y,v(1)←z,結(jié)束。3.3AES

AES是21世紀(jì)分組加密技術(shù)的最新發(fā)展。1999年美國政府向全世界公開征求下一代密碼算法,以取代DES標(biāo)準(zhǔn)。這次活動是1997年4月15日由美國標(biāo)準(zhǔn)技術(shù)研究所(NIST)發(fā)起的,稱為AES(AdvancedEncxyptionStandard)活動。1999年從初選的15個算法中篩選了5個為候選標(biāo)準(zhǔn),它們是MARS、RC6、Rijndael、Serpent和Twofish。2000年10月2日正式宣布Rijndael將不加修改地作為AES標(biāo)準(zhǔn)算法。3.3.1Rijndael算法[4]

Rijndael算法是比利時學(xué)者J.Daemaen和V.Rijndael提出的,它采用代替置換網(wǎng)絡(luò),即SP結(jié)構(gòu)進行迭代運算。每一輪由三層組成:線性混合層,確保多輪之上的高度擴散;非線性層,由非線性S盒構(gòu)成,起到混淆的作用;密鑰加層,把子密鑰簡單異或到中間狀態(tài)上。S盒采用GF(28)域中的乘法逆運算,本原多項式取為m(x)=x8+x4+x3+x+1,即十六進制的“11B”。它的差分均勻性和線性偏差均達到最佳。

Rijndael是一個數(shù)據(jù)塊長度和密鑰長度都可變的分組密碼。數(shù)據(jù)塊和密碼長度可以分別是128bit、192bit、256bit。首先把數(shù)據(jù)塊寫成“字”的形式,每個字包含4個字節(jié),每個字節(jié)8bit。密鑰也寫為字的形式(見下面的數(shù)據(jù)),下列數(shù)據(jù)中每列是一個字。

a00

a01

a02

…;k00

k01

k02

a10

a11

a12

…;k10

k11

k12

a20

a21

a22

…;k20

k21

k22

a30

a31

a32

…;k30

k31

k32

設(shè)數(shù)據(jù)塊字?jǐn)?shù)為Nb,密鑰字?jǐn)?shù)為Nk;則迭代次數(shù)Nr的數(shù)值取決于Nb和Nk,其值由表3.9決定。加密過程按圖3.10算法迭代Nr次,最后一輪迭代沒有列混合,其他各輪相同。表3.9迭代次數(shù)Nr取決于Nb和Nk

圖3.10Rijndael算法的一次迭代流程

1.字節(jié)變換(ByteSub)

aj是第j列的字:

ByteSub(aj)=(ByteSub(a0j),ByteSub(a1j),ByteSub(a2j),ByteSub(a3j))(3-5)它的變換為(3-6)式中,是aij在GF(28)域的乘法逆元。實際上,字節(jié)變換可以事先計算出來,以列表形式存儲,就如同S盒一樣,靠查表就能方便地完成變換。這張表從0→15共16行、16列(見表3.10)。比如欲變換的字節(jié)是′8B′,則查′8′行′B′列,結(jié)果是′3D′。

2.行移變換(ShiftRow)

數(shù)據(jù)塊第0行不變,第一行循環(huán)左移c1字節(jié),第二行循環(huán)左移c2字節(jié),第三行循環(huán)左移c3字節(jié)。c1c2c3的值根據(jù)Nb的大小確定,見表3.11。表3.10Rijndael的S盒表3.11行移變換中的循環(huán)左移值3.列混合變換(MixColumn)其中,aj看成是GF(28)[x]/(x4+1)這個環(huán)中的元素;是環(huán)中的乘法,定義為(3-8)

c=′03′x3+′01′x2+′01′x+′02′是一個常矢量,于是列混合變換可以簡單地當(dāng)作一個矩陣相乘運算,不過相乘的各個矩陣元都是GF(28)域的元素,遵循域運算規(guī)則而已。之所以選c3=′03′,c2=′01′,c1=′01′,c0=′02′,為的是計算簡單,同時由于c與x4+1互素,因此c有逆元:

d=′0B′x3+′0D′x2+′09′x+′0E′因而解密時的逆矩陣存在。

4.子密鑰的產(chǎn)生

Nr輪加密共需Nr+1個子密鑰,每個子密鑰均由Nk個字(每字又包含4個字節(jié))構(gòu)成。比如Nb=4且Nk=4時,Nr=10,加密共需11個子密鑰,第i個子密鑰由4個字構(gòu)成,它們是:

W(4i),W(4i+1),W(4i+2),W(4i+3)i=0,1,2,…,10

第0個子密鑰用于10輪加密之前,它就是原始密鑰:

W(0)=(k00,k10,k20,k30),W(1)=(k01,k11,k21,k31)

W(2)=(k02,k12,k22,k32),W(3)=(k03,k13,k23,k33)

其他10個子密鑰均由原始密鑰的擴展與重組得到。其方法是:

(1)如果j不是4的倍數(shù),則W(j)=W(j-4)W(j-1),比如W(5)=W(1)W(4)。

(2)如果j是4的倍數(shù),比如W(4)、W(8)……則W(j)=W(j-4)T(W(j-1))。其中,T(W(j-1))是對W(j-1)作變換得到的:首先將W(j-1)的4個字節(jié)作左移輪換,即(k0,k1,k2,k3)→(k1,k2,k3,k0),然后做字節(jié)變換,即通過查S盒對4個字節(jié)作替換,最后得到式中,(e,f,g,h)是S盒替換后的4個字節(jié)數(shù)據(jù),而r(j)=′01′×2(j-4)/4是GF(28)域中計算的循環(huán)常數(shù)。即r(4)=′01′,其他j=4i時,r(j)=2r(j-4)。于是10輪循環(huán)常數(shù)分別求出為′01′,′02′,′04′,′08′,′10′,′20′,′40′,′80′,′1B′,′36′(注意這里是域運算:2×′80′=′100′modm(x)=′1B′)。在Nb和Nk為其他值的情況下,子密鑰擴展的普遍公式是:當(dāng)i=0,1,…,Nk-1時,有

Wi=ki(3-9)

當(dāng)Nk≤i≤Nb(Nr+1)-1時,有(3-10)

式,Rotate(a,b,c,d)表示左移一個字節(jié),即

Rotate(a,b,c,d)=(b,c,d,a)且Rcon[i]=(RC[i],

00

,

00

00

)∈GF(28)[x]/(x4+1)而

RC[i]=xi-1∈GF(28)最后,第i個子密鑰選取為。5.Rijndael的安全性

Rijndael的安全性表現(xiàn)在:

(1)對密鑰沒有任何限制,不存在弱密鑰。

(2)能有效抵抗目前已知的各種攻擊方法,如差分攻擊、相關(guān)密鑰攻擊、插值攻擊等。

(3)良好的理論基礎(chǔ)使設(shè)計者可高強度地隱藏信息。

(4)關(guān)鍵常數(shù)的巧妙選擇使計算速率可達1Gbit/s。

(5)可以實現(xiàn)MAC、Hash、同步流密碼、隨機數(shù)生成等其他功能。

Rijndael目前已經(jīng)有效地應(yīng)用在奔騰機、智能卡、ATM機、B-ISDN、衛(wèi)星通信等方面。3.3.2Camellia算法[4]

Camellia算法由日本三菱公司和日本電話電報公司聯(lián)合設(shè)計,支持128bit分組的明文和128bit、196bit、256bit的密鑰,達到了AES的要求。

1.Camellia的構(gòu)造

1)加密過程對于128bit的密鑰,規(guī)定迭代18輪,每輪加密都相同,如圖3.11所示;對于192bit和256bit的密鑰,應(yīng)迭代24輪,只需在圖3.12中再增加6輪加密和一對FL和FL-1處理即可。

2)解密過程與加密過程類似,只是顛倒密鑰順序。圖3.11Camellia算法的某一輪加密圖3.12Camellia算法的18輪加密3)密鑰方案首先根據(jù)三種不同長度的密鑰K,用不同方式給128bit的KL和KR賦值,再由圖3.13的方式生成兩個128bit的中間變量KA和KB。對128bit的密鑰K,有KL=K,KR=0(128個0);對192bit的密鑰K,有KL=K(前128bit),KR=K(后64bit)‖K(后64bit);對256bit的密鑰K,有KL=K(前128bit),KR=K(后128bit)。其中,K(前128bit)表示K的前面128bit;K(后64bit)表示K的后面64位;K(后64bit)表示K的后面64位的反碼;‖表示順序連接。圖3.13中所用的常數(shù)∑i定義為第i個素數(shù)的平方根的十六進制表達的第二位到第十七位連續(xù)值。它們是:∑1=A09E667F3BCC908B,∑2=B67AE8584CAA73B2∑3=C6EF372FE94F82BE,∑4=54FF53A5F1D36F1C∑5=10E527FADE682D1D,∑6=B05688C2B3E6C1FD

然后,分別由KLKRKAKB循環(huán)移位生成加密所需要的各個子密鑰。18(或24)輪加密運算中共用到18(或24)個子密鑰ki,4個子密鑰kwi,4個子密鑰kli,它們均由KLKRKAKB循環(huán)移位生成,循環(huán)方式見表3.12和表3.13。圖3.13Camellia算法的密鑰方案表3.12128bit密鑰生成的子密鑰表3.13192bit和256bit密鑰生成的子密鑰2.Camellia組件

1)F函數(shù)圖3.14表示的F函數(shù)將64bit數(shù)據(jù)用64bit密鑰加密,具體結(jié)構(gòu)為式中,S是8個并行的8×8的S盒代替運算;P是基于字節(jié)的線性變換。圖中,64bit的數(shù)據(jù)X分成8組,各8bit;64bit的密鑰也分成8組,各8bit,分別模2加,得到數(shù)據(jù)Y;Y進入S盒進行代替運算,得到數(shù)據(jù)Z;再經(jīng)線性變換P后得到Z′。(3-11)圖3.14Camellia算法的F函數(shù)2)S盒

Camellia組件總共用了4個不同的8×8雙射S盒,排列次序見圖3.14。

S1:y(8)→h(g(f(C5⊕y(8))))⊕6E→z(8)(3-12)

S2:y(8)→S1(y(8))<<<1→z(8)(3-13)

S3:y(8)→S1(y(8))>>>1→z(8)(3-14)

S4:y(8)→S1(y(8))<<<1→z(8)(3-15)其中,f,g,h均實現(xiàn)字節(jié)變換,即a1a2…a8→b1b2…b8,具體為

f:b1=a6⊕a2,b2=a7⊕a1,b3=a8⊕a5⊕a3,b4=a8⊕a3

b5=a7⊕a4,b6=a5⊕a2,b7=a8⊕a1,b8=a6⊕a4(3-16)

g:(b8+b7α+b6α2+b5α5)+(b4+b3α+b2α2+b1α5)β

=1/((a8+a7α+a6α2+a5α3)+(a4+a3α+a2α2+a1α3)β)(3-17)式中,β是GF(28)上滿足β8+β6+β5+β3+1=0的元素;α=β238=β6+β5+β3+β2,是GF(28)中滿足α4+α+1=0的元素。

h:b1=a5⊕a6⊕a2,b2=a6⊕a2,b3=a7⊕a4,b4=a8⊕a2

b5=a7⊕a3,b6=a8⊕a1,b7=a5⊕a1,b8=a6⊕a3(3-18)

S盒可以用硬件電路實現(xiàn),也可以進行查表運算。

3)P字符變換

P字符變換為

Z′=PZ

其中:(3-19)4)FL/FL-1函數(shù)引入FL和FL-1是為了提供輪間的不規(guī)則性,加強抗攻擊性能。FL/FL-1僅由邏輯運算組成,如與、或、異或以及循環(huán)左移等,它的軟、硬件實現(xiàn)都很快,如圖3.15所示。

圖3.15中為與運算;為或運算;為異或運算;為循環(huán)左移1位的運算。圖3.15Camellia算法的FL和FL-1函數(shù)3.3.3RC6算法

RC6是RSA公司提給NIST的候選算法。它的全稱是RC6-w/r/b。w=32,是明文分組的比特數(shù),r=20,是加密輪數(shù),b=16(24,32),是字節(jié)表示的密鑰長。RC6用了下列幾種基本運算:(1)整數(shù)模2w加和減,分別表示為+和-。

(2)比特逐位模2加,表示為⊕。

(3)整數(shù)模2w乘,表示為×。

(4)循環(huán)左移ROL、循環(huán)右移ROR分別表示為<<<和>>>。

1.加密過程

把128bit明文放入4個32bit的寄存器A,B,C,D中,S[i](i=0,1,…,2r+3)是2r+4個子密鑰,共經(jīng)過r輪循環(huán)處理,其中第i輪的處理為FORi=1tordo

t=ROL(B×(2B+1),lbw)

u=ROL(D×(2D+1),lbw)

A=ROL(A⊕t,u)+S[2i]

C=ROL(C⊕u,t)+S[2i+1]

(A,B,C,D)=(B,C,D,A)

最后一輪之后,做A=A+S[2r+2],C=C+S[2r+3]處理,(A,B,C,D)即為密文。

RC6的加密過程如圖3.16所示。圖3.16RC6的加密過程2.解密過程

128bit密文放入4個32bit的A,B,C,D中,A=A-S[2r+2],C=C-S[2r+3],仍須r輪循環(huán)處理:

FORi=rto1do(A,B,C,D)=(D,A,B,C)

u=ROL(D×(2D+1),lbw)

t=ROL(B×(2B+1),lbw)

C=ROR(C-S[2i+1],t)⊕u

A=ROR(A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論