伪随机性原语的实用构造与分析
1. 引言
在密码学领域,伪随机生成器是最基本的原语之一。它是一种确定性算法,能将少量真正的随机比特扩展为看起来随机的长字符串。拥有伪随机生成器意味着可以构建语义安全的密码系统、为非对称加密生成安全密钥等。
早期(80年代初)的伪随机生成器构造是“临时拼凑”的,很多后来被证明是完全不安全的。直到Blum和Micali以及Yao的开创性工作,伪随机性的可靠理论才出现。理论上,伪随机生成器存在的充要条件是存在单向函数,即一种容易计算但难以求逆的函数。虽然我们不确定这种函数是否存在,但有很多有力的候选者,如好的分组密码(固定明文,将密钥映射到密文)、哈希函数等。然而,基于单向函数的理论构造往往很复杂,需要数百万比特的密钥大小才能提供合理的安全保证,因此在实践中“临时拼凑”的方法仍然常用。
单向性本身不是一个强属性,一个函数可能难以求逆,但仍可能有非常不理想的性质。例如,即使$f$是单向的,从$f(x)$中仍可能很容易推导出$x$的大部分信息。基于单向性构建伪随机性似乎需要复杂的构造。但如果假设函数$f$不仅是单向的,还是一个置换,情况就会好很多。Blum和Micali以及Goldreich和Levin的工作表明,在这种情况下可以找到合理实用的构造。
2. 预备知识
2.1 符号表示
- 二进制字符串$x$的长度表示为$|x|$,${0, 1}^n$表示长度为$n$的二进制字符串集合。
- $U_n$表示${0, 1}^n$上的均匀分布。
- 除非另有说明,$\log$指以2为底的对数。
- 设$G : {0, 1}^n
超级会员免费看
订阅专栏 解锁全文
31

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



