阅读论文(Foundation of Garbled Circuits)
文章目录
一、往期回顾
混淆电路论文学习笔记——part1
part1已经简单介绍了混淆方案,电路,边际信息函数以及混淆方案的三个安全性质。接下来进一步介绍三个安全性质以及三个安全性之间的关系。
二、代码游戏
密码学安全性证明大多都是通过游戏归约的方式来进行证明的。因此这里先介绍一下代码游戏
游戏中一般包括三个可选程序,分别是初始化程序,交互程序,最终程序。
一般初始化程序最先执行,进行一系列初始化操作。并且它的输出(如果有输出的话)就是敌手
A
\mathcal{A}
A的输入(这个时候敌手可能正在和其他程序进行交互)。敌手可以进行产生问询。每次产生问询,交互程序就会启动,然后对敌手的问询进行答复。最终敌手给出一个输出,由最终程序来判断敌手是否在游戏中获胜。
三、隐私性、不经意性、认证性之间的关系
我们接下来从编码游戏的角度来理解这三个性质。下面所有游戏的初始化程序都是初始化一个挑战比特 b b b。最终程序都是检验敌手猜测的比特 b ′ b' b′和初始化的挑战比特是否一致。接下来我们详细说明其中的交互程序。
1.隐私性
关于隐私性,我们一共有两种定义方式,一个是不可区分角度(indistinguish),一个是模拟器角度(simulation)。
1.1、不可区分隐私性
我们首先说不可区分角度的交互程序
- proc p r v i n d ( f 0 , f 1 , x 0 , x 1 ) : prv_{ind}(f_0,f_1,x_0,x_1): prvind(f0,f1,x0,x1):
- if Φ ( f 0 ) ≠ Φ ( f 1 ) \varPhi(f_0)\neq\varPhi(f_1) Φ(f0)=Φ(f1) then return false
- if f 0 ( x 0 ) ≠ f 1 ( x 1 ) f_0(x_0) \neq f_1(x_1) f0(x0)=f1(x1) then return false
- if x 0 . l e n g t h ( ) ≠ f 0 . n x_0.length() \neq f_0.n x0.length()=f0.n then retuen false
- ( F , e , d ) ← G b ( 1 k , f b ) (F,e,d) \leftarrow Gb(1^k,f_b) (F,e,d)←Gb(1k,fb), X ← E n ( e , x b ) X \leftarrow En(e,x_b) X←En(e,xb)
- retuen ( F , X , d ) (F,X,d) (F,X,d)
代码解释: 这个不可区分角度隐私性游戏要求输入两对
f
0
,
x
0
,
f
1
,
x
1
f_0,x_0,f_1,x_1
f0,x0,f1,x1,并且要求
f
0
(
x
0
)
=
f
1
(
x
1
)
f_0(x_0) = f_1(x_1)
f0(x0)=f1(x1)。第5行中下标b就是初始化程序选择的挑战比特,为0或者1。
程序理解: 这个游戏就是判断敌手是否能够通过返回的
(
F
,
X
,
d
)
(F,X,d)
(F,X,d)来判断该输出来自于哪一个
f
,
x
f,x
f,x。
1.2、模拟隐私性
在模拟隐私性游戏中,有一个模拟器 ( S ) \mathcal(S) (S),模拟器的功能就是通过安全参数 k k k, f f f泄露的信息 Φ ( f ) \varPhi(f) Φ(f),和计算结果 y y y来获得一个假的 ( F , X , d ) (F,X,d) (F,X,d).
- proc p r v s i m ( f , x ) : prv_{sim}(f,x): prvsim(f,x):
- if x . l e n g t h ( ) ≠ f . n x.length() \neq f.n x.length()=f.n,then return false.
- if b=1 then ( F , e , d ) ← G b ( 1 k , f ) (F,e,d)\leftarrow Gb(1^k,f) (F,e,d)←Gb(1k,f) X ← E n ( e , x ) X\leftarrow En(e,x) X←En(e,x)
- else ( F , X , d ) ← S ( 1 k , X , d ) (F,X,d)\leftarrow S(1^k,X,d) (F,X,d)←S(1k,X,d)
- return (F,X,d).
程序理解: 该程序表示敌手输入 f , x f,x f,x,然后获得一个三元组 ( F , X , d ) (F,X,d) (F,X,d)。敌手能不能猜出结果是不是对应输入的 f , x f,x f,x。
2、不经意性(obliviousness有的博客把这个翻译为茫然性)
2.1、不可区分不经意性
- proc o b v i n d ( f 0 , f 1 , x 0 , x 1 ) : obv_{ind}(f_0,f_1,x_0,x_1): obvind(f0,f1,x0,x1):
- if Φ ( f 0 ) ≠ Φ ( f 1 ) \varPhi(f_0)\neq\varPhi(f_1) Φ(f0)=Φ(f1) then return false
- if f 0 ( x 0 ) ≠ f 1 ( x 1 ) f_0(x_0) \neq f_1(x_1) f0(x0)=f1(x1) then return false
- ( F , e , d ) ← G b ( 1 k , f b ) (F,e,d) \leftarrow Gb(1^k,f_b) (F,e,d)←Gb(1k,fb), X ← E n ( e , x b ) X \leftarrow En(e,x_b) X←En(e,xb)
- retuen
(
F
,
X
)
(F,X)
(F,X)
程序理解: 不可区分不经意性和不可区分隐私性类似。不同之处在于输入的 f 0 ( x 0 ) 与 f 1 ( x 1 ) f_0(x_0)与f_1(x_1) f0(x0)与f1(x1)并不要求一定相等了。返回结果少了解码函数d。
2.2、模拟不经意性
- proc o b v s i m ( f , x ) : obv_{sim}(f,x): obvsim(f,x):
- if x . l e n g t h ( ) ≠ f . n x.length() \neq f.n x.length()=f.n,then return false.
- if b=1 then ( F , e , d ) ← G b ( 1 k , f ) (F,e,d)\leftarrow Gb(1^k,f) (F,e,d)←Gb(1k,f) X ← E n ( e , x ) X\leftarrow En(e,x) X←En(e,x)
- else ( F , X ) ← S ( 1 k , X , d ) (F,X)\leftarrow S(1^k,X,d) (F,X)←S(1k,X,d)
- return (F,X).
程序理解: 模拟不经意性相比于模拟隐私性来说,少返回了解码函数d。
3.认证性
- proc aut(f,x):
- if x . l e n g t h ( ) ≠ f . n x.length() \neq f.n x.length()=f.n,then return false
- ( F , e , d ) ← G b ( 1 k , f ) (F,e,d)\leftarrow Gb(1^k,f) (F,e,d)←Gb(1k,f) X ← E n ( e , x ) X\leftarrow En(e,x) X←En(e,x)
- return (F,X)
认证性的最终程序和上面两个少许不同,这里我们直接给出。 - proc finalize(Y):
- if D e ( d , Y ) = v a l i d De(d,Y) = valid De(d,Y)=valid and Y ≠ E v ( F , X ) Y \neq Ev(F,X) Y=Ev(F,X)*,then return ture
- *else return false
**代码理解:**认证性就是判断敌手在获得F,X的前提下能不能得到一个新的不同于F(X)的合法的Y。
4、边际信息函数
1、常见的集中边际信息函数
Φ
c
i
r
c
(
f
)
\varPhi_{circ}(f)
Φcirc(f)表示泄露电路
f
f
f的全部信息
Φ
s
i
z
e
(
f
)
\varPhi_{size}(f)
Φsize(f)表示泄露电路
f
f
f的
(
n
,
m
,
q
)
(n,m,q)
(n,m,q)
Φ
t
o
p
o
(
f
)
\varPhi_{topo}(f)
Φtopo(f)表示泄露电路
f
f
f的拓扑结构
2、边际信息函数 Φ \varPhi Φ的逆。
定义:边际函数
Φ
(
f
)
\varPhi(f)
Φ(f)的逆函数
Φ
−
i
n
v
e
r
t
e
r
(
)
\varPhi-inverter()
Φ−inverter()的输入是
ϕ
\phi
ϕ,输出是
Φ
\varPhi
Φ函数的原项
f
f
f,即
Φ
(
f
)
=
ϕ
\varPhi(f) = \phi
Φ(f)=ϕ。
定义:如果对于特定的求值函数
e
v
ev
ev,我们也可以定义
(
Φ
,
e
v
)
−
i
n
v
e
r
t
e
r
(
)
(\varPhi,ev)-inverter()
(Φ,ev)−inverter().该函数输入是
(
ϕ
,
y
)
(\phi,y)
(ϕ,y),输出是
(
f
,
x
)
(f,x)
(f,x)。即满足
Φ
(
f
)
=
ϕ
\varPhi(f) = \phi
Φ(f)=ϕ,
e
v
(
f
,
x
)
=
y
ev(f,x) = y
ev(f,x)=y。
定理1:对于
Φ
c
i
r
c
(
f
)
\varPhi_{circ}(f)
Φcirc(f),
Φ
s
i
z
e
(
f
)
\varPhi_{size}(f)
Φsize(f),
Φ
t
o
p
o
(
f
)
\varPhi_{topo}(f)
Φtopo(f)都存在多项式时间下的
Φ
−
i
n
v
e
r
t
e
r
(
)
\varPhi-inverter()
Φ−inverter()函数。
定理2:对于,
Φ
s
i
z
e
(
f
)
\varPhi_{size}(f)
Φsize(f),
Φ
t
o
p
o
(
f
)
\varPhi_{topo}(f)
Φtopo(f)都存在多项式时间下的
(
Φ
,
e
v
)
−
i
n
v
e
r
t
e
r
(
)
(\varPhi,ev)-inverter()
(Φ,ev)−inverter()函数。
定理理解
对于定理1来说,
Φ
c
i
r
c
\varPhi_{circ}
Φcirc泄露了电路的所有信息,因此很容易恢复线路。
Φ
t
o
p
o
(
f
)
\varPhi_{topo}(f)
Φtopo(f)泄露了电路
f
f
f的拓扑结构,因此我们可以对电路门进行随意赋值操作,比如,我们把所有的门电路都赋值为与门,得到的电路就是输出电路。
Φ
s
i
z
e
(
f
)
\varPhi_{size}(f)
Φsize(f),我们可以进行随意的连线操作。比如,我们把所有门电路的输入线都连接电路输入线1和2,那么我们就得到了拓扑电路,然后我们由前面可知,我们可以得到原项。
对定理二来说,,
Φ
t
o
p
o
(
f
)
\varPhi_{topo}(f)
Φtopo(f)泄露了电路
f
f
f的拓扑结构,已知结果
y
y
y,那么我们把所有输出为电路输出的门电路设置为常量电路,常量就是
y
i
y_i
yi。前面的门电路我们随意设置即可。例如:我们可以设置为与门。对于
Φ
s
i
z
e
(
f
)
\varPhi_{size}(f)
Φsize(f),我们前面已经描述了由size信息怎么构造拓扑电路的方法,则我们就可以找到
Φ
s
i
z
e
(
f
)
\varPhi_{size}(f)
Φsize(f)的逆。
4、相互关系(证明见论文)
1、包含关系
- 若一个混淆方案具有模仿隐私性,则它一定具有不可区分隐私性。
- 若一个混淆方案具有不可区分隐私性,且要求 e v ( f , x ) ev(f,x) ev(f,x)对于 Φ \varPhi Φ是可逆的(如果不可逆,则不一定),则该混淆方案也具有模仿隐私性。
- 若一个混淆方案具有模仿不经意性,则它一定具有不可区分隐私性。
- 若一个混淆方案具有不可区分不经意性,且要求
e
v
(
f
,
x
)
ev(f,x)
ev(f,x)在
Φ
\varPhi
Φ是可逆的(如果不可逆,则不一定),则该混淆方案也具有模仿隐私性。
关于证明部分相对繁琐,我们这里就不直接给出,如有感兴趣可以私聊我,我可以把论文原文分享一下。
2、不包含关系
1.一个混淆方案具有不可区分隐私性,该方案不一定具有模拟不可区分不经意性。
2.一个混淆方案具有不可区分不经意性,该方案不一定具有模拟不可区分隐私性。
3.一个混淆方案具有模拟隐私性和模拟不经意性,该方案不一定具有认证性。
4.一个混淆方案具有认证性,该方案不一定具有模拟隐私性或者模拟不经意性。