【问题标题】:Are GUIDs generated on Windows 2003 safe to use as session IDs?在 Windows 2003 上生成的 GUID 是否可以安全地用作会话 ID?
【发布时间】:2009-09-09 05:21:08
【问题描述】:

我的 Web 应用程序仅通过 SSL 运行,并在每个用户使用用户名和密码成功登录后为他们设置一个限时 cookie。该系统最大的弱点是损害现有用户的 cookie。还有两个猜测会话 ID GUID。

我知道第一个弱点的机制,但我想知道我有多少需要担心攻击者根据他们之前通过登录他们设置的帐户获得的 GUID 猜测会话 ID GUID 的机会?本例中的 Web 服务器是 Windows 2003,GUID 是使用 .Net 3.5 生成的。

【问题讨论】:

    标签: security windows-server-2003 guid


    【解决方案1】:

    GUID 的目的不是为了加密安全,只是为了唯一。相当多的格式是可预测的 - 48 位 MAC 地址,如果您知道它是如何生成的,那么时间戳在某种程度上是可以预测的,另外一些位用于处理时间戳冲突。技术老练的攻击者很有可能对 GUID 进行逆向工程。

    您确实需要cryptographically secure PRNG 来获取安全会话密钥。

    【讨论】:

    • GUID 创建算法已更改。他们不再使用 MAC 地址。它们只是 128 位伪随机数。而且他们有很多安全问题。
    • .net 3.5 guids 中既没有 MAC 地址也没有时间戳。
    • 供应商将 .net 3.5 GUID 描述为加密安全吗?
    【解决方案2】:

    .Net 3.5 GUID 几乎无法猜测。 GUID 的绝对数量是巨大的——GUID 比宇宙中沙子上的颗粒还要多,等等。它们并没有严格地“保证”是唯一的(尽管显然SQL NEWID 保证是唯一的)

    如果你想自己测试一下,生成几亿,然后找到重复项(你不会找到)。

    【讨论】:

    • GUID 确实是伪随机的,但计算机永远无法生成真正的随机值。我质疑他们“容易”猜到。您能否详细说明您可以计算所有以下 GUID 的解释? (示例或来源)
    猜你喜欢
    • 1970-01-01
    • 2021-10-16
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 2014-12-30
    • 2017-01-24
    相关资源
    最近更新 更多