全同态加密:FHEW

参考资料:

  1. Micciancio D, Peikert C. Trapdoors for Lattices: Simpler, Tighter, Faster, Smaller[C]//Eurocrypt. 2012, 7237: 700-718.
  2. 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.
  3. 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.

AP14

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 的乘法群)上,在代数电路上执行自举,大大提高了自举效率。而之前的方案,基本都在布尔电路上运算,使用 Barrington‘s Theorem N C 1 NC^1 NC1 电路转化为 5-PBP 置换分支程序

利用 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,c2

这里 ⌊ x ⌉ 2 : = ⌊ 2 / q ⋅ x ⌉ \lfloor x \rceil_2 := \lfloor 2/q \cdot x \rceil x2:=2/qx 是从 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|} SG 中。而这个对称群同构于 ∣ 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 xZr 映射到位移 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 π:ii+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 上的运算对应关系为:

  1. 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πxPπy,可以简化为 P π x ⋅ e y P_{\pi^x} \cdot e_y Pπxey(等价于多项式 e x , e y e_x,e_y ex,ey 的在 Z 2 [ x ] / ( x r − 1 ) Z_2[x]/(x^r-1) Z2[x]/(xr1) 上的多项式乘积)
  2. 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)
  3. Z r Z_r Zr 中的提取 MSB ⌊ x ⌉ 2 \lfloor x \rceil_2 x2,同构于 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.v2=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} ZqiZriiSri

对应的嵌入映射为:
ϕ : 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} ϕ:xZq(ex(modri))iiSri

这样就可以在多个小规模的对称群 S r i S_{r_i} Sri 上执行计算。此时,

  1. 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

  2. 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]:=iex(modri)(v(modri))

  3. 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] x2:=v[q]s.t.v2=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):=pkxlogp=log(pxplogpx)

因此,所有的小于 x x x 的最大素数幂 r i = p ⌊ log ⁡ p x ⌋ r_i = p^{\lfloor \log_p x \rfloor} ri=plogpx 的乘积 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 x7 都有一个非渐进界 ψ ( 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) qexp(3x/4)exp(3/4imaxri)

选取很小的界 x x x,就可以用一些最大素数幂 r i ≤ x r_i \le x rix 合成出一个指数级大的模数 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,,2l1)Zl,它的倒数第二个分量 2 l − 2 ∈ [ q / 4 , q / 2 ) 2^{l-2} \in [q/4,q/2) 2l2[q/4,q/2) 就是 GSW 中所谓 “big coefficient”。

根据 MP12,存在一个随机的可有效计算的函数 g − 1 : Z q → Z l g^{-1}:Z_q \to Z^l g1:ZqZl,使得 x ← g − 1 ( a ) x \leftarrow g^{-1}(a) xg1(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):={ zZl:g,x0Zq} 的一组 “好” 的基底 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) { ci1,ci},ciq1Z[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=gtInZqn×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} G1:Zqn×mZqnl×m 就是对于每个 entry 独立的使用 g − 1 g^{-1} g1 算法。那么给定 A = G ⋅ X A = G \cdot X A=GX X ← G − 1 ( A ) X \leftarrow G^{-1}(A) XG1(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} sZqnl结构化向量(有个 “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} CZqn×nl 是长矩阵,秘密 s ∈ Z n s \in Z^{n} sZn非结构化的短向量,关系为 s t C ≈ μ ⋅ s t G ( m o d q ) s^tC \approx \mu \cdot s^tG \pmod q stCμstG(modq)。两者是等价的。

对称的 GSW 变体:

  1. 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χn1,输出 s : = ( s ˉ , 1 ) s := (\bar s,1) s:=(sˉ,1)
  2. 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(n1)×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=etstCˉ,输出 C = ( C ˉ , b t ) t + μ G ∈ C C = (\bar C,b^t)^t + \mu G \in \mathcal C C=(Cˉ,bt)t+μGC(而原始 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+G1(RA))=G1(μG+RA),两者等价)
  3. G S W . D e c ( s , C ∈ C ) GSW.Dec(s,C \in \mathcal C) GSW.Dec(s,CC):由于 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,2l2]),计算出 2 l − 2 ⋅ μ ≈ ⟨ s , c ⟩ 2^{l-2} \cdot \mu \approx \langle s,c \rangle 2l2μs,c,输出 μ \mu μ

