基于 MK-FHE 的 MPC

书接上回。

基于 MK-FHE 的 2 轮 MPC

[CM15] 在 GSW 的基础上,构造了一个 multi-identity identity-based FHE,进而获得了第一个基于标准 LWE 问题的 multi-key FHE。所谓 MK-FHE 说的是,各个参与者可以独立地生成公私钥对,并使用自己的公钥加密消息;这些不同公钥加密下的密文,可以在特殊的 masking system 下,转化为支持同态运算的通用格式;在解密通用密文时,所有参与者运行一个分布式的解密协议。

之后 [MW16] 提出了 [CM15] 的一个显著简化,并使用 MK-FHE 构建了 2 轮 MPC 协议。对比 [AJW11] 和 [CM16] 的思路:[AJW11] 让所有参与者协同生成同一个公私钥对,从而使得公共公钥加密下的密文之间可以同态运算,但是这需要分布式的 K e y G e n KeyGen KeyGen 算法;[CM16] 则是各个参与者本地生成各自的公私钥对,但是不同公钥加密下的密文需要转化为通用密文(其实就是把多个秘钥组合成一个公共秘钥),从而可以同态运算。由于 MK-FHE 的 K e y G e n KeyGen KeyGen 是本地进行的,因此使用 MK-FHE 构建 MPC 会比基于 TFHE 的 MPC 节省一轮通信。另外,[AJW11] 使用的基础 FHE 是 BGV 方案,它需要构造出 evaluation key 来辅助同态运算;而 [CM15] 和 [MW16] 使用的是 GSW 方案,不需要 evaluation key,从而兼容 IBE。

Multi-Key FHE

包含 N N N 个参与者的 MK-FHE 的抽象定义为:一个 PPT 算法组 ( S e t u p , K e y G e n , E n c , E x p a n d , E v a l , D e c ) (Setup,KeyGen,Enc,Expand,Eval,Dec) (Setup,KeyGen,Enc,Expand,Eval,Dec)

  • p a r a m ← S e t u p ( 1 κ , 1 d ) param \leftarrow Setup(1^\kappa,1^d) paramSetup(1κ,1d):PPT 随机算法,安全参数 κ \kappa κ,电路深度 d d d,输出 MK-FHE 的一组参数(包括 CRS 等)
  • ( s k , p k ) ← K e y G e n ( p a r a m ) (sk,pk) \leftarrow KeyGen(param) (sk,pk)KeyGen(param):PPT 随机算法,输出私钥 s k sk sk 和公钥 p k pk pk
  • c ← E n c ( p k , μ ) c \leftarrow Enc(pk,\mu) cEnc(pk,μ):PPT 随机算法,输出明文 μ \mu μ 在公钥 p k pk pk 下的密文
  • c ~ ← E x p a n d ( ( p k 1 , ⋯   , p k N ) , j , c ) \tilde c \leftarrow Expand((pk_1,\cdots,pk_N), j,c) c~Expand((pk1,,pkN),j,c):PPT 随机算法,密文 c c c 是关于 ( p k 1 < ⋯   , p k N ) (pk_1<\cdots,pk_N) (pk1<,pkN) 序列(注意顺序依赖)的新鲜密文,输出通用密文 c ~ \tilde c c~
  • c ~ = E v a l ( ( p k 1 , ⋯   , p k N ) , C , ( c ~ 1 , ⋯   , c ~ l ) ) \tilde c = Eval((pk_1,\cdots,pk_N),\mathcal C,(\tilde c_1,\cdots,\tilde c_l)) c~=Eval((pk1,,pkN),C,(c~1,,c~l)):PPT 确定性算法,遵循电路 C \mathcal C C 对通用密文 c ~ i \tilde c_i c~i 执行同态计算(所有密文对应的公钥序列完全相同,包括顺序),输出计算结果 c ~ \tilde c c~
  • μ = D e c ( ( s k 1 , ⋯   , s k N ) , c ~ ) \mu = Dec((sk_1,\cdots,sk_N),\tilde c) μ=Dec((sk1,,skN),c~):PPT 确定性算法,输出通用密文 c ~ \tilde c c~ 所加密的明文 μ \mu μ(需要知道全部参与者的私钥)

现在我们给出 MK-FHE 需满足的一些性质。

  • 语义安全(Semantic security):对于任意的 d = d ( κ ) d=d(\kappa) d=d(κ) 以及任意的 μ 0 , μ 1 \mu_0,\mu_1 μ0,μ1,都满足
    { p a r a m , p k , E n c ( p k , μ 0 ) } ≡ c { p a r a m , p k , E n c ( p k , μ 1 ) } \{ param,pk,Enc(pk,\mu_0) \} \overset{c}{\equiv} \{ param,pk,Enc(pk,\mu_1) \} { param,pk,Enc(pk,μ0)}c{ param,pk,Enc(pk,μ1)}
    其中 p a r a m ← S e t u p ( 1 κ , 1 d ) param \leftarrow Setup(1^\kappa,1^d) paramSetup(1κ,1d) ( s k , p k ) ← K e y G e n ( p a r a m ) (sk,pk) \leftarrow KeyGen(param) (sk,pk)KeyGen(param)

