ICs35.040
L80
备 案 号 :36825-2012
中 华 人 民 共 和 国 密 码 行 业 标 准
GlWI/T0002-2012
SM4分 组密码算 法
sM4block cipher algorithm
⒛ 12-OS-21发 布
⒛ 12-0S-21实 施
国家密码管理局
发 布
GM/T 0002-2012
目
次
前 言 ·…… ¨……… ……… …… ……… ……… …… ……… ……… … ………… …… ……… ……… …… Ⅲ
1 范 围 ·……… …¨¨… ……… ……… …… ……… ……… …… …… ……… ……… …… ……… …… … 1
2 术语 和定 义 ……·… …… ¨…… ……… …… ……… …… ……… ……… …… …… ………… …… …… 1
3 符号 和缩 略语 ………… …… ………… …… …… ……… ·… …… ……… ……… …… ……… …… …… 1
4 算 法结 构 ·…… ……·…… ·… ……… …… ……… ……… …… …… ……… ……… …… ……… …… … 1
5 密钥 及 密钥 参 量 ·…… ¨……… ……… ……… ……… …… … ………… …… ……… … …… … ……… 2
6 轮 函数 F… ……… …… ……… ……… …… …… ……… ……… …… ……… …… …… ……… ……… ·2
⒍1牺 鹦 构 …
¨ … … …
6.2 合成 置换 T… ……… …… ……… ……… …
彳
∷∷ ∷∷∷ ∷∷ ∷∷∷ ∷∷∷ ∷∷ ∷∷∷ ∷∷ ∷ ∶
7 算 法描述 ·…… ……·… ……… ……… …… ·…… …… ……… …… ……… …… …… ……… ……… … 3
7,1 加 密算 法 ……… ·… ……… ……… …… ………… … ……… ……… …… …… …… ……… …… … 3
7.2 解 密算 法 …… ·… …… …… …… …… …… ……… …… …… ………… …… …… ……… …… …… 3
7.3 密钥 扩展算 法 ……… …… …… …… …… ·… ……… ……… … ……… ……… …… ……… …… … 3
附录 A(资 料性 附录) 运算 示 例 …… ………… … ·…… …… …… ……… …… ……… ……… …… …… 4
A,1 示 例 1… …… ……… …… ……… ……… … …… … ……… …… ……… …… …… ……… ……… ·4
A。 2 示 例 2… … ……… …… ……… …… ·… …… …… … ……… ……… …… …… …… ……… …… … 5
GM/T0002-2012
亠刖
曰
本标 准依 据 GB/T1.1— ⒛09给 出的规则起 草 。
请注 意本 文件 的某些 内容 可 能涉及 专利 。本 文件 的发 布机 构不 承担识 别 这些专 利 的责任 。
本标 准 的附录 A为 资料性 附录 。
本标 准 由国家密码 管 理局 提 出并 归 口。
本标 准起 草单位 :中 国科 学 院数据 与通信保 护研究 教育 中心 、国家密码 管理局 商用 密码 检测 中心 。
本标 准 主要起 草人 :吕 述望 、李 大为 、张超 、张众 、董芳 、毛颖 颖 、刘 振华 。
GM/T0002— 2012
sM4分 组密码算法
1 范 围
本标 准规定 了 SM4分 组 密码 算法 的算 法结 构 和算 法描述 ,并 给 出了运算示 例 。
本标 准适 用 于密码应 用 中使 用分组 密码 的需 求 。
2 术语 和定 义
下列 术语 和定 义适 用 于本 文件 。
分 组 长 度 bIock length
萜
一个 信 息分组 的 比特 位数 。
密钥 长 度 lIey length
密钥 的 比特位 数 。
密钥 扩展 算 法 key expansion algorithm
将 密钥 变换 为轮密钥 的运算 单元 。
2.1
2,2
2.3
2,4
串
5
6
獭
辆
字
镀
螅
2
2
3
4 算 法结构
文件:
位
出的置换 ,记 为 Sbox(.)。
蜘
SM4密 码算 法是 一个 分组算 法 。该 算 法 的分组 长度 为 128比 特 ,密 钥 长度 为 128比 特 。加 密算 法
与密钥 扩展算 法都 采用 32轮 非线性 迭代 结 构 。数 据解 密 和数据 加 密 的算 法结 构相 同 ,只 是 轮密钥 的使
用顺 序相 反 ,解 密轮密钥 是加 密 轮密钥 的逆 序 。
1
GM/T0002-⒛ 12
5 密钥及 密钥 参量
加 密密钥 长度 为 128比 特 ,表 示 为 MK=(MK。 ,MK1,MK2,MK3),其 中 MK∶ (f=0,1,2,3)为 字 。
,31)为 32比 特字 。轮 密钥 由加 密密钥 生 成 。
轮 密钥 表示 为 ('尼 。,r屁 1,·
FK=(FK。 ,FKl,FK2,FK3)为 系统参数 ,CK=(CK。 ,CK1,· ·、CK31)为 固定参 数 ,用 于 密钥 扩 展
··,r泛 31),其 中 砘
`(J=0,…
算 法 ,其 中 FK氵 (j=0,… ,3)、 CK氵 (J=0,… ,31)为 字 。
6 轮 函数 F
1 轮 函蛰
结 构
设 输 人
为 (X
,Xl,
F(X。 ,j
90∶ 1,∶ 9、
冖″叮轮密钥为 磁∈z:z,
T(X1① X2① X3① 磁)
提
2
合 成 暹
i换 9
爻
T:z:2—
(1)闫 |纟
(r(.))。
桁
硐
蔸 i,厚
)=r('
t据 如 冂
辏
ψ
%
班
l
勇
F
E
_
〓
俚
Ξ
鼓5
L
W
△
7
Ⅲ
μ
3iP唧陬B7d 哗 6
J
冒::目 r`凵 目Ξ鲎
!
6
r
L9/、
0
D6
2B
9C
E4
1E
D蓬
EA
E0
1D
D5
8D
0A
0
l
2
3
4
5
6
7
8
9
A
B
C
D
E
F
2
E9
0E
8A
5D
E2
AF
BN
`
6B
BF
AE
F6
DB
1B
C1
、 囊
A9
1t:l1
C9
q口
F3
1含【7
8R B2 u
`
E8
DA
、 ~D1
讪 迎
C7
FD
DD
CD
38
1A
CA
8E
BC
7B
DC
4D
9B
DE
BB
A5
0C
3A
`
D2
A4
2E
4A
EC
F0
7D
注 :输 入
‘
EF’ ,贝刂经 s盒 后 的值 为表 中第 E行 和第 F列 的值 ,sbo
(2)线 性变换 L
非线性变换r的 输出是线性变换L的 输人。设输人为B∈ z:2,输 出为 C∈ z:2,则 :
C=L(B)=B① (B<<(2)① (B<((10)① (B(<(18)① (B((<24)
GM/T00O2-⒛ 12
7 算 法 描 述
7.1 加密 算 法
本 加 密算法 由 32次 迭代 运算 和 1次 反序 变换 R组 成 。
设明文输人为(XO,Xl,X2,X3)∈ (z:2)4,密 文输出为(y。 ,Yl,Y2,y3)∈ (z:2)4,轮 密钥为 r庀 氵∈犭2,
f=0,1,2,¨ ·,31。 加 密算 法 的运算 过
(1)32次 迭代运 算 :埒 +众 =E
(2)反 序 变换 :(Y。 ,Y1
7.2 解密算法
本算法的解
7.3 密 钥 扩
本 算 法
加 密 密
(KO,K
r乃 氵==Κ
其 中 :
(1)T′
L′ (B)=
(2)系 统
FK。 =(A3B
(3)固 定 参数
密变换结 构 相 同 ,不 同 的仅 是 轮 密钥 的使 用 顺
,使 用 轮 密 钥 序
=(MKO,
氵① T′ (KJ
FKl=(56AA335o),FK2=(677D9197),FK3=(
设 c屁 氵,J为 CKj的
贝刂c乃 氵j=(4j+J)× 7(m。
0,1,· ¨,31;J=0,1,2,3),即 CKj
,c虑 j,2,c乃 氵,3) ∈(z:)4,
固定 参 数 CK扌 (J=0,1,…
00070E15, 1C232A31,
70777E85, 8C939AAl,
E0E7EEF5, FCo3oA11,
50575E65, 6C737A81,
COC7CED5, DCE3EAF1,
30373E45, 4C535A61,
AOA7AEB5,BCC3cAD1,
10171E25, 2C333A41,
383F
A8AFB6BD,c4CBD2D9,
181F262D, 343B4249,
888F969D, A4ABB2B9,
F8FF0-oD, 141B2229,
686F767E), 848B9299,
D8DFE6ED,F4FBo209,
484F565D, 646B7279。
GM/T 0002-2012
A.1 示 例 1
附 录 A
(资 料性 附录 )
运 算 示 例
本 部 分 为 SM4分 组 密 码 算 法 对 一 组 明 文 进 行 加 密 的 运 算 示 例 。
输 入 明 文 :0123456789AB CD EF FE DC BA9876543210
输 入 密 钥 :0123456789AB CD EF FE DC BA9876543210
轮 密 钥 与 每 轮 输 出 状 态 :
'屁
'乃
'花
E0]=F12186F9 XE4]=27FAD345
砘 E1彐 =准 1662B61 XE5]潦 A18B4CB2
E2]=5A6AB19A XE6]=11C1E22A
r尼 E3]=7BA9207冫 XE7]=CC13E2EE
r尼 E4]=367360F4 XE8]=F87C5BD5
[5]==776AOC61 XE9彐 ==33220757
r屁 E6彐 =B6BB89B3 XE10]=77F4C297
r尼 E7]=24763151 XE11]=7A96F2EB
r乃 E8]=A520307C XE12]=27DACO7F
r汔 E9彐 =B7584DBD XE13]=42DDOF19
E10]=C30753ED XE14]=B8A5DA02
r虍 E11]=7EE55B57 XE15彐 =907127FA
r尼 E12彐 ==6988608C) XE16]==8B952B83
r屁 E13]=30D895B7 XE17]=D42B7C59
'尼
'花
E14]=44BA14AF XE18]=2FFC5831
E15]==104495A1 XE19]==F69E6888
r乃 E16]=D120B428XE20彐 =AF2432C4
'乃
匚17]=73B55FA3X匚 21]≡ ED1EC85E ~
'屁
'乃
r乃 匚18]=CC874966 XE22]=55A3BA22
r乃 [19彐 =92244439 X[23]=124B18AA
E20]=E89E641F XE24]=6AE7725F
E21]=98CA015A XE25]=F4CBA1F9
E22]=C7159060 XE26]=1DCDFA10
E23]=99E1FD2E XE27彐 =2FF60603
r乃 E24彐 =B79BD80C XE28]=EFF24FDC
E25]=1D2115BO XE29]=6FE46B75
'屁
'屁
'花
'乃
r乃 E26]=0E228AEB XE30]=893450AD
r乃 [27]=F1780C81 XE31]=7B938F4C
r乃 E28]==428D3654 XE32]==536E4246
r乃 E29]==62293496 XE33]==86B3E94F
r乃 E30]=01CF72E5XE34]=D206965E
E31彐 =912准 A012 XE35彐 =681EDF34
GM/T0002-2012
'乃
输 出 密 文 :681E DF34D206965E86B3E94F536E4246
A,2示 例 2
本 部 分 为 SM4分 组 密 码 算 法 使 用 固 定 的 加 密 密 钥 ,对 一 组 明 文 反 复 加 密 100000o次 的 运 算 示 例 。
输 入 明 文 :0123产 56789AB CD EF FE DC BA9876543210
输 入 密 钥 :0123456789AB CD EF FE DC BA987654321O
输 出 密 文 :595298C7C6FD271FO402F804C33D3F66