.net guid在可预测性方面有多安全?

.net guid在可预测性方面有多安全?,.net,guid,uuid,.net,Guid,Uuid,我们目前正在使用.NET的Guid.NewGuid()生成激活码和API密钥。我想知道这是否会带来安全问题,因为他们的算法是开放的 .NET Guid使用Win32CoCreateGuid,我不知道它的内部结构(可能是MAC地址+时间戳?)。有人能从第一个GUID派生出第二个GUID吗,或者他能用一些聪明的猜测来命中它,或者随机性足够好,所以搜索空间变得太大了吗 生成随机密钥存在冲突问题,它们需要在添加到数据库之前进行双重检查。这就是为什么我们坚持使用guid,但我不确定它们的安全性 以下是4个

我们目前正在使用.NET的
Guid.NewGuid()
生成激活码和API密钥。我想知道这是否会带来安全问题,因为他们的算法是开放的

.NET Guid使用Win32
CoCreateGuid
,我不知道它的内部结构(可能是MAC地址+时间戳?)。有人能从第一个GUID派生出第二个GUID吗,或者他能用一些聪明的猜测来命中它,或者随机性足够好,所以搜索空间变得太大了吗

生成随机密钥存在冲突问题,它们需要在添加到数据库之前进行双重检查。这就是为什么我们坚持使用guid,但我不确定它们的安全性

以下是4个连续UUIDGEN输出:

下面是4个由
Guid.NewGuid()


生成guid有多种机制,有些使用MAC地址,有些仅使用纯随机数生成。iirc如果正在使用amc地址,它应该在GUID中很明显-它没有以任何方式散列出来


编辑:但书,有点蹩脚的答案,因为我在这里谈论的是通用guid生成,而不是一个可能会混淆它的ms算法。我正在研究它,如果它没有用,我会删除它。

guid是非常随机的,但它们不是用来作为随机数的-它们的唯一目的是唯一地标识实体,因此它们是可预测的


.

任何键都有一个有限的空间,一个充分确定的人/组可以并将生成所有组合。重要的不是关键,而是你如何组织验证和授权。如果您完全通过Guid来操作验证/授权,那么这可能不合适,因为可能所有的Guid都是有效的,您最好使用类似的方法。如果您正在使用一种身份验证机制来记录特定的Guid已经发布,并且它现在已经被用于激活,那么Guid并不是一个坏的选择,因为它是一个相当大的密钥空间

guid上的Wikipedia在guid算法上非常好:可能与Cody重复,这很相似,但我并不是严格地寻找随机性本身。例如,GUID可能是一个非常高的感知计时器,并且仍然是安全的,而不是随机的。我想知道的是,连续guid之间的搜索空间是否广泛,并且对于琐碎的暴力攻击来说是否不可预测。
c44dc549-5d92-4330-b451-b29a87848993
d56d4c8d-bfba-4b95-8332-e86d7f204c1c
63cdf958-9d5a-4b63-ae65-74e4237888ea
6fd09369-0fbd-456d-9c06-27fef4c8eca5
0652b193-64c6-4c5e-ad06-9990e1ee3791
374b6313-34a0-4c28-b336-bb2ecd879d0f
3c5a345f-3865-4420-a62c-1cdfd2defed9
5b09d7dc-8546-4ccf-9c85-de0bf4f43bf0