参考资料:
- Micciancio D, Peikert C. Trapdoors for Lattices: Simpler, Tighter, Faster, Smaller[C]//Eurocrypt. 2012, 7237: 700-718.
- Alperin-Sheriff J, Peikert C. Faster bootstrapping with polynomial error[C]//Advances in Cryptology–CRYPTO 2014: 34th Annual Cryptology Conference, Santa Barbara, CA, USA, August 17-21, 2014, Proceedings, Part I 34. Springer Berlin Heidelberg, 2014: 297-314.
- Ducas L, Micciancio D. FHEW: bootstrapping homomorphic encryption in less than a second[C]//Advances in Cryptology–EUROCRYPT 2015: 34th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Sofia, Bulgaria, April 26-30, 2015, Proceedings, Part I 34. Springer Berlin Heidelberg, 2015: 617-640.
文章目录
- HEPerm
- Embedding
- GSW
- HEPerm
- Bootstrapping
- FHEW
- Notation
- LWE Symmetric Encryption
- NAND Gate
- Homomorphic Accumulator
HEPerm
2014 年,Alperin 和 Peikert 提出了一种快速 Bootstrapping 方案。他们将加法群 Z q Z_q Zq 嵌入到对称群 S q S_q Sq (置换矩阵 { 0 , 1 } q × q \{0,1\}^{q \times q} {0,1}q×q 的乘法群)上。利用 GSW 乘法噪声增长的非对称性,采用右结合的乘法链其噪声增长是拟加性的(quasi-additive)。另外,他们给出了 GSW 的更简单的变体,可以证明两者是等价的。
本文重点关注如何快速自举,它可以兼容所有的基于 LWE 的 FHE。由于解密算法是:
D
e
c
(
s
,
c
)
:
=
⌊
⟨
s
,
c
⟩
⌉
2
Dec(s,c) := \lfloor \langle s,c \rangle \rceil_2
Dec(s,c):=⌊⟨s,c⟩⌉2
这里 ⌊ x ⌉ 2 : = ⌊ 2 / q ⋅ x ⌉ \lfloor x \rceil_2 := \lfloor 2/q \cdot x \rceil ⌊x⌉2:=⌊2/q⋅x⌉ 是从 Z q Z_q Zq 到 Z 2 Z_2 Z2 的模切换,或者说是 MSB 的提取。那么,自举的关键就是:
- 对于固定的秘密 s s s,对于任意密文 c c c,在 GSW 下同态地计算出内积 ⟨ s , c ⟩ \langle s,c \rangle ⟨s,c⟩(这是 subset-sum,只需要同态加法)。
- 对于计算出的 ⟨ s , c ⟩ \langle s,c \rangle ⟨s,c⟩ 的密文,提取出 MSB 对应的 LWE 密文(关键步骤)。
Embedding
根据 Cayley’s Theorem,任意的有限群
G
G
G 都可以嵌入(injective homomorphism)到对称群
S
∣
G
∣
S_{|G|}
S∣G∣ 中。而这个对称群同构于
∣
G
∣
|G|
∣G∣ 阶的置换矩阵乘法群,置换
π
\pi
π 对应的置换矩阵为:
P
π
:
=
[
e
π
(
1
)
,
e
π
(
2
)
,
⋯
,
e
π
(
∣
G
∣
)
]
P_\pi := [e_{\pi(1)},e_{\pi(2)},\cdots,e_{\pi(|G|)}]
Pπ:=[eπ(1),eπ(2),⋯,eπ(∣G∣)]
因此,任意的加法群 ( Z r , + ) (Z_r,+) (Zr,+) 都可以嵌入到对称群 S r S_r Sr 中,也就是 r × r r \times r r×r 的置换矩阵的乘法群。嵌入映射为:将元素 x ∈ Z r x \in Z_r x∈Zr 映射到位移 x x x 的循环置换(the permutation that cyclically rotates by x positions)。
我们定义 π : i → i + 1 ( m o d r ) \pi:i \to i+1 \pmod r π:i→i+1(modr) 为循环位移置换,将 x x x 次置换的复合 π ∘ ⋯ ∘ π \pi \circ \cdots \circ \pi π∘⋯∘π 简记为 π x \pi^x πx。容易看出,循环置换 P π x P_{\pi^x} Pπx 可以被简化表示为一个 { 0 , 1 } r \{0,1\}^r {0,1}r 的指示向量 e x e_x ex(indicator vector),其第 x x x 个分量是 1 1 1,其他分量都为 0 0 0,而对应的置换矩阵就是将 e x e_x ex 作为第一列,其他列依次是 e x e_x ex 的循环移位(cyclic shift)。
此时, Z r Z_r Zr 与 S r S_r Sr 上的运算对应关系为:
- Z r Z_r Zr 中的加法 x + y ( m o d r ) x+y \pmod r x+y(modr),同构于 S r S_r Sr 中的置换复合,或者说置换矩阵乘法 P π x ⋅ P π y P_{\pi^x} \cdot P_{\pi^y} Pπx⋅Pπy,可以简化为 P π x ⋅ e y P_{\pi^x} \cdot e_y Pπx⋅ey(等价于多项式 e x , e y e_x,e_y ex,ey 的在 Z 2 [ x ] / ( x r − 1 ) Z_2[x]/(x^r-1) Z2[x]/(xr−1) 上的多项式乘积)
- Z r Z_r Zr 中的相等判定 x = v ( m o d r ) x = v \pmod r x=v(modr),同构于 S r S_r Sr 中的置换相等判定 P π x = P π v P_{\pi^x} = P_{\pi^v} Pπx=Pπv,可以简化为 e x ( v ) e_x^{(v)} ex(v)
- Z r Z_r Zr 中的提取 MSB ⌊ x ⌉ 2 \lfloor x \rceil_2 ⌊x⌉2,同构于 S r S_r Sr 中的一些相等判定的加和,即 ∑ v ∈ [ r ] s . t . ⌊ v ⌉ 2 = 1 e x ( v ) \sum_{v \in [r]\,s.t.\,\lfloor v \rceil_2=1} e_x^{(v)} ∑v∈[r]s.t.⌊v⌉2=1ex(v)
对于一个较大的模数
q
q
q,直接将
Z
q
Z_q
Zq 嵌入到
S
q
S_q
Sq 效率很低。优化思路是利用 CRT,如果让
q
=
∏
i
r
i
q = \prod_i r_i
q=∏iri,其中
r
i
r_i
ri 是规模
O
~
(
1
)
\tilde O(1)
O~(1) 的素数幂,那么有
Z
q
≅
∏
i
Z
r
i
⊆
∏
i
S
r
i
Z_q \cong \prod_i Z_{r_i} \subseteq \prod_i S_{r_i}
Zq≅i∏Zri⊆i∏Sri
对应的嵌入映射为:
ϕ
:
x
∈
Z
q
↦
(
e
x
(
m
o
d
r
i
)
)
i
∈
∏
i
S
r
i
\phi: x \in Z_q \mapsto \left(e_{x \pmod{r_i}}\right)_i \in \prod_i S_{r_i}
ϕ:x∈Zq↦(ex(modri))i∈i∏Sri
这样就可以在多个小规模的对称群 S r i S_{r_i} Sri 上执行计算。此时,
-
Z q Z_q Zq 上的加法,同构于 ∏ i S r i \prod_i S_{r_i} ∏iSri 上的各个分量的置换各自复合,即
( x + y ) : = ( P π x ( m o d r i ) ⋅ e y ( m o d r i ) ) i (x+y) := \left(P_{\pi^{x \pmod{r_i}}} \cdot e_{y \pmod{r_i}}\right)_i (x+y):=(Pπx(modri)⋅ey(modri))i -
Z q Z_q Zq 上的相等判定,同构于 ∏ i S r i \prod_i S_{r_i} ∏iSri 上的各个分量的相等判定的乘积(逻辑 AND),即
[ x = v ] : = ∏ i e x ( m o d r i ) ( v ( m o d r i ) ) [x=v] := \prod_i e_{x \pmod{r_i}}^{(v \pmod{r_i})} [x=v]:=i∏ex(modri)(v(modri)) -
Z q Z_q Zq 上的提取 MSB,同构于 ∏ i S r i \prod_i S_{r_i} ∏iSri 上的一些相等判定的加和(逻辑 OR),即
⌊ x ⌉ 2 : = ∑ v ∈ [ q ] s . t . ⌊ v ⌉ 2 = 1 [ x = v ] \lfloor x \rceil_2 := \sum_{v \in [q]\,s.t.\,\lfloor v \rceil_2=1} [x=v] ⌊x⌉2:=v∈[q]s.t.⌊v⌉2=1∑[x=v]
为了加速,文章选择让
q
q
q 是
max
i
r
i
\max_i r_i
maxiri 的指数级大。根据 second Chebyshev function,
ψ
(
x
)
:
=
∑
p
k
≤
x
log
p
=
log
(
∏
p
≤
x
p
⌊
log
p
x
⌋
)
\psi(x) := \sum_{p^k \le x} \log p = \log\left(\prod_{p \le x} p^{\lfloor \log_p x \rfloor}\right)
ψ(x):=pk≤x∑logp=log(p≤x∏p⌊logpx⌋)
因此,所有的小于
x
x
x 的最大素数幂
r
i
=
p
⌊
log
p
x
⌋
r_i = p^{\lfloor \log_p x \rfloor}
ri=p⌊logpx⌋ 的乘积
q
=
∏
i
r
i
q=\prod_i r_i
q=∏iri 大小为
exp
(
ψ
(
x
)
)
\exp(\psi(x))
exp(ψ(x))。已知
ψ
(
x
)
=
x
+
O
(
x
/
log
x
)
\psi(x)=x+O(x/\log x)
ψ(x)=x+O(x/logx),并且对于所有的
x
≥
7
x \ge 7
x≥7 都有一个非渐进界
ψ
(
x
)
≥
3
x
/
4
\psi(x)\ge 3x/4
ψ(x)≥3x/4,所以有
q
≥
exp
(
3
x
/
4
)
≥
exp
(
3
/
4
⋅
max
i
r
i
)
q \ge \exp(3x/4) \ge \exp(3/4 \cdot \max_i r_i)
q≥exp(3x/4)≥exp(3/4⋅imaxri)
选取很小的界 x x x,就可以用一些最大素数幂 r i ≤ x r_i \le x ri≤x 合成出一个指数级大的模数 q q q。
GSW
本文给出了 GSW 的一个对称版本的更简单变体。
给定模数 q q q,令 l = ⌈ log q ⌉ l = \lceil \log q \rceil l=⌈logq⌉,定义 gadget column vector g = ( 1 , 2 , 4 , ⋯ , 2 l − 1 ) ∈ Z l g = (1,2,4,\cdots,2^{l-1}) \in Z^l g=(1,2,4,⋯,2l−1)∈Zl,它的倒数第二个分量为 2 l − 2 ∈ [ q / 4 , q / 2 ) 2^{l-2} \in [q/4,q/2) 2l−2∈[q/4,q/2) 就是 GSW 中所谓 “big coefficient”。
根据 MP12,存在一个随机的可有效计算的函数 g − 1 : Z q → Z l g^{-1}:Z_q \to Z^l g−1:Zq→Zl,使得 x ← g − 1 ( a ) x \leftarrow g^{-1}(a) x←g−1(a) 是一个满足 a = ⟨ g , x ⟩ a=\langle g,x \rangle a=⟨g,x⟩ 的参数 O ( 1 ) O(1) O(1) 的亚高斯随机变量。具体地,就是使用随机版本的 Babai nearest-plane 算法,给定格 Λ ⊥ ( g t ) : = { z ∈ Z l : ⟨ g , x ⟩ ≡ 0 ∈ Z q } \Lambda^\perp(g^t) := \{z \in Z^l: \langle g,x \rangle \equiv 0 \in Z_q\} Λ⊥(gt):={z∈Zl:⟨g,x⟩≡0∈Zq} 的一组 “好” 的基底 S S S,每次迭代中第 i i i 次个基向量对应的系数服从中心零的 { c i − 1 , c i } , c i ∈ 1 q Z ∩ [ 0 , 1 ) \{c_i-1,c_i\},\,c_i \in \frac{1}{q} Z \cap [0,1) {ci−1,ci},ci∈q1Z∩[0,1) 上二值分布。
对于向量和矩阵,定义 gadget matrix G = g t ⊗ I n ∈ Z q n × n l G = g^t \otimes I_n \in Z_q^{n \times nl} G=gt⊗In∈Zqn×nl,对应的 G − 1 : Z q n × m → Z q n l × m G^{-1}: Z_q^{n \times m} \to Z_q^{nl \times m} G−1:Zqn×m→Zqnl×m 就是对于每个 entry 独立的使用 g − 1 g^{-1} g−1 算法。那么给定 A = G ⋅ X A = G \cdot X A=G⋅X, X ← G − 1 ( A ) X \leftarrow G^{-1}(A) X←G−1(A) 是一个参数 O ( 1 ) O(1) O(1) 的亚高斯随机向量(与任意的固定单位向量的内积是亚高斯的)。
在 GSW 中,密文 C ∈ { 0 , 1 } n l × n l C \in \{0,1\}^{nl \times nl} C∈{0,1}nl×nl 是二元方阵,秘密 s ∈ Z q n l s \in Z_q^{nl} s∈Zqnl 是结构化向量(有个 “big coefficient”),它是个近似特征向量 s t C ≈ μ s t ( m o d q ) s^tC \approx \mu s^t \pmod q stC≈μst(modq)。本文中的 GSW 变体,密文 C ∈ Z q n × n l C \in Z_q^{n \times nl} C∈Zqn×nl 是长矩阵,秘密 s ∈ Z n s \in Z^{n} s∈Zn 是非结构化的短向量,关系为 s t C ≈ μ ⋅ s t G ( m o d q ) s^tC \approx \mu \cdot s^tG \pmod q stC≈μ⋅stG(modq)。两者是等价的。
对称的 GSW 变体:
- G S W . G e n ( 1 n ) GSW.Gen(1^n) GSW.Gen(1n):采样 s ˉ ← R χ n − 1 \bar s \leftarrow_R \chi^{n-1} sˉ←Rχn−1,输出 s : = ( s ˉ , 1 ) s := (\bar s,1) s:=(sˉ,1)
- G S W . E n c ( s , μ ∈ Z ) GSW.Enc(s,\mu \in \mathbb Z) GSW.Enc(s,μ∈Z):采样 C ˉ ← R Z q ( n − 1 ) × n l \bar C \leftarrow_R Z_q^{(n-1)\times nl} Cˉ←RZq(n−1)×nl 和 e ← χ m e \leftarrow \chi^m e←χm,计算 b t = e t − s t C ˉ b^t = e^t - s^t \bar C bt=et−stCˉ,输出 C = ( C ˉ , b t ) t + μ G ∈ C C = (\bar C,b^t)^t + \mu G \in \mathcal C C=(Cˉ,bt)t+μG∈C(而原始 GSW 中是 F l a t t e n ( μ I n l + G − 1 ( R A ) ) = G − 1 ( μ G + R A ) Flatten(\mu I_{nl}+G^{-1}(RA)) = G^{-1}(\mu G+RA) Flatten(μInl+G−1(RA))=G−1(μG+RA),两者等价)
- G S W . D e c ( s , C ∈ C ) GSW.Dec(s,C \in \mathcal C) GSW.Dec(s,C∈C):由于 s t C = e t + μ ⋅ s t G s^tC = e^t + \mu \cdot s^t G stC=et+μ⋅stG,因此取出倒数第二列 c c c( G G G 的倒数第二列是 [ 0 , ⋯ , 0 , 2 l − 2 ] [0,\cdots,0,2^{l-2}] [0,⋯,0,2l−2]),计算出 2 l − 2 ⋅ μ ≈ ⟨ s , c ⟩ 2^{l-2} \cdot \mu \approx \langle s,c \rangle 2l−2⋅μ≈⟨s,c⟩,输出 μ \mu μ
在 L W E n − 1 , q , χ LWE_{n-1,q,\chi} LWEn−1,q,χ 假设下,上述方案是 IND-CPA 安全的。
- 同态加法 C 1 ⊞ C 2 : = C 1 + C 2 C_1 \boxplus C_2:= C_1 + C_2 C1⊞C2:=C1+C2,噪声 e 1 t + e 2 t e_1^t+e_2^t e1t+e2t
- 同态乘法 C 1 ⊡ C 2 : = C 1 ⋅ X C_1 \boxdot C_2:= C_1 \cdot X C1⊡C2:=C1⋅X,噪声 e 1 t X + μ 1 e 2 t e_1^t X + \mu_1 e_2^t e1tX+μ1e2t,其中 X ← G − 1 ( C 2 ) X \leftarrow G^{-1}(C_2) X←G−1(C2)
由于同态乘法的非对称噪声增长,我们令算符
⊡
\boxdot
⊡ 是右结合的( right associative)。对于一个关于密文
C
i
,
i
=
1
,
⋯
,
k
C_i, i=1,\cdots,k
Ci,i=1,⋯,k 的乘法链,
C
←
(
⊡
i
∈
[
k
]
C
i
)
⊡
G
=
C
1
⊡
(
⋯
(
C
k
⊡
G
)
)
∈
C
C \leftarrow \left(\boxdot_{i \in [k]} C_i\right) \boxdot G = C_1 \boxdot(\cdots(C_k \boxdot G)) \in \mathcal C
C←(⊡i∈[k]Ci)⊡G=C1⊡(⋯(Ck⊡G))∈C
这里的 G = 0 + 1 ⋅ G ∈ C G = \textbf{0}+1 \cdot G \in \mathcal C G=0+1⋅G∈C 是个零噪声的 1 1 1 的密文。由于 μ ∈ { 0 , 1 } \mu \in \{0,1\} μ∈{0,1},因此 C C C 的噪声为 ∑ i ∈ [ k ] e i t X i \sum_{i \in [k]} e_i^t X_i ∑i∈[k]eitXi,这是参数 O ( ∥ e i ∥ ) O(\|e_i\|) O(∥ei∥) 的亚高斯随机变量(拟加性)。
HEPerm
现在,我们基于上述的对称 GSW 方案,构造关于对称群 S r S_r Sr 的同态方案(不是 FHE):
- H E P e r m . G e n ( 1 n ) HEPerm.Gen(1^n) HEPerm.Gen(1n):输出 s k : = G S W . G e n ( 1 n ) sk := GSW.Gen(1^n) sk:=GSW.Gen(1n)
- H E P e r m . E n c ( s k , π ∈ S r ) HEPerm.Enc(sk, \pi \in S_r) HEPerm.Enc(sk,π∈Sr):找到对应的置换阵 P π = ( p i j ) ∈ { 0 , 1 } r × r P_\pi = (p_{ij}) \in \{0,1\}^{r \times r} Pπ=(pij)∈{0,1}r×r,输出 C = ( G S W . E n c ( s k , p i j ) ) ∈ C r × r C = (GSW.Enc(sk,p_{ij})) \in \mathcal C^{r \times r} C=(GSW.Enc(sk,pij))∈Cr×r
- H E P e r m . E n c ( s k , C ∈ C r × r ) HEPerm.Enc(sk, C \in \mathcal C^{r \times r}) HEPerm.Enc(sk,C∈Cr×r):计算出 P π = ( G S W . D e c ( s k , c i j ) ) ∈ { 0 , 1 } r × r P_\pi = (GSW.Dec(sk,c_{ij})) \in \{0,1\}^{r \times r} Pπ=(GSW.Dec(sk,cij))∈{0,1}r×r,输出对应的置换 π \pi π
这个方案有如下的同态运算(对于任意的 π , σ ∈ S r \pi,\sigma \in S_r π,σ∈Sr,而不仅仅那 r r r 个循环置换):
- 同态的映射复合 C π ∘ C σ : = ( ⊞ k ∈ [ r ] ( c i k π ⊡ c k j σ ) ) i j ∈ C r × r C^\pi \circ C^\sigma := \left(\boxplus_{k \in [r]} \left(c_{ik}^\pi \boxdot c_{kj}^\sigma\right)\right)_{ij} \in \mathcal C^{r \times r} Cπ∘Cσ:=(⊞k∈[r](cikπ⊡ckjσ))ij∈Cr×r,就是一般的矩阵乘法(在同态运算下),噪声 E + P π ⋅ E σ E+P^\pi \cdot E^\sigma E+Pπ⋅Eσ,其中 E E E 的第 i i i 行服从参数 O ( ∥ e i π ∥ ) O(\|e_i^\pi\|) O(∥eiπ∥) 的亚高斯分布,这里 e i π e_i^\pi eiπ 是指 E π E^\pi Eπ 的第 i i i 行。
- 同态的相等判定 E q ( C π , σ ) : = ( ⊡ i ∈ [ r ] c σ ( i ) , i π ) ⊡ G ∈ C Eq(C^\pi,\sigma) := \left(\boxdot_{i \in [r]} c_{\sigma(i),i}^\pi\right) \boxdot G \in \mathcal C Eq(Cπ,σ):=(⊡i∈[r]cσ(i),iπ)⊡G∈C,因为置换阵 P π P_\pi Pπ 的 p π ( i ) , i p_{\pi(i),i} pπ(i),i 都是 1 1 1,而其他的 entry 都是 0 0 0
对于同构于 Z r \mathbb Z_r Zr 的循环置换子群 C r ⊆ S r C_r \subseteq S_r Cr⊆Sr,可以只对指示向量对应的那一列加密。对于 x , y ∈ Z r x,y \in \mathbb Z_r x,y∈Zr,密文 C x , C y ∈ C r C^x,C^y \in \mathcal C^r Cx,Cy∈Cr,此时的计算复杂度降低了 r r r 因子:
- 同态加法 C x ∘ C y : = ( ⊞ k ∈ [ r ] ( c r + i − k x ⊡ c k y ) ) i ∈ C r C^x \circ C^y := \left(\boxplus_{k \in [r]} \left(c_{r+i-k}^x \boxdot c_{k}^y \right)\right)_{i} \in \mathcal C^{r } Cx∘Cy:=(⊞k∈[r](cr+i−kx⊡cky))i∈Cr,计算复杂度从 O ( r 3 ) O(r^3) O(r3) 降低到了 O ( r 2 ) O(r^2) O(r2)
- 同态的相等判定 E q ( C x , v ) : = c v x ∈ C Eq(C^x,v) := c_{v}^x \in \mathcal C Eq(Cx,v):=cvx∈C,计算复杂度从 O ( r ) O(r) O(r) 降低到了 O ( 1 ) O(1) O(1)
类似的,由于同态乘法的非对称噪声增长,我们令算符
∘
\circ
∘ 也是右结合的( right associative)。对于一个关于密文
C
i
,
i
=
1
,
⋯
,
k
C_i, i=1,\cdots,k
Ci,i=1,⋯,k 的复合链,
C
←
(
◯
i
∈
[
k
]
C
i
)
∘
J
=
C
1
∘
(
⋯
(
C
k
∘
J
)
)
∈
C
r
C \leftarrow \left(\bigcirc _{i \in [k]} C_{i}\right) \circ J = C_1 \circ(\cdots(C_k \circ J)) \in \mathcal C^{r}
C←(◯i∈[k]Ci)∘J=C1∘(⋯(Ck∘J))∈Cr
这里 J ∈ C r J \in \mathcal C^{r} J∈Cr 是零噪声的恒等置换 I r I_{r} Ir 的 HEPerm 密文(对角线 entry 是 1 ⋅ G 1 \cdot G 1⋅G,其他的 entry 都是 0 ⋅ G 0 \cdot G 0⋅G,将第一列作为指示向量的密文)。由于 P σ P^\sigma Pσ 是置换阵,因此 C C C 的噪声矩阵的第 i i i 行服从参数 O ( ∥ e i ∥ ) O(\|e_i\|) O(∥ei∥) 的亚高斯分布,其中 e i ∈ E k r e_i \in \mathcal E^{kr} ei∈Ekr 是 [ E 1 ∣ ⋯ ∣ E k ] [E_1|\cdots|E_k] [E1∣⋯∣Ek] 的第 i i i 行。
Bootstrapping
现在,我们可以使用 HEPerm 来对任意的 LWE 方案 执行自举了!
定义群嵌入(group embedding),
ϕ
:
(
Z
q
,
+
)
→
(
S
:
=
∏
i
=
1
t
S
r
i
,
∘
)
\phi: (\mathbb Z_q,+) \to (S:=\prod_{i=1}^t S_{r_i}, \circ)
ϕ:(Zq,+)→(S:=i=1∏tSri,∘)
令 ϕ i \phi_i ϕi 是它的第 i i i 分量。我们为 HEPerm(或者说它的部件 GSW)选取一个足够大的模数 Q ≫ q Q \gg q Q≫q,以保证 Bootstrapping 之后的噪声比率很小。
令 LWE 的私钥是
s
∈
Z
q
d
s \in \mathbb Z_q^d
s∈Zqd,密文是二元向量
c
∈
{
0
,
1
}
d
c \in \{0,1\}^d
c∈{0,1}d,解密函数为
D
e
c
(
s
,
c
)
:
=
f
(
⟨
s
,
c
⟩
)
Dec(s,c) := f(\langle s,c \rangle)
Dec(s,c):=f(⟨s,c⟩)
其中 f : Z q → { 0 , 1 } f:\mathbb Z_q \to \{0,1\} f:Zq→{0,1} 是某种解码函数。
令 s k ← χ n sk \leftarrow \chi^n sk←χn 是 HEPerm 的对称秘钥,自举方案如下:
-
B o o t G e n ( s , s k ) BootGen(s,sk) BootGen(s,sk):将 s s s 的每个分量 s j s_j sj 嵌入到 S S S 中,然后对每个 S r i S_{r_i} Sri 上的置换 ϕ i ( s j ) \phi_i(s_j) ϕi(sj) 用 HEPerm 加密,作为 bootstrapping key,
b k : = { C i j ← H E P e r m . E n c ( s k , ϕ i ( s j ) ) ∈ C r i : i ∈ [ t ] , j ∈ [ d ] } bk := \{ C_{ij} \leftarrow HEPerm.Enc(sk,\phi_i(s_j)) \in \mathcal C^{r_i}: i \in [t], j \in [d] \} bk:={Cij←HEPerm.Enc(sk,ϕi(sj))∈Cri:i∈[t],j∈[d]}由于 t , r i = O ( log λ ) t,r_i = O(\log \lambda) t,ri=O(logλ) 且 d = O ~ ( λ ) d = \tilde O(\lambda) d=O~(λ),因此 b k ∈ ( ∏ i = 1 t C r i ) d bk \in \left(\prod_{i=1}^t \mathcal C^{r_i}\right)^d bk∈(∏i=1tCri)d 包含 O ~ ( λ ) \tilde O(\lambda) O~(λ) 个 GSW 密文。
-
B o o t s t r a p ( b k , c ∈ { 0 , 1 } d ) Bootstrap(bk,c \in \{0,1\}^d) Bootstrap(bk,c∈{0,1}d):
-
内积运算,转化为 subset-sum,即 ⟨ s , c ⟩ = ∑ j : c j = 1 s j ∈ Z q \langle s,c \rangle = \sum_{j:c_j=1} s_j \in \mathbb Z_q ⟨s,c⟩=∑j:cj=1sj∈Zq,在对称群 S : = ∏ i = 1 t S r i S:=\prod_{i=1}^t S_{r_i} S:=∏i=1tSri 下的复合链为
C i ← ( ◯ j ∈ [ d ] s . t . c j = 1 C i j ) ∘ J ∈ C r i C_i \leftarrow \left(\bigcirc _{j \in [d]\, s.t.\, c_j=1} C_{ij}\right) \circ J \in \mathcal C^{r_i} Ci←(◯j∈[d]s.t.cj=1Cij)∘J∈Cri回顾下算符 ∘ \circ ∘ 是右结合的,其中 J ∈ C r i J \in \mathcal C^{r_i} J∈Cri 是恒等置换 I r i I_{r_i} Iri 的无噪声 HEPerm 密文。
-
解码运算,转化为 equality test,即 f ( x ) = ∑ v : f ( v ) = 1 [ x = v ] ∈ { 0 , 1 } f(x) = \sum_{v:f(v)=1} [x=v] \in \{0,1\} f(x)=∑v:f(v)=1[x=v]∈{0,1},在对称群 S : = ∏ i = 1 t S r i S:=\prod_{i=1}^t S_{r_i} S:=∏i=1tSri 下的相等判定为
C ← ⊞ v ∈ [ q ] s . t . f ( v ) = 1 ( ( ⊡ i ∈ [ t ] E q ( C i , ϕ i ( v ) ) ) ⊡ G ) ∈ C C \leftarrow \boxplus_{v \in [q]\, s.t.\, f(v)=1} \left(\left(\boxdot_{i \in [t]} Eq(C_i, \phi_i(v))\right) \boxdot G\right) \in \mathcal C C←⊞v∈[q]s.t.f(v)=1((⊡i∈[t]Eq(Ci,ϕi(v)))⊡G)∈C回顾下 E q ( C π , σ ) ∈ C Eq(C^\pi, \sigma) \in \mathcal C Eq(Cπ,σ)∈C,算符 ⊡ \boxdot ⊡ 是右结合的,而 G G G 是整数 1 1 1 的无噪声 GSW 密文。
-
在自举之前,由于我们的 GSW 对密文格式有要求,因此需要对 LWE 密文做一些预处理,包括:维度约减、模约减、二进制分解。在自举结束后,选取 GSW 密文的倒数第二列作为 LWE 密文(GSW 密文就是由 LWE 密文组成的向量),并做密钥切换,从 s k sk sk 下的 LWE 密文回到 s s s 下的 LWE 密文。
FHEW
2015 年,Ducas 等人提出了 FHEW 方案。与上述的 HEPerm 相似,FHEW 采用一个与原始 LWE 方案不同的加密方案,构造出一个同态累加器(Homomorphic Accumulator),然后用它来 refresh 密文。另外,FHEW 还提出了一种新的 NAND 门,只需要用到加法同态,而不需要乘法同态,噪声增长率较低。
Notation
FHEW 定义了一个 randomized rounding 函数 χ : R → Z \chi:\mathbb R \to \mathbb Z χ:R→Z,对于任意的 x ∈ R x \in \mathbb R x∈R 和任意的 n ∈ Z n \in \mathbb Z n∈Z,都有 χ ( x + n ) = χ ( x ) + n \chi(x+n) = \chi(x)+n χ(x+n)=χ(x)+n,其中 χ ( x ) − x \chi(x)-x χ(x)−x 叫做 χ ( x ) \chi(x) χ(x) 的 rounding error。不知道本人理解的对不对, χ ( x ) \chi(x) χ(x) 是一族关于实数 x x x 的噪声分布,对于每个固定的 x x x 都有一个固定的分布 χ ( x ( m o d 1 ) ) \chi(x \pmod 1) χ(x(mod1));特别当 x ∈ Z x \in \mathbb Z x∈Z 时,对应于 χ ( 0 ) \chi(0) χ(0)。
我们说实数域
R
\mathbb R
R 上的随机变量
X
X
X 是参数
α
>
0
\alpha>0
α>0 的亚高斯(subgaussian),如果对于任意的
t
∈
R
t \in \mathbb R
t∈R 都满足
E
[
exp
(
2
π
t
X
)
]
≤
e
x
p
(
π
α
2
t
2
)
E[\exp(2\pi tX)] \le exp(\pi \alpha^2 t^2)
E[exp(2πtX)]≤exp(πα2t2)
进一步地,它的尾部(tail)满足
P
r
[
∣
X
∣
≥
t
]
≤
2
exp
(
−
π
t
2
/
α
2
)
,
∀
t
≥
0
Pr[|X| \ge t] \le 2\exp(-\pi t^2/\alpha^2),\forall t \ge 0
Pr[∣X∣≥t]≤2exp(−πt2/α2),∀t≥0
所有的 B - B\text{ -} B - bounded 对称随机变量 X X X 都是参数 B 2 π B \sqrt{2\pi} B2π 的亚高斯。扩展到随机向量 x \bf x x,如果它的所有 one-dimensional marginals ⟨ u , x ⟩ \bf \langle u,x \rangle ⟨u,x⟩(其中 u \bf u u 是单位向量)是参数 α \alpha α 的亚高斯。扩展到随机矩阵 X \bf X X,如果它的所有 one-dimensional marginals u t X v \bf u^tXv utXv(其中 u , v \bf u,v u,v 是单位向量)是参数 α \alpha α 的亚高斯。
对于 2 2 2 的幂次 N N N, Φ 2 N ( X ) = X N + 1 \Phi_{2N}(X)=X^N+1 Φ2N(X)=XN+1 是分园多项式(cyclotomic
polynomial)。令
R
=
Z
[
X
]
/
(
X
N
+
1
)
R = \mathbb Z[X]/(X^N+1)
R=Z[X]/(XN+1) 是分园环(cyclotomic ring),对应的商环
R
q
=
R
/
q
R
R_q=R/qR
Rq=R/qR。对于
a
=
a
0
+
a
1
x
+
⋯
+
a
N
−
1
x
N
−
1
∈
R
a=a_0 + a_1x + \cdots + a_{N-1}x^{N-1} \in R
a=a0+a1x+⋯+aN−1xN−1∈R,简记
a
⃗
:
=
[
a
0
a
1
⋮
a
N
−
1
]
∈
Z
N
,
a
⇒
:
=
[
a
0
−
a
N
−
1
⋯
−
a
1
a
1
a
0
⋯
−
a
2
⋮
⋮
⋯
⋮
a
N
−
1
a
N
−
2
⋯
a
0
]
∈
Z
N
×
N
\vec a := \begin{bmatrix} a_0\\ a_1\\ \vdots\\ a_{N-1} \end{bmatrix} \in \mathbb Z^N,\, \mathop{a}\limits^{\Rightarrow} := \begin{bmatrix} a_0 & -a_{N-1} & \cdots & -a_1\\ a_1 & a_0 & \cdots & -a_2\\ \vdots & \vdots & \cdots & \vdots\\ a_{N-1} & a_{N-2} & \cdots & a_{0} \end{bmatrix} \in \mathbb Z^{N \times N}
a:=
a0a1⋮aN−1
∈ZN,a⇒:=
a0a1⋮aN−1−aN−1a0⋮aN−2⋯⋯⋯⋯−a1−a2⋮a0
∈ZN×N
其实 a ⇒ ⋅ b ⃗ = a ⋅ b → \mathop{a}\limits^{\Rightarrow} \cdot \vec b = \overrightarrow{a \cdot b} a⇒⋅b=a⋅b,这就是环 R R R 上的多项式乘积罢了(文章中使用的全是矩阵乘,却不使用多项式乘积)。扩展到向量和矩阵,对于 A ∈ R w × k A \in R^{w \times k} A∈Rw×k,令 A ⇒ ∈ Z w N × k N \mathop{A}\limits^{\Rightarrow} \in \mathbb Z^{wN \times kN} A⇒∈ZwN×kN 就是对于每个 entry 单独地应用 ⋅ ⇒ \mathop{\cdot}\limits^{\Rightarrow} ⋅⇒ 算符。我们说一个随机多项式 a ∈ R a \in R a∈R 是亚高斯的,如果 a ⃗ \vec a a 是亚高斯的随机向量。
LWE Symmetric Encryption
我们描述一个基于 LWE 的对称加密方案,它可以用标准的转化技术得到非对称加密。秘钥 $ s \in \mathbb Z_qn,q=n{O(1)}$,消息 m ∈ Z t , t ≥ 2 m \in \mathbb Z_t,t \ge 2 m∈Zt,t≥2,随机园整函数满足 ∣ χ ( x ) − x ∣ < q / 2 t |\chi(x)-x| < q/2t ∣χ(x)−x∣<q/2t
对称加密方案:
- 加密, L W E s t / q ( m ) : = ( a , χ ( a s + m q / t ) ( m o d q ) ) ∈ Z q n + 1 LWE_s^{t/q}(m) := (a,\chi(as+mq/t) \pmod q) \in \mathbb Z_q^{n+1} LWEst/q(m):=(a,χ(as+mq/t)(modq))∈Zqn+1,其中 a ∈ Z q n a \in \mathbb Z_q^n a∈Zqn 是均匀随机的
- 解密,输入密文 ( a , b ) (a,b) (a,b),输出 m ′ ← ⌊ t ( b − a s ) / q ⌉ ( m o d t ) ∈ Z t m' \leftarrow \lfloor t(b-as)/q \rceil \pmod t \in \mathbb Z_t m′←⌊t(b−as)/q⌉(modt)∈Zt
Modulus Switching,从模数
Q
Q
Q 到模数
q
q
q 的 (scaled) randomized rounding function
[
⋅
]
Q
:
q
:
Z
Q
→
Z
q
[\cdot]_{Q:q}:\mathbb Z_Q \to \mathbb Z_q
[⋅]Q:q:ZQ→Zq 定义为
[
x
]
Q
:
q
:
=
⌊
q
x
/
Q
⌋
+
B
[x]_{Q:q} := \lfloor qx/Q \rfloor + B
[x]Q:q:=⌊qx/Q⌋+B
其中
B
∈
{
0
,
1
}
B \in \{0,1\}
B∈{0,1} 是服从
P
r
[
B
=
1
]
=
q
x
/
Q
−
⌊
q
x
/
Q
⌋
Pr[B=1]=qx/Q-\lfloor qx/Q \rfloor
Pr[B=1]=qx/Q−⌊qx/Q⌋ 的二值分布,容易看出
E
(
[
x
]
Q
:
q
)
=
q
x
/
Q
E([x]_{Q:q})=qx/Q
E([x]Q:q)=qx/Q,并且园整错误
[
x
]
Q
:
q
−
q
x
/
Q
[x]_{Q:q}-qx/Q
[x]Q:q−qx/Q 是参数
2
π
\sqrt{2\pi}
2π 的亚高斯。对于
(
a
,
b
)
∈
L
W
E
z
t
/
q
(
m
)
(a,b) \in LWE_z^{t/q}(m)
(a,b)∈LWEzt/q(m),计算模
q
q
q 下的新密文
M
o
d
S
w
i
t
c
h
(
a
,
b
)
:
=
(
(
[
a
i
]
Q
:
q
)
i
,
[
b
]
Q
:
q
)
ModSwitch(a,b) := (\left([a_i]_{Q:q}\right)_i,[b]_{Q:q})
ModSwitch(a,b):=(([ai]Q:q)i,[b]Q:q)
Key Switching,设置 base 为
B
k
s
B_{ks}
Bks,从密钥
z
∈
Z
q
N
z \in \mathbb Z_q^N
z∈ZqN 到密钥
s
∈
Z
q
N
s \in \mathbb Z_q^N
s∈ZqN 的 switching key
R
:
=
{
k
i
j
v
}
\mathfrak R := \{k_{ijv}\}
R:={kijv} 定义为
k
i
j
v
←
L
W
E
s
q
/
q
(
v
z
i
B
k
s
j
)
,
i
=
1
,
⋯
,
N
,
j
=
0
,
⋯
,
d
k
s
−
1
,
v
=
0
,
⋯
,
B
k
s
−
1
k_{ijv} \leftarrow LWE_s^{q/q}(vz_iB_{ks}^j),\, i = 1,\cdots,N,\, j=0,\cdots,d_{ks}-1,\, v =0,\cdots,B_{ks}-1
kijv←LWEsq/q(vziBksj),i=1,⋯,N,j=0,⋯,dks−1,v=0,⋯,Bks−1
其中
d
k
s
=
⌈
log
B
k
s
q
⌉
d_{ks} = \lceil \log_{B_{ks}}q \rceil
dks=⌈logBksq⌉,并且
t
=
q
t=q
t=q 使得
k
i
j
v
k_{ijv}
kijv 是噪声比率为
1
/
2
1/2
1/2 的 not typically decryptable 的密文。对于
(
a
,
b
)
∈
L
W
E
z
t
/
q
(
m
)
(a,b) \in LWE_z^{t/q}(m)
(a,b)∈LWEzt/q(m),首先做分解
a
i
=
∑
j
a
i
j
B
k
s
j
a_i = \sum_j a_{ij} B_{ks}^j
ai=∑jaijBksj,然后计算
s
s
s 下的新密文
K
e
y
S
w
i
t
c
h
(
(
a
,
b
)
,
R
)
:
=
(
0
,
b
)
−
∑
i
,
j
k
i
,
j
,
a
i
j
KeySwitch\left((a,b),\mathfrak R\right) := (0,b) - \sum_{i,j} k_{i,j,a_{ij}}
KeySwitch((a,b),R):=(0,b)−i,j∑ki,j,aij
可以验证 b ′ = b − a z + a ′ s − E b'=b-az+a's-E b′=b−az+a′s−E,从而 b ′ − a ′ s ≈ b − a z ≈ m q / t b'-a's \approx b-az \approx mq/t b′−a′s≈b−az≈mq/t,前后两者加密了同一个明文。
NAND Gate
本文提出了一种新的 NAND 计算方式。思路是,用 Z \mathbb Z Z 上的仿射变换来拟合 NAND 运算:
m 0 m_0 m0 | m 1 m_1 m1 | m 0 + m 1 m_0+m_1 m0+m1 | 5 4 − 1 2 ( m 0 + m 1 ) \dfrac{5}{4}-\dfrac{1}{2}(m_0+m_1) 45−21(m0+m1) |
---|---|---|---|
0 0 0 | 0 0 0 | 0 0 0 | 5 / 4 5/4 5/4 |
0 0 0 | 1 1 1 | 1 1 1 | 3 / 4 3/4 3/4 |
1 1 1 | 0 0 0 | 1 1 1 | 3 / 4 3/4 3/4 |
1 1 1 | 1 1 1 | 2 2 2 | 1 / 4 1/4 1/4 |
只需要在就近取整,就可以得到 m 0 ∧ ˉ m 1 m_0 \bar\wedge m_1 m0∧ˉm1 的结果了。将明文空间 Z t \mathbb Z_t Zt 设置为 t = 4 t=4 t=4,并设置一个更小的错误界 E = q / 16 E = q/16 E=q/16,那么对于 m i ∈ { 0 , 1 } m_i \in \{0,1\} mi∈{0,1},计算密文 c i ∈ L W E s 4 / q ( m i , q / 16 ) c_i \in LWE_s^{4/q}(m_i,q/16) ci∈LWEs4/q(mi,q/16),另外计算无噪声密文 ( 0 , 5 q 8 ) ∈ L W E s 2 / q ( 5 4 , 0 ) (0,\dfrac{5q}{8}) \in LWE_s^{2/q}(\dfrac{5}{4},0) (0,85q)∈LWEs2/q(45,0),并将 L W E s 4 / q ( m i , q / 16 ) LWE_s^{4/q}(m_i,q/16) LWEs4/q(mi,q/16) 视为 L W E s 2 / q ( 1 2 m i , q / 16 ) LWE_s^{2/q}(\dfrac{1}{2}m_i,q/16) LWEs2/q(21mi,q/16)
计算
m
0
∧
ˉ
m
1
=
1
−
m
0
m
1
=
⌊
5
4
−
1
2
(
m
0
+
m
1
)
⌉
m_0 \bar\wedge m_1 = 1-m_0m_1 = \left\lfloor \dfrac{5}{4}-\dfrac{1}{2}(m_0+m_1) \right\rceil
m0∧ˉm1=1−m0m1=⌊45−21(m0+m1)⌉ 的同态与非门:
H
o
m
N
A
N
D
:
L
W
E
s
4
/
q
(
m
0
,
q
/
16
)
×
L
W
E
s
4
/
q
(
m
1
,
q
/
16
)
→
L
W
E
s
2
/
q
(
m
0
∧
ˉ
m
1
,
q
/
4
)
(
a
,
b
)
←
H
o
m
N
A
N
D
(
(
a
0
,
b
0
)
,
(
a
1
,
b
1
)
)
:
=
(
−
a
0
−
a
1
,
5
q
8
−
b
0
−
b
1
)
HomNAND: LWE_s^{4/q}(m_0,q/16) \times LWE_s^{4/q}(m_1,q/16) \to LWE_s^{2/q}(m_0 \bar\wedge m_1,q/4)\\ (a,b) \leftarrow HomNAND((a_0,b_0),\, (a_1,b_1)) := (-a_0-a_1,\, \dfrac{5q}{8}-b_0-b_1)
HomNAND:LWEs4/q(m0,q/16)×LWEs4/q(m1,q/16)→LWEs2/q(m0∧ˉm1,q/4)(a,b)←HomNAND((a0,b0),(a1,b1)):=(−a0−a1,85q−b0−b1)
于是 NAND 门只需要同态加法,不需要采用同态乘法,因此输入密文的噪声界从以前的
O
(
q
)
O(\sqrt q)
O(q) 扩大到了
O
(
q
)
O(q)
O(q)。可以验证,
b
−
a
s
=
5
q
8
−
(
b
0
−
a
0
s
)
−
(
b
1
−
a
1
s
)
=
q
2
(
5
4
−
1
2
(
m
0
+
m
1
)
)
−
(
e
0
+
e
1
)
=
q
2
(
m
0
∧
ˉ
m
1
±
1
4
)
−
(
e
0
+
e
1
)
=
q
2
(
m
0
∧
ˉ
m
1
)
±
q
8
−
(
e
0
+
e
1
)
\begin{aligned} b-as &= \dfrac{5q}{8} - (b_0-a_0s) - (b_1-a_1s)\\ &= \dfrac{q}{2}\left(\dfrac{5}{4}-\dfrac{1}{2}(m_0+m_1)\right) - (e_0+e_1)\\ &= \dfrac{q}{2}\left(m_0 \bar\wedge m_1 \pm \dfrac{1}{4}\right) - (e_0+e_1)\\ &= \dfrac{q}{2}\left(m_0 \bar\wedge m_1\right) \pm \dfrac{q}{8} - (e_0+e_1)\\ \end{aligned}
b−as=85q−(b0−a0s)−(b1−a1s)=2q(45−21(m0+m1))−(e0+e1)=2q(m0∧ˉm1±41)−(e0+e1)=2q(m0∧ˉm1)±8q−(e0+e1)
噪声 ∣ q 8 − ( e 0 + e 1 ) ∣ < q 8 + 2 × q 16 = q 4 |\dfrac{q}{8} - (e_0+e_1)| < \dfrac{q}{8} + 2 \times \dfrac{q}{16} = \dfrac{q}{4} ∣8q−(e0+e1)∣<8q+2×16q=4q,因此可以正确解密。
为了继续进行 NAND 运算,我们需要一个刷新函数:
R
e
f
r
e
s
h
:
L
W
E
s
2
/
q
(
m
,
q
/
4
)
→
L
W
E
s
4
/
q
(
m
,
q
/
16
)
Refresh:\, LWE_s^{2/q}(m,q/4) \to LWE_s^{4/q}(m,q/16)
Refresh:LWEs2/q(m,q/4)→LWEs4/q(m,q/16)
这个函数就是 Bootstrapping 的作用,每次 NAND 计算后都立刻刷新密文,因此计算瓶颈在 Refresh 上。
Homomorphic Accumulator
FHEW 选取一个可以与 LWE 加密方案不同的另一个加密方案
E
(
⋅
)
E(\cdot)
E(⋅),要求它对于
(
a
,
b
)
∈
L
W
E
s
2
/
q
(
m
)
(a,b) \in LWE_s^{2/q}(m)
(a,b)∈LWEs2/q(m) 满足如下运算关系
⌊
2
q
(
b
−
a
⋅
E
(
s
)
)
⌉
(
m
o
d
2
)
=
E
(
m
)
\left\lfloor \dfrac{2}{q}(b-a \cdot E(s))\right\rceil \pmod 2 = E(m)
⌊q2(b−a⋅E(s))⌉(mod2)=E(m)
关键是计算 b − a ⋅ E ( s ) = E ( b − a ⋅ s ) b-a \cdot E(s) = E(b-a \cdot s) b−a⋅E(s)=E(b−a⋅s),这只是密文的同态数乘,可以被视为一些密文的加法。方案 E E E 被用来构造同态累加器(Homomorphic Accumulator),它是一个算法四元组 ( E , I n i t , I n c r , m s b E x t r a c t ) (E,Init,Incr,msbExtract) (E,Init,Incr,msbExtract),
- E E E:加密算法,密文空间 C \mathcal C C 可以与 L W E s t / q LWE_s^{t/q} LWEst/q 不同。
- I n i t Init Init:初始化, A C C ← I n i t ( v 0 ) ACC \leftarrow Init(v_0) ACC←Init(v0) 简记为 A C C ← v 0 ACC \leftarrow v_0 ACC←v0
- I n c r Incr Incr:同态累加(Increment), A C C ← I n c r ( A C C , E ( v i ) ) ACC \leftarrow Incr(ACC,E(v_i)) ACC←Incr(ACC,E(vi)) 简记为 A C C ← + E ( v i ) ACC \overset{+}{\leftarrow} E(v_i) ACC←+E(vi),其中 i = 1 , ⋯ , l i=1,\cdots,l i=1,⋯,l
- m s b E x t r a c t msbExtract msbExtract:提取 MSB, c ← m s b E x t r a c t ( A C C ) c \leftarrow msbExtract(ACC) c←msbExtract(ACC)
我们说这个同态累加器是 E - correct \mathcal E\text{ - correct} E - correct 的,如果 c ∉ L W E s t / q ( ∑ i v i , E ( l ) ) c \notin LWE_s^{t/q}(\sum_i v_i, \mathcal E(l)) c∈/LWEst/q(∑ivi,E(l)) 的概率可忽略。对于 t = 4 t=4 t=4,要求 E ( l ) ≤ q / 16 \mathcal E(l) \le q/16 E(l)≤q/16
然后利用上述的同态累加器,可以实现 refresh 函数。首先预计算 refreshing key
K
:
=
{
K
i
j
c
}
\mathcal K := \{K_{ijc}\}
K:={Kijc},
K
i
j
c
:
=
E
(
c
s
i
B
r
j
(
m
o
d
q
)
)
,
i
=
1
,
⋯
,
n
,
j
=
0
,
⋯
,
d
r
−
1
,
c
=
0
,
⋯
,
B
r
−
1
K_{ijc} := E(cs_iB_r^j \pmod q),\, i = 1,\cdots,n,\, j=0,\cdots,d_{r}-1,\, c =0,\cdots,B_{r}-1
Kijc:=E(csiBrj(modq)),i=1,⋯,n,j=0,⋯,dr−1,c=0,⋯,Br−1
其中 d r = ⌈ log B r q ⌉ d_{r} = \lceil \log_{B_{r}}q \rceil dr=⌈logBrq⌉,这儿的 LWE 密钥 s ∈ Z q n s \in \mathbb Z_q^n s∈Zqn 的各个系数被 power 为 ( s i B r j ) j (s_i B_r^j)_j (siBrj)j,然后枚举了所有的 B r B_r Br 进制下的所有取值。由于 D e c o m p o s e ( a i ) ⋅ P o w e r ( s i ) = a i ⋅ s i Decompose(a_i) \cdot Power(s_i) = a_i \cdot s_i Decompose(ai)⋅Power(si)=ai⋅si,因此可以根据 a i = ∑ j a i j B r j a_i = \sum_j a_{ij} B_r^j ai=∑jaijBrj 挑选出对应的 K i , j , a i j K_{i,j,a_{ij}} Ki,j,aij 计算同态加法。
初始化
b
+
q
/
4
b+q/4
b+q/4,这使得循环末尾
v
=
q
/
4
+
b
−
a
⋅
s
=
m
q
/
2
+
(
e
+
q
/
4
)
v = q/4 + b-a \cdot s = mq/2 + (e+q/4)
v=q/4+b−a⋅s=mq/2+(e+q/4)
由于 ∣ e ∣ < q / 4 |e|<q/4 ∣e∣<q/4,因此 e ′ = e + q / 4 ∈ ( 0 , q / 2 ) e'=e+q/4 \in (0,q/2) e′=e+q/4∈(0,q/2),如果 v ∈ ( 0 , q / 2 ) v \in (0,q/2) v∈(0,q/2) 那么 m = 0 m=0 m=0,如果 v ∈ ( q / 2 , q ) v \in (q/2,q) v∈(q/2,q) 那么 m = 1 m=1 m=1,这就把提取 b − a s b-as b−as 的 MSB 转化为了测试 v v v 的范围(与 HEPerm 类似)。
FHEW 使用 Ring-GSW 来实例化同态累加器。LWE 的模数 q = 2 k q=2^k q=2k,消息域大小 t = 4 t=4 t=4。GSW 的模数 Q Q Q 满足 Q = B g d g Q=B_g^{d_g} Q=Bgdg,其中 base B g B_g Bg 是 3 3 3 的幂次(这使得 ∀ K ≥ 3 , N = 2 K , X N + 1 = ( X N / 2 + X N / 4 − 1 ) ( X N / 2 − X N / 4 − 1 ) \forall K \ge 3,N=2^K,X^N+1 = (X^{N/2}+X^{N/4}-1) (X^{N/2}-X^{N/4}-1) ∀K≥3,N=2K,XN+1=(XN/2+XN/4−1)(XN/2−XN/4−1),从而 R Q R_Q RQ 几乎是一个域)。额外设置一个参数 u = ⌊ Q / 2 t ⌋ u = \lfloor Q/2t \rfloor u=⌊Q/2t⌋ 或者 u = ⌈ Q / 2 t ⌉ u = \lceil Q/2t \rceil u=⌈Q/2t⌉,它们在 Z Q \mathbb Z_Q ZQ 中是可逆的,且误差 ∣ u − Q / 2 t ∣ < 1 |u-Q/2t|<1 ∣u−Q/2t∣<1。
设置环
R
=
Z
[
X
]
/
(
X
N
+
1
)
R = \mathbb Z[X]/(X^N+1)
R=Z[X]/(XN+1),使得
q
∣
2
N
q\mid 2N
q∣2N,那么它有
q
q
q 次本原单位根
Y
:
=
X
2
N
/
q
Y := X^{2N/q}
Y:=X2N/q,因此
Z
q
≅
⟨
Y
⟩
\mathbb Z_q \cong \langle Y \rangle
Zq≅⟨Y⟩ 是单位根循环群
G
=
⟨
X
⟩
≅
Z
2
N
G = \langle X \rangle \cong \mathbb Z_{2N}
G=⟨X⟩≅Z2N 的子循环群。消息
m
∈
Z
q
m \in \mathbb Z_q
m∈Zq 可以直接编码到指数上为
Y
m
∈
R
Y^m \in R
Ym∈R,其向量表示为
{
−
1
,
0
,
1
}
N
\{-1,0,1\}^N
{−1,0,1}N 上的 one-hot 向量。为了提取
m
m
m 的 MSB,我们构造一个 testing vector
t
:
=
−
∑
v
=
1
q
/
2
−
1
Y
⃗
v
∈
{
−
1
,
0
,
1
}
N
t := - \sum_{v=1}^{q/2-1} \vec Y^v \in \{-1,0,1\}^N
t:=−v=1∑q/2−1Yv∈{−1,0,1}N
如果 0 ≤ m < N 0 \le m < N 0≤m<N 那么 t ⋅ Y ⃗ m = − 1 t \cdot \vec Y^m = -1 t⋅Ym=−1,如果 N ≤ m < 2 N N \le m < 2N N≤m<2N 那么 t ⋅ Y ⃗ m = + 1 t \cdot \vec Y^m = +1 t⋅Ym=+1,这其实就是挨个测试了 E q ( m , v ) , ∀ M S B ( v ) = 0 Eq(m,v),\forall MSB(v)=0 Eq(m,v),∀MSB(v)=0
FHEW 的基于 RGSW 的同态累加器:
由于 GSW 密文就是由 LWE 密文组成的向量,因此提取 MSB 对应的 LWE 密文,就是挑选出对应的列向量:
Refresh 的主要的计算量集中在累加阶段,可以用 FFT/NTT 来加速: