【问题标题】:session ID generation using [SHA1PRNG] is not secure?使用 [SHA1PRNG] 生成会话 ID 不安全?
【发布时间】:2017-08-12 20:06:58
【问题描述】:

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

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

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

【问题讨论】:

  • 问题实际上是SHA1PRNG是否安全,这意味着安全足够。考虑到Tomcat会话ID相当长。

标签: security tomcat sha1 sessionid sha2


【解决方案1】:

重点是:SHA1实际上是坏的,例如看https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html

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

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

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

【讨论】:

  • 这里的好处是会话 ID 只保留很短的时间。谢谢!
【解决方案2】:

简答:sha1-prng 未损坏,即使 sha1 已损坏。

长答案:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-16
    • 2014-12-30
    • 1970-01-01
    • 2011-02-02
    • 2021-09-16
    • 2021-05-04
    • 2017-01-24
    • 2016-09-12
    相关资源
    最近更新 更多