如标题所述:非安全随机数生成器和安全随机数生成器有何区别?
如标题所述:非安全随机数生成器和安全随机数生成器有何区别?
任何可计算的算法都不应该:
用于安全随机数生成器。
例如: 线性反馈移位寄存器可以产生很多随机数,但是如果给出足够多的输出,那么种子可以被发现并且所有接下来的随机数都能被预测。
当我们谈论“随机数”时,通常指的是伪随机数。由于是伪随机数,因此攻击者可以(轻松地)预测它。
一个安全的随机数来自于真正的随机数据源,即涉及某种熵池。
随机数可能指由使用“种子”的算法返回的伪随机数。
安全随机数是从设备(如基于铯的随机数生成器)返回的真正随机数,该设备利用铯的衰变速率返回数字。这是自然发生的,无法预测。
这可能取决于上下文,但是当您像这样进行比较时,我会说“随机数”是伪随机数,“安全随机数”是真正的随机数。前者基于种子和算法给出一个数字,而后者则基于某些固有的随机函数。
这就像AES和ROT13之间的区别。
更严肃地说,在生成随机数时,通常需要在难以预测下一个序列的程度和易于产生的程度之间进行权衡。通过语言内置的rand()函数返回的随机数通常是廉价、可预测的类型。