赞
踩
SM4分组密码算法是一个迭代分组密码算法,由加解密算法和密钥扩展算法组成.
对称加密算法 | 明文输入(bit) | 密文输出(bit) | 初始密钥长度(bit) | 回合密钥(bit) | 迭代次数 |
---|---|---|---|---|---|
SM4 | 128 | 128 | 128 | 128 | 32次迭代运算和1次反序变换 |
AES256 | 128 | 128 | 256 | 128 | 14次(Add Round Key,Sub Byte,Shift Rows,Mix Column) |
上图摘自:吕述望,苏波展,王鹏,毛颖颖,霍利利.SM4分组密码算法综述[J].信息安全研究,2016,2(11):995-1007.
基本过程:
SM4加密过程就是32次迭代运算和1次的反序变换
明
文
输
入
为
(
X
0
,
X
1
,
X
2
,
X
3
)
∈
(
Z
2
32
)
4
X
i
是
明
文
输
入
且
长
度
为
4
字
节
的
连
续
字
节
组
成
明文输入为(X_0,X_1,X_2,X_3)\in {(Z_2^{32})}^4 X_i是明文输入且长度为4字节的连续字节组成
明文输入为(X0,X1,X2,X3)∈(Z232)4Xi是明文输入且长度为4字节的连续字节组成
密 文 输 出 为 ( Y 0 , Y 1 , Y 2 , Y 3 ) ∈ ( Z 2 32 ) 4 , 回 合 密 钥 K i ∈ ( Z 2 32 ) i = 0 , . . . , 31 密文输出为(Y_0,Y_1,Y_2,Y_3)\in {(Z_2^{32})^4},回合密钥K_i\in {(Z_2^{32})} i=0,...,31 密文输出为(Y0,Y1,Y2,Y3)∈(Z232)4,回合密钥Ki∈(Z232)i=0,...,31
迭代的过程:
X
i
+
4
=
F
(
X
i
,
X
i
+
1
,
X
i
+
2
,
X
i
+
3
,
K
i
)
=
X
i
⨁
T
(
X
i
+
1
⨁
X
i
+
2
⨁
X
i
+
3
⨁
K
i
)
i
=
0
,
.
.
.
,
31
X_{i+4}=F(X_i,X_{i+1},X_{i+2},X_{i+3},K_i)=X_i \bigoplus T(X_{i+1}\bigoplus X_{i+2}\bigoplus X_{i+3}\bigoplus K_i) \quad i=0,...,31
Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,Ki)=Xi⨁T(Xi+1⨁Xi+2⨁Xi+3⨁Ki)i=0,...,31
所以最后生成36个32位的迭代结果.
T的运算过程:
T
:
Z
2
32
−
>
Z
2
32
的
可
逆
变
换
,
由
非
线
性
变
换
r
和
线
性
变
换
L
复
合
而
成
,
即
T
(
.
)
=
L
(
r
(
.
)
)
T:Z_2^{32}->Z_2^{32}的可逆变换,由非线性变换r和线性变换L复合而成,即T(.)=L(r(.))
T:Z232−>Z232的可逆变换,由非线性变换r和线性变换L复合而成,即T(.)=L(r(.))
1. r ( ( a 0 , a 1 , a 2 , a 3 ) ) 是 类 似 于 A E S 的 查 S 表 ( S u b B y t e ) 的 过 程 1.r((a_0,a_1,a_2,a_3))是类似于AES的查S表(Sub Byte)的过程 1.r((a0,a1,a2,a3))是类似于AES的查S表(SubByte)的过程
AES之Sub Byte
2.
L
(
.
)
:
Z
2
32
−
>
Z
2
32
假
设
输
入
B
∈
Z
2
32
L
(
B
)
=
B
⨁
(
B
<
<
<
2
)
⨁
(
B
<
<
<
10
)
⨁
(
B
<
<
<
18
)
⨁
(
B
<
<
<
24
)
2.L(.):Z_2^{32}->Z_2^{32} 假设输入B\in Z_2^{32} L(B)=B\bigoplus (B<<<2)\bigoplus (B<<<10)\bigoplus (B<<<18)\bigoplus (B<<<24)
2.L(.):Z232−>Z232假设输入B∈Z232L(B)=B⨁(B<<<2)⨁(B<<<10)⨁(B<<<18)⨁(B<<<24)
其 中 < < < 为 循 环 左 移 其中 <<<为循环左移 其中<<<为循环左移
( Y 0 , Y 1 , Y 2 , Y 3 ) = R ( X 32 , X 33 , X 34 , X 35 ) = ( X 35 , X 34 , X 33 , X 32 ) (Y_0,Y_1,Y_2,Y_3)=R(X_{32},X_{33},X_{34},X_{35})=(X_{35},X_{34},X_{33},X_{32}) (Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)
SM4的解密过程与加密过程是一致的但是回合密钥是反序的
回 合 密 钥 K i ′ ∈ ( Z 2 32 ) i = 31 , . . . , 0 回合密钥K_i^{'} \in {(Z_2^{32})} \quad i=31,...,0 回合密钥Ki′∈(Z232)i=31,...,0
设 加 密 密 钥 为 M K = ( M K 0 , M K 1 , M K 2 , M K 3 ) ∈ ( Z 2 32 ) 4 设加密密钥为MK=(MK_0,MK_1,MK_2,MK_3)\in {(Z_2^{32})}^4 设加密密钥为MK=(MK0,MK1,MK2,MK3)∈(Z232)4
回 合 密 钥 生 成 方 法 为 : K i + 4 = K i ⨁ T ( K i + 1 ⨁ K i + 2 ⨁ K i + 3 ⨁ C K i ) i = 0 , . . . , 31 回合密钥生成方法为:K_{i+4}=K_i \bigoplus T(K_{i+1}\bigoplus K_{i+2}\bigoplus K_{i+3} \bigoplus CK_i) i=0,...,31 回合密钥生成方法为:Ki+4=Ki⨁T(Ki+1⨁Ki+2⨁Ki+3⨁CKi)i=0,...,31
起 始 的 四 个 回 合 密 钥 值 : K j = M K j ⨁ F K j j = 0 , . . . , 3 起始的四个回合密钥值:K_j=MK_j \bigoplus FK_j j=0,...,3 起始的四个回合密钥值:Kj=MKj⨁FKjj=0,...,3
固定参数:
上图摘自:吕述望,苏波展,王鹏,毛颖颖,霍利利.SM4分组密码算法综述[J].信息安全研究,2016,2(11):995-1007.
参考文献:
[1]吕述望,苏波展,王鹏,毛颖颖,霍利利.SM4分组密码算法综述[J].信息安全研究,2016,2(11):995-1007.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。