- 商用密碼算法原理與C語言實現
- 李子臣
- 1050字
- 2020-07-28 13:37:09
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,對于每個i,i=0,1,…,LENGTH-1,如果M [i]=1,那么T=T⊕ki,計算T=T⊕kLENGTH ,最后計算MAC=T⊕k32×(L-1)。
最后計算是為了使生成的密鑰流比特串k[0],k[1],…,k[32×L-1]全部參與消息認證碼的運算。
- 中國政法大學810刑事法律綜合二歷年考研真題視頻講解【16小時高清視頻】
- Linux 編程基礎
- 辦公自動化高級應用案例教程
- 2019年經濟師《旅游經濟專業知識與實務(初級)》過關必做1000題(含歷年真題)
- 廈門大學211翻譯碩士英語[專業碩士]歷年考研真題及詳解
- 丁樹杞《大學俄語(7)》(東方老版)學習指南【詞匯短語+課文精解+單元語法+全文翻譯+練習答案】
- 服務營銷(原書第7版)
- 福建師范大學外國語學院211翻譯碩士英語[專業碩士]歷年考研真題及詳解
- 熱絲法合成金剛石膜
- 2020年單考英語考研閱讀理解高分特訓100篇
- 韓德培《國際私法》(第2版)【教材精講+考研真題解析】講義與視頻課程【32小時高清視頻】
- 高級財務管理(第四版)
- 吳漢東《知識產權法》(第3版)配套題庫【課后習題+章節題庫(含考研真題)+模擬試題】
- 車輛工程導論
- 無機化學實驗