Cryptography 如何根据给定的GUID预测下一个GUID?
我已经向我们的客户发送了10000封邮件,每封邮件都有这种格式的链接Cryptography 如何根据给定的GUID预测下一个GUID?,cryptography,email,guid,cryptanalysis,Cryptography,Email,Guid,Cryptanalysis,我已经向我们的客户发送了10000封邮件,每封邮件都有这种格式的链接 http://example.com/LogIn?key={guid} 不幸的是,我发送的guid是随机的guid(由guid.NewGuid()生成的测试数据),因此客户都收到了无效链接 基于我从Web服务器收到的404,我发送了一些GUI。我读到windows中的guid生成器很弱,因此您可以根据现有guid预测下一个guid。有人知道怎么做吗?如果我能做到这一点,我可以使我发送的GUID有效,这样链接就可以再次工作。G
http://example.com/LogIn?key={guid}
不幸的是,我发送的guid
是随机的guid(由guid.NewGuid()
生成的测试数据),因此客户都收到了无效链接
基于我从Web服务器收到的404,我发送了一些GUI。我读到windows中的guid生成器很弱,因此您可以根据现有guid预测下一个guid。有人知道怎么做吗?如果我能做到这一点,我可以使我发送的GUID有效,这样链接就可以再次工作。GUID的一部分是当前日期/时间。如果您碰巧按顺序接收到其中两个图形,那么您可以知道它们的创建速度,因此可以非常自信地预测序列。有几种不同类型的GUI。类型1使用主机ID(通常是mac地址)、序列号以及当前日期和时间。类型4完全是随机的。如果它是类型1 UUID,您可能可以找出一组相当有限的可能的UUID,但即使如此,您也无法生成单一的UUID序列,因此无法将特定的UUID固定到特定的用户。Windows生成GUI的方式已经改变了好几次,互联网上许多看似可靠的建议都是完全错误的(也许只是过时了,也许永远都是完全错误的) 上次我研究这个问题时(几年前,可能是XP SP2),我直接进入操作系统代码,看看实际发生了什么,它生成了一个随机数
如果您以默认方式生成GUID,我怀疑您是否能够从一个GUID预测另一个GUID 预测下一个GUID是不可靠的,即使您可以这样做,但很可能是完全不可能的,因为您可以使用这些资源
您最好的选择是简单地将手动重定向从任何不匹配的GUID添加到一个通用页面,该页面要么解释出错的原因,要么以编程方式找出它们应该在哪里结束并将它们发送到那里。首先,您需要知道它们是否符合RFC4122,并且需要获取版本 如果是UUIDv1,你可以预测它们 UUIDv1由以下部件组成:
- 时间戳(自公历纪元以来的100 ns间隔)
- 一个版本(1)小口
- RFC4122符合性的两个(或三个,lol)位(这导致半字节位于[89ab]中)
- 时钟id(随机位)
- 节点id(常量6字节掩码)
有关更多信息,请检查我在那里做的工作为什么不检查发送的邮件并解析从那里发送的guid?你有邮件服务器档案吗?或者您可以只启用该表单的任何GUID。这并不是说有一大群坏蛋等着利用你的报价,他们知道发送链接的详细信息,而且你没有GUID(直到你在s.O上的帖子)。难道没有办法获得你发送的内容的副本并进行处理吗?如果您有自己的邮件服务器,它可能会保留一份副本。请参阅:很遗憾,邮件没有被记录。每个guid都与一组只有特定客户才能查看和编辑的数据相关联。这是一个密码。我认为最好是简单地重做这个过程,发送带有工作链接的电子邮件,并向您的客户道歉。只有当他们是类型1 GUID时。您有任何来源吗?也就是说,我为什么要相信你的话,因为这篇文章也是“在互联网上”。你能肯定地确认.NET 4.5和MS SQL server使用了这个操作系统功能吗?@SilverlightFox Well,它告诉你我是如何得出结论的,那就是使用调试器进入Windows,没有什么能阻止你这么做。NET的源代码也是可用的(或者可以进行简单的反编译),所以您也可以查看它。我的观点主要是,关于这一点,大多数“明确确认”的声明需要精确限定它们适用于什么版本。我问了这个问题,如果你有兴趣发布关于这个问题的规范答案,我想请你回答这个问题?如果不是,也没问题。谢谢。Windows 2000及更高版本对v4 GUI使用加密随机算法。(来源:)既然说你不应该使用加密的guid,那就直接使用
RNGCryptoServiceProvider
(.NET)或类似的东西,这正是它的初衷。即使您了解.NET guid使用CSPRNG,其他guid算法也不使用。通过使用guid,您可以表示它们在任何地方都是安全的,而且它们绝对不是。类型4是随机的,但规范中没有说明这种随机性是加密安全的-这取决于实现。