算法4_对称加密算法之SM4

算法4_国家密码学SM4(对称加密算法)

SM算法描述

SM4分组密码算法是一个迭代分组密码算法,由加解密算法和密钥扩展算法组成.

对称加密算法明文输入(bit)密文输出(bit)初始密钥长度(bit)回合密钥(bit)迭代次数
SM412812812812832次迭代运算和1次反序变换
AES25612812825612814次(Add Round Key,Sub Byte,Shift Rows,Mix Column)

在这里插入图片描述

上图摘自:吕述望,苏波展,王鹏,毛颖颖,霍利利.SM4分组密码算法综述[J].信息安全研究,2016,2(11):995-1007.

SM4算法加密过程:

基本过程:

​ 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)4Xi4

密 文 输 出 为 ( 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

SM4的迭代运算

迭代的过程:
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)=XiT(Xi+1Xi+2Xi+3Ki)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,线线L,T(.)=L((.))

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.((a0,a1,a2,a3))AESS(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>Z232BZ232L(B)=B(B<<<2)(B<<<10)(B<<<18)(B<<<24)

其 中 < < < 为 循 环 左 移 其中 <<<为循环左移 <<<

SM4的反序变换

( 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的解密过程:

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=KiT(Ki+1Ki+2Ki+3CKi)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=MKjFKjj=0,...,3

固定参数:
在这里插入图片描述

上图摘自:吕述望,苏波展,王鹏,毛颖颖,霍利利.SM4分组密码算法综述[J].信息安全研究,2016,2(11):995-1007.

总结
  1. SM4和AES明文输入和密文输出都是128位
  2. SM4的初始密钥是128位与AES的初始密钥为256位不相同
  3. SM4的迭代次数32+1次反序变换,AES是14次迭代运算
  4. SM4的回合密钥是32位,而AES的回合密钥是128位

参考文献:

[1]吕述望,苏波展,王鹏,毛颖颖,霍利利.SM4分组密码算法综述[J].信息安全研究,2016,2(11):995-1007.

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blockchain410

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值