0


商用密码应用与安全性评估要点笔记(SM3密码杂凑算法)

1、杂凑密码算法

    可以对任意长度的消息M进行压缩,输出定长的消息摘要/杂凑值h,表示为h = H(M)。

    一般来说,H具备三个性质:

    (1)单向性。已知h,试图找打M满足h=H(M)是困难的。

    (2)抗第二/二次原像攻击(弱抗碰撞性)。给定M1,试图找到M2满足h1=h2是困难的。

    (3)强抗碰撞性。试图找到H(M1)=H(M2)是困难的。

    密码杂凑算法主要有2种结构:M-D结构(MD5、SHA1、SHA2、SM3)和海绵结构(SHA3)。对于MD结构,也就是对填充后的消息进行分组后依次输入F函数进行压缩,上一个分组的结果结果下一个分组的输入之一,最后一个F的结果即是最终的杂凑值。所以可以说,杂凑算法的安全性取决于F,如果F具备抗碰撞能力,则杂凑函数也具备抗碰撞能力。

算法名称分组长度bit输出长度bit结构MD5512128MDSHA1512160MDSHA-224512224MDSHA-256512256MDSHA-3841024384MDSHA-5121024512MDSHA-512/2241024224
MD
SHA-512/2561024256MDSM3512256MDSHA3-224-224海绵SHA3-256-256海绵SHA3-384-384海绵SHA3-512-512海绵SHAKE128-变长海绵SHAKE256-变长海绵
2、带密钥的杂凑算法

    使用M||h的方式保护M的完整性是存在安全问题的,例如攻击者可以将其整体替换为M'||h',完整性验证也可通过。故认为只使用密码杂凑算法是无法保证数据完整性的。HMAC(带密钥的杂凑算法)提出能够解决这个问题。HMAC具体如hmac = HMAC(K,M),其中密钥K的长度取对应的杂凑算法分组长度和输出长度之间,如MD5,K的长度区间是[128,512] bit。在HMAC过程中包括2次H计算,取第二次H计算的最左边m比特,作为HMAC的输出。

** 3、SM3算法**

    关于SM3算法,具体标准见GMT 0004-2012 SM3 密码杂凑算法,MD结构,输入消息长度小于2^64bit,分组长度为512,输出长度为256。

    3.1 填充规则

    在消息M的末尾填充1,然后填充k个0,最后填充64bit的二进制串(表示消息M的长度,这里对应输入消息M长度不能大于2^64bit),从而得到n个512bit的分组。

    3.2 迭代过程

    对于n个分组B0-Bn-1,做迭代Vi+1 = CF(Vi,Bi)V0取256bit的IV,这里CF是压缩函数,压缩结果为V。在压缩函数之前,对Bi要进行扩展,扩展为132个消息字(32bit)。在压缩函数CF中,产生64轮迭代,也就是说对于n个分组Bi,共要计算64n轮。

4、SM3安全性和效率

    SM3和SHA256消息分组、迭代轮数、输出长度均相同,同时新引入16步全异或操作、消息双字介入、加速雪崩效应的P置换。能有效抵抗强碰撞性的差分攻击、弱碰撞性的线性分析和比特追踪等密码分析方法。

    

本文转载自: https://blog.csdn.net/ryanzzzzz/article/details/129814416
版权归原作者 搞搞搞高傲 所有, 如有侵权,请联系我们删除。

“商用密码应用与安全性评估要点笔记(SM3密码杂凑算法)”的评论:

还没有评论