现代密码学3.5--伪随机函数/PRF
博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。
第二章定义了完美安全及其对应的密码方案“一次一密”,第三章前三节定义了计算安全,介绍了PRG和基于PRG构造的满足计算安全的密码方案;3.4节定义了CPA安全,3.5节将介绍PRF和基于PRF构造的满足CPA安全的密码方案。
伪随机函数/pseudorandom function/PRF
-
PRF和PRG:PRG: s : { 0 , 1 } n → G ( s ) : { 0 , 1 } l ( n ) s:\{0,1\}^n \rightarrow G(s):\{0,1\}^{l(n)} s:{ 0,1}n→G(s):{ 0,1}l(n),讨论的是字符串 G ( s ) G(s) G(s)分布的伪随机性。PRF: F k : { 0 , 1 } n → { 0 , 1 } n F_k:\{0,1\}^n\rightarrow \{0,1\}^n Fk:{ 0,1}n→{ 0,1}n,讨论的是函数 F k F_k Fk分布的伪随机性,是PRG的扩展。
-
真随机函数 f ∈ f\in f∈ Func n _n n:
- 函数族Func n _n n:所有 n n n比特字符串到 n n n比特字符串的函数
- 函数族大小:对于一个函数,输入 x ∈ { 0 , 1 } n x\in \{0,1\}^n x∈{ 0,1}n,有 2 n 2^n 2n种;对于每一种输入,有一个 n n n长的输出;有 2 n 2^n 2n行, n n n列,这个矩阵大小为 n ⋅ 2 n n\cdot 2^n n⋅2n,这表示了一个函数;这个函数族大小为 ∣ | ∣Func n ∣ = 2 n ⋅ 2 n _n|=2^{n\cdot 2^n} n∣=2n⋅2n。
- 如何取真随机函数 f f f:由于一个真随机函数要用 n ⋅ 2 n n\cdot 2^n n⋅2n位表示,是一个指数的输入,多项式时间区分者 D D D没有足够的时间得到完整输入,需要询问 o r a c l e oracle oracle O O O。oracle O O O是一个确定性函数,执行伪随机函数 F k ( k F_k(k Fk(k随机 ) ) )或真随机函数 f f f, D D D可以询问多项式次。
-
定义: F : { 0 , 1 } ∗ × { 0 , 1 } ∗ → { 0 , 1 } ∗ F:\{0,1\}^*\times \{0,1\}^*\rightarrow \{0,1\}^* F:{ 0,1}