参考文献:
在 [Gen09] 博士论文中,Gentry 提出的 FHE 蓝图为:
大多数 FHE 的解密电路,都可以表示为一个多线性对称多项式(multilinear symmetric polynomial)。在初始的 FHE 方案中,自举是通过显然的布尔电路实现的。在[GH11] 中,他们使用 [NW96] 引用的 Ben-Or’s observation,将多线性对称多项式分解为 ∑ ∏ ∑ \sum\prod\sum ∑∏∑ 形式的算术电路。
我们简记 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 上完全匹配。
[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 是较小的数。
假如我们将 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 ∑∏∑ 三层运算。
SWHE 和 MHE 都有一定的计算范围,称为它们的 Homomorphic Capacity。SWHE 由于噪声累积,只能计算一些低度数的多项式;MHE 由于代数结构限制,只能计算限定数域上的乘法。
为了在 SWHE 的自举中嵌入 MHE,必须设置合适的参数,使得两者的 Homomorphic Capacity 相匹配,称为 chimerically compatible,定义如下:
给定两个兼容的 SWHE 和 MHE,可以构造出如下的 level FHE:
对于 pure FHE,只需假设循环安全,并略微修改 K e y G e n KeyGen KeyGen 步骤中的 p k pk pk 即可。只要底层的 SWHE 和 MHE 都是语义安全的,那么上述的 FHE 也是语义安全的。
如果 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 的解密电路深度无关)。
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 密文(需要先把解密函数处理成 “纯的” 多线性对称多项式)。