首页/安全/加密与证书速查/ZUC 祖冲之序列密码
加密算法基础95 条

ZUC 祖冲之序列密码

国密流密码标准(GM/T 0001):由 LFSR、比特重组与非线性函数 F 组成,用于移动通信的 128-EEA3 加密与 128-EIA3 完整性算法。

加密与证书速查安全更新于 2026-10-13

ZUC 是什么

ZUC(祖冲之)是我国自主设计的序列密码算法,2012 年发布为密码行业标准 GM/T 0001,后被 3GPP 采纳为 128-EEA3(空口加密)与 128-EIA3(完整性保护)算法,用于 4G/5G 用户面加密与信令完整性校验。算法分三层:31 级线性反馈移位寄存器(LFSR,定义在 GF(2^31-1) 上)、比特重组层与非线性函数 F。运行时先执行 32 拍初始化并丢弃输出,之后每拍吐出一个 32 位密钥字,与明文异或即得密文。

基本信息

标准编号GM/T 0001(序列密码算法)
国际标准3GPP 128-EEA3 / 128-EIA3
内部结构LFSR + 比特重组 + 非线性函数 F
密钥与 IV均为 128 位
输出32 位密钥字序列;完整性模式生成 32 位 MAC
常见载体移动终端协议栈、通信模组、基站设备

典型使用场景

  • 空口加密:终端与基站之间用 EEA3 保护用户面数据,防止空中接口被窃听。
  • 信令完整性:用 EIA3 校验信令消息,阻止中间人篡改或伪造。
  • 合规选型:通信模组、终端芯片是否支持 ZUC,是国内运营商入网测试的常见项。
  • 实现自检:用标准附录的测试向量验证软硬件实现,逐比特比对加解密结果。
  • 密码方案报审:商密合规项目需要说明 ZUC 的使用位置、密钥来源与密钥管理流程。

参数与运行流程

参数与运行流程
输入:128 位密钥 + 128 位初始向量(IV)
输出:32 位密钥字,按需截取为字节流后与明文异或
初始化:LFSR 与 F 交互运行 32 拍,输出全部丢弃
工作阶段:每拍输出一个密钥字;完整性模式另按消息位宽生成 MAC
密钥与 IV 相同则密钥流完全相同:IV 复用会直接暴露明文异或关系
嵌入设备实现时 S 盒与常量按标准原文取用,不要自行改写

组成部件读法

部件作用关键点
LFSR31 级移位寄存器,每拍推进新状态状态运行在 GF(2^31-1) 上,须保持非零
比特重组 BR从 LFSR 状态抽取 128 位送给 F把线性状态非线性地拼接起来
非线性函数 F含 S 盒与线性变换,产生密钥字决定算法的混淆能力
S 盒8×8 字节代换表按常量表使用,改动后与对端不同步
业务系统通常不直接调用 ZUC:手机、模组与基站由 3GPP 协议栈和基带固件统一实现,上层只配置算法优先级。只有在密码库或专用设备集成时才直接调用,此时应选用取得商用密码检测认证的实现。
软件实现要防侧信道:S 盒查表的缓存访问模式、分支与内存访问都可能在共享硬件上泄露密钥相关信息,高安全场景应使用常数时间实现或硬件密码模块。

易错点

  • 自研实现不做标准向量自检:常量抄错一处就会与对端密钥流不同步,表现为解密全是乱码且难定位。
  • 把 ZUC 当通用文件加密工具:它是面向通信帧的异或流密码,本身不含完整性保护与密钥管理,文件加密应改用 AEAD 模式或专用加密产品。
  • IV 与计数器管理缺失:同密钥同 IV 会产生相同密钥流,两条密文异或即可消掉密钥流。
  • 与 SM4 混淆:前者是序列密码、后者是分组密码,协议中选错算法会直接协商失败。

数据来源与参考

  • GM/T 0001-2012(ZUC 序列密码算法)
  • 3GPP 相关规范(EEA3/EIA3)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