对于任意的 N , d N,d N,d,在参数 p a r a m ← S e t u p ( 1 κ , 1 d ) param \leftarrow Setup(1^\kappa,1^d) paramSetup(1κ,1d) N N N 个参与者各自的公私钥为 ( s k i , p k i ) (sk_i,pk_i) (ski,pki),给定任意的明文序列 ( μ 1 , ⋯   , μ l ) (\mu_1,\cdots,\mu_l) (μ1,,μl) 和任意的索引序列 ( I 1 , ⋯   , I l ) , I i ∈ [ N ] (I_1,\cdots,I_l),I_i \in [N] (I1,,Il),Ii[N],计算密文序列 { c i ← E n c ( p k I i , μ i ) } i ∈ [ l ] \{c_i \leftarrow Enc(pk_{I_i},\mu_i)\}_{i \in [l]} { ciEnc(pkIi,μi)}i[l],对应的扩展密文是 { c ~ i ← E x p a n d ( ( p k 1 , ⋯   , p k N ) , I i , c i ) } \{\tilde c_i \leftarrow Expand((pk_1,\cdots,pk_N),I_i,c_i)\} { c~iExpand((pk1,,pkN),Ii,ci)}

  • 扩展正确性(Correctness of Expansion):对于任意的 i ∈ [ l ] i \in [l] i[l],都有 D e c ( ( s k 1 , ⋯   , s k N ) , c ~ i ) = μ i Dec((sk_1,\cdots,sk_N),\tilde c_i) = \mu_i Dec((sk1,,skN),c~i)=μi
  • 运算正确性(Correctness of Evaluation):对于任意深度 d d d 的电路 C \mathcal C C,计算 c ~ = E v a l ( C , ( c ~ 1 , ⋯   , c ~ l ) ) \tilde c = Eval(\mathcal C,(\tilde c_1,\cdots,\tilde c_l)) c~=Eval(C,(c~1,,c~l)),都有 D e c ( ( s k 1 , ⋯   , s k N ) , c ~ ) = C ( μ 1 , ⋯   , μ l ) Dec((sk_1,\cdots,sk_N),\tilde c) = \mathcal C(\mu_1,\cdots,\mu_l) Dec((sk1,,skN),c~)=C(μ1,,μl)
  • 紧凑性(Compactness):存在多项式 p ( ⋅ ) p(\cdot) p(),使得扩展密文规模为 ∣ c ~ ∣ ≤ p ( κ , d , N ) |\tilde c| \le p(\kappa,d,N) c~p(κ,d,N)

[CM15] 和 [MW16] 使用了 GSW 作为基础加密方案,因此在 E v a l ( ⋅ ) Eval(\cdot) Eval() 中 LHE 不需要公钥参与(当 d d d 较小时),而 FHE 则需要 bootstrapping Key 来实现自举(当 d d d 较大时)。[MP12] 指出,对于任意 m ≥ n log ⁡ q m \ge n \log q mnlogq,都存在 G ∈ Z q n × m G \in \mathbb Z_q^{n \times m} GZqn×m 和对应的高效求逆算法 G − 1 ( ⋅ ) G^{-1}(\cdot) G1(),使得对于任意 M ∈ Z q n × m ′ M \in \mathbb Z_q^{n \times m'} MZqn×m,算法输出 G − 1 ( M ) ∈ { 0 , 1 } m × m ′ G^{-1}(M) \in \{0,1\}^{m \times m'} G1(M){ 0,1}m×m 是一个二元矩阵,使得 G ⋅ G − 1 ( M ) = M G \cdot G^{-1}(M)=M GG1(M)=M。确切地说, G − 1 ( ⋅ ) G^{-1}(\cdot) G1() 是对于列向量的二进制分解算法,而 G G G 是对应的二进制合成算法。简化版本的 GSW 方案,其私钥是短的行向量 s ∈ Z q n − 1 s \in \mathbb Z_q^{n-1} sZqn1,均匀选取 B ∈ Z q ( n − 1 ) × m B \in \mathbb Z_q^{(n-1) \times m} BZq(n1)×m,计算 b = s B + e b=sB+e b=sB+e,设置
t : = ( − s , 1 ) ∈ Z q n   ,   A : = [ B b ] ∈ Z q n × m t:=(-s,1) \in \mathbb Z_q^n\,,\, A:=\begin{bmatrix} B\\b \end{bmatrix} \in \mathbb Z_q^{n \times m} t:=(s,1)Zqn,A:=[Bb]Zqn×m
给定明文 μ ∈ { 0 , 1 } \mu \in \{0,1\} μ{ 0,1},选取随机短矩阵 R ∈ { 0 , 1 } m × m R \in \{0,1\}^{m \times m} R{ 0,1}m×m,密文为 C = A R + μ G C=AR+\mu G C=AR+μG。易知 t A = e tA=e tA=e,那么 t C = t A R + μ t G ≈ μ t G tC=tAR+\mu tG \approx \mu tG tC=tAR+μtGμtG,设置 w = ( 0 , ⋯   , 0 , ⌈ q / 2 ⌉ ) w=(0,\cdots,0,\lceil q/2\rceil) w=(0,,0,q/2⌉),则有 t C G − 1 ( w ) ≈ μ ⌈ q / 2 ⌉ tCG^{-1}(w) \approx \mu \lceil q/2\rceil tCG1(w)μq/2,从而可恢复出明文 μ \mu μ。同态加法为 C + : = C 1 + C 2 C^+:=C_1+C_2 C+:=C1+C2,同态乘法为 C × : = C 1 ⋅ G − 1 ( C 2 ) C^{\times}:=C_1 \cdot G^{-1}(C_2) C×:=C1G1(C2),可以注意到同态乘法的噪声增长是非对称的。

Masking System

