掷硬币协议

模型

Ideal Model

计算函数 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}的两方协议 π \pi π,参与方是 P 1 , P 2 P_1,P_2 P1,P2。存在敌手 A A A完全控制损坏的一方 P i , i ∈ { 0 , 1 } P_i,i \in \{0,1\} Pi,i{0,1}诚实的另一方记做 P j , j = 1 − i P_j,j=1-i Pj,j=1i,另外存在一个可信第三方(trusted party) T T T,一共 4 4 4个实体。

  1. 输入: P 1 P_1 P1的输入是 x x x P 2 P_2 P2的输入是 y y y A A A的辅助输入是 z z z,安全参数 1 n 1^n 1n作为 4 4 4者的公共输入。
  2. 将输入发送给可信第三方:诚实方 P j P_j Pj发送 x x x T T T,敌手 A A A控制损坏方 P i P_i Pi T T T发送如下三者之一, a b o r t i abort_i aborti终止信息、输入 y y y、相同长度的其他任意信息,这取决于敌手 A A A z , x z,x z,x的观察。将 P 1 , P 2 P_1,P_2 P1,P2 T T T发送的消息统一记做 ( x ′ , y ′ ) (x',y') (x,y)
  3. 提前终止:如果接收到 a b o r t i abort_i aborti,那么 T T T P j P_j Pj发送终止符
  4. 可信第三方发送输出:
    1. T T T计算 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 i ( x ′ , y ′ ) f_i(x',y') fi(x,y)发送给 A A A控制的 P i P_i Pi
    2. 敌手 A A A决定发送 c o n t i n u e continue continue还是 a b o r t i abort_i aborti T T T
    3. 如果 T T T接收到的是 c o n t i n u e continue continue,那么将 f j ( x ′ , y ′ ) f_j(x',y') fj(x,y)发送给诚实方 P j P_j Pj;否则,发送 a b o r t i abort_i aborti P j P_j Pj
  5. 输出:诚实方 P j P_j Pj输出 f j ( x ′ , y ′ ) f_j(x',y') fj(x,y),损坏方 P i P_i Pi不输出,敌手 A A A输出任意的关于 i n p u t i ∈ { x , y } , z , f i ( x ′ , y ′ ) input_i \in \{x,y\},z,f_i(x',y') inputi{x,y},z,fi(x,y)的PPT可计算函数值。

上述过程的输出叫做在 ( x , y ) , z , n (x,y),z,n (x,y),z,n下的函数 f f fideal execution,记做 I D E A L f , A ( z ) , i ( x , y , n ) IDEAL_{f,A(z),i}(x,y,n) IDEALf,A(z),i(x,y,n),包含 P j P_j Pj A A A的输出。

Real Model

计算函数 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}的两方协议 π \pi π,参与方是 P 1 , P 2 P_1,P_2 P1,P2。存在敌手 A A A完全控制损坏的一方 P i , i ∈ { 0 , 1 } P_i,i \in \{0,1\} Pi,i{0,1}诚实的另一方记做 P j , j = 1 − i P_j,j=1-i Pj,j=1i,不存在可信第三方,一共 3 3 3个实体。

  1. 输入: P 1 P_1 P1的输入是 x x x P 2 P_2 P2的输入是 y y y A A A的辅助输入是 z z z,安全参数 1 n 1^n 1n作为 3 3 3者的公共输入。
  2. 交互:诚实方 P j P_j Pj严格按照 π \pi π的规则执行,敌手 A A A控制损坏方 P j P_j Pj按照任意的多项式时间策略发送 P j P_j Pj的消息空间中的任意消息。
  3. 输出:诚实方 P j P_j Pj输出 f j ( x ′ , y ′ ) f_j(x',y') fj(x,y),损坏方 P i P_i Pi不输出,敌手 A A A输出任意的关于 i n p u t i ∈ { x , y } , z , f i ( x ′ , y ′ ) input_i \in \{x,y\},z,f_i(x',y') inputi{x,y},z,fi(x,y)的PPT可计算函数值。

上述过程的输出叫做在 ( x , y ) , z , n (x,y),z,n (x,y),z,n下的函数 f f freal execution,记做 R E A L π , A ( z ) , i ( x , y , n ) REAL_{\pi,A(z),i}(x,y,n) REALπ,A(z),i(x,y,n),包含 P j P_j Pj A A A的输出。

恶意敌手下的安全性定义

