HASH长度扩展攻击
场景:
当用户向服务端取文件时,服务端会进行验证,给出salt值(用于验证,客户端无从得知,并且需要salt值才能够拿到文件),并进行hsh=sha1(salt+filename)的运算。现通过工具拿到hash即hsh值,并得知filename。
求salt值。
原理:
当服务器进行sha1运算前,会判断字符串(slat+filename)的长度,并将整段字符串分割成64bytes一组。之后进行hash生成。
首先,当hash函数拿到需要被hash的字符串后,先将其字节长度整除64,取得余数。
如果该余数正好等于56,那么就在该字符串最后添加上8个字节的长度描述符(具体用bit表示)。
如果不等于56,就先对字符串进行长度填充,填充时第一个字节为hex(80),其他字节均用hex(00)填充,填充至余数为56后,同样增加8个字节的长度描述符(该长度描述符为需要被hash的字符串的长度,不是填充之后整个字符串的长度)。以上过程,称之为补位。
EXP:
先用一定的方法
得到salt的长度:
在现实攻击环境中,攻击者无法获知密钥长度,需要对其长度进行猜测。