本篇文章要介绍的内容包括:可忽略的(negligible)、伪随机数生成器(PRG)、Statistical tests(统计检验)、Advantage、Secure PRGs(安全伪随机生成器)、computationally indistinguishable(计算不可区分)。
明天再补。
文章目录
可忽略的(negligible)
首先我们尝试用实践的角度理解,如果 ε ≥ 1 / 2 30 \varepsilon\geq 1/2^{30} ε≥1/230,那么 ε \varepsilon ε是不可忽略的(non-neg),因为很有可能在 1 G B 1GB 1GB的数据中出现一次;如果 ϵ ≤ 1 / 2 80 \epsilon\leq1/2^{80} ϵ≤1/280,那么 ε \varepsilon ε是可忽略的(negligible),在很多很多的数据中也不太可能出现一次。
从理论的角度来说, ε \varepsilon ε是一个 Z ≥ 0 → R ≥ 0 \mathbb{Z}^{\geq0}\rightarrow\mathbb{R}^{\geq0} Z≥0→R≥0的函数并且
ε \varepsilon ε是不可忽略的(non-neg),当且仅当 ∃ d : ε ( λ ) ≥ 1 / λ d . \exists d:\varepsilon(\lambda)\geq 1/\lambda^{d}. ∃d:ε(λ)≥1/λd.
ε \varepsilon ε是可忽略的(negligible),当且仅当 ∀ d , λ ≥ λ d : ε ( λ ) ≤ 1 / λ d . \forall d,\lambda\geq\lambda_{d}:\varepsilon(\lambda)\leq 1/\lambda^{d}. ∀d,λ≥λd:ε(λ)≤1/λd.
理解:当 ε \varepsilon ε是不可忽略的(non-neg),
ε ( λ ) ≥ 1 λ d ≥ 1 λ d + λ d − 1 + ⋯ + λ 0 , \varepsilon(\lambda) \geq \frac{1}{\lambda^{d}} \geq\frac{1}{
{\lambda^{d}+\lambda^{d-1}+\cdots+\lambda^{0}}}, ε(λ)≥λd1≥λd+λd−1+⋯+λ01,
即 ε ≥ 1 / p o l y \varepsilon\geq 1/poly ε≥1/poly, ε \varepsilon ε也是大于等于某个多项式的倒数的。
类似的,当 ε \varepsilon ε是可忽略的(negligible),如果 λ \lambda λ足够大,有 ε ≤ 1 / p o l y \varepsilon\leq 1/poly ε≤1/poly, ε \varepsilon ε是小于等于所有多项式的倒数的。
三个例子
例1: ε ( λ ) = 1 / 2 λ \varepsilon(\lambda)=1/2^{\lambda} ε(λ)=1/2λ是可忽略的(negligible)。
简单说明:无论 d d d取什么值, λ \lambda λ总是可以取对应的值,使得 2 λ ≥ λ d 2^{\lambda}\geq \lambda^{d} 2λ≥λd。
例2: ε ( λ ) = 1 / λ 1000 \varepsilon(\lambda)=1/{\lambda}^{1000} ε(λ)=1/λ1000是不可忽略的(non-neg)。
简单说明:当 λ ≥ 1 \lambda\geq 1 λ≥1时,可取 d = 1001 d=1001 d=1001;当 0 ≤ λ < 1 0\leq\lambda< 1 0≤λ<1时,可取 d = 999 d=999 d=999。
例3: ε ( λ ) = { 1 / 2 λ , 当 λ 为 奇 数 时 ; 1 / λ 1000 , 当 λ 为 偶 数 时 . \varepsilon(\lambda)=\left\{\begin{array}{cr} 1/2^\lambda, &当\lambda为奇数时;\\ 1/{\lambda}^{1000}, &当\lambda为偶数时. \end{array}\right. ε(λ)={
1/2λ,1/λ1000,当λ为奇数时;当λ为偶数时., ε ( λ ) \varepsilon(\lambda) ε(λ)是不可忽略的(non-negligible)。
简单说明:因为要对 ∀ d \forall d ∀d都成立,当 λ \lambda λ为偶数时,根据例2是不可忽略的,所以 ε ( λ ) \varepsilon(\lambda) ε(λ)不可忽略。
伪随机数生成器(PRG)
定义:设 G : K → { 0 , 1 } n G:\mathcal{K}\rightarrow\{0,1\}^{n} G:K→{ 0,1}n,如果说 [ k ← R K , 输 出 G ( k ) ] [k\stackrel{R}{\leftarrow}\mathcal{K},输出G(k)] [k←RK,输出G(k)]和 [ r ← R { 0 , 1 } n , 输 出 r ] [r\stackrel{R}{\leftarrow}\{0,1\}^{n},输出r] [r←R{ 0,1}n,输出r]是不可区分(indistinguishable)的,那么就说 G G G是伪随机数生成器(PRG)。
注释: r ← R { 0 , 1 } n r\stackrel{R}{\leftarrow}\{0,1\}^n r←R{
0,1}n表示从 { 0 , 1 } n \{0,1\}^{n} {
0,1}n均匀地取出一个数 r r r(即,均匀抽样)。
不可区分(indistinguishable)是说两者非常非常接近,相差很小。
定义中因为是均匀抽样,所以 G ( k ) G(k) G(k)和 r r r的不可区分是从他们的概率分布来看的,他们的任意两个数输出的概率相差地非常非常小,小到几乎可以忽略(negligible,如 ≤ 2 30 \leq2^{30} ≤230),多项式时间内看不出两者的区别。
Statistical Tests(统计检验)
定义:统计检验(Statistical test)是一个算法 A ( x ) , x ∈ { 0 , 1 } n A(x),x\in\{0,1\}^{n} A(x),x∈{ 0,1}n,且满足 A ( x ) ∈ { 0 , 1 } A(x)\in\{0,1\} A(x)∈{ 0,1}。
注释:假设算法 A ( x ) A(x) A(x)用来判断 x x x是否是随机数,若是随机数,则 A ( x ) A(x) A(x)输出 1 1 1;若不是随机数, A ( x ) A(x) A(x)输出 0 0 0。
两个例子
例1:如果“算法 A ( x ) A(x) A(x)判断 x x x是否是随机数“是通过 0 0 0和 1 1 1的个数是否很接近得到的,那么可以如下定义 A ( x ) A(x) A(x):
A ( x ) = 1 A(x)=1 A(x)=1当且仅当 ∣ # 0 ( x ) − # 1 ( x ) ∣ ≤ 10 ⋅ n |\#0(x)-\#1(x)|\leq 10\cdot\sqrt{n} ∣#0(x)−#1(x)∣≤10⋅n,其中 # 0 ( x ) \#0(x) #0(x)表示 x x x中 0 0 0的个数, # 1 ( x ) \#1(x) #1(x)表示 x x x中 1 1 1的个数。
例2:如果“算法 A ( x ) A(x) A(x)判断 x x x是否是随机数“是通过连续两个 0 0 0的个数是否接近 1 4 n \frac{1}{4}n 41n得到的,那么可以如下定义 A ( x ) A(x) A(x):
A ( x ) = 1 A(x)=1 A(x)=1当且仅当 ∣ # 00 ( x ) − n 4 ∣ ≤ 10 ⋅ n |\#00(x)-\frac{n}{4}|\leq 10\cdot\sqrt{n} ∣#00(x)−4n∣≤10⋅n,其中 # 00 ( x ) \#00(x) #00(x)表示 x x x中 00 00 00的个数。
PRG的Advantage
定义:定义为算法 A A A是伪随机数生成器 G G G相对于随机数的Advantage为
A d v P R G [ A , G ] = ∣ P r [ A ( G ( k ) ) = 1 ] − P r [ A ( r ) = 1 ] ∣ , Adv_{PRG}[A,G]=\big|Pr[A(G(k))=1] - Pr[A(r)=1]\big|, AdvPRG[A,G]=∣∣Pr[A(G(k))=1]−Pr[A(r)=1]∣∣,其中 A ( x ) A(x) A(x)是统计检验(Statistical test), G : K → { 0 , 1 } n G:\mathcal{K}\rightarrow\{0,1\}^n G:K→{
0,1}n,以及 r ← R { 0 , 1 } n r\stackrel{R}{\leftarrow}\{0,1\}^n r←R{
0,1}n。
注释:如果 P r [ A ( G ( k ) ) = 1 ] Pr[A(G(k))=1] Pr[A(G(k))=1]是算法 A A A判定 G ( k ) G(k) G(k)是随机数的概率, P r [ A ( r ) = 1 ] Pr[A(r)=1] Pr[A(r)=1]是算法 A A A判定 r r r是随机数的概率,那么 A d v P R G [ A , G ] Adv_{PRG}[A,G] AdvPRG[A,G]表示 G ( k ) G(k) G(k)在算法 A A A下离均匀抽样 r r r的距离,越接近均匀抽样透露的原信息就越少,越不容易预测 G ( k ) G(k) G(k),所以 A d v P R G [ A , G ] Adv_{PRG}[A,G] AdvPRG[A,G]越小越好。
一个例子
现在有伪随机数生成器 G : K → { 0 , 1 } n G:\mathcal{K}\rightarrow\{0,1\}^n G:K→{
0,1}n,有 2 3 \frac{2}{3} 32的概率使得 m s b ( G ( k ) ) = 1 msb(G(k))=1 msb(G(k))=1(其中 m s b ( x ) msb(x) msb(x)表示二进制下 x x x的最高位),定义统计检验 A ( x ) A(x) A(x)为
“如果 m s b ( x ) = 1 msb(x)=1 msb(x)=1那么 A ( x ) = 1 A(x)=1 A(x)=1;否则 A ( x ) = 0 A(x)=0 A(x)=0”,则有
A d v P R G [ A , G ] = ∣ P r [ A ( G ( k ) ) = 1 ] − P r [ A ( r ) = 1 ] ∣ = ∣ 2 / 3 − 1 / 2 ∣ = 1 / 6 , Adv_{PRG}[A,G]=\big|Pr[A(G(k))=1] - Pr[A(r)=1]\big|=\big|2/3-1/2\big|=1/6, AdvPRG[A,G]=∣∣Pr[A(G(k))=1]−Pr[A(r)=1]∣∣=∣∣2/3−1/2∣∣=1/6,即算法 A A A能够预测生成器 G G G的Advantage为 1 / 6 1/6 1/6。
Secure PRGs(安全伪随机生成器)
定义:设 G : K → { 0 , 1 } n G:\mathcal{K}\rightarrow\{0,1\}^n G:K→{ 0,1}n,如果所有高效(Efficient)的统计检验(Statistics tests) A : A d v P R G [ A , G ] A:Adv_{PRG}[A,G] A:AdvPRG[A,G]是可忽略的(negligible),那么 G G G是安全伪随机生成器(Secure PRG)。
注释:现在还不知道是否存在可证明的Secure PRG。一个Secure PRG是不可预测(unpredictable)的。
定理(Yao’82)
定理(Yao’82):设 G : K → { 0 , 1 } n G:\mathcal{K}\rightarrow\{0,1\}^n G:K→{ 0,1}n是一个PRG,如果 ∀ i ∈ { 0 , 1 , ⋯ , n − 1 } \forall i\in\{0,1,\cdots,n-1\} ∀i∈{ 0,1,⋯,n−1}, G G G输出的第 i i i位都是不可预测的,那么 G G G是一个Secure PRG。
注释:这个定理只需要一位一位考虑是否不可预测,而不用整体的看,极大地简化了判断Secure PRG的方式。
computationally indistinguishable(计算不可区分)
定义:如果 P 1 P_1 P1和 P 2 P_2 P2是在 { 0 , 1 } n \{0,1\}^n { 0,1}n上的两个分布函数,当所有高效的统计检验(Statistics tests) A : ∣ P r x ← P 1 [ A ( x ) = 1 ] − P r x ← P 2 [ A ( x ) = 1 ] ∣ A:\big|Pr_{x\leftarrow P_1}[A(x)=1]-Pr_{x\leftarrow P_2}[A(x)=1]\big| A:∣∣Prx←P1[A(x)=1]−Prx←P2[A(x)=1]∣∣是可忽略的(negligible),那么 P 1 P_1 P1和 P 2 P_2 P2是计算不可区分(computationally indistinguishable)的,记作 P 1 ≈ p P 2 P_1 \approx_p P_2 P1≈pP2。
一个例子
如果 { k ← R K : G ( k ) } ≈ p u n i f o r m ( { 0 , 1 } n ) \{k\stackrel{R}{\leftarrow}\mathcal{K}:G(k)\}\approx_p uniform(\{0,1\}^n) { k←RK:G(k)}≈puniform({ 0,1}n),PRG是安全的。
uniform是均匀分布。