应用篇——随机数

目录

一、随机数的应用

二、随机数的性质

三、伪随机数生成器

1.伪随机数生成器的结构

1)伪随机数生成器的内部状态

2)伪随机数生成器的种子

四、对伪随机数生成器的攻击


一、随机数的应用

1)生成密钥

对称密码和消息认证码

2)生成密钥对

公钥密码和数字签名

3)生成初始化向量

分组密码的模式(CBC、CFB、OFB)

4)生成nonce

防御重放攻击和分组密码的CTR模式

5)生成salt(盐)

基于口令的密码(PBE)

 

二、随机数的性质

1)随机性

不存在统计学偏差,完全杂乱的数列

2)不可预测性

不能从过去的数列中推测出下一个要出现的数

3)不可重现性

不能出现重复数列(除非保存下来)

由此可分为三类随机数:

1)弱伪随机数:只具有随机性,不具有不可预测性和不可重现性

2)强伪随机数:具有随机性和不可预测性,但不具有不可重现性

3)真随机数:具有随机性、不可预测性和不可重现性

注:软件只能生成伪随机数,是因为运行软件的计算机自身仅具备有限的内部状态,在内部条件相同时,软件只能生成相同的数;我们将首次出现到出现之前的数列长度称为周期,凡是具有周期的数列都不具备不可重现性;想要生成真随机数,就要从不可重现的事物中获取(声音、温度等)

三、伪随机数生成器

通过硬件生成的数列(根据温度、声音的变化)的设备称为随机数生成器(RNG)

使用软件生成的数列称为伪随机数生成器(PRNG)

1.伪随机数生成器的结构

1)伪随机数生成器的内部状态

指生成器中管理的内存中的数值,根据内部状态计算随机数的方法和改变内部状态的方法组合后,就是伪随机数生成器的算法

由于内部状态决定了下一个生成的伪随机数,因此内部状态不能被攻击者知道

2)伪随机数生成器的种子

用于对内部状态进行初始化,种子本身是一串随机的比特序列,根据种子可算出伪随机数

种子需要保密

四、对伪随机数生成器的攻击

1)对种子进行攻击

当种子被攻击后,攻击者就可以知道这给伪随机数生成器生成的全部伪随机数列;为了防止被攻击,使用不可重现性的真随机数作为种子

2)对随机数池进行攻击

一般使用随机数池的文件积累随机比特数列,当需要使用时,从池中取出所需长度的比特序列来使用

随机数池被攻击后,伪随机数的种子会被预测出来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值