基于 TFHE 的 MPC

news/2024/11/29 22:29:21/

参考文献:

  1. [Can01] Canetti R. Universally composable security: A new paradigm for cryptographic protocols[C]//Proceedings 42nd IEEE Symposium on Foundations of Computer Science. IEEE, 2001: 136-145.
  2. [Gol04] Oded Goldreich. Foundations of Cryptography: Volume 2, Basic Applications. Cam bridge University Press, New York, NY, USA, 1st edition, 2004.
  3. [Reg05]Oded Regev. On lattices, learning with errors, random linear codes, and cryptography. In STOC, pages 84–93, 2005.
  4. [LP09] Yehuda Lindell and Benny Pinkas. A proof of security of yao’s protocol for two-party computation. J. Cryptology, 22(2):161–188, 2009.
  5. [AJW11] Asharov G, Jain A, López-Alt A, et al. Multiparty computation with low communication, computation and interaction via threshold FHE[C]//Advances in Cryptology–EUROCRYPT 2012: 31st Annual International Conference on the Theory and Applications of Cryptographic Techniques, Cambridge, UK, April 15-19, 2012. Proceedings 31. Springer Berlin Heidelberg, 2012: 483-501.
  6. [BGV12] Brakerski Z, Gentry C, Vaikuntanathan V. (Leveled) fully homomorphic encryption without bootstrapping[J]. ACM Transactions on Computation Theory (TOCT), 2014, 6(3): 1-36.
  7. [MP12] Micciancio D, Peikert C. Trapdoors for lattices: Simpler, tighter, faster, smaller[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Berlin, Heidelberg: Springer Berlin Heidelberg, 2012: 700-718.
  8. [GSW13] Gentry C, Sahai A, Waters B. Homomorphic encryption from learning with errors: Conceptually-simpler, asymptotically-faster, attribute-based[C]//Annual Cryptology Conference. Springer, Berlin, Heidelberg, 2013: 75-92.
  9. [CM15] Clear M, McGoldrick C. Multi-identity and multi-key leveled FHE from learning with errors[C]//Advances in Cryptology–CRYPTO 2015: 35th Annual Cryptology Conference, Santa Barbara, CA, USA, August 16-20, 2015, Proceedings, Part II 35. Springer Berlin Heidelberg, 2015: 630-656.
  10. [MW16] Mukherjee P, Wichs D. Two round multiparty computation via multi-key FHE[C]//Advances in Cryptology–EUROCRYPT 2016: 35th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Vienna, Austria, May 8-12, 2016, Proceedings, Part II 35. Springer Berlin Heidelberg, 2016: 735-763.

文章目录

  • 基于 TFHE 的 3 轮 MPC
    • Threshold FHE
      • Key-Homomorphic
      • Construction
    • Semi-Malicious MPC
    • Full-Malicious MPC

基于 TFHE 的 3 轮 MPC

FHE 天然可以实现两方的 MPC 协议:Alice 生成 FHE 公私钥,将自己的输入加密,Bob 也使用 Alice 的公钥加密自己的输入,然后 Bob 执行同态计算,仅发送结果密文给 Alice 解密。

直接将上述思路扩展到多个参与方,有如下问题:

  1. 各方独立生成自己的公私钥,那么不同公钥加密出的密文之间难以运算(这其实是 MK-FHE,详见 [CM15])
  2. 由单个参与方生成公私钥,其他参与方都使用这个公钥,那么一旦它被入侵,则破坏了所有参与方的隐私性

[AJW11] 提出了 threshold fully homomorphic encryption(TFHE,门限全同态加密),所有参与方协同生成一个公共的公私钥对,每个参与方仅持有私钥的秘密分享,解密过程是一个分布式解密协议,并且需添加 “污染(smudge)” 来隐藏各自的私钥信息。另外,BGV/BFV 路线的 FHE 还需要 evaluation key,生成它的过程较为复杂(而 GSW 不需要,可以简化)。

使用 TFHE 可以构造半诚实模型(诚实执行,随机带均匀)下安全的 3 轮 MPC 协议,采用多方掷硬币协议以及 ZKP 可以转化为恶意模型(任意执行)下安全的 MPC 协议,但是轮复杂度将会提升。事实上,[AJW11] 的 TFHE 是半恶意模型(诚实执行,但是任意选择随机带)下安全的,从而可以省略多方掷硬币协议。在 CRS 模型下存在 NP 语言的 NIZKP,因此可以获得一个 3 轮的恶意安全 MPC 协议,但是它并不高效,[AJW11] 为此设计了一个 RO 模型下的关于 LWE 语言的专用 Sigma 协议。

Threshold FHE

门限全同态加密方案(TFHE)的形式化定义如下:

  • K e y G e n ( s e t u p ) KeyGen(setup) KeyGen(setup) N N N 个参与者之间的交互式协议,各个参与者 P k , k ∈ [ N ] P_k,k \in [N] Pk,k[N] 一同执行协议,生成公共公钥 p k pk pk公共重线性化秘钥 e v k evk evk,以及私钥的秘密分享 s k k sk_k skk,它们隐含着公共私钥 s k sk sk
  • E n c ( p k , μ ) Enc(pk,\mu) Enc(pk,μ):非交互算法,各个参与方使用 p k pk pk 独立加密消息 μ \mu μ
  • E v a l ( p k , f , c 1 , ⋯ , c l ) Eval(pk,f,c_1,\cdots,c_l) Eval(pk,f,c1,,cl):非交互算法,各个参与方使用 p k pk pk 独立执行同态运算
  • D e c ( s k 1 , ⋯ , s k N , c ) Dec(sk_1,\cdots,sk_N,c) Dec(sk1,,skN,c) N N N 个参与者之间的交互式协议,各个参与者 P k , k ∈ [ N ] P_k,k \in [N] Pk,k[N] 使用各自的 s k k sk_k skk 作为输入,协议结束后各方都获得明文 μ \mu μ

[AJW11] 使用 BGV 方案作为基础加密方案,密文 c = ( a , b ) c=(a,b) c=(a,b) 可以被视为多变元线性多项式 ϕ c ( x ) : = b − a T x \phi_c(x):=b-a^Tx ϕc(x):=baTx,解密算法为 D e c ( s , c ) = ( ϕ c ( s ) ( m o d q ) ) ( m o d 2 ) Dec(s,c)=(\phi_c(s)\pmod q)\pmod 2 Dec(s,c)=(ϕc(s)(modq))(mod2)。同态加法为 ϕ a d d ( x ) = ϕ c 1 ( x ) + ϕ c 2 ( x ) \phi_{add}(x) = \phi_{c_1}(x)+\phi_{c_2}(x) ϕadd(x)=ϕc1(x)+ϕc2(x),密文仍为线性多项式;而同态乘法为 ϕ m u l ( x ) = ϕ c 1 ( x ) ⋅ ϕ c 2 ( x ) \phi_{mul}(x) = \phi_{c_1}(x) \cdot \phi_{c_2}(x) ϕmul(x)=ϕc1(x)ϕc2(x),多项式度数上升为 2 2 2,因此需要 “重线性化” 运算。假设原始私钥为 s s s,新的私钥为 s ′ s' s,令 s [ i ] = s i , i ∈ [ n ] : = { 1 , ⋯ , n } s[i]=s_i,i \in [n]:=\{1,\cdots,n\} s[i]=si,i[n]:={1,,n} 表述私钥向量的各分量,并设置 s [ 0 ] = 1 s[0]=1 s[0]=1,那么对应的重线性化秘钥为:
e v k : = { ψ i , j , τ ← S y m E n c ( s ′ , s i ⋅ s j ⋅ 2 τ ) : i ∈ [ n ] , j ∈ [ n ] ∪ { 0 } , τ ∈ { 0 , ⋯ , ⌊ log ⁡ ( q ) ⌋ } } evk := \{\psi_{i,j,\tau} \leftarrow SymEnc(s', s_i \cdot s_j \cdot 2^\tau):\,\, i \in [n], j \in [n] \cup\{0\}, \tau \in \{0,\cdots,\lfloor\log(q)\rfloor\}\} evk:={ψi,j,τSymEnc(s,sisj2τ):i[n],j[n]{0},τ{0,,log(q)⌋}}

Key-Homomorphic

我们将判定型 LWE 问题记为 L W E n , q , ϕ , χ LWE_{n,q,\phi,\chi} LWEn,q,ϕ,χ,其中 ϕ \phi ϕ 是秘密 s s s 的分布, χ \chi χ 是噪声 e e e 的分布。容易证明,当模数 q q q 是奇数时, L W E n , q , ϕ , 2 χ LWE_{n,q,\phi,2\chi} LWEn,q,ϕ,2χ L W E n , q , ϕ , χ LWE_{n,q,\phi,\chi} LWEn,q,ϕ,χ 一样难,其中的 2 χ 2\chi 2χ 是指采样 e ← χ e \leftarrow \chi eχ 然后将 2 e 2e 2e 作为输出。

Uniqueness of LWE Secrets:安全参数 κ \kappa κ,令 n n n 是正整数, q q q 是素数,设置 m > n log ⁡ ( q ) + w ( log ⁡ ( κ ) ) m>n\log(q)+w(\log(\kappa)) m>nlog(q)+w(log(κ)) 以及 B < q / 8 B<q/8 B<q/8,那么均匀选取的 A ← Z q m × n A \leftarrow \mathbb Z_q^{m \times n} AZqm×n 以概率 1 − n e g l ( κ ) 1-negl(\kappa) 1negl(κ) 使得:对于任意的 p ∈ Z q m p \in \mathbb Z_q^m pZqm,存在至多单个 ( s , e ) (s,e) (s,e) 满足 s ∈ Z q n s \in \mathbb Z_q^n sZqn 以及 e ∈ [ − B , B ] m e \in [-B,B]^m e[B,B]m,使得 p = A s + 2 e p=As+2e p=As+2e。如果存在 ( s , e ) ≠ ( s ′ , e ′ ) (s,e) \neq (s',e') (s,e)=(s,e) 使得 p = A s + 2 e = A s ′ + 2 e ′ p=As+2e=As'+2e' p=As+2e=As+2e,那么有 A ( s − s ′ ) = 2 ( e ′ − e ) ∈ [ − 2 B , 2 B ] m A(s-s')=2(e'-e) \in [-2B,2B]^m A(ss)=2(ee)[2B,2B]m,对于任意固定的 s ∗ = s − s ′ s^*=s-s' s=ss,均匀选取的 A A A 使得上式成立的概率仅为 ( 4 B / q ) m ≤ 2 − m (4B/q)^m \le 2^{-m} (4B/q)m2m

现在我们给出一个基于 LWE 的基本加密方案:

  • S e t u p ( 1 κ ) Setup(1^\kappa) Setup(1κ):输入安全参数 1 κ 1^\kappa 1κ,计算奇数 q = q ( κ ) q=q(\kappa) q=q(κ),维度 m = m ( κ ) , n = n ( κ ) m=m(\kappa),n=n(\kappa) m=m(κ),n=n(κ),环 Z q \mathbb Z_q Zq 上噪声分布 ϕ = ϕ ( κ ) , χ = χ ( κ ) \phi=\phi(\kappa),\chi=\chi(\kappa) ϕ=ϕ(κ),χ=χ(κ),输出参数 p a r a m s = ( 1 κ , q , m , n , ϕ , χ ) params=(1^\kappa,q,m,n,\phi,\chi) params=(1κ,q,m,n,ϕ,χ)
  • S y m K e y G e n ( p a r a m s ) SymKeyGen(params) SymKeyGen(params):采样秘密 s ← ϕ n s \leftarrow \phi^n sϕn,输出 s k : = s sk:=s sk:=s 作为对称秘钥
  • P u b K e y G e n ( s ) PubKeyGen(s) PubKeyGen(s):均匀采样 A ← Z q m × n A \leftarrow \mathbb Z_q^{m \times n} AZqm×n,采样噪声 e ← χ m e \leftarrow \chi^m eχm,计算 p = A s + 2 e ∈ Z q m p=As+2e \in \mathbb Z_q^m p=As+2eZqm(可视为 m m m 个密文 S y m E n c ( s k , 0 ) SymEnc(sk,0) SymEnc(sk,0)),输出 p k : = ( A , p ) pk:=(A,p) pk:=(A,p) 作为对应的公钥
  • S y m E n c ( s k , μ ) SymEnc(sk,\mu) SymEnc(sk,μ):输入消息 μ ∈ { 0 , 1 } \mu \in \{0,1\} μ{0,1},均匀采样 a ← Z q n a \leftarrow \mathbb Z_q^n aZqn,采样噪声 e ← χ e \leftarrow \chi eχ,计算 b = a T s + 2 e + μ ∈ Z q b=a^Ts+2e+\mu \in \mathbb Z_q b=aTs+2e+μZq,输出密文 c t : = ( a , b ) ct:=(a,b) ct:=(a,b)
  • P u b E n c ( p k , μ ) PubEnc(pk,\mu) PubEnc(pk,μ):输入消息 μ ∈ { 0 , 1 } \mu \in \{0,1\} μ{0,1},均匀采样 r ← { 0 , 1 } m r \leftarrow \mathbb \{0,1\}^m r{0,1}m,计算 a = r T A ∈ Z q n a=r^TA \in \mathbb Z_q^n a=rTAZqn 以及 b = r T p + μ b=r^Tp+\mu b=rTp+μ(若 p = A s + 2 e p=As+2e p=As+2e,则 b b b 中的噪声为 2 r T e 2r^Te 2rTe),输出密文 c t : = ( a , b ) ct:=(a,b) ct:=(a,b)
  • D e c ( s k , c t ) Dec(sk,ct) Dec(sk,ct):输入密文 c t = ( a , b ) ct=(a,b) ct=(a,b),输出 ( b − a T s ( m o d q ) ) ( m o d 2 ) (b-a^Ts \pmod q) \pmod 2 (baTs(modq))(mod2)

根据 [Reg05] 的文章,在 L W E n , q , ϕ , χ LWE_{n,q,\phi,\chi} LWEn,q,ϕ,χ 假设下,上述加密方案是语义安全的,同时也是伪随机密文的。之后的一些著名全同态加密都是基于上述加密算法的,例如 BGV、BFV、CKKS 等等。除了加法同态和乘法同态,[AJW11] 进一步提出了“秘钥同态”,这可以用于构造分布式的门限解密协议。将系数 a , A a,A a,A 以及噪声 e e e 作为图灵机随机带,公钥生成算法的符号记为 P u b K e y G e n ( s ; A , e ) PubKeyGen(s;A,e) PubKeyGen(s;A,e),加密算法的符号记为 S y m E n c ( s k , μ ; a , e ) SymEnc(sk,\mu;a,e) SymEnc(sk,μ;a,e) P u b E n c ( p k , μ ; A , e ) PubEnc(pk,\mu;A,e) PubEnc(pk,μ;A,e)

Key-Homomorphic Properties:给定两个私钥 s 1 , s 2 ∈ Z q n s_1,s_2 \in \mathbb Z_q^n s1,s2Zqn,两个明文 μ 1 , μ 2 ∈ { 0 , 1 } \mu_1,\mu_2 \in \{0,1\} μ1,μ2{0,1}

  1. 固定一个系数 a ∈ Z q n a \in \mathbb Z_q^n aZqn,任给两个噪声 e 1 , e 2 ∈ Z q e_1,e_2 \in \mathbb Z_q e1,e2Zq,对称加密 ( a , b 1 ) = S y m E n c ( s 1 , μ 1 ; a , e 1 ) (a,b_1) = SymEnc(s_1,\mu_1;a,e_1) (a,b1)=SymEnc(s1,μ1;a,e1) 以及 ( a , b 2 ) = S y m E n c ( s 2 , μ 2 ; a , e 2 ) (a,b_2) = SymEnc(s_2,\mu_2;a,e_2) (a,b2)=SymEnc(s2,μ2;a,e2),那么密文 ( a , b 1 + b 2 ) (a,b_1+b_2) (a,b1+b2) 满足
    ( a , b 1 + b 2 ) = S y m E n c ( s 1 + s 2 , μ 1 + μ 2 ; a , e 1 + e 2 ) (a,b_1+b_2) = SymEnc(s_1+s_2,\mu_1+\mu_2;a,e_1+e_2) (a,b1+b2)=SymEnc(s1+s2,μ1+μ2;a,e1+e2)
    即密文第二分量相加,所得的新密文是在两私钥加和下的同态加法密文。

  2. 固定一个系数 A ∈ Z q m × n A \in \mathbb Z_q^{m \times n} AZqm×n,任给两个噪声 e 1 , e 2 ∈ Z q m e_1,e_2 \in \mathbb Z_q^m e1,e2Zqm,公钥生成 ( A , p 1 ) = P u b K e y G e n ( s 1 ; A , e 1 ) (A,p_1)=PubKeyGen(s_1;A,e_1) (A,p1)=PubKeyGen(s1;A,e1) 以及 ( A , p 2 ) = P u b K e y G e n ( s 2 ; A , e 2 ) (A,p_2)=PubKeyGen(s_2;A,e_2) (A,p2)=PubKeyGen(s2;A,e2),那么公钥 ( A , p 1 + p 2 ) (A,p_1+p_2) (A,p1+p2) 满足
    ( A , p 1 + p 2 ) = P u b K e y G e n ( s 1 + s 2 ; A , e 1 + e 2 ) (A,p_1+p_2)=PubKeyGen(s_1+s_2;A,e_1+e_2) (A,p1+p2)=PubKeyGen(s1+s2;A,e1+e2)
    即公钥第二分量相加,所得的新公钥是两私钥加和所对应的公钥。

我们期望在组合公钥 ( A , p 1 + p 2 ) (A,p_1+p_2) (A,p1+p2) 下,上述的基本加密方案仍是语义安全的,然而组合后的公钥分布与原始分布出现了差别。[AJW11] 提出可以使用一个很大的噪声来污染(smudge out)任意的较小值,进而证明在组合公钥下的密文被污染后的分布,与均匀分布不可区分。

Smudging Lemma:安全参数 κ \kappa κ,令 B 1 , B 2 B_1,B_2 B1,B2 是正整数, e 1 ∈ [ − B 1 , B 2 ] e_1 \in [-B_1,B_2] e1[B1,B2] 是固定整数, e 2 ← [ B 2 , B 2 ] e_2 \leftarrow [B_2,B_2] e2[B2,B2] 是均匀随机数。那么只要 B 1 / B 2 = n e g l ( κ ) B_1/B_2 = negl(\kappa) B1/B2=negl(κ),则 e 2 e_2 e2 的分布与 e 1 + e 2 e_1+e_2 e1+e2 的分布统计不可区分。确切地说,统计距离为:
Δ = 1 2 ∑ x = − ( B 1 + B 2 ) B 1 + B 2 ∣ P r [ e 2 = x ] − P r [ e 1 + e 2 = x ] ∣ = 1 2 ( ∑ x = − ( B 1 + B 2 ) − B 2 1 B 2 + ∑ x = − ( B 2 ) B 1 + B 2 1 B 2 ) = B 1 B 2 \Delta = \dfrac{1}{2}\sum_{x=-(B_1+B_2)}^{B_1+B_2}\Big| Pr[e_2=x] - Pr[e_1+e_2=x] \Big| = \dfrac{1}{2}\left( \sum_{x=-(B_1+B_2)}^{-B_2}\dfrac{1}{B_2} + \sum_{x=-(B_2)}^{B_1+B_2}\dfrac{1}{B_2} \right) = \dfrac{B_1}{B_2} Δ=21x=(B1+B2)B1+B2 Pr[e2=x]Pr[e1+e2=x] =21 x=(B1+B2)B2B21+x=(B2)B1+B2B21 =B2B1
组合秘钥的安全性:我们定义敌手 A \mathcal A A 与挑战者 C \mathcal C C 之间的游戏 J o i n K e y A ( p a r a m s , B 1 , B 2 ) JoinKey^{\mathcal A}(params,B_1,B_2) JoinKeyA(params,B1,B2)

  1. C \mathcal C C 生成私钥 s ← S y m K e y G e n ( p a r a m s ) s \leftarrow SymKeyGen(params) sSymKeyGen(params),计算公钥 ( A , p ) = P u b K e y G e n ( s ) (A,p)=PubKeyGen(s) (A,p)=PubKeyGen(s),将公钥发送给 A \mathcal A A
  2. A \mathcal A A 自适应地选择 p ′ , s ′ , e ′ p',s',e' p,s,e,满足 p ′ = A s ′ + 2 e ′ p'=As'+2e' p=As+2e 以及 ∥ e ′ ∥ 1 ≤ B 1 \|e'\|_1 \le B_1 e1B1,选择明文 μ \mu μ,发送 ( p ′ , s ′ , e ′ , μ ) (p',s',e',\mu) (p,s,e,μ) C \mathcal C C
  3. C \mathcal C C 计算组合秘钥 ( A , p ∗ = p + p ′ ) (A,p^*=p+p') (A,p=p+p),均匀掷硬币 β ← { 0 , 1 } \beta \leftarrow \{0,1\} β{0,1},当 β = 0 \beta=0 β=0 时均匀采样 p k ∗ = ( a ∗ , b ∗ ) ← Z q n + 1 pk^*=(a^*,b^*) \leftarrow \mathbb Z_q^{n+1} pk=(a,b)Zqn+1,当 β = 1 \beta=1 β=1 时计算 ( a ∗ , b ) ← P u b E n c ( p k ∗ , μ ) (a^*,b) \leftarrow PubEnc(pk^*,\mu) (a,b)PubEnc(pk,μ),采样 “污染噪声” e ∗ ← [ − B 2 , B 2 ] e^* \leftarrow [-B_2,B_2] e[B2,B2],设置 b ∗ = b + 2 e ∗ b^*=b+2e^* b=b+2e,发送 “污染密文” ( a ∗ , b ∗ ) (a^*,b^*) (a,b) A \mathcal A A
  4. A \mathcal A A 区分 ( a ∗ , b ∗ ) (a^*,b^*) (a,b) 是哪种情况,输出 β ′ ∈ { 0 , 1 } \beta' \in \{0,1\} β{0,1}

我们说组合秘钥是安全的,如果对于任意的 PPT 敌手 A \mathcal A A,都有
∣ P r [ J o i n K e y A ( p a r a m s , B 1 , B 2 ) = 1 ] − 1 2 ∣ = n e g l ( κ ) \Big|Pr[JoinKey^{\mathcal A}(params,B_1,B_2)=1] - \dfrac{1}{2}\Big| = negl(\kappa) Pr[JoinKeyA(params,B1,B2)=1]21 =negl(κ)
可以证明,给定一组参数 p a r a m s params params 使得基础加密方案是语义安全的,那么对于任意的 B 1 , B 2 B_1,B_2 B1,B2,满足 B 1 / B 2 = n e g l ( κ ) B_1/B_2 = negl(\kappa) B1/B2=negl(κ),组合秘钥是安全的。否则,存在一个 PPT 敌手 A \mathcal A A 打破组合秘钥安全性。我们构造另一个敌手 B \mathcal B B,它的输入是公钥 p k = ( A , p ) pk=(A,p) pk=(A,p) 和密文 ( a , b ) (a,b) (a,b),它试图区分 ( a , b ) (a,b) (a,b) 是真正的密文 P u b E n c ( p k , 0 ) PubEnc(pk,0) PubEnc(pk,0) 还是均匀随机数。敌手 B \mathcal B B 以敌手 A \mathcal A A 作为子程序,为它模拟 J o i n K e y A JoinKey^{\mathcal A} JoinKeyA 游戏中的视图,

  1. B \mathcal B B 直接将 p k pk pk 发送给 A \mathcal A A,收到回应 ( p ′ , s ′ , e ′ , μ ) (p',s',e',\mu) (p,s,e,μ)
  2. B \mathcal B B 采样噪声 e ∗ ← [ − B 2 , B 2 ] e^* \leftarrow [-B_2,B_2] e[B2,B2],设置 a ∗ = a , b ∗ = b + a T s ′ + μ + 2 e ∗ a^*=a,b^*=b+a^Ts'+\mu+2e^* a=a,b=b+aTs+μ+2e,发送 ( a ∗ , b ∗ ) (a^*,b^*) (a,b) A \mathcal A A
  3. B \mathcal B B 输出 A \mathcal A A 所返回的 β \beta β

易知 B \mathcal B B 是 PPT 敌手。假设 ( a , b ) (a,b) (a,b) 是均匀的,那么 ( a ∗ , b ∗ ) (a^*,b^*) (a,b) 明显也是均匀的。假设 ( a , b ) ← P u b E n c ( p k , 0 ) (a,b) \leftarrow PubEnc(pk,0) (a,b)PubEnc(pk,0),由于 p ′ = A s ′ + 2 e ′ p'=As'+2e' p=As+2e,那么有
b ∗ = ( r T p + 2 e ) + r T ( p ′ − 2 e ′ ) + μ + 2 e ∗ = r T p ∗ + μ + ( 2 e ∗ − 2 r T e ′ ) b^* = (r^Tp+2e)+r^T(p'-2e')+\mu+2e^* = r^Tp^*+\mu+(2e^*-2r^Te') b=(rTp+2e)+rT(p2e)+μ+2e=rTp+μ+(2e2rTe)
因为 r T e ′ ≤ ∥ e ′ ∥ 1 ≤ B 1 r^Te' \le \|e'\|_1 \le B_1 rTee1B1, 是个小常数,因此根据 Smudging Lemma 可知 b ∗ ≡ s r T p ∗ + μ + 2 e ∗ b^* \overset{s}{\equiv} r^Tp^*+\mu+2e^* bsrTp+μ+2e,所以 B \mathcal B B A \mathcal A A 模拟出了统计不可区分的视图。从而 A \mathcal A A 打破组合秘钥的安全性的同时, B \mathcal B B 也打破了基础加密方案的密文伪随机性,出现矛盾。所以,组合秘钥下的污染密文与均匀随机数不可区分,组合秘钥是安全的。

Construction

使用 BGV 作为基础加密算法,TFHE 构造如下:

  • T F H E . S e t u p ( ) TFHE.Setup() TFHE.Setup():所有参与者对以下所有参数达成共识,确定 BGV 的运算深度 D D D,每层的加密算法参数为 p a r a m d : = ( 1 κ , q d , m , n , ϕ , χ ) param_d:=(1^\kappa,q_d,m,n,\phi,\chi) paramd:=(1κ,qd,m,n,ϕ,χ),噪声范围 B ϕ , B χ ∈ Z B_\phi,B_\chi \in \mathbb Z Bϕ,BχZ,污染噪声的范围 B e v a l , B e n c , B d e c ∈ Z B_{eval},B_{enc},B_{dec} \in \mathbb Z Beval,Benc,BdecZ,系数 { A d ← Z q d m × n } \{A_d \leftarrow \mathbb Z_{q_d}^{m \times n}\} {AdZqdm×n} { a d , i , τ k ← Z q d n } \{a_{d,i,\tau}^k \leftarrow \mathbb Z_{q_d}^{n}\} {ad,i,τkZqdn}

  • T F H E . K e y G e n ( s e t u p ) TFHE.KeyGen(setup) TFHE.KeyGen(setup)两轮交互协议

    第一轮通信(生成公共公钥):

    1. 各方 P k P_k Pk 独立生成每层的公私钥对 { ( s d k , ( A d , p d k : = A d s d k + 2 e d k ) ) } \{(s_d^k,(A_d,p_d^k:=A_ds_d^k+2e_d^k))\} {(sdk,(Ad,pdk:=Adsdk+2edk))},这里的 A d A_d Ad 是公共随机串。各方 P k P_k Pk 独立计算 ( a d , i , τ k , b d , i , τ k , k ) ← B G V . S y m E n c ( s d k , 2 τ ⋅ s d − 1 k [ i ] ; a d , i , r k , e d , i , τ k , k ) (a_{d,i,\tau}^k,b_{d,i,\tau}^{k,k}) \leftarrow BGV.SymEnc(s_d^k, 2^\tau \cdot s_{d-1}^k[i]; a_{d,i,r}^k,e_{d,i,\tau}^{k,k}) (ad,i,τk,bd,i,τk,k)BGV.SymEnc(sdk,2τsd1k[i];ad,i,rk,ed,i,τk,k) 以及 ( a d , i , τ l , b d , i , τ l , k ) ← B G V . S y m E n c ( s d k , 0 ; a d , i , r l , e d , i , τ l , k ) , l ≠ k (a_{d,i,\tau}^l,b_{d,i,\tau}^{l,k}) \leftarrow BGV.SymEnc(s_d^k, 0; a_{d,i,r}^l,e_{d,i,\tau}^{l,k}),l \neq k (ad,i,τl,bd,i,τl,k)BGV.SymEnc(sdk,0;ad,i,rl,ed,i,τl,k),l=k,这些 { b d , i , r l , k } \{b_{d,i,r}^{l,k}\} {bd,i,rl,k} 将被用于创建重线性化秘钥。

    2. 各方广播 { p d k } , { b d , i , r l , k } \{p_d^k\},\{b_{d,i,r}^{l,k}\} {pdk},{bd,i,rl,k},计算 p d ∗ : = ∑ l p d l p^*_d:=\sum_l p_d^l pd:=lpdl b d , i , τ l : = ∑ l b d , i , τ l , k b_{d,i,\tau}^l:=\sum_l b_{d,i,\tau}^{l,k} bd,i,τl:=lbd,i,τl,k,将 ( A d , p d ∗ ) (A_d,p_d^*) (Ad,pd) 作为每一层的公共公钥,而 { b d , i , τ l } \{b_{d,i,\tau}^l\} {bd,i,τl} 则是私钥碎片的密文。

    3. 可以验证,
      ( A , d , p d ∗ ) = B G V . P u b K e y G e n ( s d ∗ ; A d , e d ∗ ) , s d ∗ : = ∑ l = 1 N s d l , e d ∗ : = ∑ l = 1 N e d l ( a d , i , τ l , b d , i , τ l ) = B G V . S y m E n c ( s d ∗ , 2 τ ⋅ s d − 1 l [ i ] ; a d , i , τ l , e d , i , τ l ) , e d , i , τ l : = ∑ k = 1 N e d , i , τ l , k \begin{aligned} (A,d,p_d^*) &= BGV.PubKeyGen(s_d^*;A_d,e_d^*), s_d^*:=\sum_{l=1}^N s_d^l, e_d^*:=\sum_{l=1}^N e_d^l\\ (a_{d,i,\tau}^l, b_{d,i,\tau}^l) &= BGV.SymEnc(s_d^*,2^\tau \cdot s_{d-1}^l[i];a_{d,i,\tau}^l,e_{d,i,\tau}^l), e_{d,i,\tau}^l:=\sum_{k=1}^N e_{d,i,\tau}^{l,k} \end{aligned} (A,d,pd)(ad,i,τl,bd,i,τl)=BGV.PubKeyGen(sd;Ad,ed),sd:=l=1Nsdl,ed:=l=1Nedl=BGV.SymEnc(sd,2τsd1l[i];ad,i,τl,ed,i,τl),ed,i,τl:=k=1Ned,i,τl,k

    第二轮通信(生成公共重线性化秘钥):

    1. 各个参与方 P k P_k Pk 采样 ( v d , i , j , τ l , k , w d , i , j , τ l , k ) ← B G V . P u b E n c ( p d ∗ , 0 ) (v_{d,i,j,\tau}^{l,k},w_{d,i,j,\tau}^{l,k}) \leftarrow BGV.PubEnc(p_d^*,0) (vd,i,j,τl,k,wd,i,j,τl,k)BGV.PubEnc(pd,0) 以及污染噪声 e ← [ − B e v a l , B e v a l ] e \leftarrow [-B_{eval},B_{eval}] e[Beval,Beval],计算 ( α d , i , j , τ l , k , β d , i , j , τ l , k ) : = s d − 1 k [ j ] ⋅ ( a d , i , τ l , b d , i , τ l ) + ( v d , i , j , τ l , k , w d , i , j , τ l , k + 2 e ) (\alpha_{d,i,j,\tau}^{l,k}, \beta_{d,i,j,\tau}^{l,k}) := s_{d-1}^k[j]\cdot(a_{d,i,\tau}^l, b_{d,i,\tau}^l) + (v_{d,i,j,\tau}^{l,k}, w_{d,i,j,\tau}^{l,k} + 2e) (αd,i,j,τl,k,βd,i,j,τl,k):=sd1k[j](ad,i,τl,bd,i,τl)+(vd,i,j,τl,k,wd,i,j,τl,k+2e)

    2. 各方广播 { ( α d , i , j , τ l , k , β d , i , j , τ l , k ) } \{(\alpha_{d,i,j,\tau}^{l,k}, \beta_{d,i,j,\tau}^{l,k})\} {(αd,i,j,τl,k,βd,i,j,τl,k)},对于 j ∈ [ n ] j \in [n] j[n] 计算 ϕ d , i , j , τ : = ∑ l ∑ k ( α d , i , j , τ l , k , β d , i , j , τ l , k ) \phi_{d,i,j,\tau} := \sum_l\sum_k(\alpha_{d,i,j,\tau}^{l,k}, \beta_{d,i,j,\tau}^{l,k}) ϕd,i,j,τ:=lk(αd,i,j,τl,k,βd,i,j,τl,k),对于 j = 0 j=0 j=0 计算 ϕ d , i , j , τ : = ∑ l ( a d , i , j , τ l , b d , i , j , τ l ) \phi_{d,i,j,\tau} := \sum_l(a_{d,i,j,\tau}^{l}, b_{d,i,j,\tau}^{l}) ϕd,i,j,τ:=l(ad,i,j,τl,bd,i,j,τl)

    3. 可以验证,
      ( α d , i , j , τ l , k , β d , i , j , τ l , k ) = B G V . S y m E n c ( s d ∗ , 2 τ ⋅ s d − 1 l [ i ] ⋅ s d − 1 k [ j ] ) ϕ d , i , j , τ = B G V . S y m E n c ( s d ∗ , 2 τ ⋅ s d − 1 ∗ [ i ] ⋅ s d − 1 ∗ [ j ] ) \begin{aligned} (\alpha_{d,i,j,\tau}^{l,k}, \beta_{d,i,j,\tau}^{l,k}) &= BGV.SymEnc(s_d^*,2^\tau \cdot s_{d-1}^l[i]\cdot s_{d-1}^k[j])\\ \phi_{d,i,j,\tau} &= BGV.SymEnc(s_d^*,2^\tau \cdot s_{d-1}^*[i]\cdot s_{d-1}^*[j])\\ \end{aligned} (αd,i,j,τl,k,βd,i,j,τl,k)ϕd,i,j,τ=BGV.SymEnc(sd,2τsd1l[i]sd1k[j])=BGV.SymEnc(sd,2τsd1[i]sd1[j])

    算法输出为:公共公钥 p k : = ( A 0 , p 0 ∗ ) pk:=(A_0,p_0^*) pk:=(A0,p0),公共重线性化秘钥 e v k : = { ϕ d , i , j , τ } evk:=\{\phi_{d,i,j,\tau}\} evk:={ϕd,i,j,τ},参与者 P k P_k Pk 持有私钥 s k D sk_D skD 的秘密分享 s D k s_D^k sDk

  • T F H E . E n c ( p k , μ ) TFHE.Enc(pk,\mu) TFHE.Enc(pk,μ):在参数 p a r a m 0 param_0 param0 下计算密文 ( v , w ) ← B G V . E n c ( p k , μ ) (v,w) \leftarrow BGV.Enc(pk,\mu) (v,w)BGV.Enc(pk,μ),然后采样额外的污染噪声 e ← [ − B e n c , B e n c ] e \leftarrow [-B_{enc},B_{enc}] e[Benc,Benc],输出密文 c : = ( ( v , w + 2 e ) , l e v e l = 0 ) c:=((v,w+2e),level=0) c:=((v,w+2e),level=0)

  • T F H E . E v a l ( e v k , f , c 1 , ⋯ , c l ) TFHE.Eval(evk,f,c_1,\cdots,c_l) TFHE.Eval(evk,f,c1,,cl):非交互算法,简单输出 B G V . E v a l ( e v k , f , c 1 , ⋯ , c l ) BGV.Eval(evk,f,c_1,\cdots,c_l) BGV.Eval(evk,f,c1,,cl)

  • T F H E . D e c ( s D 1 , ⋯ , s D N , c ) TFHE.Dec(s_D^1,\cdots,s_D^N,c) TFHE.Dec(sD1,,sDN,c)一轮交互协议

    1. 假设密文形如 c = ( v , w , D ) c=(v,w,D) c=(v,w,D),组合私钥为 s D ∗ : = ∑ k s D k s_D^*:=\sum_k s_D^k sD:=ksDk
    2. 各方 P k P_k Pk 计算 w k = v T s D k + 2 e k w^k = v^Ts_D^k+2e_k wk=vTsDk+2ek,其中 e k ← [ − B d e c , B d e c ] e_k \leftarrow [-B_{dec},B_{dec}] ek[Bdec,Bdec] 是污染噪声,将部分解密值 w k w^k wk 广播给其他参与者
    3. 各方计算 ϕ c ( s D ) = w − ∑ k w k \phi_c(s_D) = w-\sum_k w^k ϕc(sD)=wkwk,输出明文 ( ϕ c ( s ) ( m o d q ) D ) ( m o d 2 ) (\phi_c(s) \pmod q_D) \pmod 2 (ϕc(s)(modq)D)(mod2)

我们选取一组参数使得基础 FHE 方案是语义安全的,然后选择合适的污染噪声 B e v a l , B e n c , B d e c B_{eval},B_{enc},B_{dec} Beval,Benc,Bdec 使得组合秘钥 p d ∗ = ∑ l p d l p^*_d=\sum_l p_d^l pd=lpdl 是安全的。此外 TFHE 还需要证明其门限解密算法的安全性。

Semi-Malicious MPC

现在,我们使用上述的 TFHE,立即得到了一个通用 MPC 协议:令 f : ( { 0 , 1 } l i n ) N → { 0 , 1 } l o u t f:(\{0,1\}^{l_{in}})^N \to \{0,1\}^{l_{out}} f:({0,1}lin)N{0,1}lout 是任意公共输出的确定性函数,对应逻辑电路的乘法深度为 D D D,协议 Π f \Pi_f Πf 步骤如下:

  1. 初始化:各参与方协商出 TFHE 的参数 s e t u p setup setup, 设 P k P_k Pk 的输入为 x k ∈ { 0 , 1 } l i n x_k \in \{0,1\}^{l_{in}} xk{0,1}lin

  2. 第一轮通信:每个参与方 P k P_k Pk 执行 T F H E . K e y G e n ( s e t u p ) TFHE.KeyGen(setup) TFHE.KeyGen(setup) 的第一轮,获得公共公钥 p k pk pk 和私钥秘密分享 s k k sk_k skk

  3. 第二轮通信:每个参与方 P k P_k Pk 使用获得的 p k pk pk 逐比特地加密 x k x_k xk,获得密文 c k , i ← T F H E . E n c ( p k , x k [ i ] ) c_{k,i} \leftarrow TFHE.Enc(pk,x_k[i]) ck,iTFHE.Enc(pk,xk[i])。同时执行 T F H E . K e y G e n ( s e t u p ) TFHE.KeyGen(setup) TFHE.KeyGen(setup) 的第二轮,获得公共重线性化秘钥 e v k evk evk,将 ( { c k , i } , e v k ) (\{c_{k,i}\},evk) ({ck,i},evk) 打包广播给其他参与者

  4. 第三轮通信:令 f j f_j fj 是函数 f f f 的各个输出比特的运算函数,各方同态计算 c j = E v a l ( e v k , f j , { c k , i } ) c_j = Eval(evk,f_j,\{c_{k,i}\}) cj=Eval(evk,fj,{ck,i})。需要解密时,所有参与者协同执行 y j = T F H E . D e c ( s D 1 , ⋯ , s D N , c j ) y_j = TFHE.Dec(s_D^1,\cdots,s_D^N,c_j) yj=TFHE.Dec(sD1,,sDN,cj) 获得输出值 y = f ( x 1 , ⋯ , x N ) y=f(x_1,\cdots,x_N) y=f(x1,,xN)

根据 [Gol04] 中的标准转换技术,对于任意的随机函数 g ( x 1 , ⋯ , x N ; r ) ↦ y g(x_1,\cdots,x_N;r) \mapsto y g(x1,,xN;r)y,我们都可以定义一个确定性函数
f ( ( x 1 , r 1 ) , ⋯ , ( x N , r N ) ) : = g ( x 1 , ⋯ , x N ; ⨂ i = 1 N r i ) f((x_1,r_1),\cdots,(x_N,r_N)) := g(x_1,\cdots,x_N; \bigotimes_{i=1}^N r_i) f((x1,r1),,(xN,rN)):=g(x1,,xN;i=1Nri)
只要存在某个均匀掷硬币的参与者,那么 ⨂ i = 1 N r i \bigotimes_{i=1}^N r_i i=1Nri 就会是一个无偏的随机串。上述的转换过程并不增加 MPC 的轮复杂度。

根据 [LP09] 中的标准转换技术,对于任意的私人输出函数 g ( x 1 , ⋯ , x N ) ↦ ( y 1 , ⋯ , y N ) g(x_1,\cdots,x_N) \mapsto (y_1,\cdots,y_N) g(x1,,xN)(y1,,yN),我们都可以定义一个公共输出函数
f ( ( x 1 , s 1 ) , ⋯ , ( x N , s N ) ) : = y 1 ⊗ s 1 ∥ ⋯ ∥ y N ⊗ s N f((x_1,s_1),\cdots,(x_N,s_N)) := y_1 \otimes s_1\| \cdots \|y_N \otimes s_N f((x1,s1),,(xN,sN)):=y1s1yNsN
其中 s k s_k sk 是各方独立选取的对称加密私钥。执行 MPC 协议计算上述函数,最后各个参与方 P k P_k Pk 对计算结果中的 y k ⊗ s k y_k \otimes s_k yksk 部分解密。这仅仅增加了一个开销极小的本地后处理过程,也不增加 MPC 的轮复杂度。

可以证明上述的 MPC 协议是在 UC 框架下半恶意安全的。UC 框架是在 [Can01] 中描述的,论文有 100 多页,本人还没看过,因此这儿的安全证明就不再写了。这里的 “半恶意敌手” 是 [AJW11] 提出的一个比半诚实敌手更强的概念,因此从半恶意安全协议转换到恶意安全协议将会更加容易。

Universal Composability Framework([Can01]):定义 PPT 环境 Z \mathcal Z Z,输入为安全参数 1 κ 1^\kappa 1κ 和辅助输入 z z z,它在真实世界或者理想世界中运行。

  • Ideal world:存在若干虚拟参与者 P ~ 1 , ⋯ , P ~ N \tilde P_1,\cdots,\tilde P_N P~1,,P~N,一个理想敌手 S \mathcal S S 入侵了某些虚拟参与者,它们计算一个函数性 F \mathcal F F
  • Real World:存在若干 PPT 参与者 P 1 , ⋯ , P N P_1,\cdots,P_N P1,,PN,一个真实敌手 A \mathcal A A 入侵了某些参与者,它们执行一个协议 π \pi π
  • 环境 Z \mathcal Z Z 为参与者提供输入,并在执行过程中与敌手交互,最后 Z \mathcal Z Z 判断它是处于真实世界还是理想世界中。定义随机变量 I D E A L F , S , Z ( 1 κ , z ) IDEAL_{\mathcal F,S,\mathcal Z}(1^\kappa,z) IDEALF,S,Z(1κ,z) 是环境与理想世界中参与者和敌手交互后的视图,令 I D E A L F , S , Z IDEAL_{\mathcal F,S,\mathcal Z} IDEALF,S,Z 是分布簇。定义随机变量 R E A L π , A , Z ( 1 κ , z ) REAL_{\pi,\mathcal A,\mathcal Z}(1^\kappa,z) REALπ,A,Z(1κ,z) 是环境与理想世界中参与者和敌手交互后的视图,令 R E A L π , A , Z REAL_{\pi,\mathcal A,\mathcal Z} REALπ,A,Z 是分布簇。

UC 安全性:给定正整数 N N N,令 F \mathcal F F 是一个 N N N 变元函数性, π \pi π 是一个 N N N 方协议。我们说 π \pi π 安全计算 F \mathcal F F,如果对于任意的 PPT 真实敌手 A \mathcal A A,都存在 PPT 理想敌手 S \mathcal S S,使得任意的 PPT 环境 Z \mathcal Z Z 都有
R E A L π , A , Z ≡ c I D E A L F , S , Z REAL_{\pi,\mathcal A,\mathcal Z} \overset{c}{\equiv} IDEAL_{\mathcal F,S,\mathcal Z} REALπ,A,ZcIDEALF,S,Z
为了方便协议构建,我们往往约束敌手能力,例如:半诚实敌手、恶意敌手、只能入侵一定数量的参与者,等等。另外还有 “security-with-abort”,其中的理想敌手 S \mathcal S S 能够 abort,导致函数性在某些参与者上没有输出;而 “fairness” 意为,敌手没有 abort 的能力,诚实参与者总会获得函数性的输出。

Semi-Malicious Adversaries:半恶意敌手是一个交互图灵机,除了标准的输入输出带、随机带,额外拥有一条 “witness tape”。在协议的每一轮交互中,敌手代替 P k P_k Pk 发送消息 m m m,并在 witness tape 上写下元组 ( x , r ) (x,r) (x,r),使得敌手 P k ∗ P_k^* Pk历史记录完全匹配诚实执行 P k ( x , r ) P_k(x,r) Pk(x,r) 的视图。在每一轮中,敌手收到诚实方的消息后,根据任意的 PPT 策略,自适应地选择 ( m , ( x , r ) ) (m,(x,r)) (m,(x,r)),在不同轮中写下的 ( x , r ) (x,r) (x,r) 可以不一致。同时敌手可以在任意一轮交互中终止协议。

任意的半诚实敌手都均匀选取随机带,可以把随机带简单地写在 witness tape 上,因此半恶意敌手比半诚实敌手更加自由。同时半恶意敌手的所有行为都被写在 witness tape 上的 ( x , r ) (x,r) (x,r) 所描述,因此它确实比恶意敌手更加受限。半恶意敌手的能力,严格介于半诚实敌手和恶意敌手之间。

Full-Malicious MPC

为了获得恶意模型下安全的 MPC 协议,可以使用标准的编译器去转化半诚实安全协议,这需要公平掷硬币协议以及零知识证明协议。由于 [AJW11] 构造的基于 TFHE 的 MPC 协议是半恶意安全的,因此可以省略掉掷硬币环节。在 CRS 模型下存在通用的 NIZKP 协议,但是效率较低。因此 [AJW11] 设计了一个高效的关于 LWE 语言的 Gap Sigma 协议(Sigma 协议的弱化),使用 FS 启发式可获得 RO 模型下的 NIZKP 协议。

Gap Sigma Protocol:令 R z k ⊆ R s o u n d \mathcal R_{zk} \subseteq \mathcal R_{sound} RzkRsound 是两个 NP 关系,对应的语言为 L z k ⊆ L s o u n d L_{zk} \subseteq L_{sound} LzkLsound。关于语言 ( L z k , L s o u n d ) (L_{zk},L_{sound}) (Lzk,Lsound) 的 Gap Sigma 协议 ⟨ P , V ⟩ \langle P,V \rangle P,V,是一个三轮交互协议,声明 x x x,证据 w w w,过程 ⟨ P ( w ) , V ⟩ ( x ) \langle P(w),V \rangle(x) P(w),V(x) 产生的副本形如 ( a , c , z ) (a,c,z) (a,c,z)。它满足以下性质:

  1. Correctness:对于任意的 ( x , w ) ∈ R z k (x,w) \in \mathcal R_{zk} (x,w)Rzk,都有 ⟨ P ( w ) , V ⟩ ( x ) = 1 \langle P(w),V \rangle(x)=1 P(w),V(x)=1
  2. Special Soundness:存在 PPT 提取器 E E E,任给声明 x x x 的两个可接受副本 ( a , c , z ) , ( a , c ′ , z ′ ) , c ≠ c ′ (a,c,z),(a,c',z'),c \neq c' (a,c,z),(a,c,z),c=c,那么 E ( x , a , c , z , c ′ , z ′ ) ∈ R s o u n d ( x ) E(x,a,c,z,c',z') \in \mathcal R_{sound}(x) E(x,a,c,z,c,z)Rsound(x)
  3. Honest-Verifier Zero-Knowledge:存在 PPT 模拟器 S S S,给定任意声明 x ∈ L z k x \in L_{zk} xLzk 和挑战 c c c,使得 ( a ′ , z ′ ) ← S ( x , c ) (a',z') \leftarrow S(x,c) (a,z)S(x,c) 满足 { ( a ′ , c , z ′ ) } ≡ s { ( a , c , z ) } \{(a',c,z')\} \overset{s}{\equiv} \{(a,c,z)\} {(a,c,z)}s{(a,c,z)},这里的 ( a , c , z ) (a,c,z) (a,c,z) 是由协议双方 ⟨ P ( w ) , V ⟩ ( x ) \langle P(w),V \rangle(x) P(w),V(x) 交互产生的

在 Gap Sigma 协议中,其完备性和零知识性是关于关系 R z k \mathcal R_{zk} Rzk 的,而可靠性是关于关系 R s o u n d \mathcal R_{sound} Rsound 的,满足关系 R z k ⊆ R s o u n d \mathcal R_{zk} \subseteq \mathcal R_{sound} RzkRsound。也就是说,在 R z k \mathcal R_{zk} Rzk 中的 ( x , w ) (x,w) (x,w) 都满足上述三个性质;而对于 R s o u n d \mathcal R_{sound} Rsound 中的一些 ( x , w ) (x,w) (x,w) 仅仅满足可靠性,协议并不保证正确性以及零知识性。

[AJW11] 构造了关于 LWE 语言的一个 Gap Sigma 协议。令 B B B 是噪声的规模,我们定义一个 NP 关系:
R L W E B : = { ( ( A , b ) , ( s , 2 e ) ) : b = A s + 2 e , A ∈ Z q m × n , b ∈ Z q m , s ∈ Z q n , 2 e ∈ [ − B , B ] m } \mathcal R_{LWE}^B := \{ ((A,b),(s,2e)): b=As+2e, A \in \mathbb Z_q^{m \times n}, b \in \mathbb Z_q^{m}, s \in \mathbb Z_q^{n}, 2e \in [-B,B]^m \} RLWEB:={((A,b),(s,2e)):b=As+2e,AZqm×n,bZqm,sZqn,2e[B,B]m}
它对应的语言记为 L L W E B L_{LWE}^B LLWEB,对于 B ∗ ≥ B B^* \ge B BB,易知 R L W E B ⊆ R L W E B ∗ \mathcal R_{LWE}^{B} \subseteq \mathcal R_{LWE}^{B^*} RLWEBRLWEB 以及 L L W E B ⊆ L L W E B ∗ L_{LWE}^{B} \subseteq L_{LWE}^{B^*} LLWEBLLWEB。现在我们构造关于 ( R L W E B , R L W E B ∗ ) (\mathcal R_{LWE}^{B}, \mathcal R_{LWE}^{B^*}) (RLWEB,RLWEB) 的 Gap Sigma 协议 ⟨ P , V ⟩ L W E \langle P,V \rangle_{LWE} P,VLWE,声明为 ( A , b ) ∈ L L W E B (A,b) \in L_{LWE}^B (A,b)LLWEB,证据为 ( s , 2 e ) ∈ R L W E B ( A , b ) (s,2e) \in \mathcal R_{LWE}^B(A,b) (s,2e)RLWEB(A,b)

  1. P P P 均匀采样掩码 s ′ ← Z q n s' \leftarrow \mathbb Z_q^n sZqn 以及偶噪声 2 e ′ ← [ − ( B ∗ / 2 − B ) , B ∗ / 2 − B ] m 2e' \leftarrow [-(B^*/2-B), B^*/2-B]^m 2e[(B/2B),B/2B]m,计算 b ′ = A s ′ + 2 e ′ b'=As'+2e' b=As+2e 并发送给 V V V
  2. V V V 随机选择挑战 c ∈ { 0 , 1 } c \in \{0,1\} c{0,1} 发送给 P P P
  3. P P P 计算 z = s ′ + c s z=s'+cs z=s+cs 并发送给 V V V
  4. V V V 计算 2 e ∗ = b ′ + c b − A z 2e^* = b'+cb-Az 2e=b+cbAz,判断它是否是个短的偶噪声 2 e ∗ ∈ [ − B ∗ / 2 , B ∗ / 2 ] m 2e^* \in [-B^*/2,B^*/2]^m 2e[B/2,B/2]m

可以证明,当 B / B ∗ = n e g l ( κ ) B/B^* = negl(\kappa) B/B=negl(κ) 时,上述协议是一个 Gap Sigma 协议。

  • 证明完备性:对于诚实证明者 P P P,容易验证 A z = ( b ′ − 2 e ′ ) + c ( b − 2 e ) = b ′ + c b − 2 ( e ′ + e ) Az=(b'-2e')+c(b-2e)=b'+cb-2(e'+e) Az=(b2e)+c(b2e)=b+cb2(e+e),其中 2 e ′ ∈ [ − ( B ∗ / 2 − B ) , B ∗ / 2 − B ] m , 2 e ∈ [ − B , B ] 2e' \in [-(B^*/2-B), B^*/2-B]^m, 2e \in [-B,B] 2e[(B/2B),B/2B]m,2e[B,B],因此 b ′ + c b − A z = 2 ( e ′ + e ) b'+cb-Az=2(e'+e) b+cbAz=2(e+e) 是个短的偶噪声
  • 证明特殊可靠性:给定声明 ( A , b ) (A,b) (A,b) 的两个可接受副本 ( b ′ , 1 , z 1 ) , ( b ′ , 0 , z 2 ) (b',1,z_1), (b',0,z_2) (b,1,z1),(b,0,z2),我们构造提取器 E E E,它计算 s ∗ = z 1 − z 2 s^*=z_1-z_2 s=z1z2 2 e ∗ = b − A s ∗ 2e^*=b-As^* 2e=bAs,输出 ( s ∗ , 2 e ∗ ) (s^*,2e^*) (s,2e)。容易验证 b = A s ∗ + 2 e ∗ b=As^*+2e^* b=As+2e 2 e ∗ ∈ [ − B ∗ , B ∗ ] 2e^* \in [-B^*,B^*] 2e[B,B],从而 ( s ∗ , 2 e ∗ ) ∈ R L W E B ∗ ( A , b ) (s^*,2e^*) \in \mathcal R_{LWE}^{B^*}(A,b) (s,2e)RLWEB(A,b) 是个证据。
  • 证明诚实验证者零知识性:给定 ( A , b ) (A,b) (A,b) c c c,我们构造模拟器 E E E,它均匀采样 z ← Z q n z \leftarrow \mathbb Z_q^n zZqn 2 e ∗ ← [ − ( B ∗ / 2 − B ) , B ∗ / 2 − B ] m 2e^* \leftarrow [-(B^*/2-B), B^*/2-B]^m 2e[(B/2B),B/2B]m,计算 b ′ = A z + 2 e ∗ − c b b'=Az+2e^*-cb b=Az+2ecb,输出模拟视图 ( b ′ , c , z ) (b',c,z) (b,c,z)。由于 b ′ = A z + 2 e ∗ − c ( A s + 2 e ) b'=Az+2e^*-c(As+2e) b=Az+2ec(As+2e),因此令 s ′ = z − c s , 2 e ′ = 2 e ∗ − 2 c e s'=z-cs, 2e'=2e^*-2ce s=zcs,2e=2e2ce,则有 b ′ = A s ′ + 2 e ′ b'=As'+2e' b=As+2e。当 c = 0 c=0 c=0 时,模拟视图恰好与 V V V 的真实视图同分布。当 c = 1 c=1 c=1 时,在真实视图中 b ′ = A s ′ + 2 e ′ b'=As'+2e' b=As+2e,其中 2 e ′ ← [ − ( B ∗ / 2 − B ) , B ∗ / 2 − B ] m 2e' \leftarrow [-(B^*/2-B), B^*/2-B]^m 2e[(B/2B),B/2B]m。而在模拟视图中的 b ′ = A s ′ + 2 e ′ b'=As'+2e' b=As+2e,其中 2 e ′ = 2 e ∗ − 2 e 2e'=2e^*-2e 2e=2e2e,这里的 2 e ∈ [ − B , B ] m 2e \in [-B,B]^m 2e[B,B]m 是固定的小噪声,因为 2 e ∗ ← [ − ( B ∗ / 2 − B ) , B ∗ / 2 − B ] m 2e^* \leftarrow [-(B^*/2-B), B^*/2-B]^m 2e[(B/2B),B/2B]m。根据 Smudging Lemma,当 B / B ∗ = n e g l ( κ ) B/B^* = negl(\kappa) B/B=negl(κ) 时,模拟视图与真实视图中的 2 e ′ 2e' 2e 的分布统计不可区分。

使用上述协议 ⟨ P , V ⟩ L W E \langle P,V \rangle_{LWE} P,VLWE,可以构造出多个关于其他相关语言的 ZKP 协议,再使用 FS 启发式可以获得 RO 模型下的 NIZKP。将它们组装到基于 TFHE 的半恶意安全 MPC 协议上,强制各个参与方都诚实地执行协议,从而实现恶意安全的 MPC 协议。另外还需证明 Gap 并不会影响协议的安全性。


http://www.ppmy.cn/news/821907.html

相关文章

微讲师微课录屏工具升级啦

http://www.weijiangshi.cn 新增加了视频云平台&#xff0c;可以把录制的视频一键微信分享给好友在线查看。并且还可以开启直播模式&#xff0c;把上课授课视频直接分享给其他学生在线学习。

怎么录制微课视频,微课录制技巧

微课如今是越来越流行&#xff0c;逐渐的发展成为一种学生和老师之间交流、学习的一种新方式&#xff0c;那么微课视频怎么录制的呢&#xff1f;录制微课又有哪些技巧呢&#xff1f;下面小编便来分享一些我的经验教大家如何录制微课视频。 第一步、首先我们打开迅捷屏幕录像工具…

给测试小妹做了一个js版屏幕录制工具iREC,她用后竟说喜欢我

副标题&#xff1a;iREC 一款基于浏览器JavaScript的屏幕录制工具 背景 周末&#xff0c;公司里的测试小妹给我发消息说&#xff0c;她昨晚又加班到很晚&#xff0c;原因是研发要求提复杂bug时需要附上具体的操作流程以便详细了解操作过程和复现。最好能提供一个录制视频&…

windows录屏_电脑是怎么录屏的呢?推荐三个录屏实用方法

不管你是大学生还是上班族&#xff0c;在使用电脑的时候都有可能遇到录屏的情况&#xff0c;比如说需要录制一些游戏视频、会议记录视频、录制直播视频等。在电脑上遇到了录屏的方法怎么解决?分享有关录屏的方法&#xff0c;希望可以帮助到你! 方法一、专业录屏软件(推荐指数&…

Win10录屏有哪些方法?快来了解一下录屏技巧

相信很多在自媒体短视频平台投稿的小伙伴们对录屏操作都比较熟悉吧&#xff0c;比如一些视频解说&#xff0c;游戏技巧等分区都离不开录屏的需求。大家都知道如何使用手机的录屏操作。那如果在电脑上Win10录屏有哪些方法呢&#xff1f;因为现在大部分小伙伴用的Win10系统&#…

录屏时怎样才能录到声音?录制声画同步视频的3种方法分享

有很多小伙伴录制完电脑屏幕之后&#xff0c;打开录制好录屏文件&#xff0c;发现只有画面没有声音&#xff0c;这个问题常常会困扰大家。那录屏时怎样才能录制到声音&#xff1f; 其实我们可以选择一款支持录制声音的录屏文件来录制电脑屏幕&#xff0c;今天小编就给大家带来了…

python实现PC界面屏幕录制功能

目录 &#xff11;.硬件介绍 2.实现代码 3.其他实现方式 &#xff11;.硬件介绍 本文实现主要是PC端屏幕的录制功能, PC连接了摄像头 2.实现代码 代码实现PC端控制摄像头录像的时候, 偶然发现如此修改可以进行PC屏幕的录制, 代码如下: # -*- encoding: utf-8 -*-File:came…

Unity录屏实现(三)

继续填上次的坑&#xff0c;,本文只是转载&#xff0c;偶尔看见一博客说 5.1有录屏api&#xff0c;好吧&#xff0c;还是看代码吧&#xff1a; Android代码&#xff1a; package cn.net.xuefei.unityrec; import java.io.File; import java.io.IOException; import com.unity3…