混淆电路论文学习笔记——part2
Posted 艰难前行的李同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了混淆电路论文学习笔记——part2相关的知识,希望对你有一定的参考价值。
阅读论文(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
以上是关于混淆电路论文学习笔记——part2的主要内容,如果未能解决你的问题,请参考以下文章
Unity2019.4.16f1c1 2d学习笔记 part2