L W E n − 1 , q , χ LWE_{n-1,q,\chi} LWEn1,q,χ 假设下,上述方案是 IND-CPA 安全的。

  • 同态加法 C 1 ⊞ C 2 : = C 1 + C 2 C_1 \boxplus C_2:= C_1 + C_2 C1C2:=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 C1C2:=C1X,噪声 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) XG1(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((CkG))C

这里的 G = 0 + 1 ⋅ G ∈ C G = \textbf{0}+1 \cdot G \in \mathcal C G=0+1GC 是个零噪声的 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):

  1. 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)
  2. 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
  3. H E P e r m . D e c ( s k , C ∈ C r × r ) HEPerm.Dec(sk, C \in \mathcal C^{r \times r}) HEPerm.Dec(sk,CCr×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σ))ijCr×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π)GC,因为置换阵 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 CrSr,可以只对指示向量对应的那一列加密。对于 x , y ∈ Z r x,y \in \mathbb Z_r x,yZr,密文 C x , C y ∈ C r C^x,C^y \in \mathcal C^r Cx,CyCr,此时的计算复杂度降低了 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 } CxCy:=(k[r](cr+ikxcky))iCr,计算复杂度从 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):=cvxC,计算复杂度从 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((CkJ))Cr

这里 J ∈ C r J \in \mathcal C^{r} JCr 是零噪声的恒等置换 I r I_{r} Ir 的 HEPerm 密文(对角线 entry 是 1 ⋅ G 1 \cdot G 1G,其他的 entry 都是 0 ⋅ G 0 \cdot G 0G,将第一列作为指示向量的密文)。由于 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} eiEkr [ E 1 ∣ ⋯ ∣ E k ] [E_1|\cdots|E_k] [E1Ek] 的第 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=1tSri,)

ϕ i \phi_i ϕi 是它的第 i i i 分量。我们为 HEPerm(或者说它的部件 GSW)选取一个足够大的模数 Q ≫ q Q \gg q Qq,以保证 Bootstrapping 之后的噪声比率很小。

