相关疑难解决方法(0)

java的UUID.randomUUID有多好?

我知道随机UUID在理论上具有非常非常非常低的碰撞概率,但我想知道,在实践中,Java 5 randomUUID()在没有碰撞方面有多好?有没有人有经验可以分享?

java uuid

300
推荐指数
8
解决办法
16万
查看次数

UUID.randomUUID()是否适合用作一次性密码?

正如前面所讨论的,确认电子邮件应该有一个独特的,(几乎)未猜测的代码-基本上是一个一次性密码 --in确认链接.

UUID.randomUUID()文档说:

使用加密强伪随机数生成器生成UUID.

这是否意味着正确实现的JVM中的UUID随机生成器适合用作唯一的(实际上)不可猜测的OTP?

java security random uuid

24
推荐指数
3
解决办法
2万
查看次数

UuidCreate是否使用CSPRNG?

请注意,这不是我的应用程序,它是我正在为客户端测试的应用程序.我通常会在https://security.stackexchange.com/上提出这样的问题,但是因为这是我在这里提出的更多编程相关问题.

当然,UUID的RFC 4122没有规定必须由密码安全伪随机数发生器(CSPRNG)生成类型4 UUID.它简单地说

将所有其他位设置为随机(或伪随机)选择的值.

虽然,算法的某些实现(例如Java中的这种实现)确实使用CSPRNG.

我试图深入研究微软的实施是否成功.主要围绕.NET或MSSQL Server如何生成它们.

检查.NET源代码,我们可以看到以下代码:

 Marshal.ThrowExceptionForHR(Win32Native.CoCreateGuid(out guid), new IntPtr(-1));
 return guid;
Run Code Online (Sandbox Code Playgroud)

检查CoCreateGuiddocco,它说

CoCreateGuid函数调用RPC函数UuidCreate

我能找到关于这个功能的所有内容都在这里.我好像已经到了兔子洞的尽头.

现在,有没有人知道如何UuidCreate生成其UUID?

我见过很多相关帖子:

第一个说:

GUID不保证随机性,它保证了唯一性.如果您想要随机性,请使用Random生成字符串.

我同意这一点,除了在我的情况下随机,不可预测的数字,你当然使用CSPRNG而不是Random(例如RNGCryptoServiceProvider).

而后者的状态(实际上引自维基百科):

WinAPI GUID生成器的密码分析显示,因为V4 GUID的序列是伪随机的; 在完全了解内部状态的情况下,可以预测先前和后续的值

现在,在围栏的另一边,Will Dean说这篇文章

我最后一次研究这个问题(几年前,可能是XP SP2),我直接进入操作系统代码,看看实际发生了什么,并使用安全随机数生成器生成一个随机数.

当然,即使它当前正在使用CSPRNG,这也将是特定于实现的,并且可能随时更改(例如,对Windows的任何更新).不太可能,但理论上可行.

我的观点是,没有规范的参考,以上是为了证明我已经完成了我的研究,上述帖子都没有引用任何权威的内容.

原因是我正在尝试确定是否需要更改使用GUID进行身份验证令牌的系统.从纯粹的设计角度来看,答案肯定是肯定的,但是从实际的角度来看,如果Windows UuidCreate功能确实使用了CSPRNG,那么系统就没有直接的风险.任何人都可以对此有所了解吗?

我正在寻找有信誉的来源的任何答案来支持它.

c# c++ windows security random

16
推荐指数
1
解决办法
1187
查看次数

标签 统计

java ×2

random ×2

security ×2

uuid ×2

c# ×1

c++ ×1

windows ×1