我们目前正在与我们的 Web 应用程序中的第三方组件集成。此集成的一部分需要通过 http 发送数据。这是通过 POST 参数完成的。请求中包含一个附加参数,它是其他参数的 SHA1 哈希,加上密钥,组合如下:
param1.param2.param3.param4.param5.param6.secretkey
中间攻击的恶意用户或人可以访问参数和输出哈希,但不能访问未通过 http 发送的密钥。我一直在读到 SHA1 被认为很弱,并且在资源充足的情况下被破坏了。我想更多地了解此设置的稳健性以及 SHA1 的弱点。
我的问题如下:
- 攻击者可以遍历所有可能的密钥组合,创建一个新的散列,直到找到匹配的散列。一旦找到密钥,修改我们之间发送的数据(然后生成新的哈希)将是微不足道的,而且至关重要的是,无法检测到。是否有其他方法(除了暴力破解)来找出密钥?蛮力可以用于任何算法,让我相信有更好/更快/更便宜的方法来做到这一点。换句话说,攻击者如何利用 SHA1 的弱点?
- 如果我们无法让他们通过使用 SHA2 或 SHA3 来提高消息的安全性,那么带有 SHA1 的适当长度的密钥是否可以保护我们免受任何攻击?