md5结果长度_哈希长度拓展攻击

原理

MAC算法(Message authentication codes (MACs)一般是为:md5(salt+data)

哈希摘要算法,如MD5、SHA1、SHA2等,都是基于Merkle–Damgård结构。当知道hash(salt+data)的值及salt长度的情况下,可以轻松推算出hash(salt + data+padding+m)。m是任意数据,可以为空,padding是salt后的填充字节。hash的padding字节包含整个消息的长度,因此,为了能准确计算出padding的值,salt的长度我们也是需要知道的。

当我们填充后,服务器算出的原始hash值,正好与我们添加扩展字符串并覆盖初始链变量所计算出来的一样。这是因为攻击者的哈希计算过程,相当于从服务器计算过程的一半紧接着进行下去。

影响范围
  • 受影响哈希: MD4、MD5、RIPEMD-160、SHA-0、SHA-1、SHA-256、SHA-512、WHIRLPOOL等
  • 无影响哈希:MD2、SHA-224和SHA-384
MD5算法的流程:
  1. 把消息分为n个消息块。
  2. 对最后一个消息块进行消息填充。
  3. 每个消息块和一个输入量做运算,把运算结果作为下一个输入量。
MD5算法的实现:
  • Append Padding Bits(填充bits)
  • Append Length(填充长度)
  • Initialize MD Buffer(初始化向量)
  • Process Message in 16-Word Blocks(复杂的函数运算)

而要实现我们的攻击,我们只关心前三步,也就是不用纠结复杂的算法运算。

利用工具
  1. HashPump(需要原始数据)

下载地址:

https://github.com/bwall/HashPump

可以python扩展,所以在python2下安装hashpumpy后直接使用

>>> import hashpumpy
>>> help(hashpumpy.hashpump)
>>> hashpumpy.hashpump("addc8b6f2825f30b36d0684789d052ba","lingwu","lingwuTest",16)
  1. hexpand  (不需要原始数据)
https://github.com/amlweems/hexpand
修复方式
  1. 使用HMAC方式。
  2. 置换盐值与data,如 hash(data+secret)
  3. b141895d5b1cb21fd8abc69969eba277.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值