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

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

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

2.2.1 加密/解密算法

1)算法的輸入/輸出參數

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

表2-4 算法的輸入/輸出參數

2)算法的總體結構

算法的總體結構如圖2-2所示。

圖2-2 算法的總體結構

3)算法的初始化

設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。

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

同時,設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,算法將產生L個32比特字的密鑰流。將生成的密鑰流用比特串表示為k[0],k[1],…,k[32×L-1],其中k[0]為算法生成的第1個密鑰字的最高比特位,k [31]為最低比特位,其他以此類推。為了處理長度為LENGTH的輸入比特流,L的取值為

5)加密和解密過程

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

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

對應的輸出密文比特流為:

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)算法的輸入/輸出參數

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

表2-5 算法的輸入/輸出參數

2)算法的總體結構

算法的總體結構如圖2-3所示。

圖2-3 算法的總體結構

3)算法的初始化

算法的初始化主要是根據完整性密鑰IK和其他輸入參數(見表2-5)構造初始密鑰KEY和初始變量IV。

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

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

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

記計數器COUNT=COUNT[0]||COUNT[1]||COUNT[2]||COUNT[3],其中COUNT[i]為8比特,i=0,1,2,3。

設算法的初始變量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)密鑰流的生成

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

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

5)計算MAC

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

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

主站蜘蛛池模板: 格尔木市| 民丰县| 保德县| 康乐县| 铜梁县| 乐业县| 朝阳县| 临泽县| 无棣县| 杭州市| 前郭尔| 桂东县| 依安县| 咸阳市| 丽水市| 神池县| 墨竹工卡县| 宁乡县| 蛟河市| 米林县| 喀什市| 陈巴尔虎旗| 兴文县| 正定县| 获嘉县| 沈丘县| 赫章县| 山丹县| 民丰县| 阜康市| 元江| 兴安县| 南宁市| 静宁县| 当雄县| 龙陵县| 长宁县| 万州区| 无棣县| 甘南县| 商南县|