关于SM3算法的结构与步骤学习

    作者:课课家教育更新于: 2019-01-24 10:25:31

    软考,您想通过吗?一次通过才是硬道理

          SM3算法是Hash算法当中的一种,在信息安全工程师这门课程里也有专门讲到这个算法,不知道你是否了解它的算法结构以及算法步骤呢?没关系,不管你懂还是不懂,都可以跟着小编一起来探讨一下它的真面目。也希望通过这里的小学习使得懂SM3算法的同学更了解它,不懂的同学也能够初步认识它。

      SM3算法是2010年中国国家密码管理局发布的一个商用算法,它的名称为SM3密码杂凑算法,用于密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,多种的密码应用都能满足其安全需求。

          SM3算法采用了典型的Merk1e-Damgård 迭代结构,简称为M-D 结构,结构的图形描述如下图。

     关于SM3算法的结构与步骤学习_信息安全工程师_密码学_Hash函数_SM3算法_课课家

          SM3算法步骤

      1.填充过程

          设消息M的长度为Lbit,首先将bit"1"添加到消息末尾,再加k个“0”,k是满足l+1+k =448 mod 512的最小非负整数。然后再添加一个64bit串,该串是L的二进制表示,填充后的消息M'长度为512的整数倍。

      例如:对消息01100001 01100010 01100011,其长度l=24,经填充得到比特串:01100001 01100010 01100011 1 00...00(423比特) 00...011000(64比特l的二进制表示)

      2.迭代压缩过程

      (1)迭代过程:

      M'按照512bit进行分组:M'=B(0)B(1)...B(n-1)

      n=(l+k+65)/512.

      迭代过程如下:

      FOR i=0 to n-1

      V(i+1) = CF(V(i),B(i)

      ENDFOR

      CF为压缩函数,V(0)为初始值IV,迭代压缩的结果为V(n)

      (2)消息扩展:

      消息分组B(i)扩展生成132个字W0,W1,...W67,W0',W1'...W63'。

      a)消息分组B(i)划分为16个字W0,W1,...W15.

      b)FOR j=16 to 67

      Wj=P1(Wj-16 ^ Wj-9 ^ (Wj-3 <<<15)^(Wj-13<<<7)^Wj-6

      ENDFOR

      c)FOR j=0 to 63

      Wj'=Wj^Wj+4

      ENDFOR

      (3)压缩函数:

      A/B/C/D/E/F/G/H为字寄存器,SS1/SS2/TT1/TT2为中间变量,压缩函数V(i+1) = CF(V(i),B(i))计算过程如下:

      ABCDEFGH = V(i)

      FOR j=0 to 63

      SS1 = ((A<<<12)+E+(Tj<<

      SS2 = SS1^(A<<<12)

      TT1 = FFj(A,B,C)+D+SS2+Wj'

      TT2 = GGj(E,F,G)+H+SS1+Wj

      D = C

      C = B<<<9

      B = A

      A = TT1

      H = G

      G = F<<<19

      F = E

      E = P0(TT2)

      ENDFOR

      V(i+1) = ABCDEFGH^V(i)

          运算过程中,字按照大端格式存储。

      3.杂凑结果

      杂凑结果为256bit值y=ABCDEFGH=V(n)

      SM3密码杂凑算法在密码学当中具有重要的地位,它的压缩函数与SHA-256的压缩函数具有相似的结构,但SM3密码杂凑算法的设计较之更为复杂,而且目前对于SM3密码杂凑算法的攻击还比较少。

      杂凑函数的设计和应用已经发展了好几十年,杂凑函数在经过了进十多年的分析中也取得了不少的成果。而SM3密码杂凑算法作为其中的一种,如今在许多领域上都有应用。本节就降到这里了,希望小编的这些整理能对大家有所帮助。想要学习更多课程可以到课课家教育进行了解哟!

课课家教育

未登录