参考文献:
- [NW96] Nisan N, Wigderson A. Lower bounds on arithmetic circuits via partial derivatives[J]. Computational complexity, 1996, 6: 217-234. Cites “M. Ben-Or, Private communication”.
- [Gen09] Gentry C. A fully homomorphic encryption scheme[M]. Stanford university, 2009.
- [GH11] Gentry C, Halevi S. Fully homomorphic encryption without squashing using depth-3 arithmetic circuits[C]//2011 IEEE 52nd annual symposium on foundations of computer science. IEEE, 2011: 107-109.
文章目录
- Gentry’s blueprint
- Restricted Depth-3 Arithmetic Circuits
- Symmetric Polynomial
- Ben-Or’s Observation
- Decryption Using a Restricted Depth-3 Circuit
- Chimeric Leveled FHE
- Compatible SWHE and MHE Schemes
- The Construction
- Optimizations
- ElGamal Decrypt
- Only One Product
Gentry’s blueprint
在 [Gen09] 博士论文中,Gentry 提出的 FHE 蓝图为:
- 首先构造 somewhat homomorphic encryption(SWHE),它可以同态计算低次多项式
- 压缩 SWHE 的解密电路,把私钥拆分并加密放到公钥中作为 hint,使得解密函数落在 SWHE 可处理的范围内
- 自举,要么生成一系列公私钥对得到 level FHE,要么假设 circular security 得到 pure FHE
大多数 FHE 的解密电路,都可以表示为一个多线性对称多项式(multilinear symmetric polynomial)。在初始的 FHE 方案中,自举是通过显然的布尔电路实现的。在[GH11] 中,他们使用 [NW96] 引用的 Ben-Or’s observation,将多线性对称多项式分解为 ∑ ∏ ∑ \sum\prod\sum ∑∏∑ 形式的算术电路。
Restricted Depth-3 Arithmetic Circuits
Symmetric Polynomial
我们简记
e
k
(
x
⃗
)
e_k(\vec x)
ek(x) 是
n
n
n 变元的
k
k
k 次初等对称多项式,其中
x
⃗
=
{
x
1
,
x
2
,
⋯
,
x
n
}
\vec x = \{x_1,x_2,\cdots,x_n\}
x={x1,x2,⋯,xn},
e
k
(
x
⃗
)
=
∑
I
⊆
[
n
]
,
∣
S
∣
=
k
∏
i
∈
I
x
i
e_k(\vec x) = \sum_{I \subseteq [n],|S|=k} \prod_{i \in I}x_i
ek(x)=I⊆[n],∣S∣=k∑i∈I∏xi
易知,
e
k
(
x
)
e_k(x)
ek(x) 恰好是多项式
P
(
z
)
=
∏
i
=
1
n
(
z
+
x
i
)
P(z) = \prod_{i=1}^n(z+x_i)
P(z)=∏i=1n(z+xi) 的单项
z
n
−
k
z^{n-k}
zn−k 的系数,
P
x
⃗
(
z
)
=
∑
k
=
0
n
e
k
(
x
⃗
)
⋅
z
n
−
k
P_{\vec x}(z) = \sum_{k=0}^{n} e_k(\vec x)\cdot z^{n-k}
Px(z)=k=0∑nek(x)⋅zn−k
给定集合
A
=
{
a
1
,
a
2
,
⋯
,
a
n
+
1
}
⊆
Z
p
A=\{a_1,a_2,\cdots,a_{n+1}\} \subseteq \mathbb Z_p
A={a1,a2,⋯,an+1}⊆Zp,其中
p
≥
n
+
1
p\ge n+1
p≥n+1 使得
a
i
a_i
ai 互不相同。给定
t
j
=
P
(
a
j
)
t_j=P(a_j)
tj=P(aj),根据拉格朗日插值公式(或者说 CRT),
P
(
z
)
=
∑
j
=
1
n
+
1
t
j
∏
i
≠
j
z
−
a
i
a
j
−
a
i
=
∑
j
=
1
n
+
1
t
j
(
λ
j
,
0
+
λ
j
,
1
z
+
⋯
+
λ
j
,
n
z
n
)
=
∑
j
=
1
n
+
1
t
j
λ
j
,
0
+
∑
j
=
1
n
+
1
t
j
λ
j
,
1
z
+
⋯
+
∑
j
=
1
n
+
1
t
j
λ
j
,
n
z
n
\begin{aligned} P(z) &= \sum_{j=1}^{n+1} t_j \prod_{i \neq j} \dfrac{z-a_i}{a_j-a_i}\\ &= \sum_{j=1}^{n+1} t_j \left(\lambda_{j,0}+\lambda_{j,1}z+\cdots+\lambda_{j,n}z^n\right)\\ &= \sum_{j=1}^{n+1} t_j\lambda_{j,0} + \sum_{j=1}^{n+1} t_j\lambda_{j,1} z + \cdots + \sum_{j=1}^{n+1} t_j\lambda_{j,n} z^n\\ \end{aligned}
P(z)=j=1∑n+1tji=j∏aj−aiz−ai=j=1∑n+1tj(λj,0+λj,1z+⋯+λj,nzn)=j=1∑n+1tjλj,0+j=1∑n+1tjλj,1z+⋯+j=1∑n+1tjλj,nzn
于是各个初等对称多项式的插值公式为:
e
k
(
x
⃗
)
=
∑
j
=
1
n
+
1
λ
j
k
P
(
a
j
)
=
∑
j
=
1
n
+
1
λ
j
k
∏
i
=
1
n
(
a
j
+
x
i
)
(
m
o
d
p
)
e_k(\vec x) = \sum_{j=1}^{n+1} \lambda_{jk}P(a_j) = \sum_{j=1}^{n+1} \lambda_{jk} \prod_{i=1}^n(a_j+x_i) \pmod p
ek(x)=j=1∑n+1λjkP(aj)=j=1∑n+1λjki=1∏n(aj+xi)(modp)
其中 λ j k , a j \lambda_{jk},a_j λjk,aj 都是 Z p \mathbb Z_p Zp 上常数,这样我们就把 e k ( x ⃗ ) e_k(\vec x) ek(x) 写成了 ∑ ∏ ∑ \sum\prod\sum ∑∏∑ 形式的算术电路。
进一步根据对称多项式基本定理,任意的对称多项式 f ( x ⃗ ) f(\vec x) f(x) 都可以写成 f ( x ⃗ ) = g ( e 1 ( x ⃗ ) , ⋯ , e n ( x ⃗ ) ) , ∃ g f(\vec x) = g(e_1(\vec x),\cdots,e_n(\vec x)),\exist g f(x)=g(e1(x),⋯,en(x)),∃g 的形式。特别地,任意的多线性对称多项式(即所有单项中各个变元的次数至多为 1 1 1) f ( x ⃗ ) f(\vec x) f(x) 都可以写成初等对称多项式的线性组合 f ( x ⃗ ) = ∑ k = 0 n l k ⋅ e k ( x ⃗ ) f(\vec x) = \sum_{k=0}^n l_k \cdot e_k(\vec x) f(x)=∑k=0nlk⋅ek(x),依旧形如 f ( x ⃗ ) = ∑ j = 1 n + 1 λ j ∏ i = 1 n ( a j + x i ) ( m o d p ) f(\vec x) = \sum_{j=1}^{n+1} \lambda_{j} \prod_{i=1}^n(a_j+x_i) \pmod p f(x)=∑j=1n+1λj∏i=1n(aj+xi)(modp),仅仅是插值系数 λ \lambda λ 有所变化。
对于布尔输入 x ⃗ ∈ { 0 , 1 } n \vec x \in \{0,1\}^n x∈{0,1}n,由于 x i k = x i x_i^k = x_i xik=xi,因此任意的对称多项式 S ( x ⃗ ) S(\vec x) S(x) 都可以拍平(flatten)为多线性对称多项式 M ( x ⃗ ) M(\vec x) M(x),它们在空间 { 0 , 1 } n \{0,1\}^n {0,1}n 上完全匹配。
Ben-Or’s Observation
[GH11] 将 SWHE 的解密函数写成电路形式 D c ( s ) D_c(s) Dc(s),电路依赖于密文 c c c 的 “明文” (并非所它加密的消息),它输入私钥 s s s 的密文,然后根据电路做相应的算术运算。我们将 SWHE 的解密函数写成 “受限” 形式,即先计算一个固定集合 L \mathcal L L 中的多项式,然后将这些多项式结果组合起来得到解密函数。这里的 L \mathcal L L 与密文 c c c 无关,它们在 SWHE 下同态计算(加法)。
受限的算术电路:
目前已知的 SWHE 基本都满足 L j L_j Lj 是线性函数,此时的 degree of C C C 恰好是 degree of polynomial。
多线性对称函数可以用受限算术电路计算:
上述的受限电路 C ( x ⃗ ) C(\vec x) C(x) 的构造如下:
-
给定多线性对称多项式的一些数值 M ( 1 i 0 n − i ) , i = 0 , 1 , ⋯ , n M(1^i0^{n-i}),i=0,1,\cdots,n M(1i0n−i),i=0,1,⋯,n
-
假设 M ( x ⃗ ) = ∑ i = 0 n l i ⋅ e i ( x ⃗ ) M(\vec x) = \sum_{i=0}^n l_i \cdot e_i(\vec x) M(x)=∑i=0nli⋅ei(x),我们可以递归地计算出组合系数 l i l_i li,
输入 x ⃗ = 1 k 0 n − k \vec x = 1^k0^{n-k} x=1k0n−k 时,必有 e i ( x ⃗ ) = 0 , i > k e_i(\vec x)=0,i>k ei(x)=0,i>k,
M ( 1 k 0 n − k ) = l k + ∑ i = 0 k − 1 l i ⋅ e i ( 1 k 0 n − k ) M(1^k0^{n-k}) = l_k + \sum_{i=0}^{k-1} l_i \cdot e_i(1^k 0^{n-k}) M(1k0n−k)=lk+i=0∑k−1li⋅ei(1k0n−k)并且 e i ( 1 k 0 n − k ) = ( k i ) e_i(1^k0^{n-k})={k \choose i} ei(1k0n−k)=(ik),变换得到
l k = M ( 1 k 0 n − k ) − ∑ i = 0 k − 1 l i ⋅ ( k i ) l_k = M(1^k0^{n-k}) - \sum_{i=0}^{k-1} l_i \cdot {k \choose i} lk=M(1k0n−k)−i=0∑k−1li⋅(ik)所以我们先计算 l 0 = M ( 0 n ) l_0=M(0^n) l0=M(0n),然后迭代计算出 l i , i ≥ 1 l_i,i\ge 1 li,i≥1,于是就得到了 M ( x ⃗ ) = ∑ i = 0 n l i ⋅ e i ( x ⃗ ) M(\vec x) = \sum_{i=0}^n l_i \cdot e_i(\vec x) M(x)=∑i=0nli⋅ei(x) 的各个组合系数
-
利用 P ( z ) = ∏ i = 1 n ( z + x i ) P(z) = \prod_{i=1}^n(z+x_i) P(z)=∏i=1n(z+xi) 可以插值得到各个 e k ( x ⃗ ) = ∑ j = 1 n + 1 λ j k ∏ i = 1 n ( a j + x i ) ( m o d p ) e_k(\vec x) = \sum_{j=1}^{n+1} \lambda_{jk} \prod_{i=1}^n(a_j+x_i) \pmod p ek(x)=∑j=1n+1λjk∏i=1n(aj+xi)(modp) 的插值系数,于是我们可以合并系数 λ j k , l i \lambda_{jk},l_i λjk,li,得到组合系数 λ j \lambda_j λj,
M ( x ⃗ ) = ∑ j = 1 n + 1 λ j ∏ i = 1 n ( a j + x i ) ( m o d p ) M(\vec x) = \sum_{j=1}^{n+1} \lambda_{j} \prod_{i=1}^n(a_j+x_i) \pmod p M(x)=j=1∑n+1λji=1∏n(aj+xi)(modp)这便是 L A = { a j + x i : i ∈ [ n ] , j ∈ [ n + 1 ] } \mathcal L_A = \{a_j+x_i: i\in[n],j\in[n+1]\} LA={aj+xi:i∈[n],j∈[n+1]} 下的 n n n 度受限电路
单变元多项式可以转化为多线性对称多项式:
上述的 M f ( b ⃗ ) M_f(\vec b) Mf(b) 构造如下:
-
定义 g : Z p T n → Z p g: \mathbb Z_p^{Tn} \to \mathbb Z_p g:ZpTn→Zp 为多项式 g ( x ⃗ ) = f ( ∑ i x i ) g(\vec x) = f(\sum_i x_i) g(x)=f(∑ixi),易知 g g g 是对称多项式,并满足
f ( ∑ i b i ⋅ t i ) = g ( b 1 t 1 0 T − t 1 , ⋯ , b n t n 0 T − t n ) f(\sum_i b_i\cdot t_i) = g(b_1^{t_1}0^{T-t_1},\cdots,b_n^{t_n}0^{T-t_n}) f(i∑bi⋅ti)=g(b1t10T−t1,⋯,bntn0T−tn) -
因为 b ⃗ \vec b b 是布尔向量,因此 g g g 是布尔输入的对称多项式,可以拍平为多线性对称多项式 M f M_f Mf
-
令 A ⊆ Z p A \subseteq \mathbb Z_p A⊆Zp 包含 T n + 1 Tn+1 Tn+1 个不同元素,那么可以插值得到 M f M_f Mf 的受限电路,度数为 T n Tn Tn
特别地,令 t i = 2 i − 1 , i = 1 , ⋯ , n t_i = 2^{i-1},i=1,\cdots,n ti=2i−1,i=1,⋯,n,那么 ∑ i b i t i \sum_i b_it_i ∑ibiti 可以表出范围 [ 0 , 2 n − 1 ] [0,2^n-1] [0,2n−1] 的所有整数,不过此时 T ≥ 2 n − 1 T\ge 2^{n-1} T≥2n−1,为了计算效率我们要求 n n n 是较小的数。
Decryption Using a Restricted Depth-3 Circuit
假如我们将 SWHE 的解密函数写成多线性对称多项式 f ( x ⃗ ) = ∑ j = 1 n + 1 λ j ∏ i = 1 n ( a j + x i ) ( m o d p ) f(\vec x) = \sum_{j=1}^{n+1} \lambda_{j} \prod_{i=1}^n(a_j+x_i) \pmod p f(x)=∑j=1n+1λj∏i=1n(aj+xi)(modp),那么我们就可以先在 SWHE 下同态计算加法 a j + x i a_j+x_i aj+xi,然后转换到 MHE 下(公钥中 hint 信息)同态计算乘法 λ j ∏ i ( a j + x i ) \lambda_j\prod_i (a_j+x_i) λj∏i(aj+xi),最后回到 SWHE 上(同态解密)同态计算加法 ∑ j λ j ∏ i ( a j + x i ) \sum_j\lambda_j\prod_i (a_j+x_i) ∑jλj∏i(aj+xi)。在这个自举过程中,SWHE 只需要支持 MHE 的解密函数即可,不必支持 SWHE 本身的解密函数。
当然,此时 FHE 的安全性依赖于底层的 SWHE 和 MHE 的安全性。假如 MHE 使用 ElGamal 公钥方案,那么 FHE 的难度就不是基于最坏情况下格上困难问题了,而是基于离散对数问题。或者使用格上的 AHE 取代 MHE,计算 D L g ( a j + x i ) DL_g(a_j+x_i) DLg(aj+xi) 的加和(而非 ( a j + x i ) (a_j+x_i) (aj+xi) 的乘积),并设置较小的 p p p 使得离散对数问题容易求解,这使得 SWHE 和 AHE 同样基于最坏情况下格上困难问题,更加安全。
不同的 SWHE 的解密函数略有不同,不过一般地都需要计算内积和圆整
⌊
c
⃗
⋅
S
⌉
(
m
o
d
p
)
\lfloor\vec c \cdot S\rceil \pmod p
⌊c⋅S⌉(modp)(对于标准 SIS/LWE),其中
c
⃗
∈
Z
p
n
\vec c \in \mathbb Z_p^n
c∈Zpn 是密文向量,
S
∈
Q
p
n
×
n
S \in \mathbb Q_p^{n \times n}
S∈Qpn×n 是私钥矩阵。假设可将私钥分解为
S
=
∑
i
=
1
N
s
i
T
i
S = \sum_{i=1}^N s_iT_i
S=∑i=1NsiTi,其中
s
i
∈
Z
p
s_i \in \mathbb Z_p
si∈Zp 是秘密的标量,而
T
i
∈
Q
p
n
×
n
T_i \in \mathbb Q_p^{n \times n}
Ti∈Qpn×n 是公开矩阵(例如
S
S
S 的二进制分解,
s
i
∈
{
0
,
1
}
s_i \in \{0,1\}
si∈{0,1})。那么,给定密文
c
⃗
\vec c
c,预计算
u
⃗
i
=
c
⃗
⋅
T
i
\vec u_i = \vec c \cdot T_i
ui=c⋅Ti,假设
u
i
=
u
i
′
.
u
i
′
′
u_i=u_i'.u_i''
ui=ui′.ui′′ 是有限精度有理数,小数位
u
i
′
′
u_i''
ui′′ 长度为
κ
=
⌊
log
(
N
+
1
)
⌉
\kappa=\lfloor\log(N+1)\rceil
κ=⌊log(N+1)⌉ 比特,
⌊
c
⃗
⋅
S
⌉
=
⌊
∑
i
=
1
N
s
i
⋅
u
⃗
i
⌉
=
∑
i
=
1
N
s
i
⋅
u
⃗
i
′
+
⌊
2
−
κ
∑
i
=
1
N
s
i
⋅
u
⃗
i
′
′
⌉
(
m
o
d
p
)
\lfloor\vec c \cdot S\rceil = \left\lfloor \sum_{i=1}^N s_i \cdot \vec u_i \right\rceil = \sum_{i=1}^N s_i \cdot \vec u_i' + \left\lfloor 2^{-\kappa}\sum_{i=1}^N s_i \cdot \vec u_i'' \right\rceil \pmod p
⌊c⋅S⌉=⌊i=1∑Nsi⋅ui⌉=i=1∑Nsi⋅ui′+⌊2−κi=1∑Nsi⋅ui′′⌉(modp)
由于
∑
i
=
1
N
s
i
⋅
u
⃗
i
′
′
≤
N
⋅
(
2
κ
−
1
)
≤
2
N
2
\sum_{i=1}^N s_i \cdot \vec u_i'' \le N \cdot (2^\kappa-1) \le 2N^2
∑i=1Nsi⋅ui′′≤N⋅(2κ−1)≤2N2,因此只要
p
>
2
N
2
p>2N^2
p>2N2,我们可以使用插值算法得到至多
2
N
2
2N^2
2N2 度的单变元多项式
f
(
x
)
f(x)
f(x),使得它计算小数部分的取整运算:
f
(
∑
i
=
1
N
s
i
⋅
u
⃗
i
′
′
)
=
⌊
2
−
κ
∑
i
=
1
N
s
i
⋅
u
⃗
i
′
′
⌉
(
m
o
d
p
)
f(\sum_{i=1}^N s_i \cdot \vec u_i'') = \left\lfloor 2^{-\kappa}\sum_{i=1}^N s_i \cdot \vec u_i'' \right\rceil \pmod p
f(i=1∑Nsi⋅ui′′)=⌊2−κi=1∑Nsi⋅ui′′⌉(modp)
进而可将
f
(
∑
i
s
i
u
⃗
i
′
′
)
f(\sum_i s_i\vec u_i'')
f(∑isiui′′) 写成某个多线性对称多项式
M
f
(
b
⃗
)
M_f(\vec b)
Mf(b)(被
u
i
′
′
u_i''
ui′′ 或者说
c
c
c 指定),它可以用
L
A
\mathcal L_A
LA 受限电路来计算,度数至多为
2
N
2
2N^2
2N2。为了把整数部分
∑
i
=
1
N
s
i
⋅
u
⃗
i
′
\sum_{i=1}^N s_i \cdot \vec u_i'
∑i=1Nsi⋅ui′ 也写成
L
A
\mathcal L_A
LA 受限电路的形式,可以拆解为
∑
i
=
1
N
s
i
⋅
u
⃗
i
′
=
−
a
1
∑
i
u
⃗
i
′
+
∑
i
=
1
N
(
a
1
+
s
i
)
⋅
u
⃗
i
′
\sum_{i=1}^N s_i \cdot \vec u_i' = -a_1\sum_i \vec u_i' + \sum_{i=1}^N (a_1+s_i) \cdot \vec u_i'
i=1∑Nsi⋅ui′=−a1i∑ui′+i=1∑N(a1+si)⋅ui′
其中 − a 1 ∑ i u ⃗ i ′ -a_1\sum_i \vec u_i' −a1∑iui′ 和 u ⃗ i ′ \vec u_i' ui′ 都是常数。因此 ⌊ c ⃗ ⋅ S ⌉ ( m o d p ) \lfloor\vec c \cdot S\rceil \pmod p ⌊c⋅S⌉(modp) 可以完全写成 L A \mathcal L_A LA 受限电路的形式,包括 ∑ ∏ ∑ \sum \prod \sum ∑∏∑ 三层运算。
Chimeric Leveled FHE
Compatible SWHE and MHE Schemes
SWHE 和 MHE 都有一定的计算范围,称为它们的 Homomorphic Capacity。SWHE 由于噪声累积,只能计算一些低度数的多项式;MHE 由于代数结构限制,只能计算限定数域上的乘法。
为了在 SWHE 的自举中嵌入 MHE,必须设置合适的参数,使得两者的 Homomorphic Capacity 相匹配,称为 chimerically compatible,定义如下:
The Construction
给定两个兼容的 SWHE 和 MHE,可以构造出如下的 level FHE:
对于 pure FHE,只需假设循环安全,并略微修改 K e y G e n KeyGen KeyGen 步骤中的 p k pk pk 即可。只要底层的 SWHE 和 MHE 都是语义安全的,那么上述的 FHE 也是语义安全的。
Optimizations
ElGamal Decrypt
如果 MHE 使用 ElGamal 算法,选取安全素数
p
=
2
q
+
1
p=2q+1
p=2q+1,在
Q
R
(
p
)
QR(p)
QR(p) 中 DDH 是困难的。密文形如
(
y
,
z
)
=
(
g
r
,
m
⋅
g
−
e
r
)
(y,z)=(g^r,m\cdot g^{-er})
(y,z)=(gr,m⋅g−er),其中
e
∈
Z
q
e \in \mathbb Z_q
e∈Zq 是私钥,
g
−
e
∈
Q
R
(
p
)
g^{-e} \in QR(p)
g−e∈QR(p) 是公钥,注意明文空间
m
∈
Q
R
(
p
)
m \in QR(p)
m∈QR(p)。解密算法为
m
=
y
e
z
m=y^ez
m=yez,如果直接用 SWHE 加密指数
e
e
e,那么同态 MHE 解密并不容易。我们做二进制分解
e
=
∑
i
e
i
2
i
e=\sum_i e_i2^i
e=∑iei2i,然后条件分支语句代数化,
y
e
i
2
i
=
e
i
y
2
i
+
(
1
−
e
i
)
y
0
=
e
i
(
y
2
i
−
1
)
+
1
y^{e_i2^i} = e_iy^{2^i} + (1-e_i)y^0 = e_i(y^{2^i}-1)+1
yei2i=eiy2i+(1−ei)y0=ei(y2i−1)+1
这就把模幂运算转化为了数乘运算,最后把这些数乘结果 y e i 2 i y^{e_i2^i} yei2i 做连乘积得到 y e y^e ye。我们用 SWHE 加密各个布尔值 e i ∈ { 0 , 1 } e_i \in \{0,1\} ei∈{0,1},同态 MHE 解密时只需 ⌈ log ( q + 1 ) ⌉ \lceil\log(q+1)\rceil ⌈log(q+1)⌉ 的乘法深度(与 SWHE 的解密电路深度无关)。
Only One Product
SWHE 的解密函数主要是计算
⌊
c
⃗
⋅
S
⌉
(
m
o
d
p
)
\lfloor\vec c \cdot S\rceil \pmod p
⌊c⋅S⌉(modp) 的小数部分取整函数
f
(
∑
i
=
1
N
s
i
⋅
u
⃗
i
′
′
)
f(\sum_{i=1}^N s_i \cdot \vec u_i'')
f(∑i=1Nsi⋅ui′′),其中
u
i
′
′
≤
2
N
u_i'' \le 2N
ui′′≤2N,因此可转化为多线性对称多项式
M
f
M_f
Mf,
f
(
∑
i
=
1
N
s
i
⋅
u
⃗
i
′
′
)
=
M
f
(
⋯
,
s
i
u
i
′
′
0
2
N
−
u
i
′
′
,
⋯
)
=
∑
j
=
1
2
N
2
+
1
λ
j
∏
i
=
1
N
(
a
j
+
s
i
)
u
i
′
′
a
j
2
N
−
u
i
′
′
=
∑
j
=
1
2
N
2
+
1
λ
j
P
(
a
j
)
\begin{aligned} f(\sum_{i=1}^N s_i \cdot \vec u_i'') &= M_f(\cdots,s_i^{u_i''}0^{2N-u_i''},\cdots)\\ &= \sum_{j=1}^{2N^2+1} \lambda_j \prod_{i=1}^{N} (a_j+s_i)^{u_i''}a_j^{2N-u_i''}\\ &= \sum_{j=1}^{2N^2+1} \lambda_j P(a_j)\\ \end{aligned}
f(i=1∑Nsi⋅ui′′)=Mf(⋯,siui′′02N−ui′′,⋯)=j=1∑2N2+1λji=1∏N(aj+si)ui′′aj2N−ui′′=j=1∑2N2+1λjP(aj)
令 v = ∑ s i = 1 u i ′ ′ v=\sum_{s_i=1} u_i'' v=∑si=1ui′′,那么 P ( a j ) = ( a j + 1 ) v a j 2 N 2 − v P(a_j) = (a_j+1)^va_j^{2N^2-v} P(aj)=(aj+1)vaj2N2−v,只需知道一对 ( a j , P ( a j ) ) (a_j,P(a_j)) (aj,P(aj)) 的值就可以确定 v v v 的值,这说明 P ( a j ) , j = 1 , ⋯ , 2 N 2 + 1 P(a_j),j=1,\cdots,2N^2+1 P(aj),j=1,⋯,2N2+1 是高度冗余的。
可以随机选择
a
1
,
a
1
+
1
∈
Q
R
(
p
)
a_1,a_1+1 \in QR(p)
a1,a1+1∈QR(p)(占比为
(
p
−
3
)
/
4
(p-3)/4
(p−3)/4),然后随机选择
e
j
∈
Z
q
e_j \in \mathbb Z_q
ej∈Zq,计算出
w
j
=
(
(
a
1
+
1
)
e
j
−
a
1
e
j
)
−
1
w_j = ((a_1+1)^{e_j}-a_1^{e_j})^{-1}
wj=((a1+1)ej−a1ej)−1
那么可以验证:
a
j
=
w
j
⋅
a
1
e
j
,
a
j
+
1
=
w
j
⋅
(
a
1
+
1
)
e
j
a_j=w_j\cdot a_1^{e_j},\,\, a_j+1=w_j\cdot (a_1+1)^{e_j}
aj=wj⋅a1ej,aj+1=wj⋅(a1+1)ej
满足
a
j
,
a
j
+
1
∈
Q
R
(
p
)
a_j,a_j+1 \in QR(p)
aj,aj+1∈QR(p) 的概率约为
1
/
2
1/2
1/2。易知,它们满足:
P
(
a
j
)
=
(
a
j
+
1
)
v
a
j
2
N
2
−
v
=
w
j
2
N
2
⋅
P
(
a
1
)
e
j
P(a_j) = (a_j+1)^va_j^{2N^2-v} = w_j^{2N^2}\cdot P(a_1)^{e_j}
P(aj)=(aj+1)vaj2N2−v=wj2N2⋅P(a1)ej
我们存储 ( a j , w j , e j ) (a_j,w_j,e_j) (aj,wj,ej) 作为数组 A A A,于是我们只需在 MHE 下同态乘法计算出 P ( a 1 ) P(a_1) P(a1),然后再进行少量乘法和数乘即可计算出 P ( a j ) P(a_j) P(aj)。
另外,这个技术也可以用于 FHE 密文压缩,我们仅存储加密了 P ( a 1 ) P(a_1) P(a1) 的单个 ElGamal 密文(需要先把解密函数处理成 “纯的” 多线性对称多项式)。