《图解密码技术》第十二章
- 随机性:randomness,不可预测性:unpredictability
- 随机数生成器:random number generator,RNG,伪随机数生成器:pseudo random number generator,PRNG.
使用随机数的密码技术
随机数是干嘛的
- 生成密钥:对称密钥和消息认证码(重要)
- 生成密钥对:公钥密码和数字签名(重要)
- 生成初始化向量IV:用于分组的CBC、CFB/OFB模式
- 生成nonce:用于预防重放攻击以及分组密码的CTR模式
- 生成盐:用于PBE等
主题:为了不让攻击者看穿而使用随机数
随机数的性质
随机性
不存在统计学偏差,是完全杂乱的数列
只具备随机性的数称为“弱伪随机数”
不可预测性
不能从过去的数列推测出下一个出现的数
攻击者在知道过去生成的为随机数列的前提下,依然无法预测出下一个生成出来的伪随机数
不可预测性是通过密码技术实现的,可以通过单向散列函数的单向性和密码的机密性来保证伪随机数生成器的不可预测性
具备不可预测性的数称为“强伪随机数”
不可重现性
除非将数列本身保存下来,否则不能重现相同的数列
无法重现和某一数列完全相同的数列性质
但凡具备周期的数列,都不具备不可重现性,不可重新性仅靠软件无法生成,需要从不可重现的物理现象中获取信息
具备不可重现性的数称为“真随机数”
伪随机数生成器
生成随机数的硬件设备是随机数生成器
生成随机数的软件称为伪随机数生成器