令 LWE 的私钥是 s ∈ Z q d s \in \mathbb Z_q^d sZqd,密文是二元向量 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 的对称秘钥,自举方案如下:

  1. 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:={ CijHEPerm.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 密文。

  2. 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=1sjZq,在对称群 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)JCri

      回顾下算符 ∘ \circ 是右结合的,其中 J ∈ C r i J \in \mathcal C^{r_i} JCri 是恒等置换 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 Cv[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 门,只需要用到加法同态,而不需要乘法同态,噪声增长率较低。

一个重要发现是,实现 Bootstrapping 根本不需要完整的比较电路(同态地比较加密的明文是否大于某个阈值 q / 2 q/2 q/2 以提取MSB信息),而只需要一个同态累加器,像AP14那样用一系列的判等操作来提取MSB,这就大大简化了自举的复杂度。

另外为了维持 NAND 门的输入密文形式,FHEW 使用的是 Gate Bootstrapping(而非 Circuit Bootstrapping),将NAND门输出的密文 refresh 为恰当的密文形式。

Notation

FHEW 定义了一个 randomized rounding 函数 χ : R → Z \chi:\mathbb R \to \mathbb Z χ:RZ,对于任意的 x ∈ R x \in \mathbb R xR 和任意的 n ∈ Z n \in \mathbb Z nZ,都有 χ ( 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 xZ 时,对应于 χ ( 0 ) \chi(0) χ(0)

我们说实数域 R \mathbb R R 上的随机变量 X X X 是参数 α > 0 \alpha>0 α>0亚高斯(subgaussian),如果对于任意的 t ∈ R t \in \mathbb R tR 都满足
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[Xt]2exp(πt2/α2),t0

所有的 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++aN1xN1R,简记
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 := a0a1aN1 ZN,a:= a0a1aN1aN1a0aN2a1a2a0 ZN×N

其实 a ⇒ ⋅ b ⃗ = a ⋅ b → \mathop{a}\limits^{\Rightarrow} \cdot \vec b = \overrightarrow{a \cdot b} ab =ab ,这就是环 R R R 上的多项式乘积罢了(文章中使用的全是矩阵乘,却不使用多项式乘积)。扩展到向量和矩阵,对于 A ∈ R w × k A \in R^{w \times k} ARw×k,令 A ⇒ ∈ Z w N × k N \mathop{A}\limits^{\Rightarrow} \in \mathbb Z^{wN \times kN} AZwN×kN 就是对于每个 entry 单独地应用 ⋅ ⇒ \mathop{\cdot}\limits^{\Rightarrow} 算符。我们说一个随机多项式 a ∈ R a \in R aR 是亚高斯的,如果 a ⃗ \vec a a 是亚高斯的随机向量。

LWE Symmetric Encryption

我们描述一个基于 LWE 的对称加密方案,它可以用标准的转化技术得到非对称加密。秘钥 s ∈ Z q n , q = n O ( 1 ) s \in \mathbb Z_q^n,q=n^{O(1)} sZqn,q=nO(1),消息 m ∈ Z t , t ≥ 2 m \in \mathbb Z_t,t \ge 2 mZt,t2,随机园整函数满足 ∣ χ ( x ) − x ∣ < q / 2 t |\chi(x)-x| < q/2t χ(x)x<q/2t

对称加密方案

  1. 加密, 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 aZqn 是均匀随机的
  2. 解密,输入密文 ( 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 mt(bas)/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:ZQZq 定义为
[ 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/Qqx/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:qqx/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 zZqN 到密钥 s ∈ Z q N s \in \mathbb Z_q^N sZqN 的 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 kijvLWEsq/q(vziBksj),i=1,,N,j=0,,dks1,v=0,,Bks1

其中 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,jki,j,aij

可以验证 b ′ = b − a z + a ′ s − E b'=b-az+a's-E b=baz+asE,从而 b ′ − a ′ s ≈ b − a z ≈ m q / t b'-a's \approx b-az \approx mq/t basbazmq/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) 4521(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) ciLWEs4/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=1m0m1=4521(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)):=(a0a1,85qb0b1)

于是 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} bas=85q(b0a0s)(b1a1s)=2q(4521(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(baE(s))(mod2)=E(m)

关键是计算 b − a ⋅ E ( s ) = E ( b − a ⋅ s ) b-a \cdot E(s) = E(b-a \cdot s) baE(s)=E(bas),这只是密文的同态数乘,可以被视为一些密文的加法。方案 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) ACCInit(v0) 简记为 A C C ← v 0 ACC \leftarrow v_0 ACCv0
  • 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)) ACCIncr(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) cmsbExtract(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,,dr1,c=0,,Br1

其中 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 sZqn 的各个系数被 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)=aisi,因此可以根据 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+bas=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 bas 的 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) K3,N=2K,XN+1=(XN/2+XN/41)(XN/2XN/41),从而 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 uQ/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 q2N,那么它有 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 ZqY 是单位根循环群 G = ⟨ X ⟩ ≅ Z 2 N G = \langle X \rangle \cong \mathbb Z_{2N} G=XZ2N 的子循环群。消息 m ∈ Z q m \in \mathbb Z_q mZq 可以直接编码到指数上 Y m ∈ R Y^m \in R YmR,其向量表示为 { − 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=1q/21Y v{ 1,0,1}N

如果 0 ≤ m < N 0 \le m < N 0m<N 那么 t ⋅ Y ⃗ m = − 1 t \cdot \vec Y^m = -1 tY m=1,如果 N ≤ m < 2 N N \le m < 2N Nm<2N 那么 t ⋅ Y ⃗ m = + 1 t \cdot \vec Y^m = +1 tY m=+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 来加速:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44885334/article/details/129380618