本篇文章要介绍的内容包括:可忽略的(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是均匀分布。