全同态加密:FHEW

news2024/11/26 1:39:30

参考资料:

  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.

文章目录

  • 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,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 . E n c ( s k , C ∈ C r × r ) HEPerm.Enc(sk, C \in \mathcal C^{r \times r}) HEPerm.Enc(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 门,只需要用到加法同态,而不需要乘法同态,噪声增长率较低。

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 \in \mathbb Z_qn,q=n{O(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 来加速:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/393641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css盒模型详解

一、引言 盒模型是网页开发中的一个基本概念&#xff0c;它描述了网页元素的外观和大小。盒模型由内容区域、内边距、边框和外边距四个部分组成&#xff0c;这些部分的大小和位置都可以通过CSS进行控制。在本文中&#xff0c;我们将介绍盒模型的概念和作用&#xff0c;并提出本…

一、SpringMVC概述

1.什么是SpringMVC 基于MVC开发模式的框架,用来优化控制器.它是Spring家族的一员.它也具备IOC和AOP. 什么是MVC?   一种开发模式,模型视图控制器的简称.所有的web应用都是基于MVC开发.   M:模型层,包含实体类,业务逻辑层,数据访问层   V:视图层,html,javaScript,vue等都…

MySQL安装和配置

下载官网下载mysql解压版本&#xff1a;配置环境变量下载完成后直接解压到需要放的文件夹&#xff0c;根据文件夹来配置环境变量&#xff1b;新建系统变量&#xff0c;变量名自取&#xff0c;值是MySQL的目录编辑path环境变量&#xff0c;加上MySQL的bin目录 %MYSQL_HOME%\bin配…

【python】序列(列表、元组)、字典、集合的初步认识

一、序列 序列类型(sequence)&#xff1a;一组有序的数据集&#xff0c;特点是数据之间存在先后关系&#xff0c;通过序号访问 序列包含以下三种类型&#xff1a; 1.字符串&#xff08;str&#xff09;不可修改 2.列表&#xff08;list&#xff09;可修改 3.元组&#xff08;t…

基于java的高校辅导员工作管理系统

摘 要网络技术的快速发展给各行各业带来了很大的突破&#xff0c;也给各行各业提供了一种新的管理模块&#xff0c;对于高校辅导员工作管理将是又一个传统管理到智能化信息管理的改革&#xff0c;设计高校辅导员工作管理系统的目的就是借助计算机让复杂的班级信息、学籍信息等管…

如何使用JSR 303 进行后台数据校验?

文章目录一、JSR 3031、什么是 JSR 303&#xff1f;2、为什么使用 JSR 303&#xff1f;3、JSR 303 常见操作&#xff1f;二、使用 JSR 303 相关注解处理逻辑1、JSR 303 注解处理逻辑1.1 使用步骤1.2 实际应用2 、JSR 303 分组校验2.1 为什么使用 分组校验&#xff1f;2.2 使用步…

软件设计师教程(八)计算机系统知识-软件工程基础知识

软件设计师教程 软件设计师教程&#xff08;一&#xff09;计算机系统知识-计算机系统基础知识 软件设计师教程&#xff08;二&#xff09;计算机系统知识-计算机体系结构 软件设计师教程&#xff08;三&#xff09;计算机系统知识-计算机体系结构 软件设计师教程&#xff08;…

【C++】list迭代器的深度剖析及模拟实现(感受类封装,类和对象的思想)

早点睡兄弟&#xff0c;别一天到晚就熬夜。 文章目录一、通过list迭代器来感受类和对象以及类封装的思想1.迭代器的特征和本质是什么&#xff1f;&#xff08;两大特征&#xff1a;类的内嵌类型&#xff0c;行为像指针。本质&#xff1a;内置类型定义的变量或自定义类型实例化…

Linux命令·less

less 工具也是对文件或其它输出进行分页显示的工具&#xff0c;应该说是linux正统查看文件内容的工具&#xff0c;功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候&#xff0c;我们并没有办法向前面翻&#xff0c; 只能往后面看&#xff0c;但若使用了 less …

Java Stream 如何提高遍历集合效率?

目录什么是 Stream&#xff1f;Stream 如何优化遍历&#xff1f;Stream 源码实现内部实现Stream 并行处理什么是 Stream&#xff1f; Stream 的聚合操作与数据库 SQL 的聚合操作 sorted、filter、map 等类似。我们在应用层就可以高效地实现类似数据库 SQL 的聚合操作了&#x…

Spring MVC 详解(连接、获取参数、返回数据)

在之前我们先简单那谈谈Spring、SpringBoot以及Spring MVC框架之间有什么关系&#xff1f;首先Spring是一个框架&#xff0c;SpringBoot脚手架是为了快速开发Spring框架而创造的技术。可以理解为SpringBoot又在Spring上面包了一层壳子&#xff0c;是基于Spring的&#xff0c;是…

xxl-job调度中心、执行器源码详解

文章目录简介调度中心一.程序启动初始化1.初始化入口类2.初始化I18n3.初始化快慢调度线程池4.初始化处理执行器注册或移除线程池更新执行器最新在线的守护线程5.初始化监控任务调度失败或执行失败的守护线程6.初始化处理执行器回调线程池监控任务执行结果丢失的守护线程7.初始化…

创建虚拟机、添加镜像以及配置虚拟机

一、创建虚拟机 1、点击 “创建新的虚拟机” 2.选择“自定义配置” 到后面可以选择硬件的类型 3.默认值就行 4.选择 “稍后安装操作系统” 5.操作系统选择 “Linux”&#xff0c;版本结合镜像自行选择 6. 虚拟机的名称自行定义&#xff0c; 就是上述显示出来的名称。 虚拟机…

Mybatis使用手册

Myabtis 官网文档 官网网站&#xff1a;https://mybatis.org/mybatis-3/zh/index.html 搭建环境 项目结构 引入依赖 创建Maven项目&#xff0c;pom依赖文件中加入mybatis和jdbc驱动依赖。 <dependency><groupId>org.mybatis</groupId><artifactId>…

CSS渐进增强方案

首先需要明确一点&#xff0c;以往浏览器对css的支持是不同的&#xff0c;不同浏览器的样式可能会存在差异&#xff0c;对待这种差异问题&#xff0c;需要写几套不同的css来兼容&#xff08;边框、圆角、颜色等&#xff09;&#xff0c;这样是非常麻烦的&#xff0c;浏览器css显…

Go项目(订单微服务)

文章目录简介handlerUTweb支付服务Notify小结简介 这部分开始梳理订单微服务的关键点这里仿京东&#xff0c;订单结算在购物车进行&#xff0c;所以用户的操作是加入商品到购物车&#xff0c;进入购物车付款从页面分析需求 点击添加到购物车&#xff0c;删除车中商品&#xff…

JAVA环境配置多环境(全,细,简单)

下载java包&#xff1a;https://www.oracle.com/java/technologies/downloads &#xff08;8版本稳定&#xff09; 直接无脑安装java程序 &#xff08;包括jdk-开发与jre-运行&#xff09; 接下来是java环境配置&#xff1a; 创建系统变量 &#xff08;用户变量也可以&#…

近红外吸收荧光染料IR-808,IR-808 NH2,IR-808 amine,发射808nm 性质分享

中文名称&#xff1a;IR-808 氨基英文名称&#xff1a;IR-808 NH2&#xff0c;IR-808 amine&#xff0c;IR-808-NH2规格标准&#xff1a;10mg&#xff0c;25mg&#xff0c;50mgCAS&#xff1a;N/A产品描述&#xff1a;IR-808&#xff0c;发射808nm&#xff0c;酯溶性染料修饰氨…

[NOIP2003 提高组] 侦探推理(C++,字符串)

题目描述 明明同学最近迷上了侦探漫画《柯南》并沉醉于推理游戏之中&#xff0c;于是他召集了一群同学玩推理游戏。游戏的内容是这样的&#xff0c;明明的同学们先商量好由其中的一个人充当罪犯&#xff08;在明明不知情的情况下&#xff09;&#xff0c;明明的任务就是找出这…

关于Ping命令的七种用法

今天我们来详细看下ping命令详细使用&#xff1a; 一、ping基本使用详解 在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为&#xff1a; 1、用来检测网络的连通情况和分析网络速度 2、根据域名得到服务器IP 3、根据ping返回的TTL值来判断对方所使用的操作系统及数据…