随机数生成器:原理、安全与应用
1. 随机数生成器概述
随机数在许多领域都有重要应用,尤其是在密码学中。随机数生成器(RNG)主要分为真随机数生成器和伪随机数生成器(PRNG)。
真随机数生成器的熵源可以来自系统和人类活动,如鼠标移动等。不过,这些活动生成的熵源比较脆弱,容易被攻击者操纵,并且生成随机比特的速度较慢。量子随机数生成器(QRNG)依赖量子力学现象,如放射性衰变、真空涨落和光子极化观测,能提供真正的随机性,但实际应用中可能存在偏差,生成比特的速度也不快,同样需要额外组件来实现高速可靠的生成。
伪随机数生成器则能从少量真随机比特可靠地生成大量人工随机比特。与RNG不同,PRNG能快速从数字源以确定的方式生成看似随机的比特,并具有最大熵。本质上,PRNG将少量不可靠的随机比特转换为适合密码学应用的长串可靠伪随机比特,如下图所示:
graph LR
A[RNG] -->|少量不可靠比特| B[PRNG]
B -->|长串可靠比特| C[密码学应用]
2. PRNG的工作原理
PRNG会定期从RNG接收随机比特,并使用这些比特更新一个大的内存缓冲区(即熵池)的内容。熵池是PRNG的熵源,类似于物理环境是RNG的熵源。更新熵池时,PRNG会混合池中的比特以消除统计偏差。
为了生成伪随机比特,PRNG运行确定性随机比特生成器(DRBG)算法,该算法将熵池中的一些比特扩展为更长的序列。DRBG是确定性的,给定相同输入总是产生相同输出。PRNG会确保DRBG不会两次接收到相同输入,以生成唯一的
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



