目录
ZUC算法介绍
算法结构
线性反馈移位寄存器LFSR
LFSR初始化模式
LFSR工作模式
比特重组BR
非线性函数F
加密流程
ZUC算法介绍
祖冲之算法集(ZUC算法)是由我国学者自主设计的加密和完整性算法,包括祖冲之算法、加密算法128-EEA3和完整性算法128-EIA3,已经被国际组织3GPP推荐为4G无线通信的第三套国际加密和完整性标准的侯选算法。在日本福冈召开的第53次3GPP系统架构组会议上,我国祖冲之密码算法(ZUC)被批准成为新一代宽带无线移动通信系统(LTE)国际标准。(上述说明来自百度百科)
算法结构
ZUC算法由线性反馈移位寄存器LFSR、比特重组BR、非线性函数F构成(根据GB/T33133.1-2016中所述如下ZUC算法结构图)看不懂暂时没关系,只需要记住总共分为三大步。
ZUC算法结构图
线性反馈移位寄存器LFSR
LFSR分为两种模式:初始化模式、工作模式。
两种模式都是对寄存器S0到S15进行更新。
LFSR初始化模式
LFSR接收1个31比特字 u 的输入,对寄存器单元变量s0,s1,...s15进行更新,计算过程如下:
模2得31次方-1乘法和模2得31次方-1加法的实现自行学习或者参见GB/T33133.1-2016附录B。
LFSR工作模式
和初始模式的区别是没有输入参数u,如下图
比特重组BR
输入为LFSR寄存器单元变量s0,s1,...s15
输出为4个32比特字X0、X1、X2、X3
比特重组就是从LFSR的16个寄存器单元中按一定规则抽取128比特组成4个32比特字X0、X1、X2、X3。
非线性函数F
其中S[参数]指的是S盒代换,其解释如下:
32比特S盒S由4个小的8x8的S盒并置而成,即S=(S0,S1,S2,S3),其中S0=S2,S1=S3。
设S(或S)的8比特输人为x。将x视作两个16进制数的连接,即x=hl.则表中第h行和第l列交叉的元素即为S0或S1)的输出。
设S盒S的32比特输人X和32 比特输出Y分别为:
X=x0 ‖ x1 ‖ x2 ‖ x3
Y=y0 ‖ y1 ‖ y2 ‖ y3
替换前的S=(x0,x1,x2,x3),替换后的S=(y0,y1,y2,y3)
例如:x0经过S0表替换得到y0
S0/S2表
S1/S3表
密钥装入过程
si就是密钥k和初始向量iv分别拆分成16份,再和di共同组成。
加密流程
初始化阶段
工作模式阶段
这里L的值是根据明文长度对32取模后上取整得到的,最后将得到的L个密钥字Z和明文做亦或操作即可得出密文。
参考文献:GB/T33133.1-2016
写作不易,转载请注明,学海无涯,如有错误请小伙伴们不吝赐教。