Windows 2003生成的GUID作为会话ID使用是否安全?

7
我的网络应用程序只能通过SSL运行,并在用户成功使用用户名和密码登录后为每个用户设置一个有时间限制的cookie。系统中最大的弱点是攻击者利用现有用户的cookie,以及猜测会话ID GUID。
我知道如何应对第一种弱点,但我想知道我需要担心多少攻击者根据之前获得的GUID猜测会话ID GUID的机会?在这种情况下,Web服务器是Windows 2003,GUID是使用.NET 3.5生成的。
2个回答

6
GUIDs并非旨在具有密码学安全性,只是独一无二的。该格式中相当大部分是可预测的 - 48位MAC地址,如果您知道如何生成时间戳,则时间戳也是有些可预测的,另外还有几个位用于处理时间戳冲突。技术上高超的攻击者有很大机会逆向工程GUID。
对于安全的会话密钥,确实需要密码学安全PRNG

GUID创建算法已经改变。他们不再使用MAC地址了。现在它们只是128位的伪随机数,并且存在许多安全问题。 - Thomas Maierhofer
在 .net 3.5 guids 中既没有 MAC 地址也没有时间戳。 - Kirk Broadhurst
1
一个 .net 3.5 GUID 是否被供应商描述为具有加密安全性? - ConcernedOfTunbridgeWells

0

.Net 3.5 GUIDs难以猜测。GUID的数量是巨大的 - 宇宙中的沙粒数目都不及GUID的数量,等等。虽然它们并非严格保证唯一性(尽管显然SQL NEWID是保证唯一性的),但它们几乎是无法重复的。

如果您想亲自测试这一点,请生成数亿个GUID,然后查找重复项(您将找不到任何重复项)。


1
GUID确实是伪随机的,但计算机永远无法生成真正的随机值。我不同意它们很容易被猜到。您能详细说明一下您可以计算所有后续GUID的解释吗?(例如或来源) - Kirk Broadhurst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接