Cryptography CSPRNG:有时间保证吗?

Cryptography CSPRNG:有时间保证吗?,cryptography,uuid,Cryptography,Uuid,加密安全的伪随机数生成器是否也能保证熵以这种方式收集,即在不同时间生成的值不会出现两次 我知道这已经不太可能了,但是有具体的保证吗 我需要从CSPRNG生成一系列必须没有冲突的唯一ID。理想(CS)PRNG可以向您保证提取某个值的概率是恒定的,并且不会随时间变化,无论该值过去是否已输出 例如,假设您的ID是32位长,今天您提取了0x12345678。刚刚发生的事情发生的概率是1/(2^32) 明天(以及将来的任何时候),您仍然有相同的概率提取值0x12345678 但是,告诉我们,如果生成655

加密安全的伪随机数生成器是否也能保证熵以这种方式收集,即在不同时间生成的值不会出现两次

我知道这已经不太可能了,但是有具体的保证吗

我需要从CSPRNG生成一系列必须没有冲突的唯一ID。

理想(CS)PRNG可以向您保证提取某个值的概率是恒定的,并且不会随时间变化,无论该值过去是否已输出

例如,假设您的ID是32位长,今天您提取了
0x12345678
。刚刚发生的事情发生的概率是
1/(2^32)

明天(以及将来的任何时候),您仍然有相同的概率提取值
0x12345678

但是,告诉我们,如果生成65536(=2^(32/2))个值,则两个ID相同的概率50%

换句话说,没有硬性保证CSPRNG的输出不会相同。机会是否足够小很大程度上取决于您的ID的长度以及在整个系统生命周期内您希望总共拥有多少ID(当攻击者可以随意生成ID时,应特别注意安全问题)


为了完整性,所有这些都适用于任何好的PRNG,包括最简单的硬币。密码学上强大的PRNG还具有从任何给定输出预测未来或过去输出的复杂性(这应该很难)、从状态妥协中恢复的能力以及提供熵的能力。我强烈怀疑这一点。如果你想覆盖/几乎覆盖某个范围,我会给你这个保证。例如-。我相信,如果我们知道新值与以前的值不同,它将减少随机性,因此此实现没有这种保证(尽管它说的是“C strong RNG”而不是“C secure RNG”)。我不确定这是否是一个-这可能取决于有多少序列号必须是唯一的。