为什么要使用随机数生成器/提取器?

3

我目前正在学校处理一些计算机安全问题,我对一般编程公众偏好、习惯、想法等方面很感兴趣。如果你需要使用随机数生成器或提取器,你会选择哪一个?为什么选择它?是因为其数学特性已经实现为包还是出于其他原因?你会自己编写代码还是使用某个包?


已经有很多 PRNG 的问题了,这个问题有何不同之处? - dmckee --- ex-moderator kitten
http://stackoverflow.com/questions/1266261/what-is-a-good-fast-prng-non-cryptographically-secure,https://dev59.com/-3VC5IYBdhLWcg3w1E7w,https://dev59.com/t3M_5IYBdhLWcg3wvV5w等等。 - dmckee --- ex-moderator kitten
1
这三个所谓的重复调用都不需要安全的 PRNG。第一个明确表示非加密,第三个用于蒙特卡罗模拟,而中间的一个则用于生成景观。关注点完全不同。 - Steve Jessop
这个问题不同,因为我想知道你为什么选择了这样的生成器。我对一些容易获取的实现的总和不感兴趣。我想知道你是基于它们的理论特性选择其中之一,还是只因为它容易找到/使用。 - Trimack
5个回答

4

2
< p > dev/random,或等同于您所使用的平台。

它从由设备驱动程序提供的熵池返回比特。无需担心数学属性。

如果您正在寻找加密安全的PRNG,则通常可以重复应用安全哈希函数到大型种子数组。不要发明自己的算法,选择一个经过合理审查的版本的Fortuna或其他类似算法。


2
美国和苏联总统之间电话通话的加密密钥据说是由宇宙射线生成的。我们在大学物理实验室进行了检查,发现它们的能量符合真正的高斯分布。所以为了获得最佳加密效果,您应该使用这些密钥,因为这种随机序列无法被重播。当然,除非您的对手在您的随机数生成器附近秘密建造了一个粒子加速器。
关于计算机...嗯,获取来自物理实体的流,而不是计算出来的流。/dev/random是最简单的解决方案,但是您手工制作的连接到USB的盖革计数器将提供最好的随机性。

1

对于一个小型学校项目,我会使用操作系统提供的随机数生成器。

对于严肃的安全应用(例如:COMSEC级别的加密),我会使用硬件随机数生成器。纯算法没有硬件访问,因此不能产生随机数。


0

你知道,当那个链接失效时,这个答案就彻底没用了。 - tvanfosson
这是一个提供二进制位的服务器。如果链接失效,服务器也将消失,因此答案当然就毫无意义了。 - Steve Jessop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接