MD5哈希长度延展攻击

假设

在一个使用MD5哈希算法的系统中,管理员使用了一个密钥\(k\)和命令\(cmd\)的组合来生成每个命令的签名:\(hash(k||cmd)\)。你已经获得了一个允许查看文件的命令\(cmd=viewfile\)和对应的签名\(h\),但你希望通过哈希长度延展攻击,生成一个新的签名,该签名能够让你执行删除文件的命令(删除文件的命令为\(rm\))。
假设\(k=20211120\)
那么哈希值为:07abb4a48cef5840ffa25c514bd1c84d
image

攻击步骤

  1. 计算原始消息的MD5哈希值,并确定其长度。
    哈希值为07abb4a48cef5840ffa25c514bd1c84d
    密钥长度为8
  2. 构造填充块,使得填充块的长度与原始消息的长度相加后等于一个特定的值
    原长度\(b=16x8=128\),那么填充块\(padding=448-128=320\),后续64bit表示原消息长度。这个块的哈希值我们已经知道了,我们再在这个块后面额外添加一个块,其内容为$rm\quad* $即可

具体实现

添加的新明文为
viewfile\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00rm *
新的哈希值为
b7272777e43cbf8982396d654e53e73a
image

工具链接

posted @ 2024-04-09 21:55  20211120  阅读(65)  评论(1编辑  收藏  举报