hash扩展攻击

hash扩展攻击产生

hash扩展攻击存在的原因有两个,第一个是现在常用的hash函数如md5和sha系列的是采用的MD迭代结构;第二个就是验证逻辑的不严谨。

1、MD(Merkle-Damgard)迭代结构

     这种结构定义的Hash函数中,输入消息m,并将其分为L个固定长度,若最后一个不满足输入分组长度的要求,按照一定规则进行填充。该Hash函数重复使用一个压缩函数f。压缩函数f有两个输入,一个是前一阶段的n bit输入,另外一个是源于消息b

 bit分组,并产生一个n bit的输出,作为下一个阶段的输入。算法开始要有一个初始值IV。具体如下图:


如上图,假设明文M分组为Y1、Y2、Y3、Y4。看第一步,先将消息分组Y1与初始变量IV进行f函数操作之后,得出的值和Y2继续使用f函数操作,直到最后得出的值就是hash值,这就是MD迭代结构。

    MD5和sha系列的算法也是这种结构,只不过它们才去不同长度的IV和f函数。

2、验证逻辑的不严谨

思考以下情况:

A生成一个key和消息m,计算h=hash(m,key),公布{m,h},A采用这种方式验证自己的消息m是否被篡改过。此时,A觉得没人能更改他的消息m,因为更改之后,无法更改h,因为篡改者没有key。也就无法计算h_fake=hash(m_fake, key)。变可以采用hash扩展攻击。

3、攻击产生

篡改者没有key,但是又得找到一个h_fake=hash(m_fake, key),得到一个{m_fake, h_fake}骗过A,这时候就可以用到hash扩展攻击。前提是满足上面两个条件。

观察MD结构,公布了{m,h},假设这里的(m, key)就是上面MD解释图中的M,生成的hash值为h。如图:


hash扩展攻击主要就是在这后面夹了一块Y5,通过的出来的h和Y5得出新的hash,新的hash就是h_fake,m_fake=(m,key,xxx)=(Y1,Y2,Y3,Y4,Y5)。

如图:



这样,我们便做到了在消息m之后添加xxx,求得{m_fake, h_fake}来欺骗A了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值