密码学/随机质量
外观
< 密码学
"随机源的熵越高,它生成的随机数据的质量就越好。"
许多密码学算法都需要随机源,无论是密钥生成还是其他原语。实现者在选择随机源时必须极其谨慎,否则他们会让自己暴露在攻击之下。例如,唯一被正式证明的加密技术,一次性密码本,需要一个完全随机且无偏差的密钥流,其长度至少与消息本身一样长,并且绝不重复使用。这一要求带来了许多隐含的复杂性,因为“真随机性”的唯一来源是在物理世界中(例如硅衰变),并且不可能在软件中实现。因此,通常只有获得伪随机性才是可行的。伪随机数生成器(PRNG)使用多个被认为难以预测的源(鼠标移动、计算机时钟的最低有效位、网络统计数据等)来生成一个熵池,然后将其通过各种算法来尝试消除任何偏差,然后用作预先确定的一组静态数字的种子。即使有了所有这些熵源,一个有决心的攻击者通常可以通过剔除一些因素来降低实现的有效强度 - 例如,对时间进行有根据的猜测。被认为适合密码学用途的 PRNG 称为密码学安全的伪随机数生成器 (CSPRNG)。
在信息论中,熵被定义为表示一段比特串中信息量的度量。例如,传统的性别分类包含 1 位熵,因为它可以使用 1 代表男性,0 代表女性来表示。随机源的质量取决于它生成的熵有多少,如果熵小于实际的比特数,则存在一些信息重复。重复的信息越多,或某个 PRNG 的周期越短,熵就越低,随机性来源就越弱、越容易预测。因此,在密码学中,人们希望在可用的资源范围内尽可能地接近完美的随机性 - 其中一个完美的随机数生成器会创建一个比特序列,无论获取多少先前生成的比特样本,它们都是不可预测的。