文档介绍:。
ZUC算法原理及实现过程
算法设计背景
ZUC算法,即祖冲之算法,是 3GPP机密性算法 EEA3和完整性算法 EIA3 的核心,为中国自主设计的流密码算法。 2009 年 5 月 ZUC算法获 H ;
3、 X 2 s7 L s5 H ;
4、 X3 s2 L s0 H
}
(5)非线性函数 F
非线性函数 F 有 2 个 32 位的存储单元,即 R1 和 R2 。令到 F 的输入为 X 0 ,
X1 和 X 2 ,即为比特重组的前三个输出,然后函数 F 输出一个 32 位字 W 。 F
的详细过程如下:
F X0,X1,X2
{
1、 W
X 0
R1 R2 mod232 ;
2、W1
R1
X1 mod 232 ;
3、W2
R2
X 2 ;
4、 R1
S L1 W1L W2H ;
5、 R2
S L2 W2L W1H
}
(6)S盒
F 函数中包含的 S 盒 S是由 4 个并列的 8×8 的 S 盒组成的
( S S0 , S1, S2 , S3 ),其中 S0 S2 、 S1 S3 。 S0 、 S1 的定义由下面两张表分别
给出:
令 x 为 S0 (或 S1 )的 8 比特输入。将 x 表示成十六进制 x h l ,则在查表
精选资料,欢迎下载
。
时 h 和 l 分别表示 S 盒的第 h 行和第 l 列。(7)线性变换函数
线性变换 L1 和 L2 均为 32 比特字输入到 32 比特字的输出,具体可定义为:
L1 X X X 322 X 3210 X 3218 X 3224
L2 X X X 328 X 3214 X 3222 X 3230
(8)密钥加载
密钥的加载过程将把初始密钥和初始向量扩展为 16 个 31 比特的 LFSR 初
始状态。设 k 为 128 比特的初始密钥, iv 为 128 比特的初始向量,则有:
k k0 k1 k2 k15
iv iv 0 iv1 iv 2 iv15
其中, 0 i 15
同时,设 D 为由 16 个 15 比特长的子数组组成的 240 位常值数组:
D d0 d1 d15
其中,
d02 ;
d12 ;
d22 ;
d32 ;
d42 ;
d52 ;
d62 ;
d72 ;
d82 ;
d92 ;
d102 ;
d112 ;
d122 ;
d132 ;
d142 ;
d152 ;
设 s0 , , s15 为 LFSR 的 16 个单元,则 0 i 15 ,有 si ki di ivi 。
算法的实现过程
ZUC 算法的执行过程主要有四个步骤 : 密钥加载 , 初始化阶段 , 工作阶段和
密钥流产生阶段,具体过程如下 :
(1)密钥加载阶段:
在