CN102684870A - 祖冲之算法密钥生成装置及方法 - Google Patents

祖冲之算法密钥生成装置及方法 Download PDF

Info

Publication number
CN102684870A
CN102684870A CN2012101260736A CN201210126073A CN102684870A CN 102684870 A CN102684870 A CN 102684870A CN 2012101260736 A CN2012101260736 A CN 2012101260736A CN 201210126073 A CN201210126073 A CN 201210126073A CN 102684870 A CN102684870 A CN 102684870A
Authority
CN
China
Prior art keywords
adder
unit
mrow
output
msub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012101260736A
Other languages
English (en)
Other versions
CN102684870B (zh
Inventor
晏龙
刘荣
岳天天
彭玲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Spreadtrum Communications Shanghai Co Ltd
Original Assignee
Chongqing Cyit Communication Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chongqing Cyit Communication Technologies Co Ltd filed Critical Chongqing Cyit Communication Technologies Co Ltd
Priority to CN201210126073.6A priority Critical patent/CN102684870B/zh
Publication of CN102684870A publication Critical patent/CN102684870A/zh
Application granted granted Critical
Publication of CN102684870B publication Critical patent/CN102684870B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开了一种ZUC算法密钥生成装置,包括接口模块,从高层协议模块获取初始密钥参数;iv计算模块,根据密钥模式计算加解密初始化向量或完整性校验初始化向量ivi;si计算模块,计算并存储si;s16计算模块,计算s16并发送计算结果到所述si计算模块;X计算模块,计算重组值Xj;W计算模块,计算密钥生产值W和中间变量W1、W2;R计算模块,计算R1、R2;密钥生成模块,在密钥生成阶段从所述X计算单元获取X3,从所述W计算单元获取W,生成密钥KEY_ZUC,
Figure DDA0000157679410000011
本发明还公开了一种与所述装置相适应的ZUC算法密钥生成方法,为ZUC算法密钥生成提供了具体的实现方案。

Description

祖冲之算法密钥生成装置及方法
技术领域
本发明涉及到通信系统数据加解密技术,特别涉及到一种祖冲之(简称,ZUC)算法密钥生成装置及方法。
背景技术
通信系统数据发送方在发送数据之前,需要对待发送的数据进行加密和/或完整性校验操作,而数据接收方在接收到数据后,也需要对接收到的数据进行解密和/或完整性校验操作。通常发送方会通过一定的算法来生成密钥,利用密钥对数据进行加密和/或完整性校验,接收方则利用相同的算法生成密钥,利用密钥对数据进行解密和/或完整性校验。
ZUC算法是中国自主设计的流密码算法,用于生成加解密或完整性校验的密钥。ZUC算法密钥生成的算法分为两个阶段,算法初始化阶段和密钥生成阶段,在算法初始化阶段,不生成密钥,迭代计算密钥生成所需的各参数,直到迭代次数达到预先设置的算法初始化迭代次数N,进入密钥生成阶段,开始生成密钥。所述初始密钥参数包括,32比特的加密计数器(简称,Count)、5比特的无线承载标识(简称,Bearer)、1比特的传输方向(简称,Direction)、15个8比特的密钥计算参数(简称,keyi)i=0~15、密钥模式(加解密或完整性校验)。
算法初始化阶段的算法为:
1、生成初始化向量(简称,ivi)
加解密的ivi为:
iv0=iv8=Count[7:0],iv1=iv9=Count[15:8]
iv2=iv10=Count[23:16],iv3=iv11=Count[31:24]
iv4=iv12=Bearer||Direction||002
iv5=iv6=iv7=iv13=iv14=iv15=000000002
完整性校验的ivi为:
iv0=Count[7:0],iv1=iv9=Count[15:8]
iv2=iv10=Count[23:16],iv3=iv11=Count[31:24]
iv4=iv12=Bearer||0002,iv5=iv6=iv7=iv13=iv15=000000002
iv 8 = iv 0 ⊕ { Direction | | 0000000 2 } , iv 14 = iv 6 ⊕ { Direction | | 0000000 2 }
其中,i=0~15;Count[m:n]表示Count的第n~第m位;||为位拼接计算,拼接方法为将||计算符左边的数据作为拼接后数据的高位,||计算符右边的数据作为拼接后数据的低位;
Figure BDA0000157679390000023
为异或操作。
2、计算存储移位值(简称,Si)
如果是第一次计算Si,Si=keyi||di|ivi
其中,di为算法固定参数;i=0~15;
d0=1000100110101112,d1=0100110101111002
d2=1100010011010112,d3=0010011010111102
d4=1010111100010012,d5=0110101111000102
d6=1110001001101012,d7=0001001101011112
d8=1001101011110002,d9=0101111000100112
d10=1101011110001002,d11=0011010111100012
d12=1011110001001102,d13=0111100010011012
d14=1111000100110102,d15=1000111101011002
如果不是第一次计算Si,Si=Si+1
3、计算重组值(简称,Xj)
X0=s15H||s14L,X1=s11L||s9H,X2=s7L||s5H,X3=s2L||s0H    (式1)
其中,j=0~3;SiH为Si[30:15];SiL为Si[15:0];
4、计算密钥生产值(简称,W)
W = ( X 0 ⊕ R 1 ) + R 2 ; W1=R1+X1 W 2 = R 2 ⊕ X 2 ; (式2)
R 1 = Serch ( ( W 1 L | | W 2 H ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 2 ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 10 ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 18 ) &CirclePlus; (
( W 1 L | | W 2 H ) < < < 24 ) ) (式3)
R 2 = Serch ( ( W 2 L | | W 1 H ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 8 ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 14 ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 22 ) &CirclePlus; ( ( W 2
| | L W 1 H ) < < < 30 ) ) (式4)
W计算过程中,首先利用随机变换值(R1和R2)的初始值(均为0)计算W和中间变量(W1和W2),根据W1、W2计算出新的R1和R2,并将计算出的新的R1和R2替换原来的R1和R2作为下一次计算W、W1、W2时的R1和R2;
其中,WiH表示Wi[31:16];WiL表示Wi[15:0];Serch()为查表操作,即,根据()内的数值从预先设定的R参数表中查找出Serch()的值;<<<n为向左循环移位n比特操作,n表示移位的位数。
5、计算存储移位值16(简称,s16)
s16=((W>>1)+(215s15+217s13+221s10+220s4+(1+28)s0)mod(231-1))mod(231-1)
其中,mod为取模操作;>>n为向右移位n比特操作,n表示移位的位数;
6、判断步骤2~5的执行次数是否达到预先设置的算法初始化迭代次数N;,如果是,进入密钥生成阶段,否则,返回步骤2执行。
密钥生成阶段算法为:
1、用si+1替换si;得到新的si
2、计算W
利用新的si根据式1~式4计算得到W;
3、计算s16
s16=(215s15+217s13+221s10+220s4+(1+28)s0)mod(231-1)
4、计算密钥
KEY _ ZUC = X 3 &CirclePlus; W
其中,KEY_ZUC为32比特的密钥;迭代执行密钥生成阶段可以连续生成多个KEY_ZUC。
现有技术中还没有用于实现ZUC算法密钥生成的技术方案。
发明内容
有鉴于此,本发明提出了一种ZUC算法密钥生成装置及方法以实现ZUC算法密钥的生成。
本发明的技术方案包括:
一种ZUC算法密钥生成装置,包括:
接口模块,从高层协议模块获取初始密钥参数;
iv计算模块,从接口模块获取Count、Bearer、Direction参数,根据密钥模式计算加解密初始化向量或完整性校验初始化向量;
si计算模块,包括I个存储单元,存储单元i用于存储si
如果是第一次计算si,从接口模块获取keyi参数,从iv计算模块获取ivi
si=keyi|di||ivi;否则,si=si+1;其中,I=16;i=0~15;
s16计算模块,计算s16并发送计算结果到所述si计算模块的存储单元16中保存;
在算法初始化阶段,
s16=((W>>1)+((215s15+217s13+221s10+220s4+(1+28)s0)mod(231-1)))mod(231-1);
在密钥生成阶段,
s16=(215s15+217s13+221s10+220s4+(1+28)s0)mod(231-1);
X计算模块,从si存储模块获得数据,计算Xj;j=0~3;
其中,X0=s15H||s14L,X1=s11L||s9H,X2=s7L||s5H,X3=s2L||s0H
W计算模块,从X计算模块和R计算模块获得数据,计算W、W1、W2
Figure BDA0000157679390000051
W1=R1+X1
Figure BDA0000157679390000052
其中,R1、R2的初始值为0;R计算模块,从所述W计算模块获取数据,计算R1、R2
R 1 = Serch ( ( W 1 L | | W 2 H ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 2 ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 10 ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 18 ) &CirclePlus; (
( W 1 L | | W 2 H ) < < < 24 ) )
R 2 = Serch ( ( W 2 L | | W 1 H ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 8 ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 14 ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 22 ) &CirclePlus; (
( W 2 L | | W 1 H ) < < < 30 ) ) ;
密钥生成模块,在密钥生成阶段从所述X计算单元获取X3,从所述W计算单元获取W,生成密钥KEY_ZUC, KEY _ ZUC = X 3 &CirclePlus; W .
优选的,所述iv计算模块进一步包括:
选择单元,从接口模块接收Count、Bearer、Direction参数,根据密钥模式选择加解密iv计算单元或完整性校验iv计算单元计算对应的ivi
加解密iv计算单元,包括,15个加解密存储单元,加解密存储单元i存储对应的ivi,i=0~15;通过选择单元与接口模块连接,从接口模块接收Count、Bearer、Direction参数并存放到对应的加解密存储单元中;
完整性校验iv计算单元,通过选择单元与接口模块连接,从接口模块接收Count、Bearer、Direction参数,计算并保存完整性校验初始化向量;包括,15个完整性校验存储单元,完整性校验存储单元i存储对应的ivi,i=0~15;iv8计算单元,从完整性校验存储单元0获取iv0,从接口模块获取Direction,计算iv8并存储到完整性校验存储单元8;iv14计算单元,从完整性校验存储单元6获取iv6,从接口模块Direction,计算iv14并存储到完整性校验存储单元14。
优选的,所述iv计算模块进一步包括:
15个iv存储单元,存储单元i存储对应的ivi,i=0~15;
iv8计算单元,从存储单元0获取iv0,从接口模块接收Direction,计算iv8 iv 8 = iv 0 &CirclePlus; { Direction | | 0000000 2 } ;
iv14计算单元,从存储单元6获取iv6,从接口模块接收Direction,计算iv14 iv 14 = iv 6 &CirclePlus; { Direction | | 0000000 2 } ;
选择单元,如果密钥模式为加解密,将存储单元0的数据保存发送到存储单元8=,将存储单元6的数据保存发送到存储单元14,将Bearer||Direction||002保存到存储单元4和存储单元12=Bearer||Direction||002;如果密钥模式为完整性校验,设置iv8计算单元输出发送到存储单元8,将iv14计算单元输出发送到存储单元14,将Bearer||0002保存到存储单元4和存储单元12。
优选的,所述s16计算模块进一步包括:
乘法单元,从si计算模块读取s0、s4、s10、s13、s15、计算215s15、217s13、221s10、220s4、28s0
第一选择器,与所述si计算模块的存储单元0、所述乘法单元以及第一加法器的输出连接,根据第一加法器已执行加法的次数选择第一加法器的输入;
其中,第一加法器已执行加法的次数为5k时,选择存储单元0的数据和28s0;第一加法器已执行加法的次数为5k+1时,选择第一加法器的输出和220s4,第一加法器已执行加法的次数为5k+2时,选择第一加法器的输出和221s10;第一加法器已执行加法的次数为5k+3时,选择第一加法器的输出和217s13;第一加法器已执行加法的次数为5k+4时,选择第一加法器的输出和215s15
第一加法器,对所述第一选择器选择的输入数据进行加法计算并将计算结果输出到所述第一选择器和第一取模单元;
第一取模单元,当第一加法器已执行加法的次数为5(k+1)时,对第一加法器的输出执行mod(231-1)操作;
移位寄存器,在算法初始化阶段,从所述W计算模块接收W,将W右移1位保存;
第二加法器,将第一取模单元的输出与移位寄存器的输出相加;
第二取模单元,对第二加法器的输出执行mod(231-1)操作;
第二选择器,在算法初始化阶段选择第二取模单元的输出发送到s16输出单元,在密钥生成阶段选择第一取模单元的输出发送到s16输出单元;
s16输出单元,判断第二选择器的输出是否为0,如果是,s16=231-1;否则将第二选择器的输出作为s16;发送s16到si计算模块的存储单元16。
优选的,所述s16计算模块进一步包括:
第一乘法单元,计算28si;当第一加法器已执行加法的次数小于4时,i=第一加法器已执行加法的次数,否则,i=4;
第二乘法单元,计算220si;当第二加法器已执行加法的次数小于4时,i=第二加法器已执行加法的次数+4,否则,i=8;
第三乘法单元,计算221si;当第二加法器已执行加法的次数小于4时,i=第二加法器已执行加法的次数+10,否则,i=14;
第四乘法单元,计算217si;当第四加法器已执行加法的次数小于2时,i=第四加法器已执行加法的次数+13,否则,i=15;
第五乘法单元,计算215si;当第五加法器已执行加法的次数小于1时,i=15,否则,i=16;
第一加法器,将第一乘法单元的输出和第一乘法单元使用的si相加;
第二加法器,将第二乘法单元的输出和第三乘法单元的输出相加;
第三加法器,将第一加法器的输出和第二加法器的输出相加;
第四加法器,将第三加法器的输出和第四乘法单元的输出相加;
第五加法器,将第四加法器的输出和第五乘法单元的输出相加;
第一取模单元,对第五加法器的输出执行mod(231-1)操作;
移位寄存器,在算法初始化阶段,从所述W计算模块接收W,将W右移1位保存;
第六加法器,将第一取模单元的输出与移位寄存器的输出相加;
第二取模单元,对第六加法器的输出执行mod(231-1)操作;
选择器,在算法初始化阶段选择第二取模单元的输出发送到s16输出单元,在密钥生成阶段选择第一取模单元的输出发送到s16输出单元;
s16输出单元,判断选择器的输出是否为0,如果是,s16=231-1;否则将选择器的输出作为s16;发送s16到si计算模块的存储单元16。
优选的,所述R计算模块进一步包括:
第一数据拼接单元,计算W1L||W2H操作;
第二数据拼接单元,计算W2L||W1H操作;
第一移位寄存单元,计算并保存W1L||W2H<<<2、W1L||W2H<<<10、W1L||W2H<<<18、W1L||W2H<<<24;
第二移位寄存单元,计算并保存W2L||W1H<<<8、W2L||W1H<<<14、W2L||W1H<<<18、W2L||W1H<<<30;
第一异或器,将第一数据拼接单元的输出与第一移位寄存单元中的数据进行异或;
第二异或器,将第二数据拼接单元的输出与第二移位寄存单元中的数据进行异或;
查表单元,保存R参数表,根据第一异或器的输出从R参数表中获取R1,根据第二异或器的输出从R参数表中获取R2;将R1、R2发送到R存储单元;
R存储单元,保存R1、R2;R1、R2的初始值为0。
一种ZUC算法密钥生成方法,包括:
1、ZUC算法密钥生成装置从高层协议模块获取密钥初始参数;
2、iv计算模块根据Count、Bearer、Direction及密钥模式生成ivi
3、如果是第一次计算si,si计算模块将keyi、ivi和di进行位拼接获得si;si=keyi||di|ivi;否则,si计算模块将si+1赋值给si
4、X计算模块利用si计算Xj
X0=s15H||s14L,X1=s11L||s9H,X2=s7L||s5H,X3=s2L||s0H
5、W计算模块计算W、W1、W2
Figure BDA0000157679390000101
W1=R1+X1
Figure BDA0000157679390000102
其中,R1和R2的初始值为0;
6、R计算模块计算R1、R2
R 1 = Serch ( ( W 1 L | | W 2 H ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 2 ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 10 ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 18 ) &CirclePlus; (
( W 1 L | | W 2 H ) < < < 24 ) )
R 2 = Serch ( ( W 2 L | | W 1 H ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 8 ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 14 ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 22 ) &CirclePlus; (
( W 2 L | | W 1 H ) < < < 30 ) ) ;
7、s16计算模块计算s16并发送到si计算模块;
在算法初始化阶段,
s16=((W>>1)+((215s15+217s13+221s10+220s4+(1+28)s0)mod(231-1)))mod(231-1);在密钥生成阶段,
s16=(215s15+217s13+221s10+220s4+(1+28)s0)mod(231-1);
8、在密钥生成阶段,密钥生成模块生成密钥KEY_ZUC,在算法初始化阶段,判断步骤3~7的执行次数是否达到预设的算法初始化迭代次数N,如果是,设定当前算法阶段为密钥生成阶段;返回步骤3;
9、判断是否需要继续生成密钥,如果需要,返回步骤3,否则结束密钥生成流程;
其中,其中,i=0~15;j=0~3。
优选的,所述步骤7进一步包括:
计算215s15、217s13、221s10、220s4、28s0
将s0与28s0相加得到累加值sum;
将220s4、221s10、217s13、215s15依次累加到sum中;
如果当前阶段为算法初始化阶段,s16=(sum mod(231-1)+(W>>1))mod(231-1);否则,s16=sum mod(231-1);
如果s16为0,设置s16=231-1,发送s16到si计算模块。
优选的,所述步骤7进一步包括:
710、如果是第一次计算s16,乘法单元计算28s0、220s4、221s10,执行步骤711;否则执行步骤715;
711、第一加法器计算A=s0+28s0,第二加法器计算B=221s10+220s4,乘法单元计算28s1、221s11、220s5
712、第三加法器计算C=A+B,第一加法器计算A=s1+28s1、第二加法器计算B=221s11+220s5;乘法单元计算217s13、28s2、221s12、220s6
713、第四加法器计算D=C+217s13、第三加法器计算C=A+B,第一加法器计算A=s2+28s2、第二加法器计算B=221s12+220s6;乘法单元计算215s15、217s14、28s3、221s13、220s7
714、第五加法器计算E=D+215s15;第四加法器计算D=C+217s14、第三加法器计算C=A+B、第一加法器计算A=s3+28s3、第二加法器计算B=221s13+220s7;执行步骤716;
715、第五加法器计算E=D+215s16,第四加法器计算D=C+217s15,第三加法器计算C=A+B,第一加法器计算A=s4+28s4,第二加法器计算B=221s14+220s8
716、如果当前算法阶段为算法初始化阶段,s16=(E mod(231-1)+(W>>1))mod(231-1);否则,s16=E mod(231-1);
717、,如果s16为0,设置s16=231-1;
718、发送s16到si计算模块;
719、乘法单元计算215s16、217s15、28s4、221s14、220s8
其中,各步骤中的A为执行该步骤之前第一加法器的输出,B为执行该步骤之前第二加法器的输出,C为执行该步骤之前第三加法器的输出,D为执行该步骤之前第四加法器的输出,E为执行该步骤之前第五加法器的输出。
本发明的技术方案提供了ZUC算法密钥生成的实现装置,解决了在实际系统中实现ZUC算法密钥生成的问题,本发明的一种优选方案使用一个模块实现了加解密密钥和完整性校验密钥的计算,进一步节约了ZUC算法密钥生成装置的成本,在另一种优选方案中,对于s16的计算实现了流水线操作,从第二次计算s16开始,可以实现一个时钟周期计算出一个s16,提高了密钥生成效率。
附图说明
图1本发明装置优选实施方式结构图
图2本发明装置iv计算模块一种优选实现方案结构图
图3是本发明装置iv计算模块又一种优选实现方案结构图
图4是本发明具体实施例1的s16计算模块结构图
图5是本发明R计算模块一种优选实现方案结构图
图6是发明具体实施例2的s16计算模块结构图
图7是本发明方法优选实施方式流程图
图8是本发明方法s16计算步骤一种优选实现方案流程图
图9是本发明方法s16计算步骤又一种优选实现方案流程图
具体实施方式
为进一步说明本发明的技术方案,下面给出具体实施例并结合附图详细说明。
具体实施例1
本实施例为本发明ZUC算法密钥生成装置的一种优选实施方式,总体结构如图1所示,包括:
接口模块,从高层协议模块获取初始密钥参数;
所述密钥生成参数包括,Count、Bearer、Direction、keyi参数和密钥模式(加解密或完整性校验);
iv计算模块,从接口模块获取Count、Bearer、Direction参数,根据密钥模式计算加解密初始化向量或完整性校验初始化向量;
作为本发明装置的一种优选实现方案,iv计算模块如图2所示,包括,
选择单元,根据密钥模式选择加解密iv计算单元或完整性校验iv计算单元从接口模块接收Count、Bearer、Direction参数并计算对应的ivi
加解密iv计算单元,通过选择单元与接口模块连接,从接口模块接收Count、Bearer、Direction参数并存放到对应的加解密存储单元中;包括,15个加解密存储单元,加解密存储单元i存储对应的ivi,i=0~15;
完整性校验iv计算单元,通过选择单元与接口模块连接,从接口模块接收Count、Bearer、Direction参数,计算并保存完整性校验初始化向量;包括,15个完整性校验存储单元,完整性校验存储单元i存储对应的ivi,i=0~15;iv8计算单元,从完整性校验存储单元0获取iv0,从接口模块获取Direction,计算iv8并存储到完整性校验存储单元8;iv14计算单元,从完整性校验存储单元6获取iv6,从接口模块Direction,计算iv14并存储到完整性校验存储单元14。
作为本发明装置的又一种优选实现方案,iv计算模块如图3所示,包括,
15个iv存储单元,存储单元i存储对应的ivi,i=0~15;
iv8计算单元,从存储单元0获取iv0,从接口模块接收Direction,计算iv8 iv 8 = iv 0 &CirclePlus; { Direction | | 0000000 2 } ;
如果密钥模式为加解密,设置存储单元8=存储单元0,设置存储单元14=存储单元6,设置存储单元4=存储单元12=Bearer||Direction||002;如果密钥模式为完整性校验,设置存储单元8=iv8计算单元输出,设置存储单元14=iv14计算单元输出,设置存储单元4=存储单元12=Bearer||0002
选择单元201,如果密钥模式为加解密,将存储单元0中的数据发送到存储单元8;如果密钥模式为完整性校验,将iv8计算单元的计算结果发送到存储单元8
iv14计算单元,从存储单元6获取iv6,从接口模块接收Direction,计算iv14 iv 14 = iv 6 &CirclePlus; { Direction | | 0000000 2 } ;
选择单元202,如果密钥模式为加解密,将存储单元6中的数据发送到存储单元14;如果密钥模式为完整性校验,将iv14计算单元的计算结果发送到存储单元14;
选择单元203,如果密钥模式为加解密,将Bearer||0002存储到存储单元4和存储单元12;如果密钥模式为完整性校验,将Bearer||Direction||002存储到存储单元4和存储单元12。
si计算模块,用于计算并存储si,包括I个存储单元,存储单元i用于存储si
如果是第一次计算si,从接口模块获取keyi参数,从iv计算模块获取ivi,将keyi||di|ivi存储到存储单元i中;否则,将存储单元i+1中的数据存储到存储单元i中;其中,I=16;i=0~15;
s16计算模块,计算s16并发送计算结果到所述si计算模块的存储单元16中保存;
在算法初始化阶段,
s16=((W>>1)+((215s15+217s13+221s10+220s4+(1+28)s0)mod(231-1)))mod(231-1);
在密钥生成阶段,
s16=(215s15+217s13+221s10+220s4+(1+28)s0)mod(231-1);
本实施例中,s16计算模块如图4所示,包括,
乘法单元,从si计算模块读取s0、s4、s10、s13、s15、计算并保存215s15、217s13、221s10、220s4、28s0
作为本实施例的一种优选实现方案,所述乘法单元可以包括,
移位寄存器401,与所述si计算模块的存储单元0连接,将存储单元0中的数据循环左移8位并保存;
移位寄存器402,与所述si计算模块的存储单元4连接,将存储单元4中的数据循环左移20位并保存;
移位寄存器403,与所述si计算模块的存储单元10连接,将存储单元10中的数据循环左移21位并保存;
移位寄存器404,与所述si计算模块的存储单元13连接,将存储单元13中的数据循环左移17位并保存;
移位寄存器405,与所述si计算模块的存储单元15连接,将存储单元15中的数据循环左移15位并保存;
所述乘法单元也可以采用本发明技术领域的其他方式实现,本发明对所述乘法单元的具体实现形式没有限制;
选择器406,与所述si计算模块的存储单元0、所述乘法单元以及加法器407连接,根据加法器407已执行加法的次数从si计算模块的存储单元0、乘法单元保存的数据以及加法器407的输出中选择加法器407的输入;
其中,加法器407已执行加法的次数为5k时,选择存储单元0的数据和28s0;加法器407已执行加法的次数为5k+1时,选择加法器407的输出和220s4,加法器407已执行加法的次数为5k+2时,选择加法器407的输出和221s10;加法器407已执行加法的次数为5k+3时,选择加法器407的输出和217s13;加法器407已执行加法的次数为5k+4时,选择加法器407的输出和215s15
加法器407,对所述选择器406选择的输入数据进行加法计算并将计算结果输出到所述选择器406和取模单元408;
取模单元408,当加法器407已执行加法的次数为5(k+1)时,对加法器407的输出执行mod(231-1)操作;
移位寄存器409,在算法初始化阶段,从所述W计算模块接收W,将W右移1位保存;
加法器410,在算法初始化阶段,,将取模单元408计算结果与移位寄存器409的输出相加;
取模单元411,对加法器410的输出执行mod(231-1)操作;
选择器412,在算法初始化阶段,选择取模单元411的输出发送到s16输出单元,在密钥生成阶段,选择取模单元408的输出发送到s16输出单元;
s16输出单元,判断选择器412输出的数据是否为0,如果是,s16=231-1;否则将选择器412输出的数据作为s16;发送s16到si计算模块的存储单元16;
其中,k为大于或等于0的整数。
X计算模块,从si存储模块读取si,计算Xj并存储;j=0~3;
其中,X0=s15H||s14L,X1=s11L||s9H,X2=s7L||s5H,X3=s2L||s0H;W计算模块,从X计算模块和R计算模块读取Xj和R1、R2,计算W、W1、W2;其中, W = ( X 0 &CirclePlus; R 1 ) + R 2 ; W1=R1+X1 W 2 = R 2 &CirclePlus; X 2 ;
R计算模块,存储R1、R2,从所述W计算模块获取数据,计算R1、R2并更新所存储的R1、R2;其中,
R 1 = Serch ( ( W 1 L | | W 2 H ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 2 ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 10 ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 18 ) &CirclePlus; (
( W 1 L | | W 2 H ) < < < 24 ) )
R 2 = Serch ( ( W 2 L | | W 1 H ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 8 ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 14 ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 22 ) &CirclePlus; (
( W 2 L | | W 1 H ) < < < 30 ) ) ;
作为本发明装置的一种优选实现方案,R计算模块如图5所示,包括,
优选的,所述R计算模块进一步包括:
数据拼接单元1,与所述W计算模块连接,执行W1L||W2H操作;
数据拼接单元2,与所述W计算模块连接,执行W2L||W1H操作;
移位寄存单元1,计算并保存W1L||W2H<<<2、W1L||W2H<<<10、W1L||W2H<<<18、W1L||W2H<<<24;
移位寄存单元2,计算并保存W2L||W1H<<<8、W2L||W1H<<<14、W2L||W1H<<<18、W2L||W1H<<<30;
异或器1,将数据拼接单元1的输出与移位寄存单元1中的数据进行异或;
异或器2,将数据拼接单元2的输出与移位寄存单元2中的数据进行异或;
查表单元,保存R参数表,根据异或器1的输出从R参数表中获取R1,根据异或器2的输出从R参数表中获取R2;将R1、R2发送到R存储单元;
R存储单元,保存R1、R2;其中,在首次计算R1、R2之前,R1、R2的初始值为0;
密钥生成模块,在密钥生成阶段从所述X计算单元获取X3,从所述W计算单元获取W,生成密钥KEY_ZUC, KEY _ ZUC = X 3 &CirclePlus; W .
具体实施例2
本实施例为本发明ZUC算法密钥生成装置的又一种优选实施方式,总体结构如图1所示,其中,接口模块、iv计算模块、si计算模块、X计算模块、W计算模块、R计算模块、密钥生成模块可以采用与具体实施例1中相同的模块结构。
S16计算模块结构如图6所示,包括:
乘法单元401,从所述si计算模块选择一个si,计算并保存28si;当加法器406已执行加法的次数小于4时,i=加法器406已执行加法的次数,否则,i=4;
乘法单元402,从所述si计算模块选择一个si,计算并保存220si;当加法器407已执行加法的次数小于4时,i=加法器407已执行加法的次数+4,否则,i=8;
乘法单元403,从所述si计算模块选择一个si,计算并保存221si;当加法器407已执行加法的次数小于4时,i=加法器407已执行加法的次数+10,否则,i=14;
乘法单元404,从所述si计算模块选择一个si,计算并保存217si;当加法器409已执行加法的次数小于2时,i=加法器409已执行加法的次数+13,否则,i=15;
乘法单元405,从所述si计算模块选择一个si,计算并保存215si;当加法器410已执行加法的次数小于1时,i=15,否则,i=16;
加法器406,将乘法单元401的数据和乘法单元401选择的si相加;
加法器407,将乘法单元402和乘法单元403的数据相加;
加法器408,将加法器406的计算结果和加法器407的计算结果相加;
加法器409,将加法器408的计算结果和乘法单元404的数据相加;
加法器410,将加法器409的计算结果和乘法单元405的数据相加;
取模单元411,对加法器410的计算结果执行mod(231-1)操作;
移位寄存器412,在算法初始化阶段,从所述W计算模块接收W,将W右移1位保存;
加法器413,在算法初始化阶段,将取模单元411计算结果与移位寄存器412的输出;
取模单元414,对加法器413的计算结果执行mod(231-1)操作;
选择器415,在算法初始化阶段,选择取模单元414的输出发送到s16输出单元;在密钥生成阶段,选择取模单元411的输出发送到s16输出单元;
s16输出单元,判断选择器415输出的数据是否为0,如果是,s16=231-1;否则将选择器415输出的数据作为s16;发送s16到si计算模块的存储单元16。
本实施例中,s16计算模块采用流水线计算的方式,在经过前4个时钟周期计算出第一个s16后,每个时钟周期都能生成一个s16,提高了装置的运行效率。
需要说明的是,本发明各实施例中各模块中的多个存储单元可以是物理上独立的多个存储单元,也可以是一个物理存储单元的多个逻辑划分,本发明对存储单元的具体形式没有限制。
具体实施例3
本实施例为本发明ZUC算法密钥生成方法的一种优选实施方式,本是实施例的密钥生成方法与具体实施例1所述装置相匹配;总体流程如图7所示。
1、ZUC算法密钥生成装置从高层协议模块获取初始密钥参数;
2、iv计算模块根据Count、Bearer、Direction及密钥模式计算各ivi
具体计算方法为:
如果密钥模式为加解密,将Count[7:0]存入iv0和iv8对应的存储单元;将Count[15:8]存入iv1和iv9对应的存储单元;将Count[23:16]存入iv2和iv10对应的存储单元;将Count[31:24]存入iv3和iv11对应的存储单元;iv4对应的存储单元的比特3~5和iv12对应的存储单元的比特3~5存储Bearer,iv4对应的存储单元的比特2和iv12对应的存储单元的比特2存储Direction,iv4对应的存储单元的比特0~1和iv12对应的存储单元的比特0~1设置为002;其余存储单元设置为0;
如果密钥模式为完整性校验,将Count[7:0]存入iv0对应的存储单元;将Count[15:8]存入iv1和iv9对应的存储单元;将Count[23:16]存入iv2和iv10对应的存储单元;将Count[31:24]存入iv3和iv11对应的存储单元;iv4对应的存储单元的比特3~5和iv12对应的存储单元的比特3~5存储Bearer,iv4对应的存储单元的比特0~2和iv12对应的存储单元的比特0~1设置为0002;将iv0对应的存储单元的数据与Direction||00000002异或的结果存入iv8对应的存储单元;将iv6对应的存储单元的数据与Direction||00000002异或的结果存入iv14对应的存储单元;其余存储单元设置为0;
其中,i=0~15;
3、如果是第一次计算si,si计算模块将keyi、ivi和di进行位拼接获得si;si=keyi|di||ivi;否则,si计算模块将si+1赋值给si
4、X计算模块利用si计算Xj,j=0~3;
X0=s15H||s14L,X1=s11L||s9H,X2=s7L||s5H,X3=s2L||s0H
5、W计算模块计算W、W1、W2
Figure BDA0000157679390000211
W1=R1+X1其中,R1和R2的初始值为0;
6、R计算模块计算R1、R2
R 1 = Serch ( ( W 1 L | | W 2 H ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 2 ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 10 ) &CirclePlus; ( ( W 1 L | | W 2 H ) < < < 18 ) &CirclePlus; (
( W 1 L | | W 2 H ) < < < 24 ) )
R 2 = Serch ( ( W 2 L | | W 1 H ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 8 ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 14 ) &CirclePlus; ( ( W 2 L | | W 1 H ) < < < 22 ) &CirclePlus; (
( W 2 L | | W 1 H ) < < < 30 ) ) ;
7、s16计算模块计算s16并发送到si计算模块;本步骤流程如图8所示;
701、计算215s15、217s13、221s10、220s4、28s0
702、s16计算模块的加法器将s0与28s0相加;
703、s16计算模块的加法器将步骤702的结果与220s4相加;
704、s16计算模块的加法器将步骤703的结果与221s10相加;
705、s16计算模块的加法器将步骤704的结果与217s13相加;
706、s16计算模块的加法器将步骤705的结果与215s15相加;
707、在算法初始化阶段,s16=(步骤706的结果mod(231-1)+(W>>1))mod(231-1);在密钥生成阶段,s16=步骤706的结果mod(231-1);
708、判断s16是否为0,如果是,设置s16=231-1;
709、输出s16到si计算模块。
8、在密钥生成阶段,密钥生成模块生成密钥KEY_ZUC,
Figure BDA0000157679390000217
在算法初始化阶段,判断步骤3~7已执行次数是否达到预设的算法初始化迭代次数N,如果是,设置当前算法阶段为密钥生成阶段;返回步骤3;
9、判断是否需要继续生成密钥,如果需要,返回步骤3,否则结束密钥生成流程。
具体实施例4
本实施例为本发明ZUC算法密钥生成方法的又一种优选实施方式,本是实施例的密钥生成方法与具体实施例2所述装置相匹配;总体流程如图7所示。
步骤1~6与具体实施例3相同;
7、s16计算模块计算s16并发送到si计算模块;本步骤流程如图9所示;
710、如果是第一次计算s16,乘法单元计算28s0、220s4、221s10,执行步骤711;否则,执行步骤715;
711、第一加法器计算A=s0+28s0,第二加法器计算B=221s10+220s4,乘法单元计算28s1、221s11、220s5
712、第三加法器计算C=A+B,第一加法器计算A=s1+28s1、第二加法器计算B=221s11+220s5;乘法单元计算217s13、28s2、221s12、220s6
713、第四加法器计算D=C+217s13、第三加法器计算C=A+B,第一加法器计算A=s2+28s2、第二加法器计算B=221s12+220s6;乘法单元计算215s15、217s14、28s3、221s13、220s7
714、第五加法器计算E=D+215s15;第四加法器计算D=C+217s14、第三加法器计算C=A+B、第一加法器计算A=s3+28s3、第二加法器计算B=221s13+220s7;执行步骤716;
715、第五加法器计算E=D+215s16,第四加法器计算D=C+217s15,第三加法器计算C=A+B,第一加法器计算A=s4+28s4,第二加法器计算B=221s14+220s8
716、如果当前算法阶段为算法初始化阶段,s16=(E mod(231-1)+(W>>1))mod(231-1);否则,s16=E mod(231-1);
717、,如果s16为0,设置s16=231-1;
718、发送s16到si计算模块;
719、乘法单元计算215s16、217s15、28s4、221s14、220s8
其中,各步骤中的A为执行该步骤之前第一加法器的输出,B为执行该步骤之前第二加法器的输出,C为执行该步骤之前第三加法器的输出,D为执行该步骤之前第四加法器的输出,E为执行该步骤之前第五加法器的输出。
步骤8~9与具体实施例3相同;
本领域的一般技术人员显然应该清楚并且理解,本发明方法所举的以上实施例仅用于说明本发明方法,而并不用于限制本发明方法。在不背离本发明方法的精神及其实质的情况下,本领域技术人员当可根据本发明方法做出各种相应的改变或变形,但这些相应的改变或变形均属于本发明方法的权利要求保护范围。

Claims (9)

1.一种祖冲之ZUC算法密钥生成装置,其特征在于,包括:
接口模块,从高层协议模块获取初始密钥参数;
iv计算模块,从接口模块获取加密计数器Count、无线承载标识Bearer、传输方向Direction、密钥模式参数,根据密钥模式计算加解密初始化向量或完整性校验初始化向量ivi
si计算模块,包括I个存储单元,存储单元i用于存储存储移位值si
如果是第一次计算si,从接口模块获取密钥计算参数keyi,从iV计算模块获取ivi,si=keyi||di|ivi;否则,si=si+1;其中,I=16;i=0~15;di为算法固定参数;
s16计算模块,计算s16并发送计算结果到所述si计算模块的存储单元16中保存;
X计算模块,从si存储模块获得数据,计算重组值Xj;j=0~3;
W计算模块,从X计算模块和R计算模块获得数据,计算密钥生产值W和中间变量W1、W2
其中,随机变换值R1、R2的初始值为0;
R计算模块,从所述W计算模块获取W1、W2,计算R1、R2
密钥生成模块,在密钥生成阶段从所述X计算单元获取X3,从所述W计算单元获取W,生成密钥KEY_ZUC,
Figure FDA0000157679380000011
其中,||为比特拼接操作,
Figure FDA0000157679380000012
为异或操作。
2.根据权利要求1所述的装置,其特征在于,所述iv计算模块包括:
选择单元,从接口模块接收Count、Bearer、Direction参数,根据密钥模式选择加解密iv计算单元或完整性校验iv计算单元计算对应的ivi
加解密iv计算单元,包括,15个加解密存储单元,加解密存储单元i存储对应的ivi,i=0~15;通过选择单元与接口模块连接,从接口模块接收Count、Bearer、Direction并存放到对应的加解密存储单元中;
完整性校验iv计算单元,通过选择单元与接口模块连接,从接口模块接收Count、Bearer、Direction,计算并保存完整性校验初始化向量;包括,15个完整性校验存储单元,完整性校验存储单元i存储对应的ivi,i=0~15;iv8计算单元,从完整性校验存储单元0获取iv0,从接口模块获取Direction,计算iv8并存储到完整性校验存储单元8;iv14计算单元,从完整性校验存储单元6获取iv6,从接口模块获取Direction,计算iv14并存储到完整性校验存储单元14。
3.根据权利要求1所述的装置,其特征在于,所述iv计算模块包括:
15个iv存储单元,存储单元i存储对应的ivi,i=0~15;
iv8计算单元,从存储单元0获取iv0,从接口模块接收Direction,计算iv8 iv 8 = iv 0 &CirclePlus; { Direction | | 0000000 2 } ;
iv14计算单元,从存储单元6获取iv6,从接口模块接收Direction,计算iv14 iv 14 = iv 6 &CirclePlus; { Direction | | 0000000 2 } ;
选择单元,如果密钥模式为加解密,将存储单元0的数据保存发送到存储单元8=,将存储单元6的数据保存发送到存储单元14,将Bearer||Direction||002保存到存储单元4和存储单元12=Bearer||Direction||002;如果密钥模式为完整性校验,设置iv8计算单元输出发送到存储单元8,将iv14计算单元输出发送到存储单元14,将Bearer||0002保存到存储单元4和存储单元12。
4.根据权利要求1所述的装置,其特征在于,所述R计算模块包括:
第一数据拼接单元,计算W1L||W2H操作;
第二数据拼接单元,计算W2L||W1H操作;
第一移位寄存单元,计算并保存W1L||W2H<<<2、W1L||W2H<<<10、W1L||W2H<<<18、W1L||W2H<<<24;
第二移位寄存单元,计算并保存W2L||W1H<<<8、W2L||W1H<<<14、W2L||W1H<<<18、W2L||W1H<<<30;
第一异或器,将第一数据拼接单元的输出与第一移位寄存单元中的数据进行异或;
第二异或器,将第二数据拼接单元的输出与第二移位寄存单元中的数据进行异或;
查表单元,保存R参数表,根据第一异或器的输出从R参数表中获取R1,根据第二异或器的输出从R参数表中获取R2;将R1、R2发送到R存储单元;
R存储单元,保存R1、R2;R1、R2的初始值为0;
其中,W1H为W1的高16位,W1L为W1的低16位;W2H为W2的高16位,W2L为W2的低16位;<<<为向左循环移位操作,<<<后的数字表示移位的位数。
5.根据权利要求1~4中任一项所述的装置,其特征在于,所述s16计算模块包括:
乘法单元,从si计算模块读取s0、s4、s10、s13、s15、计算215s15、217s13、221s10、220s4、28s0
第一选择器,与所述si计算模块的存储单元0、所述乘法单元以及第一加法器的输出连接,根据第一加法器已执行加法的次数选择第一加法器的输入;
其中,第一加法器已执行加法的次数为5k时,选择存储单元0的数据和28s0;第一加法器已执行加法的次数为5k+1时,选择第一加法器的输出和220s4,第一加法器已执行加法的次数为5k+2时,选择第一加法器的输出和221s10;第一加法器已执行加法的次数为5k+3时,选择第一加法器的输出和217s13;第一加法器已执行加法的次数为5k+4时,选择第一加法器的输出和215s15
第一加法器,对所述第一选择器选择的输入数据进行加法计算并将计算结果输出到所述第一选择器和第一取模单元;
第一取模单元,当第一加法器已执行加法的次数为5(k+1)时,对第一加法器的输出执行mod(231-1)操作;
移位寄存器,在算法初始化阶段,从所述W计算模块接收W,将W右移1位保存;
第二加法器,将第一取模单元的输出与移位寄存器的输出相加;
第二取模单元,对第二加法器的输出执行mod(231-1)操作;
第二选择器,在算法初始化阶段选择第二取模单元的输出发送到s16输出单元,在密钥生成阶段选择第一取模单元的输出发送到s16输出单元;
s16输出单元,判断第二选择器的输出是否为0,如果是,s16=231-1;否则将第二选择器的输出作为s16;发送s16到si计算模块的存储单元16;
其中,mod()为取模操作。
6.根据权利要求1~4中任一项所述的装置,其特征在于,所述s16计算模块包括:
第一乘法单元,计算28si;当第一加法器已执行加法的次数小于4时,i=第一加法器已执行加法的次数,否则,i=4;
第二乘法单元,计算220si;当第二加法器已执行加法的次数小于4时,i=第二加法器已执行加法的次数+4,否则,i=8;
第三乘法单元,计算221si;当第二加法器已执行加法的次数小于4时,i=第二加法器已执行加法的次数+10,否则,i=14;
第四乘法单元,计算217si;当第四加法器已执行加法的次数小于2时,i=第四加法器已执行加法的次数+13,否则,i=15;
第五乘法单元,计算215si;当第五加法器已执行加法的次数小于1时,i=15,否则,i=16;
第一加法器,将第一乘法单元的输出和第一乘法单元使用的si相加;
第二加法器,将第二乘法单元的输出和第三乘法单元的输出相加;
第三加法器,将第一加法器的输出和第二加法器的输出相加;
第四加法器,将第三加法器的输出和第四乘法单元的输出相加;
第五加法器,将第四加法器的输出和第五乘法单元的输出相加;
第一取模单元,对第五加法器的输出执行mod(2311)操作;
移位寄存器,在算法初始化阶段,从所述W计算模块接收W,将W右移1位保存;
第六加法器,将第一取模单元的输出与移位寄存器的输出相加;
第二取模单元,对第六加法器的输出执行mod(231-1)操作;
选择器,在算法初始化阶段选择第二取模单元的输出发送到s16输出单元,在密钥生成阶段选择第一取模单元的输出发送到s16输出单元;
s16输出单元,判断选择器的输出是否为0,如果是,s16=231-1;否则将选择器的输出作为s16;发送s16到si计算模块的存储单元16;
其中,mod()为取模操作。
7.一种祖冲之ZUC算法密钥生成方法,其特征在于,包括:
ZUC算法密钥生成装置从高层协议模块获取密钥初始参数;
iv计算模块根据加密计数器Count、无线承载标识Bearer、传输方向Direction及密钥模式生成初始化向量ivi
如果是第一次计算存储移位值si,si计算模块将密钥计算参数keyi、ivi和算法固定参数di进行位拼接获得si;si=keyi||di|ivi;否则,si计算模块将si+1赋值给si;i=0~15;
X计算模块利用si计算重组值Xj;j=0~3;
W计算模块计算密钥生成密钥生产值W和中间变量W1、W2
Figure FDA0000157679380000061
W1=R1+X1
Figure FDA0000157679380000062
其中,随机变换值R1、R2的初始值为0;
R计算模块计算R1、R2
s16计算模块计算s16并发送到si计算模块;
在密钥生成阶段,密钥生成模块生成密钥KEY_ZUC,
Figure FDA0000157679380000063
在算法初始化阶段,判断算法初始化迭代计算次数否达到预设的算法初始化迭代次数N,如果是,设定当前算法阶段为密钥生成阶段;返回计算si步骤;其中,||为比特拼接操作,
Figure FDA0000157679380000064
为异或操作。
8.根据权利要求7所述的方法,其特征在于,所述s16计算模块计算s16并发送到si计算模块包括:
计算215s15、217s13、221s10、220s4、28s0
将s0与28s0相加得到累加值sum;
将220s4、221s10、217s13、215s15依次累加到sum中;
如果当前阶段为算法初始化阶段,s16=(sum mod(231-1)+(W>>1))mod(231-1);否则,s16=sum mod(231-1);
如果s16为0,设置s16=231-1,发送s16到si计算模块;
其中,mod()为取模操作;所述>>1为右移1比特操作。
9.根据权利要求7所述的方法,其特征在于,所述s16计算模块计算s16并发送到si计算模块包括:
步骤710、如果是第一次计算s16,乘法单元计算28s0、220s4、221s10,执行步骤711;否则执行步骤715;
步骤711、第一加法器计算A=s0+28s0,第二加法器计算B=221s10+220s4,乘法单元计算28s1、221s11、220s5
步骤712、第三加法器计算C=A+B,第一加法器计算A=s1+28s1、第二加法器计算B=221s11+220s5;乘法单元计算217s13、28s2、221s12、220s6
步骤713、第四加法器计算D=C+217s13、第三加法器计算C=A+B,第一加法器计算A=s2+28s2、第二加法器计算B=221s12+220s6;乘法单元计算215s15、217s14、28s3、221s13、220s7
步骤714、第五加法器计算E=D+215s15;第四加法器计算D=C+217s14、第三加法器计算C=A+B、第一加法器计算A=s3+28s3、第二加法器计算B=221s13+220s7;执行步骤716;
步骤715、第五加法器计算E=D+215s16,第四加法器计算D=C+217s15,第三加法器计算C=A+B,第一加法器计算A=s4+28s4,第二加法器计算B=221s14+220s8
步骤716、如果当前算法阶段为算法初始化阶段,s16=(E mod(231-1)+(W>>1))mod(231-1);否则,s16=E mod(231-1);
步骤717、如果s16为0,设置s16=231-1;
步骤718、发送s16到si计算模块;
步骤719、乘法单元计算215s16、217s15、28s4、221s14、220s8
其中,各步骤中的A为执行该步骤之前第一加法器的输出,B为执行该步骤之前第二加法器的输出,C为执行该步骤之前第三加法器的输出,D为执行该步骤之前第四加法器的输出,E为执行该步骤之前第五加法器的输出;
其中,mod()为取模操作;所述>>1为右移1比特操作。
CN201210126073.6A 2012-04-26 2012-04-26 祖冲之算法密钥生成装置及方法 Active CN102684870B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210126073.6A CN102684870B (zh) 2012-04-26 2012-04-26 祖冲之算法密钥生成装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210126073.6A CN102684870B (zh) 2012-04-26 2012-04-26 祖冲之算法密钥生成装置及方法

Publications (2)

Publication Number Publication Date
CN102684870A true CN102684870A (zh) 2012-09-19
CN102684870B CN102684870B (zh) 2015-01-07

Family

ID=46816274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210126073.6A Active CN102684870B (zh) 2012-04-26 2012-04-26 祖冲之算法密钥生成装置及方法

Country Status (1)

Country Link
CN (1) CN102684870B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103260154A (zh) * 2013-01-31 2013-08-21 上海铭源数码股份有限公司 一种基于128-eia3的完整性保护增强方法
CN103813313A (zh) * 2012-11-07 2014-05-21 中国科学院微电子研究所 一种祖冲之算法的硬件实现装置及方法
CN110795762A (zh) * 2019-10-30 2020-02-14 贵州大学 基于流密码的保留格式加密方法
CN114553424A (zh) * 2022-02-21 2022-05-27 南京航空航天大学 Zuc-256流密码轻量级硬件系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101841415A (zh) * 2009-12-29 2010-09-22 中国科学院软件研究所 一种面向字的密钥流生成方法及加密方法
CN101923802A (zh) * 2009-06-12 2010-12-22 中国科学院数据与通信保护研究教育中心 一种序列密码实现方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923802A (zh) * 2009-06-12 2010-12-22 中国科学院数据与通信保护研究教育中心 一种序列密码实现方法和装置
CN101841415A (zh) * 2009-12-29 2010-09-22 中国科学院软件研究所 一种面向字的密钥流生成方法及加密方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
3GPP: "Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. Document 1: 128-EEA3 and 128-EIA3 Specification", 《ETSI/SAGE SPECIFICATION VERSION 1.6》 *
3GPP: "Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. Document 2: ZUC Specification", 《ETSI/SAGE SPECIFICATION VERSION 1.6》 *
L. WANG等: "Evaluating Optimized Implementations of Stream Cipher ZUC Algorithm on FPGA", 《INFORMATION AND COMMUNICATIONS SECURITY》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103813313A (zh) * 2012-11-07 2014-05-21 中国科学院微电子研究所 一种祖冲之算法的硬件实现装置及方法
CN103813313B (zh) * 2012-11-07 2017-06-06 中国科学院微电子研究所 一种祖冲之算法的硬件实现装置及方法
CN103260154A (zh) * 2013-01-31 2013-08-21 上海铭源数码股份有限公司 一种基于128-eia3的完整性保护增强方法
CN103260154B (zh) * 2013-01-31 2015-09-16 上海铭源数码股份有限公司 一种基于128-eia3的完整性保护增强方法
CN110795762A (zh) * 2019-10-30 2020-02-14 贵州大学 基于流密码的保留格式加密方法
CN110795762B (zh) * 2019-10-30 2023-04-11 贵州大学 基于流密码的保留格式加密方法
CN114553424A (zh) * 2022-02-21 2022-05-27 南京航空航天大学 Zuc-256流密码轻量级硬件系统
CN114553424B (zh) * 2022-02-21 2024-03-15 南京航空航天大学 Zuc-256流密码轻量级硬件系统

Also Published As

Publication number Publication date
CN102684870B (zh) 2015-01-07

Similar Documents

Publication Publication Date Title
US7933905B2 (en) Universal-hash-function-family calculation unit and shared-key generation system
Gouvêa et al. Efficient software implementation of public-key cryptography on sensor networks using the MSP430X microcontroller
CN103490883B (zh) 一种多变量公钥加密/解密系统及加密/解密方法
CN102684870B (zh) 祖冲之算法密钥生成装置及方法
CN114063973B (zh) 伽罗华域乘法器及纠删编解码系统
JPWO2004001701A1 (ja) 符号演算装置
CN103684749B (zh) 一种基于面积与性能平衡优化的klein加密实现方法
CN112306741B (zh) 一种crc校验方法及相关装置
WO2011153666A1 (zh) 一种s盒构造方法及s盒
CN112367158A (zh) 一种加速sm3算法的方法、处理器、芯片及电子设备
CN115756391A (zh) 用于实现非对称算法rsa模幂计算的硬件电路及方法
CN102184088B (zh) 一种基于串并结合实现有限域乘法的方法及装置
CN107992283A (zh) 一种基于降维实现有限域乘法的方法和装置
US6957243B2 (en) Block-serial finite field multipliers
CN113114462B (zh) 一种应用于ecc安全硬件电路的小面积标量乘电路
CN109933304A (zh) 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法
Panjwani et al. Hardware-software co-design of elliptic curve digital signature algorithm over binary fields
CN112019322B (zh) 密码流生成方法及其装置
CN107431672B (zh) 一种数据加扰方法和加扰装置
CN104753662B (zh) 基于aes算法的加密密钥流产生方法
US11658807B2 (en) Circuit for performing hash algorithm, computing chip, data processing device and method
US7539719B2 (en) Method and apparatus for performing multiplication in finite field GF(2n)
CN105577362B (zh) 一种应用于aes算法的字节替换方法及系统
CN115268839A (zh) 一种以2为基的蒙哥马利模乘方法及装置
CN108989018B (zh) 一种aes加密单元、aes加密电路及加密方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170425

Address after: Nanping Street 400060 Chongqing Nan'an District Nancheng Road No. 199 left attached to the floor 403

Patentee after: Keen (Chongqing) Microelectronics Technology Co.,Ltd.

Address before: 400065 Chongqing Nan'an District huangjuezhen pass Fort Park No. 1

Patentee before: CHONGQING CYIT COMMUNICATION TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right

Effective date of registration: 20181108

Address after: 201203 Building 1, exhibition hall, 2288 lane, 2288 Chong, road, Zhangjiang hi tech park, Shanghai

Patentee after: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

Address before: 400060 Nanping Road 199, Nanping Street, Nan'an District, Chongqing, 403

Patentee before: Keen (Chongqing) Microelectronics Technology Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200601

Address after: 8-07, building 6, ronghuiyuan, airport economic core area, Shunyi District, Beijing

Patentee after: Xin Xin finance leasing (Beijing) Co.,Ltd.

Address before: 201203 Shanghai city Zuchongzhi road Pudong New Area Zhangjiang hi tech park, Spreadtrum Center Building 1, Lane 2288

Patentee before: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201126

Address after: Room 2502, COFCO Plaza, 990 Nanma Road, Nankai District, Tianjin

Patentee after: Xin Xin finance leasing (Tianjin) Co.,Ltd.

Address before: 8-07, building 6, ronghuiyuan, airport economic core area, Shunyi District, Beijing

Patentee before: Xin Xin finance leasing (Beijing) Co.,Ltd.

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20120919

Assignee: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

Assignor: Xin Xin finance leasing (Tianjin) Co.,Ltd.

Contract record no.: X2021110000055

Denomination of invention: Algorithm key generation device and method of Zu Chong

Granted publication date: 20150107

License type: Exclusive License

Record date: 20211227

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230721

Address after: 201203 Shanghai city Zuchongzhi road Pudong New Area Zhangjiang hi tech park, Spreadtrum Center Building 1, Lane 2288

Patentee after: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

Address before: Room 2502, COFCO Plaza, 990 Nanma Road, Nankai District, Tianjin 300100

Patentee before: Xin Xin finance leasing (Tianjin) Co.,Ltd.