官术网_书友最值得收藏!

2.2 加密/解密算法和完整性算法

加密/解密算法128-EEA3是一個(gè)序列密碼,利用一個(gè)保密密鑰CK對數(shù)據(jù)塊進(jìn)行加密/解密。數(shù)據(jù)塊的長度范圍為1~65504比特。完整性算法128-EIA3利用一個(gè)完整性密鑰,針對一個(gè)給定的輸入信息計(jì)算一個(gè)32比特消息認(rèn)證碼(Message Authentication Code,MAC)。

2.2.1 加密/解密算法

1)算法的輸入/輸出參數(shù)

算法的輸入/輸出參數(shù)如表2-4所示。

表2-4 算法的輸入/輸出參數(shù)

2)算法的總體結(jié)構(gòu)

算法的總體結(jié)構(gòu)如圖2-2所示。

圖2-2 算法的總體結(jié)構(gòu)

3)算法的初始化

設(shè)CK=CK[0]||CK[1]||…||CK[15],為128比特保密密鑰。KEY=KEY[0]||KEY[1]||…||KEY[15],為128比特初始密鑰。其中CK[i]、KEY[i] (0≤i≤15)都為8比特,則有KEY[i]=CK[i],i=0,1,…,15。

設(shè)計(jì)數(shù)器COUNT=COUNT[0]||COUNT[1]||COUNT[2]||COUNT[3],其中COUNT[i] (0≤i≤3)為8比特,那么COUNT為32比特。

同時(shí),設(shè)ZUC算法中的128比特初始變量為IV,IV=IV[0]||IV[1]||…||IV[15],其中IV[i](0≤i≤15)為8比特,則有

IV[0]=COUNT[0],IV[1]=COUNT[1]

IV[2]=COUNT[2],IV[3]=COUNT[3]

IV[4]=BEARER||DIRECTION||002

IV[5]=IV[6]=IV[7]=000000002

IV[8]=IV[0],IV[9]=IV[1]

IV[10]=IV[2],IV[11]=IV[3]

IV[12]=IV[4],IV[13]=IV[5]

IV[14]=IV[6],IV[15]=IV[7]

4)密鑰流的生成

利用算法初始化中生成的初始密鑰KEY和初始變量IV,算法將產(chǎn)生L個(gè)32比特字的密鑰流。將生成的密鑰流用比特串表示為k[0],k[1],…,k[32×L-1],其中k[0]為算法生成的第1個(gè)密鑰字的最高比特位,k [31]為最低比特位,其他以此類推。為了處理長度為LENGTH的輸入比特流,L的取值為。

5)加密和解密過程

加密和解密都是相同的操作,設(shè)長度為LENGTH的明文輸入比特流為:

IBS=IBS[0]||IBS[1]||IBS[2]||…||IBS[LENGTH-1]

對應(yīng)的輸出密文比特流為:

OBS=OBS[0]||OBS[1]||OBS[2]||…||OBS[LENGTH-1]

其中,IBS[i]和OBS[i]均為1比特,則有OBS[i]=IBS[i]+k[i] (i=0,1,…,LENGTH-1)。

2.2.2 完整性算法

1)算法的輸入/輸出參數(shù)

算法的輸入/輸出參數(shù)如表2-5所示。

表2-5 算法的輸入/輸出參數(shù)

2)算法的總體結(jié)構(gòu)

算法的總體結(jié)構(gòu)如圖2-3所示。

圖2-3 算法的總體結(jié)構(gòu)

3)算法的初始化

算法的初始化主要是根據(jù)完整性密鑰IK和其他輸入?yún)?shù)(見表2-5)構(gòu)造初始密鑰KEY和初始變量IV。

設(shè)IK=IK[0]IK[1]…IK[15],為128比特完整性密鑰,其中IK[i](0≤i≤15)為1字節(jié)。

設(shè)KEY=KEY[0]||KEY[1]||…||KEY[15],為128比特初始密鑰,其中KEY[i](0≤i≤15)為1字節(jié)。

則有KEY[i]=IK[i],i=0,1,…,15。

記計(jì)數(shù)器COUNT=COUNT[0]||COUNT[1]||COUNT[2]||COUNT[3],其中COUNT[i]為8比特,i=0,1,2,3。

設(shè)算法的初始變量IV=IV[0]||IV[1]||…||IV[15],其中IV[i](0≤i≤15)為8比特。則有

IV[0]=COUNT[0],IV[1]=COUNT[1]

IV[2]=COUNT[2],IV[3]=COUNT[3]

IV[4]=BEARER||0002 ,IV[5]=000000002

IV[6]=000000002,IV[7]=000000002

IV[8]=IV[0]⊕(DIRECTION<<7),IV[9]=IV[1]

IV[10]=IV[2],IV[11]=IV[3]

IV[12]=IV[4],IV[13]=IV[5]

IV[14]=IV[6]⊕(DIRECTION<<7),IV[15]=IV[7]

4)密鑰流的生成

為了計(jì)算LENGTH比特消息的MAC值,L的取值為。利用初始密鑰KEY和初始變量IV,算法將產(chǎn)生L個(gè)32比特字的密鑰流。將生成的密鑰流用比特串表示為k[0],k[1],…,k[32×L-1],其中k[0]為算法生成的第1個(gè)密鑰字的最高比特位,k[31]為最低比特位,其余類推。

對于i=0,1,…,32×(L-1),令ki=k[i]||k[i+1]||…||k[i+31],則ki為32比特字。

5)計(jì)算MAC

設(shè)T為32比特字變量,置T=0,對于每個(gè)i,i=0,1,…,LENGTH-1,如果M [i]=1,那么T=Tki,計(jì)算T=TkLENGTH ,最后計(jì)算MAC=Tk32×(L-1)

最后計(jì)算是為了使生成的密鑰流比特串k[0],k[1],…,k[32×L-1]全部參與消息認(rèn)證碼的運(yùn)算。

主站蜘蛛池模板: 会泽县| 万盛区| 来凤县| 灌阳县| 桐乡市| 贵南县| 寿宁县| 九龙坡区| 凌海市| 板桥市| 临颍县| 获嘉县| 伊吾县| 榆树市| 双流县| 娱乐| 龙江县| 那坡县| 铁岭县| 南漳县| 香港 | 许昌县| 商水县| 乌拉特前旗| 汽车| 宁波市| 新干县| 临沭县| 普宁市| 察雅县| 香格里拉县| 柏乡县| 台东市| 石河子市| 大埔区| 黄陵县| 涞水县| 永川市| 商都县| 黑水县| 大新县|