0

当我启动一个 tomcat 服务器时,我看到了日志:“使用 [SHA1PRNG] 创建用于会话 ID 生成的 SecureRandom 实例”

这是问题!据我所知,SHA1 并不安全。如果是这样,使用 [SHA1PRNG] 生成会话 ID 有问题吗?

如果这将是一个安全问题,那么替代的想法是什么(通用)?

4

2 回答 2

1

关键是:SHA1 实际上已损坏,例如参见https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html

但是:这“仅”适用于冲突,它们需要数百个 CPU 小时的处理时间。

所以有两点是相关的: - 你必须有一个起点,用于计算碰撞 - 你没有会话 ID,因为如果它被泄露,没有任何帮助。- 会话仅在几个小时内有效

我不会将其视为安全风险,至少对于短期会话 ID 而言

于 2017-03-21T09:26:45.150 回答
1

简短的回答:即使 sha1 坏了,sha1-prng 也没有坏。

长答案:

密码散列函数需要具有许多不同的属性,最常引用的属性是:抗碰撞性、抗前映像性和抗第二映像性。但是还有一些我们想要的其他属性,即使它们可能没有意义,例如“看起来像”随机预言机。我们要求这些属性,以便散列函数可以以各种疯狂的方式使用,人们可以认为他们从中获得了安全性。

但实际上,不同的构造取决于底层哈希函数的不同属性。Sha1 尤其取决于抗预成像性,而不是抗碰撞性或抗第二预成像性。

我们知道可以在 sha1 中找到碰撞(我们已经知道很多年了,但最近才发布了第一个示例碰撞)。但没有人提供证据表明 sha1 的其他所需属性不满足。

因此,如果使用 sha1,则需要抗碰撞性的构造会被破坏,而不需要此属性的构造可能仍然可以。Sha1-prng 的安全性不需要抗碰撞性。HMAC-sha1 也没有(我知道很多人也想知道那个)。

于 2017-03-21T10:26:59.900 回答