商用密码应用与安全性评估要点笔记(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结构
MD5512128MD
SHA1512160MD
SHA-224512224MD
SHA-256512256MD
SHA-3841024384MD
SHA-5121024512MD
SHA-512/2241024224

MD

SHA-512/2561024256MD
SM3512256MD
SHA3-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置换。能有效抵抗强碰撞性的差分攻击、弱碰撞性的线性分析和比特追踪等密码分析方法。

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

游鲦亭长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值