f f f是两方协议 π \pi π要计算的函数,我们说 π \pi π在恶意敌手下带终止的安全地计算 f f fsecurely compute f f f with abort in the presence of static malicious adversaries),如果对于任意非均匀PPT的真实模型下的敌手 A A A,都存在一个非均匀PPT的理想模型下的敌手 S S S,对于任意的 i ∈ { 0 , 1 } i \in \{0,1\} i{0,1},都有
{ I D E A L f , S ( z ) , i ( x , y , n ) } x , y , z , n ≡ c { R E A L π , A ( z ) , i ( x , y , n ) } x , y , z , n \{IDEAL_{f,S(z),i}(x,y,n)\}_{x,y,z,n} \overset{c}{\equiv} \{REAL_{\pi,A(z),i}(x,y,n)\}_{x,y,z,n} {IDEALf,S(z),i(x,y,n)}x,y,z,nc{REALπ,A(z),i(x,y,n)}x,y,z,n
其中 x , y ∈ { 0 , 1 } ∗ x,y \in \{0,1\}^* x,y{0,1} ∣ x ∣ = ∣ y ∣ |x|=|y| x=y,以及 z ∈ { 0 , 1 } ∗ z \in \{0,1\}^* z{0,1} n ∈ N n \in N nN

在讨论安全计算时,我们总是考虑“abort”的。另外,真实世界的概率性敌手 A A A往往被当做黑盒,于是模拟器 S S S可以定义 A ′ ( ⋅ ) : = A ( x , z , r ; ⋅ ) A'(\cdot) := A(x,z,r;\cdot) A():=A(x,z,r;),其中 r r r是随机带,那么 A ′ A' A就是确定性敌手。在证明中只需考虑确定性敌手即可。

Modular Sequential Composition

顺序组合定理(Sequential composition theorems):如果一个协议在独立模型下(in the stand-alone model)是 X X X定义下安全的(secure under definition X X X),那么它在顺序组合(每一个进程在下一个进程开始前结束)下是 X X X定义下安全的。

在设计协议时,我们可以令这个协议包含一个理想模型下的子例程。首先证明子例程是安全的,然后用可信第三方计算这个子例程,在理想模型下证明协议的安全性。

Hybrid Model:协议参与方之间进行交互(as in the real model),同时也使用可信第三方(as in the ideal model)。即,协议 π \pi π包含一系列理想调用(ideal calls)来计算 f 1 , ⋯   , f p ( n ) f_1,\cdots,f_{p(n)} f1,,fp(n),且 f i f_i fi f i + 1 f_{i+1} fi+1之前被调用。调用期间参与方之间不交互。每次理想调用是独立的,可信第三方不保存调用状态。参与方的交互信息记做standard message,与可信第三方的交互信息记做ideal message。

Blum掷硬币协议

掷硬币(Coin Tossing):一个两方协议计算函数 f c t ( λ , λ ) = ( U 1 , U 1 ) f_{ct}(\lambda,\lambda) = (U_1,U_1) fct(λ,λ)=(U1,U1),其中 U 1 ∈ { 0 , 1 } U_1 \in \{0,1\} U1{0,1}是单个随机比特。

如何掷硬币?很简单: P 1 P_1 P1 P 2 P_2 P2各自选择一个随机比特 b 1 , b 2 b_1,b_2 b1,b2,然后发送给对方,计算两者的异或值 b = b 1 ⊕ b 2 b=b_1 \oplus b_2 b=b1b2。但是,如果在 P i P_i Pi发送 b i b_i bi之前就收到了 b 1 − i b_{1-i} b1i,那么他就可以选择 b i ← b ⊕ b i − 1 b_i \leftarrow b \oplus b_{i-1} bibbi1使得掷硬币结果偏向于 b b b。解决方案是:“同时”发送,但同步信道难以实现。

Blum协议:使用承诺方案来解决同步问题。

  1. 输入:安全参数 1 n 1^n 1n作为 P 1 , P 2 P_1,P_2 P1,P2的公共输入
  2. 执行:
    1. P 1 P_1 P1随机选择 b 1 ∈ { 0 , 1 } b_1 \in \{0,1\} b1{0,1}以及随机数 r ∈ { 0 , 1 } ∗ r \in \{0,1\}^* r{0,1},计算承诺值 c ← C o m ( b 1 ; r ) c \leftarrow Com(b_1;r) cCom(b1;r)发送给 P 2 P_2 P2
    2. P 2 P_2 P2接收到 c c c之后,随机选择 b 2 ∈ { 0 , 1 } b_2 \in \{0,1\} b2{0,1},发送明文给 P 1 P_1 P1
    3. P 1 P_1 P1接收到 b 2 b_2 b2后,发送解承诺 ( b 1 , r ) (b_1,r) (b1,r) P 2 P_2 P2
    4. P 2 P_2 P2验证 c = C o m ( b 1 ; r ) c = Com(b_1;r) c=Com(b1;r)是否满足
  3. 输出: P 1 P_1 P1 P 2 P_2 P2各自输出相同的掷硬币结果, b = b 1 ⊕ b 2 b=b_1\oplus b_2 b=b1b2

