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

时间:2009-08-20 21:46:15

标签: security theory random

我正在学校处理一些计算机安全问题,我对一般编程公共偏好,习俗,想法等感兴趣。如果你必须使用随机数发生器或提取器,你选择哪一个?你为什么选择它?数学属性,已经作为包实现或出于什么原因?你自己编写或使用一些包吗?

5 个答案:

答案 0 :(得分:4)

如果计算时间不是对象,那么Blum Blum Shub(http://en.wikipedia.org/wiki/Blum_blum_shub)就不会出错。从非正式的角度来说,它至少与整数分解一样安全(难以预测)。

答案 1 :(得分:2)

dev/random,或您平台上的同等产品。

它返回设备驱动程序提供的熵池中的位。无需担心数学属性。

如果您正在使用加密安全的PRNG,那么通常需要重复将安全散列应用到大型种子阵列。但是,不要发明自己的算法,请选择Fortuna或其他合理评价的版本。

答案 2 :(得分:2)

据说美国和苏联总统之间的电话加密密钥是由宇宙射线产生的。我们在大学的物理实验室检查过它们 - 它们的能量产生真正的高斯分布。 ;-)因此,对于最佳加密,您应该使用这些,因为这样的随机序列无法重播。当然,除非你的对手暗中在你的随机数发生器附近建立一个粒子加速器。

啊......关于计算机......好吧,获取一个来自物理的,而不是计算的流。 / dev / random是一个最简单的解决方案,但是你手工制作的Geiger-counter连接到USB可以提供最好的随机性。

答案 3 :(得分:1)

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

对于严肃的安全应用程序(例如:COMSEC - 级加密),我使用硬件随机数生成器。根据定义,没有硬件访问的纯算法不会产生随机数。

答案 4 :(得分:0)