伪随机函数 密码学
正如本系列第一部分所得出的结论,没有随机性的安全性是不可能的。 确定性密码无法抵御强大的攻击者, 真正的随机数生成器不切实际或难以获得,因此加密技术基于伪随机数生成器。
这篇文章的前两章定义它们是什么,并解释了哪种安全加密技术需要的伪随机生成器。 第三章介绍了另一种通常如何谈论和思考伪随机发生器和密码的方法。
伪随机数生成器定义
伪随机数发生器(PRG)是产生随机数的函数。 它以较小的数字作为输入,并生成巨大的甚至无限的数字流。 输入称为种子。
定义:伪随机数发生器(PRG)是有效函数G:{0,1} s →{0,1} n ,其中s≪ n(s远小于n)
- {0,1} s –种子空间,
- {0,1} n –输出。
根据此定义,偶数仅生成零的函数是伪随机数生成器。 当然,使用这种伪随机生成器实现安全性与不使用伪随机生成器一样好。
安全伪随机发生器
足以用于安全目的的伪随机生成器称为安全伪随机生成器。 不幸的是,我们所能做的就是定义它们。 找到安全的伪随机数发生器或证明某个函数是安全的伪随机数发生器是一个难题。 甚至不知道它们是否存在。
如果可以证明生成器是安全的,则比P≠NP。
本章介绍了两种定义方法,并证明了它们彼此等效。
定义:不可预测性
如果伪随机生成器是不可预测的,则它是安全的。 如果您能够看到来自生成器的数字,那么突然说“停止,下一位将是x”并且正确,那么您就没有在观看安全的伪随机生成器。
如果有可能以非零精度猜测下一位,则生成器计数为可预测的。 通常,预测不必一直都是正确的,只需要比抛硬币更好。
定义:如果存在一个有效的算法A和一个数i,则伪随机数生成器G是可预测的&#