现在我们研究如何把不同秘钥下的密文,转化到一个通用格式,从而支持它们的同态运算。[CM15] 提出了 masking system,密文形如 ( U , C ) (U,C) (U,C),其中 C C C 就是常规的 GSW 密文,而 U U U 是一个辅助信息。对于用户 i d 1 id_1 id1 的私钥 t 1 t_1 t1 加密的密文 C ∈ Z q n × m C \in \mathbb Z_q^{n \times m} CZqn×m,满足 t 1 C ≈ μ t 1 G t_1C \approx \mu t_1G t1Cμt1G,给定另一个用户 i d 2 id_2 id2 的私钥 t 2 t_2 t2,我们进行密文扩展:
C ~ = [ C X 0 C ] ∈ Z q 2 n × 2 m ,    t ~ = [ t 1 , t 2 ] ∈ Z q 2 n ,    G ~ = [ G G ] ∈ Z q 2 n × m \tilde C = \begin{bmatrix} C&X\\ 0&C \end{bmatrix}\in \mathbb Z_q^{2n \times 2m},\,\, \tilde t=[t_1,t_2]\in \mathbb Z_q^{2n},\,\, \tilde G = \begin{bmatrix} G\\ G \end{bmatrix}\in \mathbb Z_q^{2n \times m} C~=[C0XC]Zq2n×2m,t~=[t1,t2]Zq2n,G~=[GG]Zq2n×m
需确定 X X X 的值,使得它满足 t ~ C ~ ≈ μ t ~ G ~ \tilde t\tilde C \approx \mu \tilde t \tilde G t~C~μt~G~,即
t 1 X + t 2 C ≈ μ t 2 G t_1X+t_2C \approx \mu t_2G t1X+t2Cμt2G
令系数 B B B 被所有用户共享,用户 i d i id_i idi 的私钥为 s i s_i si,公钥为 b i = s i B + e i b_i=s_iB+e_i bi=siB+ei。假如密文 C C C 由用户 i d 1 id_1 id1 加密,即 C = A 1 R + μ G C=A_1R+\mu G C=A1R+μG,其中 R ∈ { 0 , 1 } m × m R \in \{0,1\}^{m \times m} R{ 0,1}m×m 是随机二元矩阵。可以计算,
t 2 C = [ − s 2 , 1 ] ( [ B s 1 B + e 1 ] R + μ G ) = ( ( s 1 − s 2 ) B + ( e 1 − e 2 ) ) R + e 2 R + μ t 2 G ≈ ( b 1 − b 2 ) R + μ t 2 G \begin{aligned} t_2C &= [-s_2,1]\left( \begin{bmatrix} B\\ s_1B+e_1 \end{bmatrix}R + \mu G \right)\\ &= ((s_1-s_2)B+(e_1-e_2))R + e_2R + \mu t_2G\\ &\approx (b_1-b_2)R + \mu t_2G \end{aligned} t2C=[s2,1]([Bs1B+e1]R+μG)=((s1s2)B+(e1e2))R+e2R+μt2G(b1b2)R+μt2G
其中的掩码 ( b 1 − b 2 ) R (b_1-b_2)R (b1b2)R 是均匀的,使用错误私钥 t 2 t_2 t2 无法解密出 t 1 t_1 t1 下的密文 C C C。为了实现 t 1 X + t 2 C ≈ μ t 2 G t_1X+t_2C \approx \mu t_2G t1X+t2Cμt2G 的目标,我们计算出 X X X 使得 t 1 X ≈ ( b 1 − b 2 ) R t_1X \approx (b_1-b_2)R t1X(b1b2)R,这儿 X X X 可以视为掩码向量 ( b 1 − b 2 ) R ∈ Z q m (b_1-b_2)R \in \mathbb Z_q^m (b1b2)RZqm 的一个 “pseudo ciphertext”(无法解密,但可以参与同态运算)。为了计算 X X X,我们设置辅助信息
U : = { u i j ← G S W . S y m E n c ( t 1 , R i j ) } U := \{u_{ij} \leftarrow GSW.SymEnc(t_1, R_{ij})\} U:={ uijGSW.SymEnc(t1,Rij)}
由于 b 1 , b 2 b_1,b_2 b1,b2 是公钥中的明文,因此使用 U U U R R R 的密文,可以同态计算出 ( b 1 − b 2 ) R (b_1-b_2)R (b1b2)R 的伪密文 X X X。直觉上,由于 GSW 是语义安全的,因此密文 ( U , C ) (U,C) (U,C) 并不泄露 R R R μ \mu μ 的信息,从而 MK-FHE 也是语义安全的。

接下来,我们详细描述基于 GSW 的 MK-FHE 构造方案。首先是如何构造 GSW 密文 C = A R + μ G C=AR+\mu G C=AR+μG 对应的辅助信息 U U U

