随机数的性质

一 点睛

随机数的性质分为以下三类:

  • 随机性:不存在统计学偏差,是完全杂乱的数列
  • 不可预测性:不能从过去的数列推测出下一个出现的数
  • 不可重现性:除非将数列本身保存下来,否则不能重现相同的数列

上面三个性质,越往下就越严格。具备随机性,不代表一定具备不可预测性。密码技术中所使用的随机数,仅仅具备随机性是不够的,至少还需要具备不可预测性才行。

具备不可预测性的随机数,一定具备随机性。具备不可重现性的随机数,也一定具备随机性和不可预测性。

我们将上述三个性质按顺序分别命名为“弱伪随机数”、“强伪随机数”和“真随机数”,并整理成如下表格:

二 随机性

所谓随机性,简单来说就是看上去杂乱无章的性质。我们可以用伪随机数生成器大量生成0到9范围内的整数,然后看看所生成的数列。如果是像0、1、2、3、4、5、6、7、8、9、0、1、2、...这样不断循环的,那肯定不是杂乱无章的。或者咋一看是杂乱无章的,但实际上在数列中0一次都没出现,或者整个数列中有一半都是6,这样的数列也不能算是杂乱无章的。

如果伪随机数列中不存在统计学偏差,则我们可以认为这个伪随机数列式随机的。判断一个伪随机数列是否随机的方法称为随机数测试,随机数测试的方法有很多种。

一般在电脑游戏中使用的随机数只要具备随机性就可以了。此外,在计算机模拟中使用的随机数虽然需要根据目的来进行随机数测试,但也是只要具备随机性就可以了。然而,密码技术中所使用的随机数,仅仅具备随机性是不够的。

密码学中使用的随机数会被用来生成密钥,因此密钥不能被攻击者看穿。但是杂乱无章并不代表不会被看穿,因此将只具备随机性的伪随机数称为“弱伪随机数”。

三 不可预测性

密码中所使用的随机数仅仅具备随机性是不够的,还需要具备避免被攻击者看穿的不可预测性。

所谓不可预测性,是指攻击者在知道过去生成伪随机数列的前提下,依然无法预测出下一个生成出来的伪随机数的性质。其中,“在知道过去生成的伪随机数列的前提下......”是非常重要的一点。

现在假设攻击者已经知道伪随机生成器的算法。此外,正如攻击者不知道密钥一样,他也不知道伪随机数的种子。即伪随机数生成器的算法是公开的,但伪随机数种子是保密的。在上述假设的前提下,即便攻击者知道过去所生成的伪随机数列,他也无法预测出下一个生成出来的伪随机数——这就是不可预测性。

那么如何才能编写出具备不可预测性的伪随机数生成器呢?其实,不可预测性是通过其他密码技术来实现的。例如,可以通过单向散列函数的单向性和密码的机密性来保证伪随机数生成器的不可预测性。

我们将具备不可预测性的伪随机数称为强伪随机。

四 不可重现性

所谓不可重现性,是指无法重现和某个随机数列完全相同的数列的性质。如果除了将随机数列本身保存下来以外,没有其他方法能够重现该数列,则我们说该随机数具备不可重现性。

仅靠软件是无法生成出具备不可重现性的随机数列的。软件只能生成伪随机列,这是因为运行软件的计算机本身仅具备有限的内部状态。而在内部状态相同的条件下,软件必然只能生成相同的数,因此软件所生成的数列在某个时刻一定会出现重复。首次出现重复之前的数列长度称为周期,对于软件所生成的数列,其周期必然是有限的。当然,这个周期可能很长,但总归是有限的。凡是具有周期的数列,都不具备不可重现性。

要生成具备不可重现性的随机数列,需要从不可重现的物理现象中获取信息,比如周围的温度和声音的变化、用户移动鼠标的位置、键盘输入的时间间隔、放射线测试仪的输出值等,根据从这些硬件所获取的信息而生成的数列,一般可以认为是具备不可重现性的随机数列。

目前,利用热噪音这一自然现象,人们已经开发出能够生成不可重现的随机数列的硬件设备了。例如,英特尔的新型CPU就内置了数字随机数生成器,并提供了生成不可重现的随机数的RDSEED指令,以及生成不可预测的随机数的RDRAND指令。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值