祖冲之序列密码算法ZUC算法

上传人:m**** 文档编号:487577053 上传时间:2023-12-22 格式:DOC 页数:23 大小:442KB
返回 下载 相关 举报
祖冲之序列密码算法ZUC算法_第1页
第1页 / 共23页
祖冲之序列密码算法ZUC算法_第2页
第2页 / 共23页
祖冲之序列密码算法ZUC算法_第3页
第3页 / 共23页
祖冲之序列密码算法ZUC算法_第4页
第4页 / 共23页
祖冲之序列密码算法ZUC算法_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《祖冲之序列密码算法ZUC算法》由会员分享,可在线阅读,更多相关《祖冲之序列密码算法ZUC算法(23页珍藏版)》请在金锄头文库上搜索。

1、祖冲之序列密码算法第1部分:算法描述1 范围本部分描述了祖冲之序列密码算法,可用于指导祖冲之算法相关产品的研制、检测和使用。2 术语和约定以下术语和约定适用于本部分。2.1比特 bit二进制字符0和1称之为比特。2.2字节 byte由8个比特组成的比特串称之为字节。2.3字 word由2个以上(包含2个)比特组成的比特串称之为字。本部分主要使用31比特字和32比特字。2.4 字表示 word representation本部分字默认采用十进制表示。当字采用其它进制表示时,总是在字的表示之前或之后添加指示符。例如,前缀0x指示该字采用十六进制表示,后缀下角标2指示该字采用二进制表示。2.5 高低

2、位顺序 bit ordering本部分规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。3 符号和缩略语3.1 运算符+ 算术加法运算mod 整数取余运算 按比特位逐位异或运算 模232加法运算 字符串连接符H 取字的最高16比特L 取字的最低16比特k 32比特字右移k位ab 向量a赋值给向量b,即按分量逐分量赋值3.2 符号下列符号适用于本部分:s0,s1,s2,s15线性反馈移位寄存器的16个31比特寄存器单元变量X0,X1,X2,X3比特重组输出的4个32比特字R1, R2非线性函数F的2个32比特记忆单元变量W非线性函数F输出的32比特字Z算法每拍输出的32比特

3、密钥字k初始种子密钥iv初始向量D用于算法初始化的字符串常量3.3 缩略语下列缩略语适用于本部分:ZUC 祖冲之序列密码算法或祖冲之算法LFSR 线性反馈移位寄存器BR 比特重组F 非线性函数4 算法描述4.1 算法整体结构祖冲之算法逻辑上分为上中下三层,见图1。上层是16级线性反馈移位寄存器(LFSR);中层是比特重组(BR);下层是非线性函数F。图 1 祖冲之算法结构图4.2 线性反馈移位寄存器LFSR4.2.1 概述LFSR包括16个31比特寄存器单元变量s0, s1, , s15。LFSR的运行模式有2种:初始化模式和工作模式。4.2.2 初始化模式在初始化模式下,LFSR接收一个31

4、比特字u。u是由非线性函数F的32比特输出W通过舍弃最低位比特得到,即u=W 1。在初始化模式下,LFSR计算过程如下:LFSRWithInitialisationMode(u)(1) v = 215 s15 +217 s13 + 221 s10 + 220 s4 + (1 + 28)s0 mod (231-1);(2) s16=(v+u) mod (231-1);(3) 如果s16=0,则置s16=231-1;(4) (s1, s2, , s15, s16) (s0, s1, , s14, s15)。4.2.3 工作模式在工作模式下,LFSR不接收任何输入。其计算过程如下:LFSRWithW

5、orkMode()(1) s16 = 215 s15 +217 s13 + 221 s10 + 220 s4 + (1 + 28)s0 mod (231-1);(2) 如果s16=0,则置s16=231-1;(3) (s1, s2, , s15, s16) (s0, s1, , s14, s15)。4.3 比特重组BR比特重组从LFSR的寄存器单元中抽取128比特组成4个32比特字X0、X1、X2、X3。BR的具体计算过程如下:BitReconstruction()(1) X0 = s15Hs14L;(2) X1 = s11Ls9H;(3) X2 = s7Ls5H;(4) X3 = s2Ls0

6、H。4.4 非线性函数FF包含2个32比特记忆单元变量R1和R2。F的输入为3个32比特字X0、X1、X2,输出为一个32比特字W。F的计算过程如下:F (X0, X1, X2)(1) W = (X0 R1) R2;(2) W1 = R1 X1;(3) W2 = R2 X2;(4) R1 = S(L1(W1LW2H);(5) R2 = S(L2(W2LW1H)。其中S为32比特的S盒变换,定义在附录A中给出;L1和L2为32比特线性变换,定义如下:L1(X) = X (X 2) (X 10) (X 18) (X 24),L2(X) = X (X 8) (X 14) (X 22) (X 1)。4

7、.6.2 工作阶段首先执行下列过程一次,并将F的输出W舍弃:(1) BitReconstruction();(2) F (X0, X1, X2);(3) LFSRWithWorkMode()。然后进入密钥输出阶段。在密钥输出阶段,每运行一个节拍,执行下列过程一次,并输出一个32比特的密钥字Z:(1) BitReconstruction();(2) Z = F (X0, X1, X2) X3;(3) LFSRWithWorkMode()。附录A(规范性附录)S盒32比特S盒S由4个小的88的S盒并置而成,即S=(S0, S1, S2, S3),其中S0=S2,S1=S3。S0和S1的定义分别见表

8、1和表2。设S0(或S1)的8比特输入为x。将x视作两个16进制数的连接,即x=h|l,则表1 (或表2)中第h行和第l列交叉的元素即为S0(或S1)的输出S0(x)(或S1(x)。设S盒S的32比特输入X和32比特输出Y分别为:X = x0 x1 x2 x3,Y = y0 y1 y2 y3,其中xi和yi均为8比特字节,i = 0, 1, 2, 3。则有yi = Si(xi), i = 0, 1, 2, 3。表1 S0盒0123456789ABCDEF03E725B47CAE0003304D1549809B96DCB17B1BF932AF9D6AA5B82DFC1D0853039024D4E

9、8499E4CED991DDB685488B296EAC3CDC1F81E734369C6B5BDFD396320D4384767DB2A7CFED57C5F32CBB142106559B5E3EF5E314F7F5AA40D8251495FBA581C64A16D517A892241F8CFFD8AE2E01D3AD73B4BDA46EBC9DE9A8F87D73A806F2FC88B1B437F70A2213287CCC3C89C7C39656907BF7EF00B2B975235417961A64C10FEABC2695888AB0A3FBC01894F2E1E5E95DBD0DC1166645CEC59427512F5749CAA23C0E86ABBE2A02E767E644A26CC2939FF1DF6FA36D250689E6271153DD640C4E20FE8E83776B25053F0C30EA70B7A1E8A965F8D271ADB81B3A0F4457A19DFEE783460表2 S1盒0123456789ABCDEF055C263713BC847869F3CDA5B29AAFD7718CC5940CA61A1300E3A8167240F9F84224426689681D9453E

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号