hmac crack

0x00 前言

我在逆向的过程中发现很多公司都开始使用hmacsha1 作为签名校验的算法,并且这个算法基本都是放到 native 层做了一定的保护。而 sha1 则多见于 java 层,一般不做什么保护。 本文会先讲解一下hmac, 然后针对hmac的算法,看看算法存在的弱点。

hmacsha1算法

算法如图:

hmac 需要用户提供一个key, 这个key 会进行扩展到hash 函数的分组长度,然后这个密钥会跟ipad, opad 进行异或运算,作为新的key和消息进行组合,然后通过hash 计算最终得出一个结果。

弱点分析

  1. hmac 首要保护的是key,所以能够拿到 key 的方法就是他的弱点。 从上图中,可以发现 opad, ipad 其实是一个突破口,如果我们能够识别出这两个值,我们就可以直接拿到 key.
  2. sha1 本身也很容易被定位,比如初始化中的魔数,别人可以搜索字节来定位。

算法加固

针对以上几个弱点,就可以很方便的制定出加固的方案了。

  1. 魔改 sha1 或者 hmac 本身,防止通过内存搜索来快速定位。
  2. 加固,但一定程度影响性能

总结

这里只是简单介绍了一下hmac上的攻防,希望能对读者有一定的启发。