ZUC 算法原理及实现过程1
1 算法设计背景ZUC 算法,即祖冲之算法,是 3GPP 机密性算法 EEA3 和完整性算法 EIA3的核心,为中国自主设计的流密码算法
2025 年 5 月 ZUC 算法获得 3GPP 安全算法组 SA 立项,正式申请参加 3GPPLTE 第三套机密性和完整性算法标准的竞选工作
历时两年多的时间,ZUC 算法经过评估,于 2025 年 9 月正式被 3GPPSA全会通过,成为 3GPPLTE 第三套加密标准核心算法
ZUC 算法是中国第一个成为国际密码标准的密码算法
2 算法原理ZUC 是一个面对字的流密码
它采纳 128 位的初始密钥作为输入和一个128 位的初始向量(IV),并输出关于字的密钥流(从而每 32 位被称为一个密钥字)
密钥流可用于对信息进行加密/解密
ZUC 的执行分为两个阶段:初始化阶段和工作阶段
在第一阶段,密钥和初始向量进行初始化,即不产生输出
第二个阶段是工作阶段,在这个阶段,每一个时钟脉冲产生一个 32 比特的密钥输出
(1)运算符说明 整数模 整数比特异或 字符串和 b 的连接 二进制表示的最左 16 位值 二进制表示的最右 16 位值 向左比特的循环移位 向右 1 比特的移位 值分配到对应的值(2)算法结构ZUC 有三个逻辑层,见下图
顶层为一个线性反馈移位寄存器()的16 个赛段,中间层是比特重组(),最下层为一个非线性函数
图 1 ZUC 的整体结构图(3) 线性移位反馈寄存器()具有 16 个 31 比特的单元,每个单元取值均在下面的集合中: 有两种模式的操作,即初始化模式和工作模式
在初始化模式中,接收一个 31 比特的输入,是删除非线性函数的 32 位输出最右边的位得到的
也就是说,可将初始化模式工作原理表示为:LFSRWithInitialisationMode(){1、;2、;3、假如,则设;