书接上回。
文章目录
基于 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) param←Setup(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) c←Enc(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) param←Setup(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) param←Setup(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]} {ci←Enc(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~i←Expand((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
m≥nlogq,都存在
G
∈
Z
q
n
×
m
G \in \mathbb Z_q^{n \times m}
G∈Zqn×m 和对应的高效求逆算法
G
−
1
(
⋅
)
G^{-1}(\cdot)
G−1(⋅),使得对于任意
M
∈
Z
q
n
×
m
′
M \in \mathbb Z_q^{n \times m'}
M∈Zqn×m′,算法输出
G
−
1
(
M
)
∈
{
0
,
1
}
m
×
m
′
G^{-1}(M) \in \{0,1\}^{m \times m'}
G−1(M)∈{0,1}m×m′ 是一个二元矩阵,使得
G
⋅
G
−
1
(
M
)
=
M
G \cdot G^{-1}(M)=M
G⋅G−1(M)=M。确切地说,
G
−
1
(
⋅
)
G^{-1}(\cdot)
G−1(⋅) 是对于列向量的二进制分解算法,而
G
G
G 是对应的二进制合成算法。简化版本的 GSW 方案,其私钥是短的行向量
s
∈
Z
q
n
−
1
s \in \mathbb Z_q^{n-1}
s∈Zqn−1,均匀选取
B
∈
Z
q
(
n
−
1
)
×
m
B \in \mathbb Z_q^{(n-1) \times m}
B∈Zq(n−1)×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
tCG−1(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×:=C1⋅G−1(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}
C∈Zqn×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)=((s1−s2)B+(e1−e2))R+e2R+μt2G≈(b1−b2)R+μt2G
其中的掩码
(
b
1
−
b
2
)
R
(b_1-b_2)R
(b1−b2)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≈(b1−b2)R,这儿
X
X
X 可以视为掩码向量
(
b
1
−
b
2
)
R
∈
Z
q
m
(b_1-b_2)R \in \mathbb Z_q^m
(b1−b2)R∈Zqm 的一个 “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:={uij←GSW.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
(b1−b2)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 t∈Zqn,对于任意矩阵 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} Cij∈Zqn×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 v∈Zqm,使得输出为 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 ∥e∥∞≤m3β。具体算法如下,
-
对于所有的 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} Zij∈Zqn×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 -
输出矩阵 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,jCijG−1(Zij)∈Zqn×m
-
由于 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)G−1(Zij)=(−s,1)ij∑ZijMij+ij∑eijG−1(Zij)=vM+e
由于 ∥ e i j G − 1 ( Z i j ) ∥ ∞ ≤ m β \|e_{ij}G^{-1}(Z_{ij})\|_\infty \le m\beta ∥eijG−1(Zij)∥∞≤mβ,因此满足 ∥ e ∥ ∞ ≤ m 3 β \|e\|_\infty \le m^3\beta ∥e∥∞≤m3β
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}∗,C∈Zqn×m),
- 设置 C ← G S W . E n c ( p k , μ ) C \leftarrow GSW.Enc(pk,\mu) C←GSW.Enc(pk,μ),使得 C = A R + μ G ∈ Z q n × m C=AR+\mu G \in \mathbb Z_q^{n \times m} C=AR+μG∈Zqn×m,其中 R ∈ { 0 , 1 } m × m R \in \{0,1\}^{m \times m} R∈{0,1}m×m 是随机性,
- 加密每个元素 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}) Vij←GSW.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 子矩阵,
- 从 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′=s′B+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 ∥eRij∥∞≤mβ
- 输出 X = L C o m b ( U , b ′ − b ) X = LComb(U,b'-b) X=LComb(U,b′−b),根据 L C o m b ( ⋅ ) LComb(\cdot) LComb(⋅) 的性质易知 t X = ( b ′ − b ) R + e X tX = (b'-b)R+e_X tX=(b′−b)R+eX,满足 ∥ e X ∥ ∞ ≤ m 4 β \|e_X\|_\infty \le m^4\beta ∥eX∥∞≤m4β
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)
param←GSW.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:=
G0⋮00G⋯⋯⋱0⋮G
∈ZqnN×mN
根据 [MP12] 容易推广出高效算法
G
~
N
−
1
(
⋅
)
\tilde G_N^{-1}(\cdot)
G~N−1(⋅),对于任意的
m
′
∈
N
m' \in \mathbb N
m′∈N,任意矩阵
M
∈
Z
q
n
N
×
m
′
M \in \mathbb Z_q^{nN \times m'}
M∈ZqnN×m′,使得
G
~
N
−
1
(
M
)
∈
{
0
,
1
}
m
N
×
m
′
\tilde G_N^{-1}(M) \in \{0,1\}^{mN \times m'}
G~N−1(M)∈{0,1}mN×m′ 是短矩阵,且
G
~
N
G
~
N
−
1
(
M
)
=
M
\tilde G_N\tilde G_N^{-1}(M)=M
G~NG~N−1(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) param←GSW.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 的新鲜密文,
-
对于所有的 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) Xj←Extend(U,pki,pkj)
-
定义 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} Cab∈Zqn×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 -
最后输出扩展密文 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} LWEn−1,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 q≥4mN⋅β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) pi←PartDec(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) param←Setup(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]} {ci←Enc(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~i←Expand((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)) pi←PartDec(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\}}) pi′←Sthr(μ,c~,i,{skj}j∈[N]\{i}) 满足 p i ′ ≡ s p i p_i' \overset{s}{\equiv} p_i pi′≡spi,这里 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) pi←PartDec(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~i∈Zqn×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~1⋮C~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+ei∈Zq 作为部分解密值 -
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/βfinal≥2κ,采样污染噪声
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⌉+ei−j=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}
∥e′∥∞≤mNβ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′+ei−∑j=iγj。由于
e
′
e'
e′ 是个较小噪声,而
e
i
e_i
ei 是很大的污染噪声,因此
e
i
≡
s
e
i
+
e
′
e_i \overset{s}{\equiv} e_i+e'
ei≡sei+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 N−1 个半恶意敌手的 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 定义如下:
- 初始化,各方协同执行 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) param←MFHE.Setup(1κ,1d)
- 第一轮,
- 各方 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),
- 逐比特地加密自己的输入值 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]) ckj←MFHE.Enc(pkk,xk[j]),
- 广播 ( p k k , { c k j } ) (pk_k,\{c_{kj}\}) (pkk,{ckj}) 给其他参与者
- 第二轮,
- 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~ij←MFHE.Expand((pk1,⋯,pkN),i,cij)
- 接着执行同态运算 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~j←MFHE.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 比特输出对应的函数
- 执行门限解密协议 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) pjk←MFHE.PartDec(c~j,(pk1,⋯,pkN),k,skk),广播给其他参与者
- 各方 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}) yj←MFHE.FinDec(pj,1,⋯,pj,N),输出 y = y 1 ⋯ y l o u t y=y_1\cdots y_{l_{out}} y=y1⋯ylout 作为运算结果
接下来,我们将 π 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] 中的标准技术,可以将公共输出的确定性函数性,扩展为私有输出的随机函数性。