0%

crypto系列9-国产流算法ZUC

ZUC算法

ZUC算法中文称作祖冲之算法,其以中国古代著名数学家祖冲之的拼音(ZU Chongzhi)首字母命名,是中国自主设计的流密码算法,其设计原理和工作模式体现了现代密码学中“混淆-扩散”的核心思想,同时通过三层架构的协同作用实现高效安全的密钥流生成。是移动通信 3GPP加密算法128-EEA3和完整性算法128-EIA3的核心。以下从技术细节展开说明:

一、设计原理:三层架构的协同作用

zuc
ZUC分为3层逻辑, 顶层包含16个31位的线性反馈移位寄存器, 中间层是用于重组的4个32bit值,底层是一个非线性的函数。

1. 线性反馈移位寄存器(LFSR):高周期序列的基石

  • 结构与运算:LFSR由16个31位寄存器单元组成,定义在素域GF(2³¹-1)上,特征多项式为16次本原多项式。其更新规则为:
    [
    s_{16} = (2^{15}s_{15} + 2^{17}s_{13} + 2^{21}s_{10} + 2^{20}s_4 + (1+2^8)s_0) \mod (2^{31}-1)
    ]
    该设计使LFSR生成周期约为2⁴⁹⁶的m序列,具有优良的统计特性和抗线性攻击能力。
  • 模式切换:LFSR分为初始化模式和工作模式。初始化时接收非线性函数F的输出(舍弃最低位)作为输入,通过32轮迭代实现状态随机化;工作模式下无输入,自主更新状态。

2. 比特重组(BR):线性结构的破坏者

  • 数据抽取与重组:从LFSR的16个寄存器中抽取128位,重新组合为4个32位字(X₀、X₁、X₂、X₃)。具体规则为:
    [
    \begin{align*}
    X_0 &= s_{15} \text{的高16位} | s_{14} \text{的低16位} \
    X_1 &= s_{11} \text{的低16位} | s_9 \text{的高16位} \
    X_2 &= s_7 \text{的低16位} | s_5 \text{的高16位} \
    X_3 &= s_2 \text{的低16位} | s_0 \text{的高16位}
    \end{align*}
    ]
    前3个字(X₀、X₁、X₂)输入非线性函数F,第4个字X₃直接参与密钥流生成。
  • 设计目标:通过跨寄存器的位重组,破坏LFSR在素域上的线性结构,为后续非线性处理奠定基础。

3. 非线性函数F:抗攻击能力的核心

  • 组件与运算:F函数包含4个8×8的S盒(S₀、S₁、S₀、S₂,其中S₂=S₀,S₃=S₁)和线性变换L。其运算步骤为:
    1. 输入预处理:将X₀与R₁异或,结果与R₂进行模2³²加法,得到中间值W。
    2. 分支处理
      [
      \begin{align*}
      W_1 &= R_1 + X_1 \mod 2^{32} \
      W_2 &= R_2 \oplus X_2
      \end{align*}
      ]
    3. S盒变换:将W₁的低16位与W₂的高16位拼接后,通过线性变换L₁扩散,再输入S盒;同理处理W₂的低16位与W₁的高16位,通过L₂变换和S盒。
    4. 状态更新
      [
      \begin{align*}
      R_1 &= S(L_1(W_{1L} | W_{2H})) \
      R_2 &= S(L_2(W_{2L} | W_{1H}))
      \end{align*}
      ]
  • 安全特性:S盒提供非线性混淆,线性变换L通过循环移位和异或实现高扩散(如L₁的移位参数为2、10、18、24),有效抵御差分攻击和线性分析。

二、算法介绍

ZUC包含机密性和完整性两种算法。

一、机密性算法(128-EEA3):密钥流驱动的逐位加密

1. 核心原理

128-EEA3采用流密码加密机制,通过ZUC生成的伪随机密钥流与明文逐位异或,实现数据加密。其核心逻辑为:
[
\text{密文} \ C = P \oplus Z
]
其中,(P)为明文,(Z)为密钥流。解密时重复相同过程:(P = C \oplus Z)。

2. 密钥流生成流程

  • 初始化阶段
    使用128位加密密钥(K_{\text{enc}})和128位初始向量(IV)对LFSR进行32轮状态扰动,确保密钥流与初始参数深度关联。初始化完成后,先执行一次工作模式操作,丢弃首个密钥流以消除残留影响。
  • 工作阶段
    每周期生成32位密钥字(Z):
    1. LFSR更新:自主计算新状态(s_{16}),确保序列周期长达(2^{496})。
    2. 比特重组(BR):从LFSR抽取128位,重组为4个32位字(X_0 \sim X_3)。
    3. 非线性函数F:输入(X_0, X_1, X_2)生成32位输出(W),并更新记忆单元(R_1, R_2)。
    4. 密钥流生成:(Z = X_3 \oplus W),确保每一位密钥流与明文一一对应。