解释: P 2 P_2 P2接收到 c c c之后, P 1 P_1 P1便无法再更改 b 1 b_1 b1(承诺协议的绑定性),同时 P 2 P_2 P2也无法获得关于 b 1 b_1 b1的信息来使得结果偏向 b b b(承诺协议的隐藏性)。

证明安全性:模拟器 S S S的挑战目标是,让它模拟的掷硬币结果等于理想模型下可信第三方返回的结果。

  1. S S S发送 λ \lambda λ给计算 f c t f_{ct} fct的可信第三方,得到返回值 b b b
  2. S S S迭代 n n n次, i = 1 , ⋯   , n i=1,\cdots,n i=1,,n
    1. 首先随机选择 b 1 b_1 b1 r r r,计算 c = C o m ( b 1 ; r ) c=Com(b_1;r) c=Com(b1;r)发送给 P 2 P_2 P2,同时发送给确定性敌手 A A A
    2. 如果 A A A返回的结果满足 b 2 = b ⊕ b 1 b_2=b \oplus b_1 b2=bb1,那么 S S S发送解承诺 ( b 1 , r ) (b_1,r) (b1,r) A A A,并将 A A A的相应作为输出。
    3. 如果 A A A返回的结果满足 b 2 ≠ b ⊕ b 1 b_2 \neq b \oplus b_1 b2=bb1,那么 i + + i++ i++
    4. 如果 i = n i=n i=n S S S输出 f a i l fail fail;否则继续迭代。

由于掷单个硬币,因此期望上只需要回滚 2 2 2次即可令结果相同。 S S S输出 f a i l fail fail的概率是 μ ( n ) \mu(n) μ(n);当输出的不是 f a i l fail fail时,它在 I D E A L IDEAL IDEAL下和 R E A L REAL REAL下的输出分布不可区分。

详细证明过程很长,虽然协议看起来是如此简单。结论是:假设 C o m Com Com是完美绑定的,那么Blum协议可以安全掷硬币。

常数轮掷多个硬币协议

应用顺序组合定理,我们 l ( n ) l(n) l(n)次掷单个硬币,依然是安全的。然而,我们更希望获得常数轮的掷多个硬币。如果只是简单地将Blum协议中的单个随机比特 b i ∈ { 0 , 1 } ∗ b_i \in \{0,1\}^* bi{0,1}替换成 ρ i ∈ { 0 , 1 } l ( n ) \rho_i \in \{0,1\}^{l(n)} ρi{0,1}l(n),这就没法用模拟技术来证明安全性了,因为期望上这需要 2 l ( n ) 2^{l(n)} 2l(n)次回滚。

解决方案是,做承诺 c c c之后, P 1 P_1 P1不发送解承诺 ( ρ 1 , r ) (\rho_1,r) (ρ1,r),而仅发送 ρ 1 \rho_1 ρ1,并用零知识证明 c c c就是 ρ 1 \rho_1 ρ1对应的承诺。

f z k R ( ( x , w ) , x ) f_{zk}^R((x,w),x) fzkR((x,w),x)是关于语言 R ∈ N P R \in NP RNP的常数轮零知识证明协议,

f z k R ( ( x , w ) , x ) : = { ( λ , R ( x , w ) ) x = x ′ ( λ , 0 ) o t h e r w i s e f_{zk}^R((x,w),x) := \left\{ \begin{aligned} (\lambda,R(x,w)) && x=x'\\ (\lambda,0) && otherwise\\ \end{aligned} \right. fzkR((x,w),x):={(λ,R(x,w))(λ,0)x=xotherwise

协议为:
请添加图片描述
利用混杂模型,可以证明:如果 C o m Com Com是完美绑定的,且 l ( n ) l(n) l(n)是多项式的,那么上述协议 securely computes the functionality f c t l ( λ , λ ) = ( U l ( n ) , U l ( n ) ) f_{ct}^l(\lambda,\lambda)=(U_{l(n)},U_{l(n)}) fctl(λ,λ)=(Ul(n),Ul(n)) in the ( f z k R 1 , f z k R 2 ) − (f_{zk}^{R_1},f_{zk}^{R_2})- (fzkR1,fzkR2)hybrid model.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值