SM4(分组密码算法)

SM4 分组密码算法
设计者
中国国家密码管理局
首次发布
2006年 (SMS4)
2012年 (SM4)
类别
对称分组密码
分组大小
128 bit
密钥长度
128 bit
轮数
32
结构
广义 Feistel (类 SMS4)
速度
~2.5 GB/s
标准
GM/T 0002-2012
GB/T 32907-2016
ISO/IEC 18033-3:2019
安全状态
安全

SM4是中国国家密码管理局发布的分组密码算法标准(GM/T 0002-2012),最初作为 WAPI(无线局域网鉴别与保密基础结构)的一部分以 SMS4 的名称发布,2012年更名为 SM4。2016年升为国家标准 GB/T 32907-2016,2019年被纳入 ISO/IEC 国际标准。

算法描述

SM4 使用 128 位分组和 128 位密钥,32 轮非线性迭代,采用广义 Feistel 结构(每次处理 32 位,4 个字):

SM4 轮函数 (i = 0..31): B[i+4] = B[i] ⊕ T(B[i+1] ⊕ B[i+2] ⊕ B[i+3] ⊕ rk[i]) T 函数: T(A) = L(τ(A)) τ 非线性变换 (S-box 代换): 对 32 位输入的每个字节通过 8×8 S-box 代换 L 线性变换: L(B) = B ⊕ (B<<<2) ⊕ (B<<<10) ⊕ (B<<<18) ⊕ (B<<<24) 密文 = (B[35], B[34], B[33], B[32]) # 逆序输出
与 AES-128 对比
特性SM4AES-128
分组大小128 bit128 bit
密钥长度128 bit128 bit
轮数3210
结构广义 FeistelSPN
S-box8×8 (多项式构造)8×8 (GF(2⁸) 逆元)
速度 (软件)~2.5 GB/s~1.8 GB/s (无AES-NI)
速度 (硬件)-~6 GB/s (AES-NI)
标准SCA / ISONIST / ISO
应用
  • WAPI:中国无线局域网安全标准
  • 金融:银联芯片卡、POS 终端
  • 电子政务:政务数据加密
  • 国密 TLS:TLS 协议的国密实现(使用 SM4-GCM/CCM)
  • 区块链:合规区块链平台
参考文献
  1. 国家密码管理局 (2012). "SM4 分组密码算法". GM/T 0002-2012.
  2. 国家标准委 (2016). "信息安全技术 SM4分组密码算法". GB/T 32907-2016.
  3. ISO/IEC 18033-3:2019. "Encryption algorithms — Part 3: Block ciphers".