GSW Linear combination:给定私钥 t ∈ Z q n t \in \mathbb Z_q^n tZqn,对于任意矩阵 M ∈ { 0 , 1 } m × m M \in \{0,1\}^{m \times m} M{ 0,1}m×m,令 C i j ∈ Z q n × m C_{ij} \in \mathbb Z_q^{n \times m} CijZqn×m 是元素 M i j ∈ { 0 , 1 } M_{ij} \in \{0,1\} Mij{ 0,1} 的噪声界 β \beta β 的 GSW 密文(即 t C = μ t G + e tC=\mu tG+e tC=μtG+e,其中 ∥ e ∥ ∞ ≤ β \|e\|_\infty \le \beta eβ)。存在 PPT 确定性算法 L C o m b ( ⋅ ) LComb(\cdot) LComb(),对于任意的 v ∈ Z q m v \in \mathbb Z_q^m vZqm,使得输出为 C l c = L C o m b ( { C i j } , v ) C_{lc} = LComb(\{C_{ij}\},v) Clc=LComb({ Cij},v),它满足 t C l c = v M + e tC_{lc} = vM+e tClc=vM+e,其中 ∥ e ∥ ∞ ≤ m 3 β \|e\|_\infty \le m^3\beta em3β。具体算法如下,

  1. 对于所有的 i , j ∈ [ m ] i,j \in [m] i,j[m],定义矩阵 Z i j ∈ Z q n × m Z_{ij} \in \mathbb Z_q^{n \times m} ZijZqn×m
    Z i j [ a , b ] : = { v [ i ] , a = n , b = j 0 , o t h e r w i s e Z_{ij}[a,b] := \left\{\begin{aligned} v[i],&& a=n,b=j\\ 0,&& otherwise \end{aligned}\right. Zij[a,b]:={ v[i],0,a=n,b=jotherwise

  2. 输出矩阵 C l c = ∑ i , j C i j G − 1 ( Z i j ) ∈ Z q n × m C_{lc} = \sum_{i,j} C_{ij}G^{-1}(Z_{ij}) \in \mathbb Z_q^{n \times m} Clc=i,jCijG1(Zij)Zqn×m

  3. 由于 Z i j Z_{ij} Zij 仅在最后一行存在单个非零值 v [ i ] v[i] v[i],且 t = ( − s , 1 ) t=(-s,1) t=(s,1) 的最后一项是 1 1 1,容易验证
    t C l c = ∑ i j ( M i j t G + e i j ) G − 1 ( Z i j ) = ( − s , 1 ) ∑ i j Z i j M i j + ∑ i j e i j G − 1 ( Z i j ) = v M + e \begin{aligned} tC_{lc} &= \sum_{ij}(M_{ij}tG+e_{ij})G^{-1}(Z_{ij})\\ &= (-s,1)\sum_{ij}Z_{ij}M_{ij} + \sum_{ij}e_{ij}G^{-1}(Z_{ij})\\ &= vM + e \end{aligned} tClc=ij(MijtG+eij)G1(Zij)=(s,1)ijZijMij+ijeijG1(Zij)=vM+e
    由于 ∥ e i j G − 1 ( Z i j ) ∥ ∞ ≤ m β \|e_{ij}G^{-1}(Z_{ij})\|_\infty \le m\beta eijG1(Zij)mβ,因此满足 ∥ e ∥ ∞ ≤ m 3 β \|e\|_\infty \le m^3\beta em3β

GSW Masking Scheme:它是一对 PPT 算法 ( U n i E n c , E x t e n d ) (UniEnc,Extend) (UniEnc,Extend)

  • U n i E n c ( p k , μ ) UniEnc(pk,\mu) UniEnc(pk,μ):其输出形如 ( U ∈ { 0 , 1 } ∗ , C ∈ Z q n × m ) (U \in \{0,1\}^*,C \in \mathbb Z_q^{n \times m}) (U{ 0,1},CZqn×m)
    1. 设置 C ← G S W . E n c ( p k , μ ) C \leftarrow GSW.Enc(pk,\mu) CGSW.Enc(pk,μ),使得 C = A R + μ G ∈ Z q n × m C=AR+\mu G \in \mathbb Z_q^{n \times m} C=AR+μGZqn×m,其中 R ∈ { 0 , 1 } m × m R \in \{0,1\}^{m \times m} R{ 0,1}m×m 是随机性,
    2. 加密每个元素 R i j R_{ij} Rij,令 V i j ← G S W . E n c ( p k , R i j ) V_{ij} \leftarrow GSW.Enc(pk,R_{ij}) VijGSW.Enc(pk,Rij),设置 U : = ( V 1 , 1 , ⋯   , V m , m ) ∈ ( Z q n × m ) m 2 U:=(V_{1,1},\cdots,V_{m,m}) \in (\mathbb Z_q^{n \times m})^{m^2} U:=(V1,1,,Vm,m)(Zqn×m)m2
  • E x t e n d ( U , p k , p k ′ ) Extend(U,pk,pk') Extend(U,pk,pk):根据辅助信息 U U U 计算扩展密文中的 X X X 子矩阵,
    1. p k = A , p k = A ′ pk=A,pk=A' pk=A,pk=A 中提取出 b = s B + e , b ′ = s ′ B + e ′ b=sB+e,b'=s'B+e' b=sB+e,b=sB+e,满足 ∥ e ∥ ∞ , ∥ e ′ ∥ ∞ ≤ β \|e\|_\infty,\|e'\|_\infty \le \beta e,eβ,由于 U U U 中的密文是在 p k pk pk 下加密的, t V i j = e R i j + μ t G tV_{ij}=eR_{ij}+\mu tG tVij=eRij+μtG,噪声规模为 ∥ e R i j ∥ ∞ ≤ m β \|eR_{ij}\|_\infty \le m\beta eRijmβ
    2. 输出 X = L C o m b ( U , b ′ − b ) X = LComb(U,b'-b) X=LComb(U,bb),根据 L C o m b ( ⋅ ) LComb(\cdot) LComb() 的性质易知 t X = ( b ′ − b ) R + e X tX = (b'-b)R+e_X tX=(bb)R+eX,满足 ∥ e X ∥ ∞ ≤ m 4 β \|e_X\|_\infty \le m^4\beta eXm4β

Semantic Security of Masking Scheme:对于任意多项式 d = d ( κ ) d=d(\kappa) d=d(κ),生成参数 p a r a m ← G S W . S e t u p ( 1 κ , 1 d ) param \leftarrow GSW.Setup(1^\kappa,1^d) paramGSW.Setup(1κ,1d),生成公私钥 ( s k , p k ) ← G S W . K e y G e n ( p a r a m ) (sk,pk) \leftarrow GSW.KeyGen(param) (sk,pk)GSW.KeyGen(param),任意的 PPT 敌手无法区分如下两个视图,
( p a r a m , p k , U n i E n c ( p k , 0 ) ) ≡ c ( p a r a m , p k , U n i E n c ( p k , 1 ) ) (param,pk,UniEnc(pk,0)) \overset{c}{\equiv} (param,pk,UniEnc(pk,1)) (param,pk,UniEnc(pk,0))c(param,pk,UniEnc(pk,1))
我们可以利用 Hybrid 技术证明上述 GSW Masking Scheme 是语义安全的。首先,我们依次替换 V i j = E n c ( p k , R i j ) V_{ij}=Enc(pk,R_{ij}) Vij=Enc(pk,Rij) 成为 V i j ′ = E n c ( p k , 0 ) V_{ij}'=Enc(pk,0) Vij=Enc(pk,0),那么根据 GSW 的语义安全性,可以证明相邻实验是不可区分的。其次,我们替换 C = E n c ( p k , μ ) C=Enc(pk,\mu) C=Enc(pk,μ) 成为 C ′ = E n c ( p k , 0 ) C'=Enc(pk,0) C=Enc(pk,0),那么根据 GSW 的语义安全性,也可以证明两个实验是不可区分的。最终便证明了 U U U 不泄露 R R R 的信息并且 C C C 不泄露 μ \mu μ 的信息,上述 Masking Scheme 是语义安全的。上述归约过程很简单,不再细写。

Construction of MK-FHE

关于 N N N 个参与者的扩展密文包含 N 2 N^2 N2 Z q n × m \mathbb Z_q^{n \times m} Zqn×m 子矩阵,定义扩展的 Gadget 矩阵
G ~ N : = [ G 0 ⋯ 0 0 G ⋮ ⋮ ⋱ 0 ⋯ G ] ∈ Z q n N × m N \tilde G_N := \begin{bmatrix} G & 0 & \cdots & 0\\ 0 & G &&\vdots\\ \vdots && \ddots\\ 0 & \cdots && G \end{bmatrix} \in \mathbb Z_q^{nN \times mN} G~N:= G000G0G ZqnN×mN
根据 [MP12] 容易推广出高效算法 G ~ N − 1 ( ⋅ ) \tilde G_N^{-1}(\cdot) G~N1(),对于任意的 m ′ ∈ N m' \in \mathbb N mN,任意矩阵 M ∈ Z q n N × m ′ M \in \mathbb Z_q^{nN \times m'} MZqnN×m,使得 G ~ N − 1 ( M ) ∈ { 0 , 1 } m N × m ′ \tilde G_N^{-1}(M) \in \{0,1\}^{mN \times m'} G~N1(M){ 0,1}mN×m 是短矩阵,且 G ~ N G ~ N − 1 ( M ) = M \tilde G_N\tilde G_N^{-1}(M)=M G~NG~N1(M)=M

基于 GSW 的 MK-FHE 构造如下:

  • S e t u p ( 1 κ , 1 d ) Setup(1^\kappa,1^d) Setup(1κ,1d):简单运行 p a r a m ← G S W . S e t u p ( 1 κ , 1 d ) param \leftarrow GSW.Setup(1^\kappa,1^d) paramGSW.Setup(1κ,1d)

  • K e y G e n ( p a r a m ) KeyGen(param) KeyGen(param):简单运行 ( s k , p k ) ← G S W . K e y G e n ( p a r a m ) (sk,pk) \leftarrow GSW.KeyGen(param) (sk,pk)GSW.KeyGen(param)

  • E n c ( p k , μ ) Enc(pk,\mu) Enc(pk,μ):简单运行 ( U , C ) ← U n i E n c ( μ , p k ) (U,C) \leftarrow UniEnc(\mu,pk) (U,C)UniEnc(μ,pk),输出 c = ( U , C ) c=(U,C) c=(U,C) 作为密文

  • E x p a n d ( ( p k 1 , ⋯   , p k N ) , i , c ) Expand((pk_1,\cdots,pk_N),i,c) Expand((pk1,,pkN),i,c):密文 c c c 是关于 p k i pk_i pki 的新鲜密文,

    1. 对于所有的 j ∈ [ N ] \ { i } j \in [N]\backslash\{i\} j[N]\{ i},计算 2 2 2 阶扩张密文 X j ← E x t e n d ( U , p k i , p k j ) X_j \leftarrow Extend(U,pk_i,pk_j) XjExtend(U,pki,pkj)

    2. 定义 N N N 阶扩张密文 C ~ ∈ Z q n N × m N \tilde C \in \mathbb Z_q^{nN \times mN} C~ZqnN×mN,它包括 N 2 N^2 N2 个子矩阵 C a b ∈ Z q n × m C_{ab} \in \mathbb Z_q^{n \times m} CabZqn×m,定义为
      C a b : = { C , a = b X j , a = i , b = j 0 n × m , o t h e r w i s e C_{ab}:= \left\{\begin{aligned} C,&& a=b\\ X_j,&& a=i,b=j\\ 0^{n \times m},&& otherwise \end{aligned}\right. Cab:= C,Xj,0n×m,a=ba=i,b=jotherwise
      C ~ \tilde C C~ 的对角线都是 C C C,第 i i i 行是 { X j } j ≠ i \{X_j\}_{j \neq i} { Xj}j=i

    3. 最后输出扩展密文 C ~ \tilde C C~

  • E v a l ( ( p k 1 , ⋯   , p k N ) , C , ( c ~ 1 , ⋯   , c ~ l ) ) Eval((pk_1,\cdots,pk_N),\mathcal C,(\tilde c_1,\cdots,\tilde c_l)) Eval((pk1,,pkN),C,(c~1,,c~l)):扩展私钥 t ~ = [ t 1 , ⋯   , t N ] \tilde t=[t_1,\cdots,t_N] t~=[t1,,tN],易知 t ~ C ~ ≈ μ t ~ G ~ \tilde t \tilde C \approx \mu \tilde t \tilde G t~C~μt~G~ ,因此扩展密文的同态运算与 GSW 完全相同,但是矩阵维度扩张到了 n ′ = n N , m ′ = m N n'=nN,m'=mN n=nN,m=mN

  • D e c ( ( s k 1 , ⋯   , s k N ) , c ) Dec((sk_1,\cdots,sk_N),c) Dec((sk1,,skN),c):令 w = ( 0 , ⋯   , 0 , ⌈ q / 2 ⌉ ) ∈ Z q n N w=(0,\cdots,0,\lceil q/2\rceil) \in \mathbb Z_q^{nN} w=(0,,0,q/2⌉)ZqnN 是列矢,计算 t ~ C ~ G ~ − 1 ( w ) ≈ μ t ~ w = μ ⌈ q / 2 ⌉ \tilde t \tilde C\tilde G^{-1}(w) \approx \mu \tilde t w = \mu\lceil q/2\rceil t~C~G~1(w)μt~w=μq/2,从而计算出明文 μ \mu μ

上述的 MK-FHE 的语义安全性,完全就是 GSW Masking Scheme 的语义安全性,进而依赖于 GSW 的语义安全性。在 L W E n − 1 , q , χ , B χ LWE_{n-1,q,\chi,B_\chi} LWEn1,q,χ,Bχ 假设下,这个 MK-FHE 是语义安全的。扩展的正确性,对于 t ~ C ~ = μ t ~ G ~ + e \tilde t \tilde C = \mu \tilde t \tilde G+e t~C~=μt~G~+e,根据 Masking Scheme 可知 ∥ e ∥ ∞ ≤ ( m 4 + m ) B χ \|e\|_\infty \le (m^4+m)B_\chi e(m4+m)Bχ,因此设置初始噪声界 β i n i t = ( m 4 + m ) B χ \beta_{init} = (m^4+m)B_\chi βinit=(m4+m)Bχ。同态运算的正确性,深度 d d d 的电路运算后噪声为 ∥ e ′ ∥ ≤ β i n i t ⋅ ( m N + 1 ) d \|e'\| \le \beta_{init} \cdot (mN+1)^d eβinit(mN+1)d,因此设置最终噪声界 β f i n a l = ( m 4 + m ) ( m N + 1 ) d B χ \beta_{final} = (m^4+m)(mN+1)^dB_\chi βfinal=(m4+m)(mN+1)dBχ。为了解密正确性,需要设置足够大的模数 q ≥ 4 m N ⋅ β f i n a l = 2 O ( d log ⁡ κ ) B χ q \ge 4mN \cdot \beta_{final} = 2^{O(d\log\kappa)}B_\chi q4mNβfinal=2O(dlogκ)Bχ。所以本方案的噪声比值是亚指数的,需要设置足够大的 n , m n,m n,m 使得方案实际安全。

Threshold Decryption

在上一节中 MK-FHE 解密算法需要知道所有参与者的私钥信息,但在网络协议中人们并不会将自己的私钥交给其他人。因此,构造一个分布式解密算法是有必要的。首先给出 MK-FHE 的门限解密协议抽象定义:它是一对算法 D e c : = ( P a r t D e c , F i n D e c ) Dec := (PartDec,FinDec) Dec:=(PartDec,FinDec)

  • p i ← P a r t D e c ( c ~ , ( p k 1 , ⋯   , p k N ) , i , s k i ) p_i \leftarrow PartDec(\tilde c,(pk_1,\cdots,pk_N),i,sk_i) piPartDec(c~,(pk1,,pkN),i,ski):PPT 随机算法,扩展密文 c ~ \tilde c c~ 是关于此公钥序列的,参与者 P i P_i Pi 输出关于 s k i sk_i ski 的 “partial decryption” p i p_i pi
  • μ = F i n D e c ( p 1 , ⋯   , p N ) \mu = FinDec(p_1,\cdots,p_N) μ=FinDec(p1,,pN):PPT 确定性算法,根据 N N N 个部分解密,计算出明文 μ \mu μ

除了功能描述,下面我们再描述门限解密协议需要满足的性质。对于任意的 N , d N,d N,d,在参数 p a r a m ← S e t u p ( 1 κ , 1 d ) param \leftarrow Setup(1^\kappa,1^d) paramSetup(1κ,1d) N N N 个参与者各自的公私钥为 ( s k i , p k i ) (sk_i,pk_i) (ski,pki),给定任意的明文序列 ( μ 1 , ⋯   , μ l ) (\mu_1,\cdots,\mu_l) (μ1,,μl) 和任意的索引序列 ( I 1 , ⋯   , I l ) , I i ∈ [ N ] (I_1,\cdots,I_l),I_i \in [N] (I1,,Il),Ii[N],计算密文序列 { c i ← E n c ( p k I i , μ i ) } i ∈ [ l ] \{c_i \leftarrow Enc(pk_{I_i},\mu_i)\}_{i \in [l]} { ciEnc(pkIi,μi)}i[l],对应的扩展密文是 { c ~ i ← E x p a n d ( ( p k 1 , ⋯   , p k N ) , I i , c i ) } \{\tilde c_i \leftarrow Expand((pk_1,\cdots,pk_N),I_i,c_i)\} { c~iExpand((pk1,,pkN),Ii,ci)},令 C \mathcal C C 是深度 d d d 的任意电路,计算 c ~ = E v a l ( C , ( c ~ 1 , ⋯   , c ~ l ) ) \tilde c = Eval(\mathcal C,(\tilde c_1,\cdots,\tilde c_l)) c~=Eval(C,(c~1,,c~l))

  • 解密正确性(Correctness of Decryption):令 p i ← P a r t D e c ( c ~ , ( p k 1 , ⋯   , p N ) ) p_i \leftarrow PartDec(\tilde c,(pk_1,\cdots,p_N)) piPartDec(c~,(pk1,,pN)) 是部分解密,总有 F i n D e c ( c ~ , ( p 1 , ⋯   , p N ) ) = C ( μ 1 , ⋯   , μ l ) FinDec(\tilde c,(p_1,\cdots,p_N)) = \mathcal C(\mu_1,\cdots,\mu_l) FinDec(c~,(p1,,pN))=C(μ1,,μl) 成立。
  • 可模拟性(Simulatability of partial decryption):存在 PPT 模拟器 S t h r \mathcal S^{thr} Sthr,使得 p i ′ ← S t h r ( μ , c ~ , i , { s k j } j ∈ [ N ] \ { i } ) p_i' \leftarrow \mathcal S^{thr}(\mu,\tilde c,i,\{sk_j\}_{j \in [N]\verb|\|\{i\}}) piSthr(μ,c~,i,{ skj}j[N]\{ i}) 满足 p i ′ ≡ s p i p_i' \overset{s}{\equiv} p_i pispi,这里 p i ← P a r t D e c ( c ~ , ( p k 1 , ⋯   , p k N ) , i , s k i ) p_i \leftarrow PartDec(\tilde c,(pk_1,\cdots,pk_N),i,sk_i) piPartDec(c~,(pk1,,pkN),i,ski) 是真实执行结果。

需要注意的是,可模拟性的定义中,仅仅要求模拟器模拟出单个用户 P i P_i Pi 的部分解密值 p i ′ p_i' pi,并且 [MW16] 没能给出可模拟任意子集 S ⊆ [ N ] S \subseteq [N] S[N] 的更强安全性证明。

现在给出基于 GSW 的 MK-FHE 方案的门限解密协议:

  • P a r t D e c ( c ~ , ( p k 1 , ⋯   , p k N ) , i , s k i = t i ) PartDec(\tilde c,(pk_1,\cdots,pk_N),i,sk_i=t_i) PartDec(c~,(pk1,,pkN),i,ski=ti):将扩展密文 C ~ ∈ Z q n N × m N \tilde C \in \mathbb Z_q^{nN \times mN} C~ZqnN×mN 分拆为 N N N 的子矩阵 C ~ i ∈ Z q n × m N \tilde C_i \in \mathbb Z_q^{n \times mN} C~iZqn×mN
    C ~ = [ C ~ 1 ⋮ C ~ N ] ∈ Z q n N × m N \tilde C = \begin{bmatrix} \tilde C_1\\ \vdots\\ \tilde C_N\\ \end{bmatrix} \in \mathbb Z_q^{nN \times mN} C~= C~1C~N ZqnN×mN
    设置列矢 w = ( 0 , ⋯   , 0 , ⌈ q / 2 ⌉ ) ∈ Z q n N w=(0,\cdots,0,\lceil q/2\rceil) \in \mathbb Z_q^{nN} w=(0,,0,q/2⌉)ZqnN,计算 γ i = t i C ~ i G ~ − 1 ( w ) \gamma_i=t_i\tilde C_i\tilde G^{-1}(w) γi=tiC~iG~1(w),采样 e i ← [ − B d e c , B d e c ] e_i \leftarrow [-B_{dec},B_{dec}] ei[Bdec,Bdec],这里 B d e c = 2 d κ log ⁡ κ B χ B_{dec}=2^{d\kappa\log\kappa}B_\chi Bdec=2dκlogκBχ 是充分大的污染噪声界,设置 p i = γ i + e i ∈ Z q p_i=\gamma_i+e_i \in \mathbb Z_q pi=γi+eiZq 作为部分解密值

  • F i n D e c ( p 1 , ⋯   , p N ) FinDec(p_1,\cdots,p_N) FinDec(p1,,pN):计算 p = ∑ i p i p=\sum_i p_i p=ipi,输出明文 μ = ⌊ p / ( q / 2 ) ⌉ ( m o d 2 ) ∈ { 0 , 1 } \mu=\lfloor p/(q/2)\rceil \pmod 2 \in \{0,1\} μ=p/(q/2)⌉(mod2){ 0,1}

[MW16] 的基于 GSW 的 MK-FHE,本质上也是将某消息用一个组合秘钥 t ~ = [ t 1 , ⋯   , t N ] \tilde t=[t_1,\cdots,t_N] t~=[t1,,tN] 来加密。分布式解密时,需要各方在 “部分解密” 上添加污染,根据 [AJW11] 的 Smudging Lemma 可证明组合秘钥的安全性。构造模拟器 S t h r ( μ , C ~ , i , { t j } j ≠ i ) S^{thr}(\mu,\tilde C,i,\{t_j\}_{j \neq i}) Sthr(μ,C~,i,{ tj}j=i) 如下:选取充分大的 B d e c / β f i n a l ≥ 2 κ B_{dec}/\beta_{final} \ge 2^\kappa Bdec/βfinal2κ,采样污染噪声 e i ← [ − B d e c , B d e c ] e_i \leftarrow [-B_{dec},B_{dec}] ei[Bdec,Bdec],计算所有 j ≠ i j \neq i j=i 的部分解密 γ j = t j C ~ j G ~ − 1 ( w ) \gamma_j=t_j\tilde C_j\tilde G^{-1}(w) γj=tjC~jG~1(w),模拟出第 i i i 个参与者的部分解密
p i ′ = μ ⌊ q / 2 ⌉ + e i − ∑ j ≠ i γ j p_i' = \mu\lfloor q/2 \rceil + e_i - \sum_{j \neq i} \gamma_j pi=μq/2+eij=iγj
而真实世界中, ∑ j γ j = μ ⌊ q / 2 ⌉ + e ′ \sum_j \gamma_j=\mu\lfloor q/2\rceil + e' jγj=μq/2+e,其中 ∥ e ′ ∥ ∞ ≤ m N β f i n a l \|e'\|_\infty \le mN\beta_{final} emNβfinal,,带入 p i = γ i + e i p_i=\gamma_i+e_i pi=γi+ei 可得 p i = μ ⌊ q / 2 ⌉ + e ′ + e i − ∑ j ≠ i γ j p_i = \mu\lfloor q/2 \rceil + e'+e_i - \sum_{j \neq i} \gamma_j pi=μq/2+e+eij=iγj。由于 e ′ e' e 是个较小噪声,而 e i e_i ei 是很大的污染噪声,因此 e i ≡ s e i + e ′ e_i \overset{s}{\equiv} e_i+e' eisei+e,因此模拟器 S t h r S^{thr} Sthr 给出了与真实视图统计不可区分的模拟视图。

Semi-Malicious MPC

由于 MK-FHE 的门限解密,可模拟性中仅仅要求模拟器模拟出单个用户 P i P_i Pi 的部分解密值 p i ′ p_i' pi,而非任意子集中多个用户的部分解密,因此直接利用 MK-FHE 只能构造出抵御恰好 N − 1 N-1 N1 个半恶意敌手的 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. 初始化,各方协同执行 p a r a m ← M F H E . S e t u p ( 1 κ , 1 d ) param \leftarrow MFHE.Setup(1^\kappa,1^d) paramMFHE.Setup(1κ,1d)
  2. 第一轮,
    1. 各方 P k P_k Pk 独立生成公私钥 ( p k k , s k k ) ← M F H E . K e y G e n ( p a r a m ) (pk_k,sk_k) \leftarrow MFHE.KeyGen(param) (pkk,skk)MFHE.KeyGen(param)
    2. 逐比特地加密自己的输入值 x k x_k xk,得到 c k j ← M F H E . E n c ( p k k , x k [ j ] ) c_{kj} \leftarrow MFHE.Enc(pk_k,x_k[j]) ckjMFHE.Enc(pkk,xk[j])
    3. 广播 ( p k k , { c k j } ) (pk_k,\{c_{kj}\}) (pkk,{ ckj}) 给其他参与者
  3. 第二轮,
    1. P k P_k Pk 收到全部消息后,执行密文扩展 c ~ i j ← M F H E . E x p a n d ( ( p k 1 , ⋯   , p k N ) , i , c i j ) \tilde c_{ij} \leftarrow MFHE.Expand((pk_1,\cdots,pk_N),i,c_{ij}) c~ijMFHE.Expand((pk1,,pkN),i,cij)
    2. 接着执行同态运算 c ~ j ← M F H E . E v a l ( f j , ( c ~ 1 , 1 , ⋯   , c ~ N , l i n ) ) \tilde c_j \leftarrow MFHE.Eval(f_j,(\tilde c_{1,1},\cdots,\tilde c_{N,l_{in}})) c~jMFHE.Eval(fj,(c~1,1,,c~N,lin)),其中 f j , j ∈ [ l o u t ] f_j,j \in [l_{out}] fj,j[lout] 是函数 f f f j j j 比特输出对应的函数
    3. 执行门限解密协议 p j k ← M F H E . P a r t D e c ( c ~ j , ( p k 1 , ⋯   , p k N ) , k , s k k ) p_{jk} \leftarrow MFHE.PartDec(\tilde c_j,(pk_1,\cdots,pk_N),k,sk_k) pjkMFHE.PartDec(c~j,(pk1,,pkN),k,skk),广播给其他参与者
  4. 各方 P k P_k Pk 计算 y j ← M F H E . F i n D e c ( p j , 1 , ⋯   , p j , N ) y_j \leftarrow MFHE.FinDec(p_{j,1},\cdots,p_{j,N}) yjMFHE.FinDec(pj,1,,pj,N),输出 y = y 1 ⋯ y l o u t y=y_1\cdots y_{l_{out}} y=y1ylout 作为运算结果

接下来,我们将 π f \pi_f πf 扩展到抵御任意数量的半恶意敌手安全协议。[MW16] 定义了一个 “Extended function”:任给函数性 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,令 P R F : { 0 , 1 } κ × [ N ] → { 0 , 1 } l i n PRF:\{0,1\}^\kappa \times [N] \to \{0,1\}^{l_{in}} PRF:{ 0,1}κ×[N]{ 0,1}lin 是一个伪随机函数。定义扩展函数 f ~ : ( { 0 , 1 } l i n × { 1 , 2 , 3 } × { 0 , 1 } κ ) N → { 0 , 1 } l o u t \tilde f:(\{0,1\}^{l_{in}} \times \{1,2,3\} \times \{0,1\}^\kappa)^N \to \{0,1\}^{l_{out}} f~:({ 0,1}lin×{ 1,2,3}×{ 0,1}κ)N{ 0,1}lout,其输入形如 ( x k , m o d e k , z k ) (x_k,mode_k,z_k) (xk,modek,zk)

  • ∀ i ∈ [ N ] , m o d e i = 1 \forall i \in [N], mode_i=1 i[N],modei=1,则直接输出 f ( x 1 , ⋯   , x N ) f(x_1,\cdots,x_N) f(x1,,xN)
  • ∃ ! i ∈ [ N ] , m o d e i = 2 \exist! i \in [N],mode_i=2 !i[N],modei=2,设置 K = z i K=z_i K=zi 是 PRF 索引,
    • 对于 m o d e j = 3 mode_j=3 modej=3 的那些输入 x j x_j xj,设置 x j ′ = P R F ( K , j ) ⊕ x j x_j'=PRF(K,j) \oplus x_j xj=PRF(K,j)xj
    • 而其他的那些 x j x_j xj,简单设置 x j ′ = x j x_j'=x_j xj=xj
    • 输出 f ( x 1 ′ , ⋯   , x N ′ ) f(x_1',\cdots,x_N') f(x1,,xN)
  • 对于其他情况(存在多个 2 2 2,或者不存在 2 2 2 但存在 3 3 3),直接输出 0 l o u t 0^{l_{out}} 0lout

那么将函数性 f f f 扩展为 f ~ \tilde f f~,然后简单执行 π f ~ \pi_{\tilde f} πf~,其中 P k P_k Pk 的输入值为 ( x k , m o d e k = 1 , z k = 0 ) (x_k,mode_k=1,z_k=0) (xk,modek=1,zk=0),则这个扩展协议是抵御任意数量半恶意敌手的 UC 安全的多方计算协议。安全归约较为复杂,这儿不写了,感兴趣的读者可以查阅 [MW16] 相关部分。采用 [AJW11] 中的标准技术,可以将公共输出的确定性函数性,扩展为私有输出的随机函数性。

猜你喜欢

转载自blog.csdn.net/weixin_44885334/article/details/131657006
今日推荐