ICS35.040
L80
中华人民共和国国家标准
GB/T32907—2016
信息安全技术 SM4分组密码算法
Informationsecuritytechnology—SM4blockcipheralgorithm
2016-08-29发布 2017-03-01实施
中华人民共和国国家质量监督检验检疫总局
中国国家标准化管理委员会发布目 次
前言 Ⅰ …………………………………………………………………………………………………………
1 范围 1 ………………………………………………………………………………………………………
2 术语和定义 1 ………………………………………………………………………………………………
3 符号和缩略语 1 ……………………………………………………………………………………………
4 算法结构 2 …………………………………………………………………………………………………
5 密钥及密钥参量 2 …………………………………………………………………………………………
6 轮函数 F 2 ………………………………………………………………………………………………
6.1 轮函数结构 2 …………………………………………………………………………………………
6.2 合成置换 T 2 ………………………………………………………………………………………
7 算法描述 3 …………………………………………………………………………………………………
7.1 加密算法 3 ……………………………………………………………………………………………
7.2 解密算法 3 ……………………………………………………………………………………………
7.3 密钥扩展算法 3 ………………………………………………………………………………………
附录A(资料性附录) 运算示例 5 …………………………………………………………………………
A.1 示例1 5 ………………………………………………………………………………………………
A.2 示例2 6 ………………………………………………………………………………………………GB/T32907—2016
前 言
本标准按照GB/T1.1—2009给出的规则起草。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别这些专利的责任。
本标准由国家密码管理局提出。
本标准由全国信息安全标准化技术委员会(SAC/TC260)归口。
本标准起草单位:中国科学院数据与通信保护研究教育中心、国家密码管理局商用密码检测中心、
北京信息科学技术研究院。
本标准主要起草人:吕述望、李大为、邓开勇、张超、罗鹏、张众、董芳、毛颖颖、刘振华。
ⅠGB/T32907—2016
信息安全技术 SM4分组密码算法
1 范围
本标准规定了SM4分组密码算法的算法结构和算法描述,并给出了运算示例。
本标准适用于商用密码产品中分组密码算法的实现、检测和应用。
2 术语和定义
下列术语和定义适用于本文件。
2.1
分组长度 blocklength
一个信息分组的比特位数。
2.2
密钥长度 keylength
密钥的比特位数。
2.3
密钥扩展算法 keyexpansionalgorithm
将密钥变换为轮密钥的运算单元。
2.4
轮数 rounds
轮函数的迭代次数。
2.5
轮密钥 roundkey
又称子密钥,在迭代分组密码中每一轮使用的密钥,根据输入密钥用密钥编排算法推导得出。
2.6
字 word
长度为32比特的组(串)。
2.7
S盒 S-box
S盒为固定的8比特输入8比特输出的置换,记为Sbox(.)。
3 符号和缩略语
下列符号和缩略语适用于本文件:
⊕ 32位异或
<<<i32位循环左移i位
Zn
2 比特长度为n的二进制序列集合
1GB/T32907—2016
4 算法结构
SM4密码算法是一个分组算法。该算法的分组长度为128比特,密钥长度为128比特。加密算法
与密钥扩展算法均采用非线性迭代结构,运算轮数均为32轮。数据解密和数据加密的算法结构相同,
只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
5 密钥及密钥参量
密钥长度为128比特,表示为MK=(MK0,MK1,MK2,MK3),其中MKi(i=0,1,2,3)为字。
轮密钥表示为(rk0,rk1,…,rk31),其中rki(i=0,…,31)为32比特字。轮密钥由密钥生成。
FK=(FK0,FK1,FK2,FK3)为系统参数,CK=(CK0,CK1,…,CK31)为固定参数,用于密钥扩
展算法,其中FKi(i=0,…,3)、CKi(i=0,…,31)为字。
6 轮函数 F
6.1 轮函数结构
设输入为(X0,X1,X2,X3)∈(Z32
2)4,轮密钥为rk∈Z32
2,则轮函数F见式(1):
F(X0,X1,X2,X3,rk)=X0⊕T(X1⊕X2⊕X3⊕rk)………………(1)
6.2 合成置换 T
T:Z32
2→Z32
2是一个可逆变换,由非线性变换τ和线性变换L复合而成,即T(.)=L(τ(.))。
a) 非线性变换τ
τ由4个并行的S盒构成。
设输入为A=(a0,a1,a2,a3)∈(Z8
2)4,输出为B=(b0,b1,b2,b3)∈(Z8
2)4,则见式(2):
(b0,b1,b2,b3)=τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3))…………(2)
式中,Sbox数据见表1。
表1 Sbox数据
0123456789ABCDEF
0D690E9FECCE13DB716B614C228FB2C05
12B679A762ABE04C3AA44132649860699
29C4250F491EF987A33540B43EDCFAC62
3E4B31CA9C908E89580DF94FA758F3FA6
44707A7FCF37317BA83593C19E6854FA8
5686B81B27164DA8BF8EB0F4B70569D35
61E240E5E6358D1A225227C3B01217887
7D40046579FD327524C3602E7A0C4C89E
8EABF8AD240C738B5A3F7F2CEF96115A1
9E0AE5DA49B341A55AD933230F58CB1E3
2GB/T32907—2016
表1(续)
0123456789ABCDEF
A1DF6E22E8266CA60C02923AB0D534E6F
BD5DB3745DEFD8E2F03FF6A726D6C5B51
C8D1BAF92BBDDBC7F11D95C411F105AD8
D0AC13188A5CD7BBD2D74D012B8E5B4B0
E8969974A0C96777E65B9F109C56EC684
F18F07DEC3ADC4D2079EE5F3ED7CB3948
例如:输入‘EF’,则经S盒后的值为表中第E行和第F列的值,Sbox(EF)=84。
b) 线性变换L
非线性变换τ的输出是线性变换L的输入。设输入为B∈Z32
2,输出为C∈Z32
2,则见式(3):
C=L(B)=B⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)⊕(B<<<24)……(3)
7 算法描述
7.1 加密算法
本加密算法由32次迭代运算和1次反序变换R组成。
设明文输入为(X0,X1,X2,X3)∈(Z32
2)4,密文输出为(Y0,Y1,Y2,Y3)∈(Z32
2)4,轮密钥为rki∈
Z32
2,i=0,1,2,…,31。加密算法的运算过程如下:
a) 32次迭代运算见式(4):
Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki),i=0,1,…,31……………………(4)
b) 反序变换见式(5):
(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)………………(5)
加密运算过程的示例参见附录A。
7.2 解密算法
本算法的解密变换与加密变换结构相同,不同的仅是轮密钥的使用顺序。解密时,使用轮密钥序
(rk31,rk30,…,rk0)。
7.3 密钥扩展算法
加密过程使用的轮密钥由加密密钥生成,其中加密密钥MK=(MK0,MK1,MK2,MK3)∈
(Z32
2)4,加密过程中的轮密钥生成方法见式(6)和式(7):
(K0,K1,K2,K3)=(MK0⊕FK0,MK1⊕FK1,MK2⊕FK2,MK3⊕FK3)……(6)
rki=Ki+4=Ki⊕T'(Ki+1⊕Ki+2⊕Ki+3⊕CKi),i=0,1,…,31……………(7)
式中:
a) T'是将6.2中合成置换T的线性变换L替换为L',见式(8):
L'(B)=B⊕(B<<<13)⊕(B<<<23) ………………(8)
b) 系统参数FK的取值为:
FK0=(A3B1BAC6),FK1=(56AA3350),FK2=(677D9197),FK3=(B27022DC);
c) 固定参数CK取值方法为:
3GB/T32907—2016
设cki,j为CKi的第j字节(i=0,1,…,31;j=0,1,2,3),即CKi=(cki,0,cki,1,cki,2,cki,3)∈
(Z8
2)4,则cki,j=(4i+j)×7(mod256)。
固定参数CKi(i=0,1,…,31)具体值为:
00070E15,1C232
GB-T 32907-2016 信息安全技术 SM4分组密码算法
文档预览
中文文档
9 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共9页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2025-07-16 21:10:15上传分享