参考文献:《密码协议》课程 PPT
文章目录
- UM & AM
- 安全定义
- 编译器
- Semi-honest & Malicious
- 安全定义
- 半诚实模型
- 恶意模型
- 编译器
- Input-Commitment
- Augmented Coin-Tossing
- Authenticated Computation
- 编译器框架
UM & AM
安全定义
异步网络下的多方协议,它由若干会话(Session, 某协议的一份独立执行)构成。每个参与方同时与多个其他参与方执行若干个协议或者子协议的会话。每个会话被两个参与者的 u i d uid uid 以及会话的 s i d sid sid 唯一索引,会话执行时对应参与者会保持一个局部状态(含有私有数据),会话结束后将擦除(erase)这个状态(前向安全性(forward secrecy):即使长期秘钥泄露,过期秘钥依然与随机秘钥不可区分),会话的输出包括数值以及事件(成功 / 失败)。环境的全局输出包括:所有参与方的局部输出、敌手的输出。
消息驱动(message-driven)模式:在运行环境中,进程 P i P_i Pi 请求执行(子)协议 Π \Pi Π 时,发出 establish-session ( P i , P j , s i d , r o l e ) \text{establish-session}(P_i,P_j,sid,role) establish-session(Pi,Pj,sid,role) 命令来启动协议 Π \Pi Π 的一个 session,其中 r o l e ∈ { i n i t i a t o r , r e s p o n d e r } role \in \{initiator, responder\} role∈{initiator,responder}。在这个 session 中, P i P_i Pi 将消息 ( P i , P j , s i d , m e s s a g e ) (P_i,P_j,sid,message) (Pi,Pj,sid,message) 发送给 P j P_j Pj,激活它在这个会话中处理此消息。
AM 敌手 A \mathcal A A(Authenticated-Links Adversary Model)是被动的 PPT 敌手,它可以:通过其他参与方的消息来激活某个参与方(认证信道,绑定了通信两端)、任何消息至多被传递一次(异步信道,消息传递可被无限期延迟)。全局输出记为 A U T H Π , A ( k , x ⃗ , r ⃗ ) AUTH_{\Pi,\mathcal A}(k,\vec x,\vec r) AUTHΠ,A(k,x,r),其中 k k k 是全局公开输入, x ⃗ , r ⃗ \vec x,\vec r x,r 是各自的私有输入和随机带。
UM 敌手 U \mathcal U U(Unauthenticated-Links Adversary Model)是主动的 PPT 敌手,它可以:操作某些会话(插入删除消息、编排执行顺序、开启结束会话)、获得某些会话的内部状态、入侵某些参与者(获取未完成会话的内部状态、查询已完成会话的秘密输出、控制信息擦除)。全局输出记为 U N A U T H Π , U ( k , x ⃗ , r ⃗ ) UNAUTH_{\Pi,\mathcal U}(k,\vec x,\vec r) UNAUTHΠ,U(k,x,r),其中 k k k 是全局公开输入, x ⃗ , r ⃗ \vec x,\vec r x,r 是各自的私有输入和随机带。
编译器
两个
n
n
n 方的消息驱动协议
Π
,
Π
′
\Pi,\Pi'
Π,Π′,我们说
Π
′
\Pi'
Π′ 在 UM 下仿真(emulate)
Π
\Pi
Π,如果对于任意的 UM 敌手
U
U
U,都存在 AM 敌手
A
A
A,使得
{
A
U
T
H
Π
,
A
(
k
,
x
⃗
,
r
⃗
)
}
k
,
x
,
r
≡
{
U
N
A
U
T
H
Π
′
,
U
(
k
,
x
⃗
,
r
⃗
)
}
k
,
x
,
r
\{AUTH_{\Pi,\mathcal A}(k,\vec x,\vec r)\}_{k,x,r} \equiv \{UNAUTH_{\Pi',\mathcal U}(k,\vec x,\vec r)\}_{k,x,r}
{AUTHΠ,A(k,x,r)}k,x,r≡{UNAUTHΠ′,U(k,x,r)}k,x,r
这儿的 “仿真” 是说两个不同模型下的协议功能等价。
对于 AM 下的消息传递协议(message transmission, MT),可以使用签名方案,将它用某个 authenticator 转化为 UM 下功能等价的协议。
给定 TM 协议的编译器 λ \lambda λ,可以给出一个通用编译器 C λ \mathcal C_\lambda Cλ:
- 输入任意协议 Π \Pi Π 的描述
- 对于 Π \Pi Π 的每个消息传递,协议 Π ′ \Pi' Π′ 都调用 λ \lambda λ 来发送消息
- 每当 λ \lambda λ 收到一个消息,协议 Π ′ \Pi' Π′ 用此消息来激活 Π \Pi Π
- 输出新协议 Π ′ = C λ ( Π ) \Pi' = \mathcal C_\lambda(\Pi) Π′=Cλ(Π)
Semi-honest & Malicious
我们现在关注 2PC (两方安全计算)的安全性。
计算函数 f : = ( f 1 , f 2 ) f:=(f_1,f_2) f:=(f1,f2) 的两方协议 Π \Pi Π 如图所示:
安全定义
半诚实模型
在半诚实模型(Semi-honest Model)中,敌手是 honest-but-curious 的,它们诚实地遵照协议执行,但是会分析获得的消息序列,试图获取知识。
根据信息论,分析源数据获得的信息熵不会超过源数据本身的信息熵,因此 PPT 的敌手所获得的知识必定源于对 view 的高效计算。只要存在一个 PPT 模拟器(作为 P 2 P_2 P2 但没有 P 2 P_2 P2 的私有输入)仅根据 P 1 P_1 P1 的输入输出就模拟出 P 1 P_1 P1 的视图,则说明 Π \Pi Π 的交互信息中无法高效提取出知识。
设函数 f : { 0 , 1 } ∗ × { 0 , 1 } ∗ → { 0 , 1 } ∗ × { 0 , 1 } ∗ f:\{0,1\}^* \times \{0,1\}^* \to \{0,1\}^* \times \{0,1\}^* f:{0,1}∗×{0,1}∗→{0,1}∗×{0,1}∗ 为 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)),协议 Π \Pi Π 是计算 f f f 的两方协议。在 Π ( x , y ) \Pi(x,y) Π(x,y) 执行期间,
- P 1 P_1 P1 的视图为 V i e w 1 Π ( x , y ) : = ( x , r 1 , m 1 , ⋯ , m t ) View_1^\Pi(x,y) := (x,r_1,m_1,\cdots,m_t) View1Π(x,y):=(x,r1,m1,⋯,mt),其中 x x x 是私有输入, r 1 r_1 r1 是内部随机带, m i m_i mi 是收到的(以及发送的)消息,它的输出 O u t p u t 1 Π ( x , y ) Output_1^\Pi(x,y) Output1Π(x,y) 是对 V i e w 1 Π View_1^\Pi View1Π 的高效计算(包含在 V i e w 1 Π View_1^\Pi View1Π 内)。
- P 2 P_2 P2 的视图为 V i e w 2 Π ( x , y ) : = ( y , r 2 , m 1 , ⋯ , m s ) View_2^\Pi(x,y) := (y,r_2,m_1,\cdots,m_s) View2Π(x,y):=(y,r2,m1,⋯,ms),其中 y y y 是私有输入, r 2 r_2 r2 是内部随机带, m i m_i mi 是收到的(以及发送的)消息,它的输出 O u t p u t 2 Π ( x , y ) Output_2^\Pi(x,y) Output2Π(x,y) 是对 V i e w 2 Π View_2^\Pi View2Π 的高效计算(包含在 V i e w 2 Π View_2^\Pi View2Π 内)。
我们说 Π \Pi Π 在 Semi-honest Model 下能够安全计算 f f f,
-
对于 P 2 P_2 P2 的安全性,存在 PPT 模拟器 S i m 1 Sim_1 Sim1(为 P 1 ∗ P_1^* P1∗ 模拟与 P 2 P_2 P2 的交互),使得如下的联合分布不可区分
{ S i m 1 ( x , f 1 ( x , y ) ) , f 2 ( x , y ) } X , Y ≡ c { V i e w 1 Π ( x , y ) , O u t p u t 2 Π ( x , y ) } X , Y \{Sim_1(x,f_1(x,y)),\, f_2(x,y)\}_{X,Y} \overset{c}{\equiv} \{View_1^\Pi(x,y),Output_2^\Pi(x,y)\}_{X,Y} {Sim1(x,f1(x,y)),f2(x,y)}X,Y≡c{View1Π(x,y),Output2Π(x,y)}X,Y -
对于 P 1 P_1 P1 的安全性,存在 PPT 模拟器 S i m 2 Sim_2 Sim2(为 P 2 ∗ P_2^* P2∗ 模拟与 P 1 P_1 P1 的交互),使得如下的联合分布不可区分
{ f 1 ( x , y ) , S i m 2 ( y , f 2 ( x , y ) ) } X , Y ≡ c { O u t p u t 1 Π ( x , y ) , V i e w 2 Π ( x , y ) } X , Y \{f_1(x,y),\, Sim_2(y,f_2(x,y))\}_{X,Y} \overset{c}{\equiv} \{Output_1^\Pi(x,y),\, View_2^\Pi(x,y)\}_{X,Y} {f1(x,y),Sim2(y,f2(x,y))}X,Y≡c{Output1Π(x,y),View2Π(x,y)}X,Y
如果
f
f
f 是确定性函数,则可以简化为:
{
S
i
m
1
(
x
,
f
1
(
x
,
y
)
)
}
X
,
Y
≡
c
{
V
i
e
w
1
Π
(
x
,
y
)
}
X
,
Y
{
S
i
m
2
(
y
,
f
2
(
x
,
y
)
)
}
X
,
Y
≡
c
{
V
i
e
w
2
Π
(
x
,
y
)
}
X
,
Y
\begin{aligned} \{Sim_1(x,f_1(x,y))\}_{X,Y} \overset{c}{\equiv} \{View_1^\Pi(x,y)\}_{X,Y}\\ \{Sim_2(y,f_2(x,y))\}_{X,Y} \overset{c}{\equiv} \{View_2^\Pi(x,y)\}_{X,Y}\\ \end{aligned}
{Sim1(x,f1(x,y))}X,Y≡c{View1Π(x,y)}X,Y{Sim2(y,f2(x,y))}X,Y≡c{View2Π(x,y)}X,Y
对于随机函数 f f f,联合分布是必要的。例如 f ( 1 n , 1 n ) = ( r ← R { 0 , 1 } n , ⊥ ) f(1^n,1^n)=(r \leftarrow_R \{0,1\}^n,\perp) f(1n,1n)=(r←R{0,1}n,⊥),我们构造 Π \Pi Π 为: P 1 P_1 P1 随机掷硬币 r r r,将它发送给 P 2 P_2 P2,然后 P 1 P_1 P1 输出 r r r 但是 P 2 P_2 P2 什么也不输出。这个 Π \Pi Π 根本没什么安全性可言,但是确定性版本的模拟器 S i m 2 Sim_2 Sim2 很容易构造(随机掷币 r r r,并随机生成 P 2 P_2 P2 的一个随机带 ρ \rho ρ),于是它说 Π \Pi Π 安全计算了 f f f(这太不合理了)。
恶意模型
在恶意模型(Malicious Model)中,敌手会以任意方式偏离协议:随意终止(协议执行的某一步)、改变输入值(敌手一方的)、过早停止(敌手已获得全部想要的消息,但对方仍需一些消息传递才能计算出结果)。
在 Ideal World 中存在计算 f f f 的可信第三方(Trusted Third Party, TTP),且参与方与 TTP 之间的消息传递是不可窃听的。因此,在 Ideal World 中不存在什么敌手(即使是无界的)可以获取有关对方输入的知识。如果 Real World 中的任意敌手都可以在 Ideal World 中被模拟,就说明 Real World 中的敌手也没什么威胁。
设函数 f : { 0 , 1 } ∗ × { 0 , 1 } ∗ → { 0 , 1 } ∗ × { 0 , 1 } ∗ f:\{0,1\}^* \times \{0,1\}^* \to \{0,1\}^* \times \{0,1\}^* f:{0,1}∗×{0,1}∗→{0,1}∗×{0,1}∗ 为 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)),一个 admissible(可接受的)Ideal World 敌手是多项式尺寸的电路族 C = ( C 1 , C 2 ) C = (C_1,C_2) C=(C1,C2),其中存在 i ∈ { 1 , 2 } i \in \{1,2\} i∈{1,2} 使得 C i ( I ) = I C_i(I)=I Ci(I)=I 且 C i ( I , O ) = O C_i(I,O)=O Ci(I,O)=O(人话就是:诚实方),这里 I I I 是自己的输入, O O O 是从 TTP 收到的输出。假设 TTP 计算 f ( x , y ) f(x,y) f(x,y) 后首先回复 C 1 C_1 C1 然后再回复 C 2 C_2 C2(导致 C 1 ∗ C_1^* C1∗ 有 “早停” 的能力),那么定义 Ideal 联合执行 I d e a l f , C ( x , y ) Ideal_{f,C}(x,y) Idealf,C(x,y) 为:
-
如果 C 2 C_2 C2 诚实(即 C 2 ( I ) = I C_2(I)=I C2(I)=I 且 C 2 ( I , O ) = O C_2(I,O)=O C2(I,O)=O),
-
当 C 1 ( x ) = ⊥ C_1(x) = \perp C1(x)=⊥ 时( C 1 ∗ C_1^* C1∗ 提前终止),
I d e a l f , C ( x , y ) = ( C 1 ( x , ⊥ ) , ⊥ ) Ideal_{f,C}(x,y) = (C_1(x,\perp),\perp) Idealf,C(x,y)=(C1(x,⊥),⊥)其中 C 1 ( x , ⊥ ) C_1(x,\perp) C1(x,⊥) 是收到 TTP 的回应 ⊥ \perp ⊥ 后做的计算结果
-
当 C 1 ( x ) ≠ ⊥ C_1(x) \neq \perp C1(x)=⊥ 且 C 1 ( x , f 1 ( C 1 ( x ) , y ) ) = ⊥ C_1(x,f_1(C_1(x),y))=\perp C1(x,f1(C1(x),y))=⊥ 时( C 1 ∗ C_1^* C1∗ 过早停止),
I d e a l f , C ( x , y ) = ( C 1 ( x , f 1 ( C 1 ( x ) , y ) ) , ⊥ ) Ideal_{f,C}(x,y) = (C_1(x,f_1(C_1(x),y)),\perp) Idealf,C(x,y)=(C1(x,f1(C1(x),y)),⊥)其中 C 1 ( x , f 1 ( C 1 ( x ) , y ) ) C_1(x,f_1(C_1(x),y)) C1(x,f1(C1(x),y)) 是收到 TTP 的回应 f 1 ( C 1 ( x ) , y ) f_1(C_1(x),y) f1(C1(x),y) 后做的计算结果
-
对于其他情况( C 1 C_1 C1 诚实,或者 C 1 ∗ C_1^* C1∗ 修改了输入),
I d e a l f , C ( x , y ) = ( C 1 ( x , f 1 ( C 1 ( x ) , y ) ) , f 2 ( C 1 ( x ) , y ) ) Ideal_{f,C}(x,y) = (C_1(x,f_1(C_1(x),y)),f_2(C_1(x),y)) Idealf,C(x,y)=(C1(x,f1(C1(x),y)),f2(C1(x),y))其中 C 1 ( x , f 1 ( C 1 ( x ) , y ) ) C_1(x,f_1(C_1(x),y)) C1(x,f1(C1(x),y)) 是收到 TTP 的回应 f 1 ( C 1 ( x ) , y ) f_1(C_1(x),y) f1(C1(x),y) 后做的计算结果,而诚实的 C 2 C_2 C2 直接输出收到的 TTP 回应 f 2 ( C 1 ( x ) , y ) f_2(C_1(x),y) f2(C1(x),y)
-
-
如果 C 1 C_1 C1 诚实(即 C 1 ( I ) = I C_1(I)=I C1(I)=I 且 C 1 ( I , O ) = O C_1(I,O)=O C1(I,O)=O),
-
当 C 2 ( x ) = ⊥ C_2(x) = \perp C2(x)=⊥ 时( C 2 ∗ C_2^* C2∗ 提前终止),
I d e a l f , C ( x , y ) = ( ⊥ , C 2 ( y , ⊥ ) ) Ideal_{f,C}(x,y) = (\perp,C_2(y,\perp)) Idealf,C(x,y)=(⊥,C2(y,⊥))其中 C 2 ( y , ⊥ ) C_2(y,\perp) C2(y,⊥) 是收到 TTP 的回应 ⊥ \perp ⊥ 后做的计算结果
-
对于其他情况( C 2 C_2 C2 诚实,或者 C 2 ∗ C_2^* C2∗ 修改了输入),
I d e a l f , C ( x , y ) = ( f 1 ( x , C 2 ( y ) ) , C 2 ( y , f 2 ( x , C 2 ( y ) ) ) ) Ideal_{f,C}(x,y) = (f_1(x,C_2(y)),C_2(y,f_2(x,C_2(y)))) Idealf,C(x,y)=(f1(x,C2(y)),C2(y,f2(x,C2(y))))其中 C 2 ( y , f 2 ( x , C 2 ( y ) ) ) C_2(y,f_2(x,C_2(y))) C2(y,f2(x,C2(y))) 是收到 TTP 的回应 f 2 ( x , C 2 ( y ) ) f_2(x,C_2(y)) f2(x,C2(y)) 后做的计算结果,而诚实的 C 1 C_1 C1 直接输出收到的 TTP 回应 f 1 ( x , C 2 ( y ) ) f_1(x,C_2(y)) f1(x,C2(y))
-
设 Π \Pi Π 是计算 f f f 的两方协议,一个 admissible Real World 敌手是多项式尺寸的电路族 C = ( C 1 , C 2 ) C = (C_1,C_2) C=(C1,C2),其中存在 i ∈ { 1 , 2 } i \in \{1,2\} i∈{1,2} 使得 C i C_i Ci 严格执行 Π \Pi Π 所指定的策略(诚实方)。我们定义 Real 联合执行 R e a l Π , C ( x , y ) Real_{\Pi,C}(x,y) RealΠ,C(x,y) 为:交互 ⟨ C 1 ( x ) , C 2 ( y ) ⟩ \langle C_1(x),C_2(y) \rangle ⟨C1(x),C2(y)⟩ 的输出对 ( O u t p u t 1 C ( x , y ) , O u t p u t 2 C ( x , y ) ) (Output_1^{C}(x,y),Output_2^{C}(x,y)) (Output1C(x,y),Output2C(x,y))
我们说
Π
\Pi
Π 在 Malicious Model 下可以安全计算
f
f
f,如果存在 PPT 变换,将 admissible poly-size real world 敌手
A
A
A 转化为 admissible poly-size ideal world 敌手
B
B
B,使得
{
R
e
a
l
Π
,
A
(
x
,
y
)
}
≡
c
{
I
d
e
a
l
f
,
B
(
x
,
y
)
}
\{Real_{\Pi,A}(x,y)\} \overset{c}{\equiv} \{Ideal_{f,B}(x,y)\}
{RealΠ,A(x,y)}≡c{Idealf,B(x,y)}
在恶意模型中,可以仅考虑确定性的现实敌手(概率的现实敌手,考虑最具优势的一条随机带,可以转化为确定性的)。
编译器
现在,我们将 Semi-honest 安全的协议 Π \Pi Π,转化为 Malicious 安全的协议 Π ′ \Pi' Π′。思路是:强制参与方执行半诚实行为,否则会被发现作弊行为(使用 ZKP / PoK for NPC 来约束)
- 约束输入:使用承诺协议(或者 OWF 等等)对输入值进行承诺,然后使用 PoK 证明自己拥有原像并且正确执行了运算(其中的随机带可以是通过 Augmented Coin-Tossing 掷出来的,如果不影响绑定性那也可以不是)
- 约束随机带:掷币入井(coin-tossing into the well),双方协同掷币,一方获得公平的掷币值,另一方获得此掷币值的承诺值以及对它的 PoK 证明
- 约束执行:对于发送的消息,使用 ZKP(不必是 PoK)来证明它是被正确计算的(先前收到的消息,以及 Augmented Coin-Tossing 和 Input-Commitment 中的承诺值)
Input-Commitment
令 C n : { 0 , 1 } × { 0 , 1 } n → { 0 , 1 } p o l y ( n ) C_n:\{0,1\} \times \{0,1\}^n \to \{0,1\}^{poly(n)} Cn:{0,1}×{0,1}n→{0,1}poly(n) 是(比特)承诺方案。
在恶意模型下,安全计算函数性 f ( ( x , r ) , 1 n ) : = ( λ , C n ( x , r ) ) f((x,r),1^n) := (\lambda,C_n(x,r)) f((x,r),1n):=(λ,Cn(x,r)) 的协议:
Augmented Coin-Tossing
令 C n : { 0 , 1 } × { 0 , 1 } n → { 0 , 1 } p o l y ( n ) C_n:\{0,1\} \times \{0,1\}^n \to \{0,1\}^{poly(n)} Cn:{0,1}×{0,1}n→{0,1}poly(n) 是(比特)承诺方案。
在恶意模型下,安全计算函数性 f ( 1 n , 1 n ) : = ( ( b , r ) , C n ( b , r ) ) f(1^n,1^n) := ((b,r),C_n(b,r)) f(1n,1n):=((b,r),Cn(b,r)) 的协议:
P 1 P_1 P1 与 P 2 P_2 P2 独立地执行 1 + n 1+n 1+n 次掷单个公平硬币的协议: P 1 P_1 P1 掷硬币 σ i \sigma_i σi,计算承诺值 c i c_i ci 连同其正确执行计算的 proof 发给 P 2 P_2 P2,然后 P 2 P_2 P2 掷硬币 σ i ′ \sigma_i' σi′ 发送给 P 1 P_1 P1,最后 P 1 P_1 P1 需要将 b 0 = σ 0 ⊕ σ 0 ′ b_0 = \sigma_0 \oplus \sigma_0' b0=σ0⊕σ0′ 作为掷硬币结果,使用 b 1 ∥ ⋯ ∥ b n b1\|\cdots\|b_n b1∥⋯∥bn 作为随机带计算 b 0 b_0 b0 的承诺值 c c c,连同其正确执行计算的 proof 发送给 P 2 P_2 P2
Authenticated Computation
令 f : { 0 , 1 } ∗ × { 0 , 1 } ∗ → { 0 , 1 } p o l y ( n ) f: \{0,1\}^* \times \{0,1\}^* \to \{0,1\}^{poly(n)} f:{0,1}∗×{0,1}∗→{0,1}poly(n) 是 PPT 的函数,令 h : { 0 , 1 } ∗ × { 0 , 1 } n → { 0 , 1 } p o l y ( n ) h: \{0,1\}^* \times \{0,1\}^n \to \{0,1\}^{poly(n)} h:{0,1}∗×{0,1}n→{0,1}poly(n) 是 PPT 的对第一个参数是 1-1 的函数( ∀ α ≠ α ′ , ∀ r , r ′ , h ( α , r ) ≠ h ( α ′ , r ′ ) \forall \alpha \neq \alpha', \forall r,r',h(\alpha,r) \neq h(\alpha',r') ∀α=α′,∀r,r′,h(α,r)=h(α′,r′))。
在恶意模型下,安全计算函数性 ( ( α , r , β ) , ( h ( α , r ) , β ) ) → ( λ , f ( α , β ) ) ((\alpha,r,\beta),(h(\alpha,r),\beta)) \to (\lambda,f(\alpha,\beta)) ((α,r,β),(h(α,r),β))→(λ,f(α,β)) 的协议:
这里的 h ( α , r ) h(\alpha,r) h(α,r) 是 P 1 P_1 P1 对输入 α \alpha α 的承诺值(Perfect Binding),而 f ( α , β ) f(\alpha,\beta) f(α,β) 是协议 Π \Pi Π 指定的操作。
编译器框架
我们将半诚实安全的 Π \Pi Π,编译为恶意安全的 Π ′ \Pi' Π′,它分为三个阶段:
- 在 random-pad 阶段,双方分别执行 Augmented Coin-Tossing 获得无偏随机带。
- 在 input-commitment 阶段,双方分别执行 Input-Commitment 对自己的输入做承诺。
- 在 protocol emulation 阶段,双方利用 Authenticated Computation 来执行协议的每一步操作。
- 最后,如果每一步都是半诚实执行的,那么双方输出计算结果。
假设 Trapdoor OWP 存在,那么半诚实安全的 OT 协议存在。假设 OWF 存在(由 OWP 直接导致),那么承诺方案存在,ZKP 存在,对称加密算法也存在。从而通过 Garbled Circuit + OT 可以构造出半诚实安全的 2PC 协议,进一步可编译成恶意安全的 2PC 协议。