專利名稱:祖沖之算法密鑰生成裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到通信系統(tǒng)數(shù)據(jù)加解密技術(shù),特別涉及到一種祖沖之(簡稱,ZUC)算法密鑰生成裝置及方法。
背景技術(shù):
通信系統(tǒng)數(shù)據(jù)發(fā)送方在發(fā)送數(shù)據(jù)之前,需要對待發(fā)送的數(shù)據(jù)進(jìn)行加密和/或完整性校驗操作,而數(shù)據(jù)接收方在接收到數(shù)據(jù)后,也需要對接收到的數(shù)據(jù)進(jìn)行解密和/或完整性校驗操作。通常發(fā)送方會通過一定的算法來生 成密鑰,利用密鑰對數(shù)據(jù)進(jìn)行加密和/或完整性校驗,接收方則利用相同的算法生成密鑰,利用密鑰對數(shù)據(jù)進(jìn)行解密和/或完整性校驗。ZUC算法是中國自主設(shè)計的流密碼算法,用于生成加解密或完整性校驗的密鑰。ZUC算法密鑰生成的算法分為兩個階段,算法初始化階段和密鑰生成階段,在算法初始化階段,不生成密鑰,迭代計算密鑰生成所需的各參數(shù),直到迭代次數(shù)達(dá)到預(yù)先設(shè)置的算法初始化迭代次數(shù)N,進(jìn)入密鑰生成階段,開始生成密鑰。所述初始密鑰參數(shù)包括,32比特的加密計數(shù)器(簡稱,Count)、5比特的無線承載標(biāo)識(簡稱,Bearer)、1比特的傳輸方向(簡稱,Direction)、15個8比特的密鑰計算參數(shù)(簡稱,key) i = 0 15、密鑰模式(加解密或完整性校驗)。算法初始化階段的算法為I、生成初始化向量(簡稱,Ivi)加解密的iVi為iv0 = iv8 = Count [7:0], Iv1 = iv9 = Count [15:8]iv2 = iv10 = Count [23:16],iv3 = ivn = Count [31:24]iv4 = iv12 = Bearer Direction OO2iv5 = iv6 = iv7 = iv13 = iv14 = iv15 = 000000002完整性校驗的iViS:iv0 = Count [7:0], Iv1 = iv9 = Count [15:8]iv2 = iv10 = Count [23:16],iv3 = ivn = Count [31:24]iv4 = iv12 = Bearer OOO2, iv5 = iv6 = iv7 = iv13 = iv15 = 000000002/V8 = /V0 十{Direction || 00000002} ,/V14 = /V6 十{Direction || 00000002}其中,i = 0 15 ;Count [m:n]表示Count的第n 第m位;| |為位拼接計算,拼接方法為將I I計算符左邊的數(shù)據(jù)作為拼接后數(shù)據(jù)的高位,I I計算符右邊的數(shù)據(jù)作為拼接后數(shù)據(jù)的低位; 為異或操作。2、計算存儲移位值(簡稱,Si)如果是第一次計算Si, Si = Iceyi Idi Ivi其中,Cli為算法固定參數(shù);i = 0 15 ;d。= 1000100110101112,Cl1 = 0 1 00110 1 01111002,
d2 = 1100010011010112,d3 = 0010011010111102,d4 = 1010111100010012,d5 = 0110101111000102,d6 = 1110001001101012,d7 = 0001001101011112,
d8 = 1001101011110002, d9 = 0101111000100112,d10 = 1101011110001002, dn = 0011010111100012,d12 = 1011110001001102, d13 = 0111100010011012,d14 = 1111000100110102, d15 = 1000111101011002。如果不是第一次計算Si, Si = Si+1 ;3、計算重組值(簡稱,Xj)X0 — S15hI I S141J X1 — S11lI I SgH, X2 — S7lI I S5H,X3 — S2lI I Soh (式 I)其中,j=0 3 AiHSsiDO: 15] ^為 Si[15:0];4、計算密鑰生產(chǎn)值(簡稱,W)W= ( X0 Ri) +R2; W1 = R^X1 ;W2= R2 X2;(式 2)
R1=Serch ((W1L||W2H) ((W1L||W2H) <2) ((W1L||W2H) <10) ((W1L||W2H) <18) ((W1L||W2H) <<<24))(式 3)
R2=Serch ((W2L||W1H) ((W2L||W1H) <8) ((W2L||W1H) <14) ((W2L||W1H) <22) ((W2l||Wih) <30))(式 4)W計算過程中,首先利用隨機(jī)變換值(R1和R2)的初始值(均為0)計算W和中間變量(W1和W2),根據(jù)WpW2計算出新的R1和R2,并將計算出的新的R1和R2替換原來的R1和R2作為下一次計算W、W1, W2時的Rl和R2 ;其中,^表示1[31:16] ;^表示1[15:0] ;SerchO為查表操作,即,根據(jù)0內(nèi)的數(shù)值從預(yù)先設(shè)定的R參數(shù)表中查找出SerchO的值;<<< n為向左循環(huán)移位n比特操作,n表示移位的位數(shù)。5、計算存儲移位值16 (簡稱,S16) s16 = ((W > > I) + (215s15+217s13+221s10+220s4+ (1+28) s0) mod (231-1)) mod (231-1)其中,mod為取模操作;>> n為向右移位n比特操作,n表示移位的位數(shù);6、判斷步驟2 5的執(zhí)行次數(shù)是否達(dá)到預(yù)先設(shè)置的算法初始化迭代次數(shù)N ;,如果是,進(jìn)入密鑰生成階段,否則,返回步驟2執(zhí)行。密鑰生成階段算法為I、用si+1替換Si ;得到新的Si ;2、計算 W利用新的Si根據(jù)式I 式4計算得到W ;3、計算 S16s16 = (215s15+217s13+221s10+220s4+ (1+28) s0) mod (231-1)4、計算密鑰KEY-ZUC= X3 W
其中,KEY_ZUC為32比特的密鑰;迭代執(zhí)行密鑰生成階段可以連續(xù)生成多個KEY_ZUC。現(xiàn)有技術(shù)中還沒有用于實現(xiàn)ZUC算法密鑰生成的技術(shù)方案。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提出了一種ZUC算法密鑰生成裝置及方法以實現(xiàn)ZUC算法密鑰的生成。本發(fā)明的技術(shù)方案包括一種ZUC算法密鑰生成裝置,包括接口模塊,從高層協(xié)議模塊獲取初始密鑰參數(shù); iv計算模塊,從接口模塊獲取Count、Bearer、Direction參數(shù),根據(jù)密鑰模式計算加解密初始化向量或完整性校驗初始化向量;Si計算模塊,包括I個存儲單元,存儲單元i用于存儲Si ;如果是第一次計算Si,從接口模塊獲取Iceyi參數(shù),從iv計算模塊獲取Wi,Si = Iceyi (Ii | Ivi ;否則,Si = si+1 ;其中,I = 16 ;i = 0 15 ;S16計算模塊,計算S16并發(fā)送計算結(jié)果到所述Si計算模塊的存儲單元16中保存;在算法初始化階段,s16 = ((W > > I) + ((215s15+217s13+221s10+220s4+(1+28) s0) mod (231_1))) mod (231_1);在密鑰生成階段,s16 = (215s15+217s13+221s1o+220s4+ (1+28) s0) mod (231_1);X計算模塊,從Si存儲模塊獲得數(shù)據(jù),計算Xy j = 0 3 ;其中,X0= S15h I I S14L, X1 = Sul I I S9H, X2 = S7l I I S5H, X3 = S2L | | Soh ;W計算模塊,從X計算模塊和R計算模塊獲得數(shù)據(jù),計算胃為為;W= ( X0 Ri) +R2;W1 = R^X1 ;W2= R2 X2淇中,RpR2的初始值為0洱計算模塊,從所述W計算模塊獲取數(shù)據(jù),計算VR2 ;
R1=Serch ((W1L||W2H) ((W1L||W2H) <2) ((W1L||W2H) <10) ((W1L||W2H) <18) ((W1L||W2H)< 24))
R2=Serch ((W2L||W1H) ((W2L||W1H) <8) ((W2L||W1H) <14) ((W2L||W1H) <22) ((W2l||Wih) <30));密鑰生成模塊,在密鑰生成階段從所述X計算單元獲取X3,從所述W計算單元獲取W,生成密鑰 KEY_ZUC,KEY-ZUC= X3 W。優(yōu)選的,所述iv計算模塊進(jìn)一步包括選擇單元,從接口模塊接收Count、Bearer、Direction參數(shù),根據(jù)密鑰模式選擇加解密iv計算單元或完整性校驗iv計算單元計算對應(yīng)的iVi ;加解密iv計算單元,包括,15個加解密存儲單元,加解密存儲單元i存儲對應(yīng)的ivi; i =0 15 ;通過選擇單元與接口模塊連接,從接口模塊接收Count、Bearer、Direction參數(shù)并存放到對應(yīng)的加解密存儲單元中;
完整性校驗iv計算單元,通過選擇單元與接口模塊連接,從接口模塊接收Count、Bearer, Direction參數(shù),計算并保存完整性校驗初始化向量;包括,15個完整性校驗存儲單元,完整性校驗存儲單元i存儲對應(yīng)的ivpi = 0 15 ;:^8計算單元,從完整性校驗存儲單元0獲取Ivtl,從接口模塊獲取Direction,計算iv8并存儲到完整性校驗存儲單元8 ;iv14計算單元,從完整性校驗存儲單元6獲取iv6,從接口模塊Direction,計算iv14并存儲到完整性校驗存儲單元14。優(yōu)選的,所述iv計算模塊進(jìn)一步包括15個iv存儲單元,存儲單元i存儲對應(yīng)的iv。i = 0 15 ;iv8計算單元,從存儲單元0獲取ivy從接口模塊接收Direction,計算iv8,/V8 = /V0 十{Direction || 00000002}; iv14計算單元,從存儲單元6獲取iv6,從接口模塊接收Direction,計算iv14,/V14 = /V6 十{Direction || 00000002};選擇單元,如果密鑰模式為加解密,將存儲單元0的數(shù)據(jù)保存發(fā)送到存儲單元8=,將存儲單元6的數(shù)據(jù)保存發(fā)送到存儲單元14,將Bearer I Direction I OO2保存到存儲單元4和存儲單元12 = Bearer Direction OO2 ;如果密鑰模式為完整性校驗,設(shè)置iv8計算單元輸出發(fā)送到存儲單元8,將:^14計算單元輸出發(fā)送到存儲單元14,將Bearer I OOO2保存到存儲單元4和存儲單元12。優(yōu)選的,所述S16計算模塊進(jìn)一步包括乘法單元,從Si 計算模塊讀取 sQ、S4> s10> s13、S15、計算 215s15、217s13、221s1(i、22°s4、28s0;第一選擇器,與所述Si計算模塊的存儲單元O、所述乘法單元以及第一加法器的輸出連接,根據(jù)第一加法器已執(zhí)行加法的次數(shù)選擇第一加法器的輸入;其中,第一加法器已執(zhí)行加法的次數(shù)為5k時,選擇存儲單元0的數(shù)據(jù)和28 ;第一加法器已執(zhí)行加法的次數(shù)為5k+l時,選擇第一加法器的輸出和22°s4,第一加法器已執(zhí)行加法的次數(shù)為5k+2時,選擇第一加法器的輸出和221s1(l ;第一加法器已執(zhí)行加法的次數(shù)為5k+3時,選擇第一加法器的輸出和217s13 ;第一加法器已執(zhí)行加法的次數(shù)為5k+4時,選擇第一加法器的輸出和215s15 ;第一加法器,對所述第一選擇器選擇的輸入數(shù)據(jù)進(jìn)行加法計算并將計算結(jié)果輸出到所述第一選擇器和第一取模單元;第一取模單元,當(dāng)?shù)谝患臃ㄆ饕褕?zhí)行加法的次數(shù)為5 (k+1)時,對第一加法器的輸出執(zhí)行mod(231-l)操作;移位寄存器,在算法初始化階段,從所述W計算模塊接收W,將W右移I位保存;第二加法器,將第一取模單元的輸出與移位寄存器的輸出相加;第二取模單元,對第二加法器的輸出執(zhí)行mod (231_1)操作;第二選擇器,在算法初始化階段選擇第二取模單元的輸出發(fā)送到S16輸出單元,在密鑰生成階段選擇第一取模單元的輸出發(fā)送到S16輸出單元;S16輸出單元,判斷第二選擇器的輸出是否為0,如果是,S16 = 231-1 ;否則將第二選擇器的輸出作為S16 ;發(fā)送S16到Si計算模塊的存儲單元16。優(yōu)選的,所述S16計算模塊進(jìn)一步包括
第一乘法單元,計算28Si ;當(dāng)?shù)谝患臃ㄆ饕褕?zhí)行加法的次數(shù)小于4時,i =第一加法器已執(zhí)行加法的次數(shù),否則,i = 4 ;第二乘法單元,計算22°Si ;當(dāng)?shù)诙臃ㄆ饕褕?zhí)行加法的次數(shù)小于4時,i =第二加法器已執(zhí)行加法的次數(shù)+4,否則,i = 8 ;第三乘法單元,計算221Si ;當(dāng)?shù)诙臃ㄆ饕褕?zhí)行加法的次數(shù)小于4時,i =第二加法器已執(zhí)行加法的次數(shù)+10,否則,i = 14;第四乘法單元,計算217Si ;當(dāng)?shù)谒募臃ㄆ饕褕?zhí)行加法的次數(shù)小于2時,i =第四加法器已執(zhí)行加法的次數(shù)+13,否則,i = 15;第五乘法單元,計算215Si ;當(dāng)?shù)谖寮臃ㄆ饕褕?zhí)行加法的次數(shù)小于I時,i = 15,否貝丨J, i = 16 ; 第一加法器,將第一乘法單元的輸出和第一乘法單元使用的Si相加;第二加法器,將第二乘法單元的輸出和第三乘法單元的輸出相加;第三加法器,將第一加法器的輸出和第二加法器的輸出相加;第四加法器,將第三加法器的輸出和第四乘法單元的輸出相加;第五加法器,將第四加法器的輸出和第五乘法單元的輸出相加;第一取模單元,對第五加法器的輸出執(zhí)行mod(231-l)操作;移位寄存器,在算法初始化階段,從所述W計算模塊接收W,將W右移I位保存;第六加法器,將第一取模單兀的輸出與移位寄存器的輸出相加;第二取模單元,對第六加法器的輸出執(zhí)行mod (231_1)操作;選擇器,在算法初始化階段選擇第二取模單元的輸出發(fā)送到S16輸出單元,在密鑰生成階段選擇第一取模單元的輸出發(fā)送到S16輸出單元;S16輸出單元,判斷選擇器的輸出是否為0,如果是,S16 = 231-1 ;否則將選擇器的輸出作為S16 ;發(fā)送S16到Si計算模塊的存儲單元16。優(yōu)選的,所述R計算模塊進(jìn)一步包括第一數(shù)據(jù)拼接單元,計算W1L I I W2h操作;第二數(shù)據(jù)拼接單元,計算W2L I I Wih操作;第一移位寄存單元,計算并保存W1J Iw2H <<< 2, w1L| Iw2h <<< 10, w1L| |w2H<<< 18、Wil I W2h <<< 24 ;第二移位寄存單元,計算并保存w2lI Iwih <<< 8, ff2L| Iwih <<< 14、w2L| Iwih<<< 18, ff2L Wih <<< 30 ;第一異或器,將第一數(shù)據(jù)拼接單元的輸出與第一移位寄存單元中的數(shù)據(jù)進(jìn)行異或.第二異或器,將第二數(shù)據(jù)拼接單元的輸出與第二移位寄存單元中的數(shù)據(jù)進(jìn)行異或.查表單兀,保存R參數(shù)表,根據(jù)第一異或器的輸出從R參數(shù)表中獲取R1,根據(jù)第二異或器的輸出從R參數(shù)表中獲取R2 ;將%、R2發(fā)送到R存儲單元;R存儲單元,保存RpR2 ;Ri、R2的初始值為O。一種ZUC算法密鑰生成方法,包括I、ZUC算法密鑰生成裝置從高層協(xié)議模塊獲取密鑰初始參數(shù);
2、iv計算模塊根據(jù)Count、Bearer、Direction及密鑰模式生成!Lvi ;3、如果是第一次計算Si, Si計算模塊將key” Ivi和(Ii進(jìn)行位拼接獲得Si =Iceyi I I (Ii I iVi ;否則,Si計算模塊將si+1賦值給Si ;4、X計算模塊利用Si計算Xj ;X0 — S15hI I S141J X1 一 S11lI I SgH, X2 一 S7lI I S5H, X3 一 S2lI I Soh ;5、W計算模塊計算W、W1^ff2 ;W= ( X0 Ri) +R2; W1 = R^X1 ;W2= R2 X2;其中,R1 和 R2 的初始值為 0 ; 6、R計算模塊計算R1、R2 ;
R1=Serch ((W1L||W2H) ((W1L||W2H) <2) ((W1L||W2H) <10) ((W1L||W2H) <18) ((W1L||W2H)< 24))
R2=Serch ((W2l||Wih) ((W2L||W1H) <8) ((W2L||W1H) <14) ((W2l||W1h) <22) ((W2L||WiH) <30));7、S16計算模塊計算S16并發(fā)送到Si計算模塊;在算法初始化階段,s16 = ((W > > I) + ((215s15+217s13+221s10+220 s4+ (1+28) s0) mod (231-1))) mod (231-1);在密鑰生成階段,S16= (215s15+217s13+221s10+220s4+ (1+28) s0) mod (231-1);8、在密鑰生成階段,密鑰生成模塊生成密鑰KEY_ZUC,KEY-ZUC= X3 @W;在算法初始化階段,判斷步驟3 7的執(zhí)行次數(shù)是否達(dá)到預(yù)設(shè)的算法初始化迭代次數(shù)N,如果是,設(shè)定當(dāng)前算法階段為密鑰生成階段;返回步驟3 ;9、判斷是否需要繼續(xù)生成密鑰,如果需要,返回步驟3,否則結(jié)束密鑰生成流程;其中,其中,i= 0 15 ;j = 0 3。優(yōu)選的,所述步驟7進(jìn)一步包括計算215s15、217s13、221s1Q、22°s4、28s0 ;將S。與28sq相加得到累加值sum ;將22°s4、221s1Q、217s13、215s15 依次累加到 sum 中;如果當(dāng)前階段為算法初始化階段,S16= (sum mod(231-l) + (ff >> l))mod(231_l);否則,s16 = sum mod(231-l);如果Sl6為0,設(shè)置S16 = 231_1,發(fā)送S16到Si計算模塊。優(yōu)選的,所述步驟7進(jìn)一步包括710、如果是第一次計算S16,乘法單元計算28S(I、22°S4、221S1(I,執(zhí)行步驟711 ;否則執(zhí)行步驟715 ;711、第一加法器計算A = S(I+28S(I,第二加法器計算B = 221si(l+22°s4,乘法單元計算
r>8r>21r>20
2S1、2 S11、2 S5 ;712、第三加法器計算C = A+B,第一加法器計算A = SjZ8S1、第二加法器計算B =221s11+220s5 ;乘法單元計算 217s13、28s2、221si2、22°s6 ;
713、第四加法器計算D = C+217s13、第三加法器計算C = A+B,第一加法器計算A =s2+28s2、第二加法器計算 B = 221s12+220s6 ;乘法單兀計算 215s15、217s14、28s3、221s13、22Cis7 ;714、第五加法器計算E = D+215s15 ;第四加法器計算D = C+217s14、第三加法器計算C = A+B、第一加法器計算A = s3+28s3、第二加法器計算B = 221s13+220s7 ;執(zhí)行步驟716 ;715、第五加法器計算E = D+215s16,第四加法器計算D = C+217s15,第三加法器計算C = A+B,第一加法器計算A = s4+28s4,第二加法器計算B = 221s14+220s8 ;716、如果當(dāng)前算法階段為算法初始化階段,S16= (E mod(231-l) + (ff >> I))mod(231-l);否則,s16 = E mod(231-l);717、,如果 S16 為 0,設(shè)置 S16 = 231-1 ;718、發(fā)送S16到Si計算模塊;719、乘法單元計算 215s16、217s15、28s4、221s14、22Cls8 ;其中,各步驟中的A為執(zhí)行該步驟之前第一加法器的輸出,B為執(zhí)行該步驟之前第二加法器的輸出,C為執(zhí)行該步驟之前第三加法器的輸出,D為執(zhí)行該步驟之前第四加法器的輸出,E為執(zhí)行該步驟之前第五加法器的輸出。本發(fā)明的技術(shù)方案提供了 ZUC算法密鑰生成的實現(xiàn)裝置,解決了在實際系統(tǒng)中實現(xiàn)ZUC算法密鑰生成的問題,本發(fā)明的一種優(yōu)選方案使用一個模塊實現(xiàn)了加解密密鑰和完整性校驗密鑰的計算,進(jìn)一步節(jié)約了 ZUC算法密鑰生成裝置的成本,在另一種優(yōu)選方案中,對于S16的計算實現(xiàn)了流水線操作,從第二次計算S16開始,可以實現(xiàn)一個時鐘周期計算出一個S16,提高了密鑰生成效率。
圖I本發(fā)明裝置優(yōu)選實施方式結(jié)構(gòu)2本發(fā)明裝置iv計算模塊一種優(yōu)選實現(xiàn)方案結(jié)構(gòu)3是本發(fā)明裝置iv計算模塊又一種優(yōu)選實現(xiàn)方案結(jié)構(gòu)4是本發(fā)明具體實施例I的S16計算模塊結(jié)構(gòu)5是本發(fā)明R計算模塊一種優(yōu)選實現(xiàn)方案結(jié)構(gòu)6是發(fā)明具體實施例2的S16計算模塊結(jié)構(gòu)7是本發(fā)明方法優(yōu)選實施方式流程8是本發(fā)明方法S16計算步驟一種優(yōu)選實現(xiàn)方案流程9是本發(fā)明方法S16計算步驟又一種優(yōu)選實現(xiàn)方案流程圖
具體實施例方式為進(jìn)一步說明本發(fā)明的技術(shù)方案,下面給出具體實施例并結(jié)合附圖詳細(xì)說明。具體實施例I本實施例為本發(fā)明ZUC算法密鑰生成裝置的一種優(yōu)選實施方式,總體結(jié)構(gòu)如圖I所示,包括接口模塊,從高層協(xié)議模塊獲取初始密鑰參數(shù);所述密鑰生成參數(shù)包括,Count、Bearer、Direction、Iceyi參數(shù)和密鑰模式(加解密或完整性校驗);
iv計算模塊,從接口模塊獲取Count、Bearer、Direction參數(shù),根據(jù)密鑰模式計算加解密初始化向量或完整性校驗初始化向量;作為本發(fā)明裝置的一種優(yōu)選實現(xiàn)方案,iv計算模塊如圖2所示,包括,選擇單元,根據(jù)密鑰模式選擇加解密iv計算單元或完整性校驗iv計算單元從接口模塊接收Count、Bearer、Direction參數(shù)并計算對應(yīng)的!Lvi ;加解密iv計算單元,通過選擇單元與接口模塊連接,從接口模塊接收Count、Bearer、Direction參數(shù)并存放到對應(yīng)的加解密存儲單元中;包括,15個加解密存儲單元,加解密存儲單元i存儲對應(yīng)的ivi; i = 0 15 ;完整性校驗iv計算單元,通過選擇單元與接口模塊連接,從接口模塊接收Count、Bearer, Direction參數(shù),計算并保存完整性校驗初始化向量;包括,15個完整性校驗存儲
單元,完整性校驗存儲單元i存儲對應(yīng)的ivpi = 0 15 ;:^8計算單元,從完整性校驗存儲單元0獲取Ivtl,從接口模塊獲取Direction,計算iv8并存儲到完整性校驗存儲單元8 ;iv14計算單元,從完整性校驗存儲單元6獲取iv6,從接口模塊Direction,計算iv14并存儲到完整性校驗存儲單元14。作為本發(fā)明裝置的又一種優(yōu)選實現(xiàn)方案,iv計算模塊如圖3所示,包括,15個iv存儲單元,存儲單元i存儲對應(yīng)的ivp i = 0 15 ;iv8計算單元,從存儲單元0獲取ivy從接口模塊接收Direction,計算iv8,/V8 = /V0 十{Direction || 00000002};如果密鑰模式為加解密,設(shè)置存儲單元8=存儲單元0,設(shè)置存儲單元14=存儲單元6,設(shè)置存儲單元4 =存儲單元12 = Bearer | Direction | | OO2 ;如果密鑰模式為完整性校驗,設(shè)置存儲單元8 = iv8計算單元輸出,設(shè)置存儲單元14 = iv14計算單元輸出,設(shè)置存儲單元4 =存儲單元12 = Bearer OOO20選擇單元201,如果密鑰模式為加解密,將存儲單元0中的數(shù)據(jù)發(fā)送到存儲單元8 ;如果密鑰模式為完整性校驗,將iv8計算單元的計算結(jié)果發(fā)送到存儲單元8iv14計算單元,從存儲單元6獲取iv6,從接口模塊接收Direction,計算iv14,/V14 = /V6 十(Direction || 00000002};選擇單元202,如果密鑰模式為加解密,將存儲單元6中的數(shù)據(jù)發(fā)送到存儲單元14 ;如果密鑰模式為完整性校驗,將iv14計算單元的計算結(jié)果發(fā)送到存儲單元14 ;選擇單元203,如果密鑰模式為加解密,將Bearer | | OOO2存儲到存儲單元4和存儲單元12 ;如果密鑰模式為完整性校驗,將Bearer | | Direction | | OO2存儲到存儲單元4和存儲單元12。Si計算模塊,用于計算并存儲Si,包括I個存儲單元,存儲單元i用于存儲Si ;如果是第一次計算Si,從接口模塊獲取Iceyi參數(shù),從iv計算模塊獲取iv”將key」IdiIivi存儲到存儲單元i中;否則,將存儲單元i+1中的數(shù)據(jù)存儲到存儲單元i中;其中,I = 16 ;i = 0 15 ;S16計算模塊,計算S16并發(fā)送計算結(jié)果到所述Si計算模塊的存儲單元16中保存;在算法初始化階段, s16 = ((W > > I) + ((215s15+217s13+221s10+220s4+(1+28) s0) mod (231_1))) mod (231_1);在密鑰生成階段,
s16 = (215s15+217s13+221s1(i+22°s4+(1+28) S。) mod (231_1);本實施例中,S16計算模塊如圖4所示,包括,乘法單元,從Si 計算模塊讀取 sQ、S4> s1(l、s13、S15、計算并保存 215s15、217s13、221s1(i、220 s4、28s0 ;作為本實施例的一種優(yōu)選實現(xiàn)方案,所述乘法單元可以包括,移位寄存器401,與所述Si計算模塊的存儲單元0連接,將存儲單元0中的數(shù)據(jù)循環(huán)左移8位并保存;移位寄存器402,與所述Si計算模塊的存儲單元4連接,將存儲單元4中的數(shù)據(jù)循環(huán)左移20位并保存;移位寄存器403,與所述Si計算模塊的存儲單元10連接,將存儲單元10中的數(shù)據(jù) 循環(huán)左移21位并保存;移位寄存器404,與所述Si計算模塊的存儲單元13連接,將存儲單元13中的數(shù)據(jù)循環(huán)左移17位并保存;移位寄存器405,與所述Si計算模塊的存儲單元15連接,將存儲單元15中的數(shù)據(jù)循環(huán)左移15位并保存;所述乘法單元也可以采用本發(fā)明技術(shù)領(lǐng)域的其他方式實現(xiàn),本發(fā)明對所述乘法單元的具體實現(xiàn)形式?jīng)]有限制;選擇器406,與所述Si計算模塊的存儲單元O、所述乘法單元以及加法器407連接,根據(jù)加法器407已執(zhí)行加法的次數(shù)從Si計算模塊的存儲單元O、乘法單元保存的數(shù)據(jù)以及加法器407的輸出中選擇加法器407的輸入;其中,加法器407已執(zhí)行加法的次數(shù)為5k時,選擇存儲單元0的數(shù)據(jù)和28S(I ;加法器407已執(zhí)行加法的次數(shù)為5k+l時,選擇加法器407的輸出和22°s4,加法器407已執(zhí)行加法的次數(shù)為5k+2時,選擇加法器407的輸出和221s1Q ;加法器407已執(zhí)行加法的次數(shù)為5k+3時,選擇加法器407的輸出和217s13 ;加法器407已執(zhí)行加法的次數(shù)為5k+4時,選擇加法器407的輸出和215s15 ;加法器407,對所述選擇器406選擇的輸入數(shù)據(jù)進(jìn)行加法計算并將計算結(jié)果輸出到所述選擇器406和取模單元408 ;取模單元408,當(dāng)加法器407已執(zhí)行加法的次數(shù)為5 (k+1)時,對加法器407的輸出執(zhí)行mod(231-l)操作;移位寄存器409,在算法初始化階段,從所述W計算模塊接收W,將W右移I位保存;加法器410,在算法初始化階段,,將取模單元408計算結(jié)果與移位寄存器409的輸出相加;取模單元411,對加法器410的輸出執(zhí)行mod(231_l)操作;選擇器412,在算法初始化階段,選擇取模單元411的輸出發(fā)送到S16輸出單元,在密鑰生成階段,選擇取模單元408的輸出發(fā)送到S16輸出單元;S16輸出單元,判斷選擇器412輸出的數(shù)據(jù)是否為0,如果是,S16 = 231-1 ;否則將選擇器412輸出的數(shù)據(jù)作為S16 ;發(fā)送S16到Si計算模塊的存儲單元16 ;其中,k為大于或等于0的整數(shù)。
X計算模塊,從Si存儲模塊讀取Si,計算Xj并存儲;j = 0 3 ;其中,X。=S15hI S14l, X1 = S11lI S9H, X2 = S7L S5H, X3 = S2L | Scih ;W 計算模塊,從 X計算模塊和R計算模塊讀取Xj和R1' R2,計算W、W1、W2 ;其中,W= ( X0 Ri) +R2; W1 = R^X1 ;W2= R2 X2;R計算模塊,存儲Rp R2,從所述W計算模塊獲取數(shù)據(jù),計算Rp R2并更新所存儲的
r”r2 ;其中,
R1=Serch ((W1L||W2H) ((W1L||W2H) <2) ((W1L||W2H) <10) ((W1L||W2H) <18) ((W1L||W2H)< 24))
R2=Serch ((W2L||W1H) ((W2L||W1H) <8) ((W2L||W1H) <14) ((W2L||W1H) <22) ((W2l||Wih) <30));作為本發(fā)明裝置的一種優(yōu)選實現(xiàn)方案,R計算模塊如圖5所示,包括,優(yōu)選的,所述R計算模塊進(jìn)一步包括數(shù)據(jù)拼接單元I,與所述W計算模塊連接,執(zhí)行Wj I W2h操作;數(shù)據(jù)拼接單元2,與所述W計算模塊連接,執(zhí)行W2」I Wih操作;
移位寄存單元1,計算并保存 W」|w2H < < < 2、ff1L |w2H < < < io、w1L| |w2H<<< 18、Wil I IW2H <<< 24 ;移位寄存單元2,計算并保存 W2J Iffm < < < 8、ff2L |ff1H < < < 14、ff2L| |ff1H<<< 18、W2LI ff1H <<< 30 ;異或器I,將數(shù)據(jù)拼接單元I的輸出與移位寄存單元I中的數(shù)據(jù)進(jìn)行異或;異或器2,將數(shù)據(jù)拼接單元2的輸出與移位寄存單元2中的數(shù)據(jù)進(jìn)行異或;查表單元,保存R參數(shù)表,根據(jù)異或器I的輸出從R參數(shù)表中獲取R1,根據(jù)異或器2的輸出從R參數(shù)表中獲取R2 ;將Rp R2發(fā)送到R存儲單元;R存儲單元,保存Rp R2 ;其中,在首次計算Rp R2之前,Rp R2的初始值為O ;密鑰生成模塊,在密鑰生成階段從所述X計算單元獲取X3,從所述W計算單元獲取W,生成密鑰 KEY_ZUC,KEY-ZUC= X3 W。具體實施例2本實施例為本發(fā)明ZUC算法密鑰生成裝置的又一種優(yōu)選實施方式,總體結(jié)構(gòu)如圖I所示,其中,接口模塊、iv計算模塊、Si計算模塊、X計算模塊、W計算模塊、R計算模塊、密鑰生成模塊可以采用與具體實施例I中相同的模塊結(jié)構(gòu)。S16計算模塊結(jié)構(gòu)如圖6所示,包括乘法單元401,從所述Si計算模塊選擇一個Si,計算并保存28Si ;當(dāng)加法器406已執(zhí)行加法的次數(shù)小于4時,i =加法器406已執(zhí)行加法的次數(shù),否則,i = 4 ;乘法單元402,從所述Si計算模塊選擇一個Si,計算并保存22°Si ;當(dāng)加法器407已執(zhí)行加法的次數(shù)小于4時,i =加法器407已執(zhí)行加法的次數(shù)+4,否則,i = 8 ;乘法單元403,從所述Si計算模塊選擇一個Si,計算并保存221Si ;當(dāng)加法器407已執(zhí)行加法的次數(shù)小于4時,i =加法器407已執(zhí)行加法的次數(shù)+10,否則,i = 14 ;乘法單元404,從所述Si計算模塊選擇一個Si,計算并保存21 ;當(dāng)加法器409已執(zhí)行加法的次數(shù)小于2時,i =加法器409已執(zhí)行加法的次數(shù)+13,否則,i = 15 ;乘法單元405,從所述Si計算模塊選擇一個Si,計算并保存215Si ;當(dāng)加法器410已執(zhí)行加法的次數(shù)小于I時,i = 15,否則,i = 16 ;加法器406,將乘法單元401的數(shù)據(jù)和乘法單元401選擇的Si相加;加法器407,將乘法單元402和乘法單元403的數(shù)據(jù)相加;加法器408,將加法器406的計算結(jié)果和加法器407的計算結(jié)果相加;加法器409,將加法器408的計算結(jié)果和乘法單元404的數(shù)據(jù)相加;加法器410,將加法器409的計算結(jié)果和乘法單元405的數(shù)據(jù)相加; 取模單元411,對加法器410的計算結(jié)果執(zhí)行mod(231_l)操作;移位寄存器412,在算法初始化階段,從所述W計算模塊接收W,將W右移I位保存;加法器413,在算法初始化階段,將取模單元411計算結(jié)果與移位寄存器412的輸出;取模單元414,對加法器413的計算結(jié)果執(zhí)行mod (231-1)操作;選擇器415,在算法初始化階段,選擇取模單元414的輸出發(fā)送到S16輸出單元;在密鑰生成階段,選擇取模單元411的輸出發(fā)送到S16輸出單元;S16輸出單元,判斷選擇器415輸出的數(shù)據(jù)是否為0,如果是,S16 = 231_1 ;否則將選擇器415輸出的數(shù)據(jù)作為S16 ;發(fā)送S16到Si計算模塊的存儲單元16。本實施例中,S16計算模塊采用流水線計算的方式,在經(jīng)過前4個時鐘周期計算出第一個S16后,每個時鐘周期都能生成一個S16,提高了裝置的運行效率。需要說明的是,本發(fā)明各實施例中各模塊中的多個存儲單元可以是物理上獨立的多個存儲單元,也可以是一個物理存儲單元的多個邏輯劃分,本發(fā)明對存儲單元的具體形式?jīng)]有限制。具體實施例3本實施例為本發(fā)明ZUC算法密鑰生成方法的一種優(yōu)選實施方式,本是實施例的密鑰生成方法與具體實施例I所述裝置相匹配;總體流程如圖7所示。I、ZUC算法密鑰生成裝置從高層協(xié)議模塊獲取初始密鑰參數(shù);2、iv計算模塊根據(jù)Count、Bearer、Direction及密鑰模式計算各Iivi ;具體計算方法為如果密鑰模式為加解密,將Count[7:0]存入iV(l和iv8對應(yīng)的存儲單元;將Count [15:8]存入iVl和“9對應(yīng)的存儲單元JfCount [23:16]存入ivjP iv1(l對應(yīng)的存儲單元;將Count [31:24]存入iv3和!Lv11對應(yīng)的存儲單元;iv4對應(yīng)的存儲單元的比特3 5和iv12對應(yīng)的存儲單元的比特3 5存儲Bearer, iv4對應(yīng)的存儲單元的比特2和iv12對應(yīng)的存儲單元的比特2存儲Direction, iv4對應(yīng)的存儲單元的比特0 I和iv12對應(yīng)的存儲單元的比特0 I設(shè)置為OO2 ;其余存儲單元設(shè)置為0 ;如果密鑰模式為完整性校驗,將Count[7:0]存入Ivtl對應(yīng)的存儲單元;將Count [15:8]存入Iiv1和iv9對應(yīng)的存儲單元;將Count [23:16]存入iv2和iv1(l對應(yīng)的存儲單元;將Count[31:24]存入iv3和!Lv11對應(yīng)的存儲單元;iv4對應(yīng)的存儲單元的比特3 5和iv12對應(yīng)的存儲單元的比特3 5存儲Bearer, iv4對應(yīng)的存儲單元的比特O 2和iv12對應(yīng)的存儲單元的比特O I設(shè)置為OOO2 ;將iV(l對應(yīng)的存儲單元的數(shù)據(jù)與Direction | | 00 0 0 0 002異或的結(jié)果存入iv8對應(yīng)的存儲單元;將iv6對應(yīng)的存儲單元的數(shù)據(jù)與Direction | | 00 0 0 0 002異或的結(jié)果存入iv14對應(yīng)的存儲單元;其余存儲單元設(shè)置為0 ;其中,i= 0 15 ;3、如果是第一次計算Si, Si計算模塊將key” Ivi和(Ii進(jìn)行位拼接獲得Si =Iceyi I (Ii I I iVi ;否則,Si計算模塊將si+1賦值給Si ;4、X計算模塊利用Si計算Xj, j = 0 3 ;X0 — S15hI I S141J X1 — S11lI I SgH, X2 — S7lI I S5H, X3 — S2lI I Soh ;5、W計算模塊計算W、W1^ff2 ;
W= ( X0 Ri) +R2; W1 = R^X1 ;%= R2 X2;其中,R1 和 R2 的初始值為 0 ;6、R計算模塊計算R1、R2 ;
R1=Serch ((W1L||W2H) ((W1L||W2H) <2) ((W1L||W2H) <10) ((W1L||W2H) <18) ((W1L||W2H)< 24))
R2=Serch ((W2L||W1H) ((W2L||W1H) <8) ((W2L||W1H) <14) ((W2L||W1H) <22) ((W2l||Wih) <30));7、S16計算模塊計算S16并發(fā)送到Si計算模塊;本步驟流程如圖8所示;701、計算 215s15、217s13、221s1Q、22°s4、28s0 ;702、S16計算模塊的加法器將S0與28sQ相加;703、S16計算模塊的加法器將步驟702的結(jié)果與22°s4相加;704、S16計算模塊的加法器將步驟703的結(jié)果與221s1(l相加;705、S16計算模塊的加法器將步驟704的結(jié)果與217s13相加;706、S16計算模塊的加法器將步驟705的結(jié)果與215s15相加;707、在算法初始化階段,S16 =(步驟706的結(jié)果mod(231_1) + (W > > I))mod(231-l);在密鑰生成階段,S16=步驟706的結(jié)果mod (231-1);708、判斷S16是否為0,如果是,設(shè)置S16 = 231_1 ;709、輸出S16到Si計算模塊。8、在密鑰生成階段,密鑰生成模塊生成密鑰KEY_ZUC,KEY-ZUC= X3@W;在算法初始化階段,判斷步驟3 7已執(zhí)行次數(shù)是否達(dá)到預(yù)設(shè)的算法初始化迭代次數(shù)N,如果是,設(shè)置當(dāng)前算法階段為密鑰生成階段;返回步驟3 ;9、判斷是否需要繼續(xù)生成密鑰,如果需要,返回步驟3,否則結(jié)束密鑰生成流程。具體實施例4本實施例為本發(fā)明ZUC算法密鑰生成方法的又一種優(yōu)選實施方式,本是實施例的密鑰生成方法與具體實施例2所述裝置相匹配;總體流程如圖7所示。步驟I 6與具體實施例3相同;7、S16計算模塊計算S16并發(fā)送到Si計算模塊;本步驟流程如圖9所示;710、如果是第一次計算S16,乘法單元計算28S(l、22°S4、221Sl(l,執(zhí)行步驟711 ;否則,執(zhí) 行步驟715 ;
711、第一加法器計算A = S(I+28S(I,第二加法器計算B = 221Sl(l+22°s4,乘法單元計算28si、221sn、220s5 ;712、第三加法器計算C = A+B,第一加法器計算A = SjZ8S1、第二加法器計算B =221s11+220s5 ;乘法單元計算 217s13、28s2、221si2、22°s6 ;713、第四加法器計算D = C+217s13、第三加法器計算C = A+B,第一加法器計算A =s2+28s2、第二加法器計算 B = 221s12+220s6 ;乘法單兀計算 215s15、217s14、28s3、221s13、22Cis7 ;714、第五加法器計算E = D+215s15 ;第四加法器計算D = C+217s14、第三加法器計算C = A+B、第一加法器計算A = s3+28s3、第二加法器計算B = 221s13+220s7 ;執(zhí)行步驟716 ;715、第五加法器計算E = D+215s16,第四加法器計算D = C+217s15,第三加法器計算C = A+B,第一加法器計算A = s4+28s4,第二加法器計算B = 221s14+220s8 ;716、如果當(dāng)前算法階段為算法初始化階段,S16= (E mod(231-1) + (W > > I))mod(231-l);否則,s16 = E mod(231-l);717、,如果 S16 為 0,設(shè)置 S16 = 231_1 ;718、發(fā)送S16到Si計算模塊;719、乘法單元計算 215s16、217s15、28s4、221s14、22°s8 ;其中,各步驟中的A為執(zhí)行該步驟之前第一加法器的輸出,B為執(zhí)行該步驟之前第二加法器的輸出,C為執(zhí)行該步驟之前第三加法器的輸出,D為執(zhí)行該步驟之前第四加法器的輸出,E為執(zhí)行該步驟之前第五加法器的輸出。步驟8 9與具體實施例3相同;
本領(lǐng)域的一般技術(shù)人員顯然應(yīng)該清楚并且理解,本發(fā)明方法所舉的以上實施例僅用于說明本發(fā)明方法,而并不用于限制本發(fā)明方法。在不背離本發(fā)明方法的精神及其實質(zhì)的情況下,本領(lǐng)域技術(shù)人員當(dāng)可根據(jù)本發(fā)明方法做出各種相應(yīng)的改變或變形,但這些相應(yīng)的改變或變形均屬于本發(fā)明方法的權(quán)利要求保護(hù)范圍。
權(quán)利要求
1.一種祖沖之ZUC算法密鑰生成裝置,其特征在于,包括 接ロ模塊,從高層協(xié)議模塊獲取初始密鑰參數(shù); IV計算模塊,從接ロ模塊獲取加密計數(shù)器Count、無線承載標(biāo)識Bearer、傳輸方向Direction、密鑰模式參數(shù),根據(jù)密鑰模式計算加解密初始化向量或完整性校驗初始化向量IVi ; Si計算模塊,包括I個存儲単元,存儲單元i用于存儲存儲移位值Si ; 如果是第一次計算Si,從接ロ模塊獲取密鑰計算參數(shù)keyi;從iV計算模塊獲取ivp Si=Iieyi I dj Ivi ;否則,Si = si+1 ;其中,I = 16 ;i = O 15 為算法固定參數(shù); S16計算模塊,計算S16并發(fā)送計算結(jié)果到所述Si計算模塊的存儲單元16中保存; X計算模塊,從Si存儲模塊獲得數(shù)據(jù),計算重組值Xパj = O 3 ; W計算模塊,從X計算模塊和R計算模塊獲得數(shù)據(jù),計算密鑰生產(chǎn)值W和中間變量W1.W2; 其中,隨機(jī)變換值も、R2的初始值為O ; R計算模塊,從所述W計算模塊獲取H計算も、R2 ; 密鑰生成模塊,在密鑰生成階段從所述X計算單元獲取X3,從所述W計算單元獲取W,生成密鑰 KEY_ZUC,KEY-ZUC= X3 @W; 其中,I I為比特拼接操作,@為異或操作。
2.根據(jù)權(quán)利要求I所述的裝置,其特征在于,所述iv計算模塊包括 選擇單元,從接ロ模塊接收Count、Bearer、Direction參數(shù),根據(jù)密鑰模式選擇加解密IV計算單元或完整性校驗iv計算單元計算對應(yīng)的iVi ; 加解密iv計算單元,包括,15個加解密存儲單元,加解密存儲單元i存儲對應(yīng)的ivi; i=O 15 ;通過選擇單元與接ロ模塊連接,從接ロ模塊接收Count、Bearer、Direction并存放到對應(yīng)的加解密存儲單元中; 完整性校驗iv計算單元,通過選擇単元與接ロ模塊連接,從接ロ模塊接收Count、Bearer> Direction,計算并保存完整性校驗初始化向量;包括,15個完整性校驗存儲單元,完整性校驗存儲單元i存儲對應(yīng)的iv” i = O 15 ;iv8計算單元,從完整性校驗存儲單元O獲取iVd,從接ロ模塊獲取Direction,計算iv8并存儲到完整性校驗存儲單元8 ;iv14計算單元,從完整性校驗存儲單元6獲取iv6,從接ロ模塊獲取Direction,計算iv14并存儲到完整性校驗存儲単元14。
3.根據(jù)權(quán)利要求I所述的裝置,其特征在于,所述iv計算模塊包括 15個iv存儲單元,存儲單元i存儲對應(yīng)的ivp i = O 15 ; iv8計算單元,從存儲單元O獲取ivci,從接ロ模塊接收Direction,計算iv8,/V8 = /V0 Θ {Direction || 00000002}; IV14計算單元,從存儲單元6獲取iv6,從接ロ模塊接收Direction,計算iv14,/V14 = iv,十(Direction || 00000002}; 選擇單元,如果密鑰模式為加解密,將存儲單元O的數(shù)據(jù)保存發(fā)送到存儲單元8 =,將存儲單元6的數(shù)據(jù)保存發(fā)送到存儲單元14,將Bearer | | Direction | | OO2保存到存儲單元4和存儲單元12 = Bearer Direction OO2 ;如果密鑰模式為完整性校驗,設(shè)置iv8計算單元輸出發(fā)送到存儲單元8,將iv14計算單元輸出發(fā)送到存儲單元14,將Bearer| OOO2保存到存儲單元4和存儲單元12。
4.根據(jù)權(quán)利要求I所述的裝置,其特征在于,所述R計算模塊包括 第一數(shù)據(jù)拼接単元,計算Wj I W2h操作; 第二數(shù)據(jù)拼接単元,計算Wa I I Wih操作; 第一移位寄存單元,計算并保存W1J Iw2h < < < 2、W1J Iw2h < < < 10、Wj Iw2h<<< 18、Wil I W2h <<< 24 ; 第二移位寄存單元,計算并保存W2J |w1H < < < 8、w2L Iwih < < < 14、w2L| |w1H<<< 18, ff2L I Wih <<< 30 ; 第一異或器,將第一數(shù)據(jù)拼接単元的輸出與第一移位寄存單元中的數(shù)據(jù)進(jìn)行異或;第二異或器,將第二數(shù)據(jù)拼接単元的輸出與第二移位寄存單元中的數(shù)據(jù)進(jìn)行異或;查表單元,保存R參數(shù)表,根據(jù)第一異或器的輸出從R參數(shù)表中獲取R1,根據(jù)第二異或器的輸出從R參數(shù)表中獲取R2 ;將も、R2發(fā)送到R存儲單元; R存儲單元,保存R” R2況、R2的初始值為O ; 其中,Wih為W1的高16位,Wil為W1的低16位;ff2H為W2的高16位,W2l為W2的低16位;< < <為向左循環(huán)移位操作,< <<后的數(shù)字表示移位的位數(shù)。
5.根據(jù)權(quán)利要求I 4中任一項所述的裝置,其特征在于,所述S16計算模塊包括 乘法單元,從 Si 計算模塊讀取 S。、S4> s1(l、s13、S15、計算 215s15、217s13、221s1(i、22°s4、28sq ; 第一選擇器,與所述Si計算模塊的存儲單元O、所述乘法單元以及第一加法器的輸出連接,根據(jù)第一加法器已執(zhí)行加法的次數(shù)選擇第一加法器的輸入; 其中,第一加法器已執(zhí)行加法的次數(shù)為5k時,選擇存儲單元O的數(shù)據(jù)和28S(i ;第一加法器已執(zhí)行加法的次數(shù)為5k+l時,選擇第一加法器的輸出和22°s4,第一加法器已執(zhí)行加法的次數(shù)為5k+2時,選擇第一加法器的輸出和221s1(l ;第一加法器已執(zhí)行加法的次數(shù)為5k+3時,選擇第一加法器的輸出和217s13 ;第一加法器已執(zhí)行加法的次數(shù)為5k+4時,選擇第一加法器的輸出和215s15 ; 第一加法器,對所述第一選擇器選擇的輸入數(shù)據(jù)進(jìn)行加法計算并將計算結(jié)果輸出到所述第一選擇器和第一取模單元; 第一取模單元,當(dāng)?shù)谝患臃ㄆ饕褕?zhí)行加法的次數(shù)為5 (k+Ι)時,對第一加法器的輸出執(zhí)行 mod(231-l)操作; 移位寄存器,在算法初始化階段,從所述W計算模塊接收W,將W右移I位保存; 第二加法器,將第一取模單兀的輸出與移位寄存器的輸出相加; 第二取模單元,對第二加法器的輸出執(zhí)行mod (231-1)操作; 第二選擇器,在算法初始化階段選擇第二取模單元的輸出發(fā)送到S16輸出單元,在密鑰生成階段選擇第一取模單元的輸出發(fā)送到S16輸出單元; S16輸出單元,判斷第二選擇器的輸出是否為0,如果是,S16 = 231-1 ;否則將第二選擇器的輸出作為S16 ;發(fā)送S16到Si計算模塊的存儲單元16 ; 其中,mod()為取模操作。
6.根據(jù)權(quán)利要求I 4中任一項所述的裝置,其特征在于,所述S16計算模塊包括 第一乘法單元,計算28Si ;當(dāng)?shù)谝患臃ㄆ饕褕?zhí)行加法的次數(shù)小于4吋,i =第一加法器已執(zhí)行加法的次數(shù),否則,i = 4;第二乘法單元,計算22°Si ;當(dāng)?shù)诙臃ㄆ饕褕?zhí)行加法的次數(shù)小于4吋,i =第二加法器已執(zhí)行加法的次數(shù)+4,否則,i = 8; 第三乘法單元,計算221Si ;當(dāng)?shù)诙臃ㄆ饕褕?zhí)行加法的次數(shù)小于4時,i =第二加法器已執(zhí)行加法的次數(shù)+10,否則,i = 14; 第四乘法單元,計算217Si ;當(dāng)?shù)谒募臃ㄆ饕褕?zhí)行加法的次數(shù)小于2吋,i =第四加法器已執(zhí)行加法的次數(shù)+13,否則,i = 15; 第五乘法單元,計算215Si ;當(dāng)?shù)谖寮臃ㄆ饕褕?zhí)行加法的次數(shù)小于I吋,i = 15,否則,i=16 ; 第一加法器,將第一乘法單元的輸出和第一乘法單元使用的Si相加; 第二加法器,將第二乘法單元的輸出和第三乘法單元的輸出相加; 第三加法器,將第一加法器的輸出和第二加法器的輸出相加; 第四加法器,將第三加法器的輸出和第四乘法單元的輸出相加; 第五加法器,將第四加法器的輸出和第五乘法單兀的輸出相加; 第一取模單元,對第五加法器的輸出執(zhí)行mod (2311)操作; 移位寄存器,在算法初始化階段,從所述W計算模塊接收W,將W右移I位保存; 第六加法器,將第一取模單兀的輸出與移位寄存器的輸出相加; 第二取模單元,對第六加法器的輸出執(zhí)行mod (231-1)操作; 選擇器,在算法初始化階段選擇第二取模單元的輸出發(fā)送到S16輸出單元,在密鑰生成階段選擇第一取模單元的輸出發(fā)送到S16輸出單元; S16輸出單元,判斷選擇器的輸出是否為0,如果是,S16 = 231-1 ;否則將選擇器的輸出作為S16 ;發(fā)送S16到Si計算模塊的存儲單元16 ; 其中,mod()為取模操作。
7.—種祖沖之ZUC算法密鑰生成方法,其特征在于,包括 ZUC算法密鑰生成裝置從高層協(xié)議模塊獲取密鑰初始參數(shù); iv計算模塊根據(jù)加密計數(shù)器Count、無線承載標(biāo)識Bearer、傳輸方向Direction及密鑰模式生成初始化向量iVi ; 如果是第一次計算存儲移位值Si,Si計算模塊將密鑰計算參數(shù)keyi、iVi和算法固定參數(shù)(Ii進(jìn)行位拼接獲得Si內(nèi)=Iceyi Idi Ivi ;否則,Si計算模塊將si+1賦值給Si ;i = O 15 ; X計算模塊利用Si計算重組值Xj ; j = O 3 ; W計算模塊計算密鑰生成密鑰生產(chǎn)值W和中間變量W1. W2 ; W= ( X0 Ri) +R2; W1 = RJX1 ;W2= R2 Θ X2;其中,隨機(jī)變換值 R” R2 的初始值為 O ; R計算模塊計算も、R2 ; S16計算模塊計算S16并發(fā)送到Si計算模塊; 在密鑰生成階段,密鑰生成模塊生成密鑰KEY_ZUC,KEY-ZUC= X3 W;在算法初始化階段,判斷算法初始化迭代計算次數(shù)否達(dá)到預(yù)設(shè)的算法初始化迭代次數(shù)N,如果是,設(shè)定當(dāng)前算法階段為密鑰生成階段;返回計算Si步驟;其中,I I為比特拼接操作,@為異或操作。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述S16計算模塊計算S16并發(fā)送到Si計算模塊包括計算 215s15、217s13、221s1Q、22°s4、28s0 ; 將S。與28sq相加得到累加值sum ;將 22°s4、221SlQ、217Sl3、215Sl5 依次累加到 sum 中; 如果當(dāng)前階段為算法初始化階段,S16= (sum mod(231-l) + (ff >> l))mod(231-l);否則, s16 = sum mod (231-1); 如果S16為0,設(shè)置S16 = 231-1,發(fā)送S16到Si計算模塊; 其中,mod()為取模操作;所述>> I為右移I比特操作。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述S16計算模塊計算S16并發(fā)送到Si計算模塊包括 步驟710、如果是第一次計算S16,乘法単元計算28S(I、22°S4、221S1(I,執(zhí)行步驟711 ;否則執(zhí)行步驟715 ; 步驟711、第一加法器計算A = Sc^8Stl,第二加法器計算B = 221s1(l+22°s4,乘法單元計算.28si、221sn、220s5 ; 步驟712、第三加法器計算C = A+B,第一加法器計算A = SfZ8S1、第二加法器計算B =.221s11+220s5 ;乘法單元計算 217si3、28s2、221s12、22°s6 ;步驟713、第四加法器計算D = C+217s13、第三加法器計算C = A+B,第一加法器計算A=s2+28s2、第二加法器計算 B = 221s12+220s6 ;乘法單兀計算 215s15、217s14、28s3、221s13、22Cis7 ;步驟714、第五加法器計算E = D+215s15 ;第四加法器計算D = C+217s14、第三加法器計算C = A+B、第一加法器計算A = s3+28s3、第二加法器計算B = 221s13+220s7 ;執(zhí)行步驟716 ;步驟715、第五加法器計算E = D+215s16,第四加法器計算D = C+217s15,第三加法器計算C = A+B,第一加法器計算A = s4+28s4,第二加法器計算B = 221s14+220s8 ; 步驟716、如果當(dāng)前算法階段為算法初始化階段,S16= (E mod(231-l) + (ff >> I))mod(231-l);否則,s16 = E mod(231-l);步驟717、如果S16為O,設(shè)置S16 = 231-1 ; 步驟718、發(fā)送S16到Si計算模塊;步驟 719、乘法單元計算 215s16、217s15、28s4、221s14、22°s8 ; 其中,各步驟中的A為執(zhí)行該步驟之前第一加法器的輸出,B為執(zhí)行該步驟之前第二加法器的輸出,C為執(zhí)行該步驟之前第三加法器的輸出,D為執(zhí)行該步驟之前第四加法器的輸出,E為執(zhí)行該步驟之前第五加法器的輸出; 其中,mod()為取模操作;所述>> I為右移I比特操作。
全文摘要
本發(fā)明公開了一種ZUC算法密鑰生成裝置,包括接口模塊,從高層協(xié)議模塊獲取初始密鑰參數(shù);iv計算模塊,根據(jù)密鑰模式計算加解密初始化向量或完整性校驗初始化向量ivi;si計算模塊,計算并存儲si;s16計算模塊,計算s16并發(fā)送計算結(jié)果到所述si計算模塊;X計算模塊,計算重組值Xj;W計算模塊,計算密鑰生產(chǎn)值W和中間變量W1、W2;R計算模塊,計算R1、R2;密鑰生成模塊,在密鑰生成階段從所述X計算單元獲取X3,從所述W計算單元獲取W,生成密鑰KEY_ZUC,本發(fā)明還公開了一種與所述裝置相適應(yīng)的ZUC算法密鑰生成方法,為ZUC算法密鑰生成提供了具體的實現(xiàn)方案。
文檔編號H04L9/08GK102684870SQ20121012607
公開日2012年9月19日 申請日期2012年4月26日 優(yōu)先權(quán)日2012年4月26日
發(fā)明者劉榮, 岳天天, 彭玲, 晏龍 申請人:重慶重郵信科通信技術(shù)有限公司