半诚实敌手
双方协议(Two-party protocol):二输入二输出的(随机)过程,可以描述为计算PPT函数 f : { 0 , 1 } ∗ × { 0 , 1 } ∗ → { 0 , 1 } ∗ × { 0 , 1 } ∗ f:\{0,1\}^* \times \{0,1\}^* \rightarrow \{0,1\}^* \times \{0,1\}^* f:{0,1}∗×{0,1}∗→{0,1}∗×{0,1}∗,令双方各自的输入为 x , y x,y x,y,计算 f ( x , y ) = ( f 1 ( x , y ) , f 2 ( x , y ) ) f(x,y)=(f_1(x,y),f_2(x,y)) f(x,y)=(f1(x,y),f2(x,y)),双方各自获得输出的随机变量 f 1 ( x , y ) , f 2 ( x , y ) f_1(x,y),f_2(x,y) f1(x,y),f2(x,y),计算函数 f f f的协议记做 π \pi π
半诚实敌手(semi-honest adversaries):精确地执行协议,但尝试学习接收到的信息和自身状态信息以外的更多信息。
计算不可区分(Computational Indistinguishability):两个概率集合
X
=
{
X
(
a
,
n
)
}
a
∈
{
0
,
1
}
∗
,
n
∈
N
X=\{X(a,n)\}_{a\in\{0,1\}^*,n\in N}
X={X(a,n)}a∈{0,1}∗,n∈N和
Y
=
{
Y
(
a
,
n
)
}
a
∈
{
0
,
1
}
∗
,
n
∈
N
Y=\{Y(a,n)\}_{a\in\{0,1\}^*,n\in N}
Y={Y(a,n)}a∈{0,1}∗,n∈N计算不可区分,记做
X
≡
c
Y
X \overset{c}{\equiv} Y
X≡cY,如果任意的非均匀多项式时间算法
D
D
D都存在可忽略函数
μ
(
⋅
)
\mu(\cdot)
μ(⋅),对于任意的
a
,
n
a,n
a,n都有
∣
P
r
[
D
(
X
(
a
,
n
)
)
=
1
]
−
P
r
[
D
(
Y
(
a
,
n
)
)
=
1
]
∣
≤
μ
(
n
)
| Pr[D(X(a,n))=1] - Pr[D(Y(a,n))=1] | \le \mu(n)
∣Pr[D(X(a,n))=1]−Pr[D(Y(a,n))=1]∣≤μ(n)
一般地,在计算安全的语境下,
a
∈
{
0
,
1
}
∗
a\in\{0,1\}^*
a∈{0,1}∗是输入,
n
∈
N
n\in N
n∈N是安全参数。
半诚实敌手下的计算安全:存在PPT的模拟器
S
1
,
S
2
S_1,S_2
S1,S2,使得
{
S
1
(
1
n
,
x
,
f
1
(
x
,
y
)
)
,
f
(
x
,
y
)
}
x
,
y
,
n
≡
c
{
v
i
e
w
1
π
(
x
,
y
,
n
)
,
o
u
t
p
u
t
π
(
x
,
y
,
n
)
}
x
,
y
,
n
{
S
2
(
1
n
,
x
,
f
2
(
x
,
y
)
)
,
f
(
x
,
y
)
}
x
,
y
,
n
≡
c
{
v
i
e
w
2
π
(
x
,
y
,
n
)
,
o
u
t
p
u
t
π
(
x
,
y
,
n
)
}
x
,
y
,
n
\begin{aligned} \{S_1(1^n,x,f_1(x,y)),\,\,f(x,y)\}_{x,y,n} \overset{c}{\equiv} \{view_1^\pi(x,y,n),\,\,output^\pi(x,y,n)\}_{x,y,n}\\ \{S_2(1^n,x,f_2(x,y)),\,\,f(x,y)\}_{x,y,n} \overset{c}{\equiv} \{view_2^\pi(x,y,n),\,\,output^\pi(x,y,n)\}_{x,y,n}\\ \end{aligned}
{S1(1n,x,f1(x,y)),f(x,y)}x,y,n≡c{view1π(x,y,n),outputπ(x,y,n)}x,y,n{S2(1n,x,f2(x,y)),f(x,y)}x,y,n≡c{view2π(x,y,n),outputπ(x,y,n)}x,y,n
v
i
e
w
i
π
(
x
,
y
,
n
)
view_i^\pi(x,y,n)
viewiπ(x,y,n)是第
i
i
i方的视图,等于
(
w
,
r
i
,
m
1
i
,
⋯
,
m
t
i
)
(w,r^i,m_1^i,\cdots,m_t^i)
(w,ri,m1i,⋯,mti),
w
∈
{
x
,
y
}
w \in \{x,y\}
w∈{x,y}是输入,
r
i
r^i
ri是随机带,
m
j
i
m_j^i
mji是接收到的消息。
o u t p u t π ( x , y , n ) = ( o u t p u t 1 π ( x , y , n ) , o u t p u t 2 π ( x , y , n ) ) output^\pi(x,y,n)=(output_1^\pi(x,y,n),\,\,output_2^\pi(x,y,n)) outputπ(x,y,n)=(output1π(x,y,n),output2π(x,y,n))是联合输出,这里 o u t p u t i π ( x , y , n ) output_i^\pi(x,y,n) outputiπ(x,y,n)是第 i i i方的输出。
注意,这里要求的是:“模拟器 S i S_i Si的输出与函数 f f f的输出的联合分布”与“真实视图 v i e w i view_i viewi和 ( o u t p u t 1 , o u t p u t 2 ) (output_1,output_2) (output1,output2)的联合分布”不可区分,并非仅仅模拟器 S i S_i Si的输出与真实视图 v i e w i view_i viewi不可区分。
陷门置换
陷门置换族(a family of trapdoor permutations)是一族双射函数,在没有陷门信息的前提下,随机选取的函数对于随机值难以求逆。它可以描述为函数的四元组 ( I , S , F , F − 1 ) (I,S,F,F^{-1}) (I,S,F,F−1):
- I ( 1 n ) I(1^n) I(1n):选择 n n n比特随机索引 α \alpha α,取出置换函数 f α f_\alpha fα以及对应的陷门 τ \tau τ
- S ( α ) S(\alpha) S(α):在函数 f α f_\alpha fα的定义域中按某分布随机采样,在随机带为 r r r的情况下输出表示为 S ( α ; r ) S(\alpha;r) S(α;r)
- F ( α , x ) : = f α ( x ) F(\alpha,x):=f_\alpha(x) F(α,x):=fα(x),正向置换
- F − 1 ( τ , y ) : = f α − 1 ( y ) F^{-1}(\tau,y):=f_\alpha^{-1}(y) F−1(τ,y):=fα−1(y),逆向置换
增强陷门置换族(enhanced trapdoor permutations):对于任意的非均匀PPT敌手
A
A
A,总是存在可忽略函数
μ
\mu
μ,对于任意的
n
n
n满足
P
r
[
A
(
1
n
,
α
,
r
)
=
f
α
−
1
(
S
(
α
;
r
)
)
]
≤
μ
(
n
)
Pr[A(1^n,\alpha,r) = f_\alpha^{-1}(S(\alpha;r))] \le \mu(n)
Pr[A(1n,α,r)=fα−1(S(α;r))]≤μ(n)
这里,即使给定采样的随机带
r
r
r,求逆依然困难。
硬核谓词(hard-core predicate):我们说
B
B
B是增强陷门置换族的硬核,如果对于任意的非均匀PPT敌手
A
A
A,总是存在可忽略函数
μ
\mu
μ,对于任意的
n
n
n满足
P
r
[
A
(
1
n
,
α
,
r
)
=
B
(
α
,
f
α
−
1
(
S
(
α
;
r
)
)
)
]
≤
1
2
+
μ
(
n
)
Pr[A(1^n,\alpha,r) = B(\alpha,f_\alpha^{-1}(S(\alpha;r)))] \le \frac{1}{2}+\mu(n)
Pr[A(1n,α,r)=B(α,fα−1(S(α;r)))]≤21+μ(n)
不经意传输
不经意传输(Oblivious Transfer)是双方协议,其中 P 1 P_1 P1拥有两个秘密 b 0 , b 1 b_0,b_1 b0,b1, P 2 P_2 P2想要其中的一个秘密 b σ b_{\sigma} bσ,同时要保证 P 2 P_2 P2无法学习到另一个秘密 b 1 − σ b_{1-\sigma} b1−σ的信息。
双方都持有增强陷门置换 ( I , S , F , F − 1 ) (I,S,F,F^{-1}) (I,S,F,F−1)和它的硬核 B B B,OT协议如下:
- P 1 P_1 P1执行 I ( 1 n ) I(1^n) I(1n)获得 ( α , τ ) (\alpha,\tau) (α,τ),发送 α \alpha α给 P 2 P_2 P2
- P 2 P_2 P2执行 S ( α ) S(\alpha) S(α)两次,得到 x σ x_\sigma xσ和 y 1 − σ y_{1-\sigma} y1−σ(因为置换函数的值域等于定义域),然后计算 y σ = F ( α , x σ ) y_\sigma=F(\alpha,x_\sigma) yσ=F(α,xσ),发送 y 0 , y 1 y_0,y_1 y0,y1给 P 1 P_1 P1
- P 1 P_1 P1使用陷门 τ \tau τ计算 x 0 = F − 1 ( α , y 0 ) x_0=F^{-1}(\alpha,y_0) x0=F−1(α,y0)和 x 1 = F − 1 ( α , y 1 ) x_1=F^{-1}(\alpha,y_1) x1=F−1(α,y1),然后用它们的硬核遮蔽秘密 b 0 , b 1 b_0,b_1 b0,b1,即 β 0 = B ( α , x 0 ) ⊕ b 0 \beta_0=B(\alpha,x_0)\oplus b_0 β0=B(α,x0)⊕b0和 β 1 = B ( α , x 1 ) ⊕ b 1 \beta_1=B(\alpha,x_1)\oplus b_1 β1=B(α,x1)⊕b1,然后将 β 0 , β 1 \beta_0,\beta_1 β0,β1发送给 P 2 P_2 P2
- P 2 P_2 P2计算得到秘密 b σ = B ( α , x σ ) ⊕ β σ b_\sigma=B(\alpha,x_\sigma)\oplus \beta_\sigma bσ=B(α,xσ)⊕βσ
安全性:上述OT协议是在半诚实敌手下计算安全的。证明很长,需要构造两个模拟器 S 1 , S 2 S_1,S_2 S1,S2,证明联合分布不可区分。详见书籍How to Simulate It.
注意,半诚实敌手这个条件很弱。假如OT协议中, P 2 P_2 P2采样 x 0 x_0 x0和 x 1 x_1 x1,然后将 y i = F ( α , x i ) y_i=F(\alpha,x_i) yi=F(α,xi)发送给 P 1 P_1 P1,那么最终 P 2 P_2 P2可以轻易地获得两个秘密 b 0 b_0 b0和 b 1 b_1 b1