参考文献:
- [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.
- [Gol04] Oded Goldreich. Foundations of Cryptography: Volume 2, Basic Applications. Cam bridge University Press, New York, NY, USA, 1st edition, 2004.
- [Reg05]Oded Regev. On lattices, learning with errors, random linear codes, and cryptography. In STOC, pages 84–93, 2005.
- [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.
- [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.
- [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.
- [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.
- [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.
- [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.
- [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 解密。
直接将上述思路扩展到多个参与方,有如下问题:
- 各方独立生成自己的公私钥,那么不同公钥加密出的密文之间难以运算(这其实是 MK-FHE,详见 [CM15])
- 由单个参与方生成公私钥,其他参与方都使用这个公钥,那么一旦它被入侵,则破坏了所有参与方的隐私性
[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):=b−aTx,解密算法为 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′,si⋅sj⋅2τ):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} A←Zqm×n 以概率 1 − n e g l ( κ ) 1-negl(\kappa) 1−negl(κ) 使得:对于任意的 p ∈ Z q m p \in \mathbb Z_q^m p∈Zqm,存在至多单个 ( s , e ) (s,e) (s,e) 满足 s ∈ Z q n s \in \mathbb Z_q^n s∈Zqn 以及 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(s−s′)=2(e′−e)∈[−2B,2B]m,对于任意固定的 s ∗ = s − s ′ s^*=s-s' s∗=s−s′,均匀选取的 A A A 使得上式成立的概率仅为 ( 4 B / q ) m ≤ 2 − m (4B/q)^m \le 2^{-m} (4B/q)m≤2−m。
现在我们给出一个基于 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} A←Zqm×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+2e∈Zqm(可视为 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 a←Zqn,采样噪声 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=rTA∈Zqn 以及 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 (b−aTs(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,s2∈Zqn,两个明文 μ 1 , μ 2 ∈ { 0 , 1 } \mu_1,\mu_2 \in \{0,1\} μ1,μ2∈{0,1},
-
固定一个系数 a ∈ Z q n a \in \mathbb Z_q^n a∈Zqn,任给两个噪声 e 1 , e 2 ∈ Z q e_1,e_2 \in \mathbb Z_q e1,e2∈Zq,对称加密 ( 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)
即密文第二分量相加,所得的新密文是在两私钥加和下的同态加法密文。 -
固定一个系数 A ∈ Z q m × n A \in \mathbb Z_q^{m \times n} A∈Zqm×n,任给两个噪声 e 1 , e 2 ∈ Z q m e_1,e_2 \in \mathbb Z_q^m e1,e2∈Zqm,公钥生成 ( 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),
- C \mathcal C C 生成私钥 s ← S y m K e y G e n ( p a r a m s ) s \leftarrow SymKeyGen(params) s←SymKeyGen(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
- 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 ∥e′∥1≤B1,选择明文 μ \mu μ,发送 ( p ′ , s ′ , e ′ , μ ) (p',s',e',\mu) (p′,s′,e′,μ) 给 C \mathcal C C
- 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
- 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 游戏中的视图,
- B \mathcal B B 直接将 p k pk pk 发送给 A \mathcal A A,收到回应 ( p ′ , s ′ , e ′ , μ ) (p',s',e',\mu) (p′,s′,e′,μ)
- 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
- 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(p′−2e′)+μ+2e∗=rTp∗+μ+(2e∗−2rTe′)
因为 r T e ′ ≤ ∥ e ′ ∥ 1 ≤ B 1 r^Te' \le \|e'\|_1 \le B_1 rTe′≤∥e′∥1≤B1, 是个小常数,因此根据 Smudging Lemma 可知 b ∗ ≡ s r T p ∗ + μ + 2 e ∗ b^* \overset{s}{\equiv} r^Tp^*+\mu+2e^* b∗≡srTp∗+μ+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,Bdec∈Z,系数 { A d ← Z q d m × n } \{A_d \leftarrow \mathbb Z_{q_d}^{m \times n}\} {Ad←Zqdm×n} 和 { a d , i , τ k ← Z q d n } \{a_{d,i,\tau}^k \leftarrow \mathbb Z_{q_d}^{n}\} {ad,i,τk←Zqdn}
-
T F H E . K e y G e n ( s e t u p ) TFHE.KeyGen(setup) TFHE.KeyGen(setup):两轮交互协议,
第一轮通信(生成公共公钥):
-
各方 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τ⋅sd−1k[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} 将被用于创建重线性化秘钥。
-
各方广播 { 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} 则是私钥碎片的密文。
-
可以验证,
( 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=1∑Nsdl,ed∗:=l=1∑Nedl=BGV.SymEnc(sd∗,2τ⋅sd−1l[i];ad,i,τl,ed,i,τl),ed,i,τl:=k=1∑Ned,i,τl,k
第二轮通信(生成公共重线性化秘钥):
-
各个参与方 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):=sd−1k[j]⋅(ad,i,τl,bd,i,τl)+(vd,i,j,τl,k,wd,i,j,τl,k+2e)
-
各方广播 { ( α 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,τ:=∑l∑k(α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)
-
可以验证,
( α 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τ⋅sd−1l[i]⋅sd−1k[j])=BGV.SymEnc(sd∗,2τ⋅sd−1∗[i]⋅sd−1∗[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):一轮交互协议,
- 假设密文形如 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
- 各方 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 广播给其他参与者
- 各方计算 ϕ c ( s D ) = w − ∑ k w k \phi_c(s_D) = w-\sum_k w^k ϕc(sD)=w−∑kwk,输出明文 ( ϕ 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 步骤如下:
-
初始化:各参与方协商出 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
-
第一轮通信:每个参与方 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
-
第二轮通信:每个参与方 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,i←TFHE.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) 打包广播给其他参与者
-
第三轮通信:令 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=1⨂Nri)
只要存在某个均匀掷硬币的参与者,那么 ⨂ 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)):=y1⊗s1∥⋯∥yN⊗sN
其中 s k s_k sk 是各方独立选取的对称加密私钥。执行 MPC 协议计算上述函数,最后各个参与方 P k P_k Pk 对计算结果中的 y k ⊗ s k y_k \otimes s_k yk⊗sk 部分解密。这仅仅增加了一个开销极小的本地后处理过程,也不增加 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,Z≡cIDEALF,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} Rzk⊆Rsound 是两个 NP 关系,对应的语言为 L z k ⊆ L s o u n d L_{zk} \subseteq L_{sound} Lzk⊆Lsound。关于语言 ( 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)。它满足以下性质:
- 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
- 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)
- Honest-Verifier Zero-Knowledge:存在 PPT 模拟器 S S S,给定任意声明 x ∈ L z k x \in L_{zk} x∈Lzk 和挑战 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} Rzk⊆Rsound。也就是说,在 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,A∈Zqm×n,b∈Zqm,s∈Zqn,2e∈[−B,B]m}
它对应的语言记为 L L W E B L_{LWE}^B LLWEB,对于 B ∗ ≥ B B^* \ge B B∗≥B,易知 R L W E B ⊆ R L W E B ∗ \mathcal R_{LWE}^{B} \subseteq \mathcal R_{LWE}^{B^*} RLWEB⊆RLWEB∗ 以及 L L W E B ⊆ L L W E B ∗ L_{LWE}^{B} \subseteq L_{LWE}^{B^*} LLWEB⊆LLWEB∗。现在我们构造关于 ( 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,V⟩LWE,声明为 ( 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),
- P P P 均匀采样掩码 s ′ ← Z q n s' \leftarrow \mathbb Z_q^n s′←Zqn 以及偶噪声 2 e ′ ← [ − ( B ∗ / 2 − B ) , B ∗ / 2 − B ] m 2e' \leftarrow [-(B^*/2-B), B^*/2-B]^m 2e′←[−(B∗/2−B),B∗/2−B]m,计算 b ′ = A s ′ + 2 e ′ b'=As'+2e' b′=As′+2e′ 并发送给 V V V
- V V V 随机选择挑战 c ∈ { 0 , 1 } c \in \{0,1\} c∈{0,1} 发送给 P P P
- P P P 计算 z = s ′ + c s z=s'+cs z=s′+cs 并发送给 V V V
- V V V 计算 2 e ∗ = b ′ + c b − A z 2e^* = b'+cb-Az 2e∗=b′+cb−Az,判断它是否是个短的偶噪声 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=(b′−2e′)+c(b−2e)=b′+cb−2(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∗/2−B),B∗/2−B]m,2e∈[−B,B],因此 b ′ + c b − A z = 2 ( e ′ + e ) b'+cb-Az=2(e'+e) b′+cb−Az=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∗=z1−z2 和 2 e ∗ = b − A s ∗ 2e^*=b-As^* 2e∗=b−As∗,输出 ( 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 z←Zqn 和 2 e ∗ ← [ − ( B ∗ / 2 − B ) , B ∗ / 2 − B ] m 2e^* \leftarrow [-(B^*/2-B), B^*/2-B]^m 2e∗←[−(B∗/2−B),B∗/2−B]m,计算 b ′ = A z + 2 e ∗ − c b b'=Az+2e^*-cb b′=Az+2e∗−cb,输出模拟视图 ( 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+2e∗−c(As+2e),因此令 s ′ = z − c s , 2 e ′ = 2 e ∗ − 2 c e s'=z-cs, 2e'=2e^*-2ce s′=z−cs,2e′=2e∗−2ce,则有 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∗/2−B),B∗/2−B]m。而在模拟视图中的 b ′ = A s ′ + 2 e ′ b'=As'+2e' b′=As′+2e′,其中 2 e ′ = 2 e ∗ − 2 e 2e'=2e^*-2e 2e′=2e∗−2e,这里的 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∗/2−B),B∗/2−B]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,V⟩LWE,可以构造出多个关于其他相关语言的 ZKP 协议,再使用 FS 启发式可以获得 RO 模型下的 NIZKP。将它们组装到基于 TFHE 的半恶意安全 MPC 协议上,强制各个参与方都诚实地执行协议,从而实现恶意安全的 MPC 协议。另外还需证明 Gap 并不会影响协议的安全性。