3. 安全性保障

  • IV唯一性:(IV)由COUNT(计数器)、BEARER(承载标识)、DIRECTION(传输方向)等参数拼接生成,确保每次通信的密钥流不同,抵抗重放攻击。
  • 密钥流随机性:LFSR在素域(GF(2^{31}-1))上的设计和非线性函数F的混淆扩散,使密钥流难以预测。

二、完整性算法(128-EIA3):哈希-密钥流结合的MAC生成

1. 核心原理

128-EIA3通过消息认证码(MAC)验证数据完整性,其核心逻辑为:
[
\text{MAC} = \text{Hash}(M \oplus Z) \oplus Z_{\text{final}}
]
其中,(M)为消息,(Z)为密钥流,(Z_{\text{final}})为最终密钥字。实际实现中采用迭代哈希与密钥流结合的方式,确保抗篡改能力。

2. MAC生成流程

  • 输入参数
    128位完整性密钥(K_{\text{int}})、(IV)、消息(M)及消息长度(L)(32位表示)。
  • 具体步骤
    1. 消息预处理:将(M)按32位分组,不足补0,得到(M_0, M_1, \dots, M_{m-1})。
    2. 初始化哈希状态:设置32位哈希值(H_0 = 0)。
    3. 迭代计算
      对每个分组(M_i),生成对应密钥字(Z_i),更新哈希状态:
      [
      H_{i+1} = (H_i \oplus M_i) + Z_i \mod 2^{32}
      ]
      (加法运算增强非线性,异或操作确保对消息敏感)。
    4. 最终处理
      引入消息长度(L),计算最终哈希值:
      [
      T = (H_m \oplus L) + Z_m \mod 2^{32}
      ]
      取(T)的低32位作为(\text{MAC})。

3. 安全性保障

  • 密钥流关联:MAC的生成依赖密钥流(Z_i),确保攻击者无法在不掌握(K_{\text{int}})的情况下伪造消息。
  • 长度验证:将消息长度(L)纳入计算,防止长度扩展攻击(即攻击者通过已知MAC伪造更长消息)。

三、机密性与完整性的协同设计

  1. 密钥分离机制
    加密和完整性使用独立密钥((K_{\text{enc}})和(K_{\text{int}})),降低单密钥泄露的风险。例如,在4G网络中,用户平面数据加密用(K_{\text{enc}}),控制平面信令完整性校验用(K_{\text{int}})。
  2. IV共享与唯一性
    两者使用相同(IV)生成方式(基于COUNT等参数),确保同一通信会话的加密与完整性保护同步。(IV)的唯一性由COUNT的单调递增性保证,每次通信使用不同(IV)。
  3. 效率优化
    密钥流生成模块(ZUC)被两者共享,减少重复计算。例如,在5G边缘节点中,加密和完整性校验可复用同一密钥流生成过程,降低处理延迟。

三、实际应用示例

  • 4G LTE网络
    基站与手机通信时,128-EEA3对用户平面的语音、视频数据加密,128-EIA3对控制平面的鉴权消息生成MAC,确保信令未被篡改。
  • 移动支付
    用户通过云闪付APP发送支付指令时,128-EEA3加密卡号和金额,128-EIA3生成MAC验证报文完整性,防止中间人攻击。

四、标准化与演进

  • 国际标准
    128-EEA3和128-EIA3已纳入3GPP LTE(TS 35.221)和ISO/IEC 18033-4国际标准,成为全球通信安全的通用方案。
  • 量子安全扩展
    升级版ZUC-256将密钥长度扩展至256位,增强抗量子攻击能力,计划用于5G和车联网等未来场景。

总结

ZUC的机密性和完整性算法通过密钥流异或加密哈希-密钥流认证的组合,在保障数据安全的同时兼顾效率。其设计体现了现代密码学的核心原则:混淆-扩散(非线性函数F)、密钥分离(加密与完整性独立密钥)和初始化唯一性(动态IV)。这一架构不仅支撑了4G/5G网络的安全运行,也为物联网、金融支付等领域提供了可信赖的安全解决方案。


行动,才不会被动!

欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。

欢迎关注

博客地址: https://fishmwei.github.io

掘金主页: https://juejin.cn/user/2084329776486919