当前位置:   article > 正文

SM4分组密码算法研究

sm4

SM4算法详解

  分组密码将明文数据按固定长度进行分组,并在同一密钥控制下逐组进行加密,从而将各个明文分组变换成一个个等长的密文分组。
  分组密码的设计一般基于混淆原则和扩散原则。
  混淆原则指的是将密文、明文、密钥三者之间的统计关系和代数关系变得尽可能复杂,使敌手即使获得了密文和明文,也无法求出密钥的任何信息,即使获得了密文和明文的统计规律,也无法求出明文的任何信息。
  扩散原则是将明文的统计规律和结构规律散射到相当长的一段统计中去。即,明文中的每一位会影响密文中的尽可能多的位,或者说让密文中的每一位都受到明文中的尽可能多位的影响。
分组密码主要的应用场景,包括无需进行密钥交换;防止明文传输过程被窃取;数据量大,加解密速度要求快等场景。

SM4算法流程

  SM4算法主要包括异或、移位以及盒变换操作。其中密钥拓展和加/解密为两个主要模块,其流程大同小异。
  其中,移位变换是指循环左移;盒变换将8bit输入映射到8bit输出的变换,是一个固定的变换。
  下图1给出了 SM4算法的加解密(左)和密钥拓展(右)的流程图。

图1. SM4算法实现流程
(1)加/解密模块
  加/解密算法由32次迭代运算和1次反序变换组成,具体步骤如下所述。
  设,明文输入为 ( X 0 , X 1 , X 2 , X 3 ) (X_0, X_1, X_2, X_3) X0,X1,X2,X3 X i X_i Xi为32 比特的数据,密文输出为 ( Y 0 , Y 1 , Y 2 , Y 3 ) (Y_0, Y_1, Y_2, Y_3) Y0,Y1,Y2,Y3,轮密钥为 r k i rk_i rki

  ① 当 i = 0 i=0 i=0 时为第一次轮变换,一直进行到 i = 31 i=31 i=31 结束。
  ②将 X i + 1 , X i + 2 , X i + 3 X_{i+1} , X_{i+2} , X_{i+3} Xi+1,Xi+2,Xi+3 和轮密钥 r k i rk_i rki 异或得到一个 32 32 32 比特的数据,作为盒变换的输入。即, s b o x i n p u t = X i + 1 ⊕ X i + 2 ⊕ X i + 3 ⊕ r k i sbox_{input} = X_{i+1} ⊕ X_{i+2} ⊕ X_{i+3}⊕rk_i sboxinput=Xi+1Xi+2Xi+3rki ⊕ ⊕ 符号代表异或运算。
  ③ 将 s b o x i n p u t sbox_{input} sboxinput 拆分成 4 4 4 8 8 8比特数据,分别进行盒变换,之后再将 4 4 4 8 8 8比特输出合并成一个 32 32 32 比特的 s b o x o u t p u t sbox_{output} sboxoutput
  ④ 将上一步获得的 s b o x o u

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/809762
推荐阅读
相关标签
  

闽ICP备14008679号