3.3伪随机发生器
如果没有多项式时间的区分器可以区分一个根据分布D采样的字符串和一个均匀随机选择的字符串,则D是伪随机的。
一个伪随机发生器是一个确定算法,接受一个短的真正随机的种子,然后将其扩展成为一个长的伪随机字符串。定义如下
3.4 构造安全加密方案
下面证明这是一个具备不可区分加密的定长对称密钥加密方案。
构造一个区分器,判断一个字符串是伪随机还是均匀随机。
证明过程即为,对区分器D进行行为分析,先是如果是一个均匀随机的输入,就相当于是一次一密的方案,可以推出“第二个等式”。如果是一个伪随机,就有下面的等式,然后求差即可得证。
3.4.2 处理变长消息
本节构造了一个可以生成变长的伪随机发生器。即发生器G输入种子s,以及长度l,输出一个伪随机序列。定义如下
3.4.3 流密码和多个加密
之前叙述的加密方案经常被称为流密码,因为加密是首先生成一个伪随机比特流,然后用这个流与明文进行异或运算。在本书中,流密码一般指生成伪随机流的算法。
注意,本书前面的一些讨论的前提是敌手只收到单个密文,然而在现实中,敌手通常会收到多个明文,在这种情况下,我们也要确保加密方案的安全性。
我们来定义多消息窃听实验
值得注意的是单个加密的安全并不代表多次加密的安全,并且我们还有以下定理
这个定理的意思说,对于一个相同的消息,必须在多次加密时产生不同的多个明文,才能够保证安全性。
使用流密码的安全多次加密
对于非同步加密