FHEW 和 TFHE 的统一框架:标准化 FHE

参考文献:

  1. [GHS12] Gentry C, Halevi S, Smart N P. Better bootstrapping in fully homomorphic encryption[C]//International Workshop on Public Key Cryptography. Berlin, Heidelberg: Springer Berlin Heidelberg, 2012: 1-16.
  2. [GHPS12] Gentry C, Halevi S, Peikert C, et al. Field switching in BGV-style homomorphic encryption[J]. Journal of Computer Security, 2013, 21(5): 663-684.
  3. [AP13] Alperin-Sheriff J, Peikert C. Practical bootstrapping in quasilinear time[C]//Annual Cryptology Conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 2013: 1-20.
  4. [BV14] Brakerski Z, Vaikuntanathan V. Lattice-based FHE as secure as PKE[C]//Proceedings of the 5th conference on Innovations in theoretical computer science. 2014: 1-12.
  5. [AP14] J. Alperin-Sheriff and C. Peikert. Faster bootstrapping with polynomial error. In CRYPTO 2014, volume 8616 of Lecture Notes in Computer Science, pages 297–314, 2014.
  6. [DM15] L. Ducas and D. Micciancio. FHEW: bootstrapping homomorphic encryption in less than a second. In EUROCRYPT (1), volume 9056 of Lecture Notes in Computer Science, pages 617–640. Springer, 2015.
  7. [GINX16] N. Gama, M. Izabach`ene, P. Q. Nguyen, and X. Xie. Structural lattice reduction: Generalized worst-case to average-case reductions and homomorphic cryptosystems. In EUROCRYPT 2016, volume 9666 of Lecture Notes in Computer Science, pages 528–558, 2016.
  8. [CGGI16] I. Chillotti, N. Gama, M. Georgieva, and M. Izabach`ene. Faster fully homomorphic encryption: Bootstrapping in less than 0.1 seconds. In ASIACRYPT (1), volume 10031 of Lecture Notes in Computer Science, pages 3–33, 2016.
  9. [ACC+18] M. Albrecht, M. Chase, H. Chen, and et al. Homomorphic encryption security standard. Technical report, HomomorphicEncryption.org, Toronto, Canada, November 2018.
  10. [Mic18] D. Micciancio. On the hardness of learning with errors with binary secrets. Theory Comput., 14(1):1–17, 2018.
  11. [Mic19] D. Micciancio. Fully homomorphic encryption from the ground up. Invited Talk, Eurocrypt 2019, 2019.
  12. [EJK20] T. Espitau, A. Joux, and N. Kharchenko. On a hybrid approach to solve binary-lwe. Cryptology ePrint Archive, Report 2020/515, 2020.
  13. [MP21] Micciancio D, Polyakov Y. Bootstrapping in FHEW-like cryptosystems[C]//Proceedings of the 9th on Workshop on Encrypted Computing & Applied Homomorphic Cryptography. 2021: 17-28.
  14. 全同态加密:FHEW
  15. 全同态加密:TFHE
  16. 环面上 FHE 的快速自举:GSIS/SLWE
  17. TFHE 的全同态模结构(FHE Module Structure)
  18. Linear Decryption: Rate-1 FHE & TLP
  19. Branching Program(5-PBP)

Unified Framework

Background

[MP21] 比较了 [MD15] 的原始 FHEW 和 [GCCI16] 的原始 TFHE 的异同,然后将它们实现在了一个统一的框架内。

第二代 FHE 方案(包括 BGV/BFV/CKKS)的自举速度很慢:因为 BGV-like 支持的同态运算是算术的,而自举中需要的模约减、园整都是布尔的。[GHS12] 提出使用特殊的底层模数 q = 2 l q=2^l q=2l,从而根据 ( 2 a + b ) 2 ( m o d 4 ) = b 2 = b (2a+b)^2 \pmod4=b^2=b (2a+b)2(mod4)=b2=b 可以的不断消除的低位比特,因此可以在完全的算术电路下执行自举算法。[GHS12] 还利用 “p-adic integers”(p进数)和 ““Hensel Lifting” 把 [SV11] 的 SIMD 扩展到了槽 Z 2 l \mathbb Z_{2^l} Z2l(而非 G F ( 2 l ) GF(2^l) GF(2l)),于是可以并行执行模约减和舍入任务,从而实现 BGV 的非布尔电路的自举。[AP13] 则使用素数 p p p 在 tower of cyclotomic rings 上的连续分解,以及 [GHPS12] 的 Field switching 技术,进一步改进了 BGV 的自举。但是,它们的扩展 SIMD 的代数结构特别复杂,实现困难(博主我甚至看不懂)。另外,BGV 和 BFV 的自举程序要求格上困难问题的近似因子是超多项式的(grow superpolynomially in the lattice dimension n),这个假设太强了。

第三代 FHE 方案(包括 GSW/FHEW/TFHE)的自举速度就比较快,并且自举的安全性假设也更弱:GSW 本身是由若干个独立的 LWE/BGV/GFV 密文拼接出来的,因此安全性基于 standard LWE 假设。[BV14] 展示了 GSW 的非对称噪声增长,利用连续的 Dimension-Modulus Reduction,给出了第一个 “量子归约到近似因子为 O ~ ( n 1.5 + ϵ ) \tilde O(n^{1.5+\epsilon}) O~(n1.5+ϵ) 的 GapSVP 问题” 以及 “经典归约到近似因子为 O ~ ( n 2 + ϵ ) \tilde O(n^{2+\epsilon}) O~(n2+ϵ) 的 GapSVP 问题” 的全同态加密方案(换句话说,自举程序并不会降低 FHE 的安全性,因此 FHE 和一般的 PKE 同样安全),其近似因子仅为多项式的。但它使用 GSW 执行 5-PBP 形式的布尔自举程序,速度依然较慢。[AP14] 和 [GINX16] 都利用了解密函数的特殊性:AP 把内积运算转化为 subset-sum,把解码运算转化为 equality test,使用对称群的算术电路实现自举;而 GINX 将解密函数表示为宽度有限的 OBDD 图,使用 MUX-based LUT 来实现自举。之后的 FHEW 提出采取同态累加器以及查表操作实现 AP 策略,速度大幅提高;而 TFHE 则利用这种累加器实现 GINX 策略,自举秘钥的规模大大减小。FHEW 和 TFHE 基于的困难假设也只需要多项式增长的近似因子,自举足够安全。

AP/FHEW 和 GINX/TFHE 的不同之处:

  • 自举算法(这是最大的不同)
    • FHEW 采取了 [AP14] 的自举策略:对密文做二进制分解,同态解密时利用各个比特挑选对应的自举秘钥,计算出累加值之后提取出自举结果
    • TFHE 采取了 [GINX16] 的自举策略:限制私钥是二元分布,同态解密时利用各个比特执行同态的 MUX 门,计算出累加值之后提取出自举结果
  • 秘密分布(依赖于自举算法)
    • FHEW 的私钥分布不收限制,可以是:二元、三元、高斯、均匀
    • TFHE 的私钥分布受限,必须是二元取值的
  • 安全性假设(TFHE 的假设更强)
    • FHEW 依赖于 standard LWE/RLWE 假设,以及 circular secure 假设
    • TFHE 依赖于 LWE/RLWE over Torus with Binary secret distribution 假设,以及 circular secure 假设
  • 优化技术(这是通用的)
    • FHEW 使用 Add 实现 NAND 门(LWE 方案的乘法)
    • TFHE 使用 FHE Module Structure 实现乘法门(ACC 方案的乘法)

不过 FHEW 和 TFHE 本质上仅仅是同态累加器的实现不同,因此 [MP21] 将两者统一,使得它们满足 [ACC+18] 的全同态加密标准化建议:密文框架采用 FHEW 的密文格式(LWE/RLWE/RGSW),自举框架采用 FHEW 的累加器抽象,优化技术采用 TFHE 的外积运算。[MP21] 采取了更多的优化技术,包括:对 FHEW 的时间/空间权衡(更大的进制分解)、对 TFHE 的私钥分布扩展(利用自举例程的线性)。

框架为:

  1. 消息 μ ∈ Z 4 \mu \in \mathbb Z_4 μZ4 加密在 LWE 密文中,密文的代数结构是 Z q n + 1 \mathbb Z_q^{n+1} Zqn+1,它仅支持同态加法,可以容忍极高的噪声比率 q / 8 q/8 q/8
  2. 使用 RLWE 密文(自举秘钥是 RGSW 密文)实现同态累加器,代数结构是 Z Q [ x ] / ( x N + 1 ) \mathbb Z_Q[x]/(x^N+1) ZQ[x]/(xN+1),要求 q ∣ 2 N q|2N q∣2N 使得这个分圆环包含 q q q 阶循环子群 ⟨ x 2 N / q ⟩ \langle x^{2N/q}\rangle x2N/q
  3. 基于 AP 或者 GINX 策略,实现 FHEW 和 TFHE 的两种累加器
  4. 自举程序的输入是 LWE 密文,使用累加器计算出内积,然后查表提取出解密结果(此时的密文代数结构 Z Q N + 1 \mathbb Z_Q^{N+1} ZQN+1),最后执行秘钥-维度-模数切换

RLWE Encryption

分园环 R = Z [ x ] / ( x N + 1 ) R=\mathbb Z[x]/(x^N+1) R=Z[x]/(xN+1),RLWE 密文模数 Q ∈ Z Q \in \mathbb Z QZ,密文代数结构 R Q = R / Q R R_Q=R/QR RQ=R/QR

私钥 s ∈ R s \in R sR,明文 m ∈ R Q m \in R_Q mRQ,随机带 a ← R Q a \gets R_Q aRQ,离散高斯噪声 e ← χ σ e \gets \chi_\sigma eχσ(根据 [ACC+18] 的标准化建议,实用 σ ≈ 3.2 \sigma\approx 3.2 σ3.2,理论 σ = N \sigma=\sqrt N σ=N ),那么对称加密:
R L W E s ( m ) = ( a , a s + e + m ) ∈ R Q 2 RLWE_s(m) = (a, as+e+m) \in R_Q^2 RLWEs(m)=(a,as+e+m)RQ2

解密运算
R L W E s − 1 ( a , b ) = b − a s = m + e ∈ R Q RLWE_s^{-1}(a,b) = b-as=m+e \in R_Q RLWEs1(a,b)=bas=m+eRQ

噪声项 E r r ( ( a , b ) ; m ) = b − a s − m = e ∈ R Q Err((a,b);m)=b-as-m=e \in R_Q Err((a,b);m)=basm=eRQ

根据 [Mic19],弱线性同态的对称加密,可以扩展为线性同态的对称/公钥加密:对常数做 radix- B g B_g Bg 分解(共 d g = log ⁡ B g Q d_g=\log_{Bg}Q dg=logBgQ 比特),对明文做 power of B g B_g Bg 预处理,
R L W E s ′ ( m ) = ( R L W E s ( m ) , R L W E s ( B g m ) , ⋯   , R L W E s ( B g d g − 1 m ) ) RLWE_s'(m) = (RLWE_s(m),RLWE_s(B_gm),\cdots,RLWE_s(B_g^{d_g-1}m)) RLWEs(m)=(RLWEs(m),RLWEs(Bgm),,RLWEs(Bgdg1m))

这实际上就是 Gadget Matrix,它本身就有一定的纠错能力,因此不需要再用 scaling 纠错。给定常数 r ∈ R Q r \in R_Q rRQ,分解为 ∑ i r i B g i \sum_i r_i B_g^i iriBgi,那么定义 ⊙ : R × R L W E ′ → R L W E \odot:R \times RLWE' \to RLWE :R×RLWERLWE 运算,
r ⊙ R L W E s ′ ( m ) : = ∑ i r i ⋅ R L W E s ( B g i m ) = R L W E s ( ∑ i r i B g i ⋅ m ) r \odot RLWE_s'(m) := \sum_i r_i \cdot RLWE_s(B_g^im) = RLWE_s(\sum_i r_iB_g^i \cdot m) rRLWEs(m):=iriRLWEs(Bgim)=RLWEs(iriBgim)

最坏情况下,同态数乘导致的噪声增长是 d g ⋅ log ⁡ B g Q d_g \cdot \log_{B_g} Q dglogBgQ 因子。容易扩展到 ⊙ ′ : R × R L W E ′ → R L W E ′ \odot':R \times RLWE' \to RLWE' :R×RLWERLWE 运算,
r ⊙ ′ C : = ( r ⊙ C , B g r ⊙ C , ⋯   , B g d g − 1 r ⊙ C ) r \odot' C := (r \odot C,B_gr \odot C,\cdots,B_g^{d_g-1}r \odot C) rC:=(rC,BgrC,,Bgdg1rC)

于是 R L W E ′ RLWE' RLWE 就是运算 ⊙ ′ \odot' 下的线性同态的对称加密方案。[Mic19] 指出,线性解密函数可以在线性同态下执行:我们用 R L W E ′ RLWE' RLWE 加密 ( − s , 1 ) ⋅ m (-s,1)\cdot m (s,1)m 的两个分量,
R G S W s ( m ) : = ( R L W E s ′ ( − s ⋅ m ) , R L W E s ′ ( m ) ) RGSW_s(m) := (RLWE_s'(-s \cdot m), RLWE_s'(m)) RGSWs(m):=(RLWEs(sm),RLWEs(m))

这恰好等价于 RGSW 密文: ( − 1 , 0 ) (-1,0) (1,0) s s s 的无噪声密文, ( 0 , m ) (0,m) (0,m) m m m 的无噪声密文,于是
R L W E s ′ ( − s ⋅ m ) = R L W E s ′ ( 0 ) + ( m , 0 ) d g R L W E s ′ ( m ) = R L W E s ′ ( 0 ) + ( 0 , m ) d g \begin{aligned} RLWE_s'(-s \cdot m) &= RLWE_s'(0) + (m,0)^{d_g}\\ RLWE_s'(m) &= RLWE_s'(0) + (0,m)^{d_g}\\ \end{aligned} RLWEs(sm)RLWEs(m)=RLWEs(0)+(m,0)dg=RLWEs(0)+(0,m)dg

对比 [AP14] 给出的 GSW 对称变体,采取 Gadget 矩阵 G = I ⊗ ( 1 , B g , ⋯   , B g d g − 1 ) G=I \otimes (1,B_g,\cdots,B_g^{d_g-1}) G=I(1,Bg,,Bgdg1),容易发现它们是完全一样的密文。

给定 ( a , b ) = R L W E s ( m 0 ; e 0 ) (a,b) = RLWE_s(m_0;e_0) (a,b)=RLWEs(m0;e0) ( c , c ′ ) = R G S W s ( m 1 ; ( e 1 , e 1 ′ ) ) (c,c')=RGSW_s(m_1;(e_1,e_1')) (c,c)=RGSWs(m1;(e1,e1)),我们定义外积 ∘ : R L W E × R G S W → R L W E \circ: RLWE \times RGSW \to RLWE :RLWE×RGSWRLWE
( a , b ) ∘ ( c , c ′ ) : = a ⊙ c + b ⊙ c ′ = R L W E s ( ( m 0 + e 0 ) ⋅ m 1 ) (a,b) \circ (c,c') := a \odot c + b \odot c' = RLWE_s((m_0+e_0) \cdot m_1) (a,b)(c,c):=ac+bc=RLWEs((m0+e0)m1)

这里的 m 1 e 0 m_1e_0 m1e0 是额外的噪声项(另外还有 ( e 1 + e 1 ′ ) ⋅ B g log ⁡ B g Q (e_1+e_1') \cdot B_g\log_{B_g}Q (e1+e1)BglogBgQ 的隐藏噪声项)。一般我们选取 RGSW 明文是一个范数极小的环元素,通常是 m 1 = ± x v m_1=\pm x^v m1=±xv,导致产生的偏差 ∥ m 1 e 0 ∥ = ∥ e 0 ∥ \|m_1e_0\|=\|e_0\| m1e0=e0 很小。

容易把它扩展为 ∘ ′ : R L W E ′ × R G S W → R L W E ′ \circ': RLWE' \times RGSW \to RLWE' :RLWE×RGSWRLWE
( c 0 , ⋯   , c d g − 1 ) ∘ ′ C : = ( c 0 ∘ C , ⋯   , c d g − 1 ∘ C ) (c_0,\cdots,c_{d_g-1}) \circ' C := (c_0\circ C,\cdots,c_{d_g-1}\circ C) (c0,,cdg1)C:=(c0C,,cdg1C)

继续扩展为内积 ∘ ′ ′ : R G S W × R G S W → R G S W \circ'': RGSW \times RGSW \to RGSW ′′:RGSW×RGSWRGSW
( c , c ′ ) ∘ ′ ′ C : = ( c ∘ ′ C , c ′ ∘ ′ C ) (c,c') \circ'' C := (c \circ' C, c' \circ' C) (c,c)′′C:=(cC,cC)

当我们只需要 RLWE 密文时,只需要最简单的外积 ∘ \circ 即可,这比计算 RGSW 内积 ∘ ′ ′ \circ'' ′′ 的计算复杂度低得多(降低了 2 d g 2d_g 2dg 因子)

Bootstrapping

回顾下,

  • LWE 方案:私钥 s ∈ Z n s \in \mathbb Z^n sZn,密文模数 q q q,密文的代数结构是 Z q n + 1 \mathbb Z_q^{n+1} Zqn+1,平凡明文的代数结构是 Z q \mathbb Z_q Zq,考虑纠错码的明文代数结构是 Z t \mathbb Z_t Zt,一般采用形如 q / t ⋅ μ ∈ Z q q/t \cdot\mu \in \mathbb Z_q q/tμZq 的编码格式
  • RLWE 方案:私钥 k ∈ R = Z [ x ] / ( x N + 1 ) k \in R=\mathbb Z[x]/(x^N+1) kR=Z[x]/(xN+1),密文模数 Q Q Q,密文的代数结构是 R Q 2 R_Q^2 RQ2,平凡明文的代数结构是 R Q R_Q RQ,不考虑纠错码
  • 需要满足 q ∣ 2 N q|2N q∣2N,从而存在 q q q 阶循环子群 ⟨ x 2 N / q ⟩ ⊆ R Q \langle x^{2N/q}\rangle \subseteq R_Q x2N/qRQ
  • 需要满足 Q ≫ q Q\gg q Qq,从而使得自举结果的噪声比率足够低

对 LWE 密文 ( a , b ) (a,b) (a,b) 自举时,

  1. 首先同态计算线性函数 v = b − ⟨ a , s ⟩ v=b-\langle a,s\rangle v=ba,s,它是消息 μ ∈ Z t \mu \in \mathbb Z_t μZt 的带噪纠错码字
  2. 然后同态地查表得到 f ( v ) f(v) f(v) 的值,这里的 f : Z q → Z Q f: \mathbb Z_q \to \mathbb Z_Q f:ZqZQ 是反循环函数,满足 f ( v + q / 2 ) = − f ( v ) f(v+q/2)=-f(v) f(v+q/2)=f(v)
  3. 最后整理 f ( v ) ∈ Z Q f(v) \in \mathbb Z_Q f(v)ZQ,得到 q / t ⋅ μ ∈ Z q q/t \cdot\mu \in \mathbb Z_q q/tμZq

FHEW 利用基于 RGSW 构造的同态累加器实现上述三个步骤,TFHE 使用 RGSW 和 RLWE 外积加速了同态累加器的实现。[MP21] 进一步采取了两种优化手段:

  1. 如果函数 f f f 是公开的,我们将常数 b b b 直接反序存储到多项式中,形如 ∑ i f ( b − i ) ⋅ x i \sum_i f(b-i) \cdot x^i if(bi)xi,这使得提取 f ( v ) f(v) f(v) 更加方便。否则类似 FHEW 那样,需要利用 X v X^v Xv 是消息 v v vone-hot 向量编码,再与 LUT 向量 [ f ( i ) ] i [f(i)]_i [f(i)]i内积才能提取出 f ( v ) f(v) f(v)
  2. 如果自举结果仅是 LWE 密文,那么累加器的状态值只需要是单个 RLWE 密文(而非 RGSW 密文,它含 2 d g 2d_g 2dg 个 RLWE 密文),使用外积做累加(而非内积)

[MP21] 的同态累加器构造如下:

  • Initialize 阶段,简记为 A C C f ← v ACC_f \gets v ACCfv

    • 公开的反循环函数 f : Z q → Z Q f: \mathbb Z_q \to \mathbb Z_Q f:ZqZQ,常数值 v ∈ Z q v \in \mathbb Z_q vZq

    • 构造 Lookup Table 为多项式,简记 X = x 2 N / q X=x^{2N/q} X=x2N/q q q q 阶循环子群的生成元,
      m ( x ) : = ∑ i = 0 q / 2 − 1 f ( v − i ) ⋅ X i ∈ R Q m(x) := \sum_{i=0}^{q/2-1} f(v-i) \cdot X^{i} \in R_Q m(x):=i=0q/21f(vi)XiRQ

    • 状态是无噪声 RLWE 密文, A C C f : = R L W E k ( m ) = ( 0 , m ) ∈ R Q 2 ACC_f:=RLWE_k(m)=(0,m) \in R_Q^2 ACCf:=RLWEk(m)=(0,m)RQ2

  • Update 阶段,简记为 A C C f ← + c ⋅ E ( s ) ACC_f \overset{+}{\gets} c \cdot E(s) ACCf+cE(s)

    • 秘密值 s ∈ Z q s \in \mathbb Z_q sZq 的加密 E ( s ) E(s) E(s)(根据 AP 策略、GINX 策略,对应的实现也不同),常数 c ∈ Z q c \in \mathbb Z_q cZq

    • 符号 c ⋅ E ( s ) c \cdot E(s) cE(s) 代表同态数乘/盲旋转(也依赖于策略),计算出
      R L W E k ( m ⋅ X c ⋅ s ( m o d q ) ) RLWE_k(m \cdot X^{c\cdot s \pmod q}) RLWEk(mXcs(modq))

  • Extract 阶段,简记为 f ( A C C f ) f(ACC_f) f(ACCf)

    • 现在累加器的状态为
      R L W E k ( m ⋅ X ∑ c ⋅ s ( m o d q ) ) = ( a , b ) ∈ R Q 2 RLWE_k(m \cdot X^{\sum c\cdot s \pmod q}) = (a,b) \in R_Q^2 RLWEk(mXcs(modq))=(a,b)RQ2

    • 我们提取出明文多项式的常数项,
      L W E z ( f ( v − ∑ c ⋅ s ) ) = ( a , b 0 ) ∈ Z Q N + 1 LWE_z(f(v-\sum c \cdot s)) = (a,b_0) \in \mathbb Z_Q^{N+1} LWEz(f(vcs))=(a,b0)ZQN+1

      这里 z = ( k 0 , − k N − 1 , ⋯   , − k 1 ) ∈ Z Q N z=(k_0,-k_{N-1},\cdots,-k_1) \in \mathbb Z_Q^N z=(k0,kN1,,k1)ZQN 是私钥 k ∈ R Q k \in R_Q kRQ转置(transpose)。有时人们采取 a ∈ R Q a \in R_Q aRQ 的转置,以保持 k k k 原始顺序,这更加自然方便。

    • 假设 RLWE 的噪声是 e ( x ) ∈ R Q e(x) \in R_Q e(x)RQ,那么 b 0 − ⟨ a , z ⟩ = f ( v − ∑ c ⋅ s ) + e 0 ∈ Z Q b_0-\langle a,z\rangle = f(v-\sum c \cdot s)+e_0 \in \mathbb Z_Q b0a,z=f(vcs)+e0ZQ,做一些后处理得到 L W E s ( μ ∈ Z t ) = ( a ′ , b ′ ) ∈ Z q n + 1 LWE_s(\mu \in \mathbb Z_t)=(a',b') \in \mathbb Z_q^{n+1} LWEs(μZt)=(a,b)Zqn+1

下面,我们根据 [AP14] 和 [GINX16] 的自举策略,实例化 FHEW 和 TFHE 的同态累加器。

Rounding & Gates

在自举之前,我们先确定函数 f : Z q → Z Q f:\mathbb Z_q \to \mathbb Z_Q f:ZqZQ 的设置。

根据 FHEW 的设计,我们使用 m 1 , m 2 ∈ Z 4 m_1,m_2 \in \mathbb Z_4 m1,m2Z4 的算术加法,计算出 m 1 + m 2 ∈ Z 4 m_1+m_2 \in \mathbb Z_4 m1+m2Z4,容易验证 L S B ( m 1 + m 2 ) = X O R ( m 1 , m 2 ) ∈ Z 2 LSB(m_1+m_2)=XOR(m_1,m_2) \in \mathbb Z_2 LSB(m1+m2)=XOR(m1,m2)Z2 以及 M S B ( m 1 + m 2 ) = A N D ( m 1 , m 2 ) ∈ Z 2 MSB(m_1+m_2)=AND(m_1,m_2) \in \mathbb Z_2 MSB(m1+m2)=AND(m1,m2)Z2

假设 L W E s ( q / 4 ⋅ m i ) = ( a i , b i ) LWE_s(q/4 \cdot m_i)=(a_i,b_i) LWEs(q/4mi)=(ai,bi) 的噪声项 ∥ e i ∥ < q / 16 \|e_i\| < q/16 ei<q/16,那么 L W E s ( q / 4 ⋅ ( m 1 + m 2 ) ) = ( a 1 + a 2 , b 1 + b 2 ) LWE_s(q/4\cdot(m_1+m_2))=(a_1+a_2,b_1+b_2) LWEs(q/4(m1+m2))=(a1+a2,b1+b2) 的噪声项满足 ∥ e 1 + e 2 ∥ < q / 8 \|e_1+e_2\| < q/8 e1+e2<q/8,于是缩放倍率 q / 4 q/4 q/4 的纠错码可以解码出正确的消息。

NAND 门对应的映射 N A N D : Z 4 × Z 4 → Z 4 NAND:\mathbb Z_4 \times \mathbb Z_4 \to \mathbb Z_4 NAND:Z4×Z4Z4
0 ↦ 1 ,    1 ↦ 1 ,    2 ↦ 0    ( 3 ↦ 0 ) 0\mapsto1,\,\,1\mapsto1,\,\,2\mapsto0\,\,(3\mapsto0) 01,11,20(30)

添加上纠错机制, f ′ : Z q → Z Q f':\mathbb Z_q \to \mathbb Z_Q f:ZqZQ 定义为
{ 0 , q / 4 } + ( − q / 8 , q / 8 ) = ( − q / 8 , 3 q / 8 ) ↦ Q / 4 { 2 q / 4 , 3 q / 4 } + ( − q / 8 , q / 8 ) = ( 3 q / 8 , 7 q / 8 ) ↦ 0 \begin{array}{lclcl} \{0,q/4\} + (-q/8,q/8)&=&(-q/8,3q/8) &\mapsto& Q/4\\ \{2q/4,3q/4\} + (-q/8,q/8)&=&(3q/8,7q/8) &\mapsto& 0\\ \end{array} {0,q/4}+(q/8,q/8){2q/4,3q/4}+(q/8,q/8)==(q/8,3q/8)(3q/8,7q/8)Q/40

另外,自举程序限制了 f f f 是反循环的, f ( v + q / 2 ) = − f ( v ) f(v+q/2)=-f(v) f(v+q/2)=f(v),因此我们把 f ′ f' f 再环面上旋转 − Q / 8 -Q/8 Q/8 相位,得到的 f : Z q → Z Q f:\mathbb Z_q \to \mathbb Z_Q f:ZqZQ 定义为
( − q / 8 , 3 q / 8 ) ↦ Q / 8 ( 3 q / 8 , 7 q / 8 ) ↦ − Q / 8 \begin{array}{lcr} (-q/8,3q/8) &\mapsto& Q/8\\ (3q/8,7q/8) &\mapsto& -Q/8\\ \end{array} (q/8,3q/8)(3q/8,7q/8)Q/8Q/8

我们对 L W E s ( q / 4 ⋅ ( m 1 + m 2 ) ) LWE_s(q/4 \cdot (m_1+m_2)) LWEs(q/4(m1+m2)) 应用关于上述 f f f 的自举程序,然后再把它旋转 Q / 8 Q/8 Q/8 相位回到 f ′ f' f,这就得到了 L W E k ( Q / 4 ⋅ N A N D ( m 1 , m 2 ) ) LWE_k(Q/4 \cdot NAND(m_1,m_2)) LWEk(Q/4NAND(m1,m2)),最后再执行一个 Key-Switch 即可。

  • 其他二元门 X O R 、 A N D 、 O R XOR、AND、OR XORANDOR 的计算也都是类似的
  • 一元门 N O T NOT NOT 仅仅是同态的常数加法, ( a , b ) ↦ ( − a , q / 4 − b ) (a,b) \mapsto (-a,q/4-b) (a,b)(a,q/4b)
  • 三元门 M a j o r Major Major 也可以使用 Z 4 \mathbb Z_4 Z4 的算术加法来模拟,先计算 m 1 + m 2 + m 2 m_1+m_2+m_2 m1+m2+m2,然后将 0 , 1 ↦ 0 0,1 \mapsto 0 0,10 以及 2 , 3 ↦ 1 2,3 \mapsto 1 2,31

各种布尔函数的反循环函数 f f f 的汇总,

在这里插入图片描述

AP/FHEW

AP 策略的累加器 A C C f ← + c ⋅ E ( s ) ACC_f \overset{+}{\gets} c \cdot E(s) ACCf+cE(s),假设初始时 A C C f = R L W E k ( m ) ACC_f=RLWE_k(m) ACCf=RLWEk(m)

  • KeyGen 阶段:我们设置密文 c ∈ Z q c \in \mathbb Z_q cZq 的 radix- B r B_r Br 分解,位数 d r = log ⁡ B r q d_r=\log_{B_r} q dr=logBrq,定义形状 d r × ( B r − 1 ) d_r \times (B_r-1) dr×(Br1) 的 RGSW 密文矩阵:

    E ( s ) : = { Z j , v = R G S W k ( X s ⋅ v B r j ( m o d q ) ) ∣ j = [ d r ] , v ∈ [ B r ] , v ≠ 0 } E(s) := \{Z_{j,v}=RGSW_k(X^{s \cdot vB_r^j \pmod q})\mid j=[d_r],v \in [B_r],v \neq 0\} E(s):={Zj,v=RGSWk(XsvBrj(modq))j=[dr],v[Br],v=0}

    其中的 X = x 2 N / q ∈ R Q X=x^{2N/q} \in R_Q X=x2N/qRQ 是循环子群生成元。实际上, E ( s ) E(s) E(s) 就是枚举了全部的 c c c 的可能取值,采取 B r B_r Br 进制分解仅仅是出于 time/space trade-off 考虑。

  • Update 阶段:我们分解 c ∈ Z q c \in \mathbb Z_q cZq 成为 ∑ i c i B r i \sum_i c_i B_r^i iciBri,利用 c i c_i ci 挑选 E ( s ) E(s) E(s) 的分量。迭代计算连续的外积 ∘ : R L W E × R G S W → R L W E \circ:RLWE \times RGSW \to RLWE :RLWE×RGSWRLWE
    A C C f ← A C C f ∘ Z j , c j ,    j = 0 , 1 , ⋯   , d r − 1 ACC_f \gets ACC_f \circ Z_{j,c_j},\,\, j=0,1,\cdots,d_r-1 ACCfACCfZj,cj,j=0,1,,dr1

    容易验证迭代的最终结果是
    R L W E k ( m ⋅ X s ⋅ ∑ c i B r i ) = R L W E k ( m ⋅ X s ⋅ c ) RLWE_k(m \cdot X^{s \cdot \sum c_i B_r^i}) = RLWE_k(m\cdot X^{s \cdot c}) RLWEk(mXsciBri)=RLWEk(mXsc)

FHEW 的完整 NAND 门的同态运算如下:

在这里插入图片描述

GINX/TFHE

GINX 策略的累加器 A C C f ← + c ⋅ E ( s ) ACC_f \overset{+}{\gets} c \cdot E(s) ACCf+cE(s),假设初始时 A C C f = R L W E k ( m ) ACC_f=RLWE_k(m) ACCf=RLWEk(m)

  • KeyGen 阶段:我们设置私钥 s ∈ Z q s \in \mathbb Z_q sZq 的 radix- U U U 分解, s = ∑ u ∈ U s u ⋅ u s=\sum_{u \in U} s_u \cdot u s=uUsuu,其中 U ⊆ Z q U \subseteq \mathbb Z_q UZq 是某子集,使得 s u ∈ { 0 , 1 } s_u \in \{0,1\} su{0,1} 仅仅是二值的。定义长度 ∣ U ∣ |U| U 的 RGSW 密文向量:
    E ( s ) : = { Z u = R G S W k ( s u ) ∣ s ⃗ ∈ { 0 , 1 } U , s = ∑ u u ⋅ s u } E(s) := \{Z_{u}=RGSW_k(s_u)\mid \vec s \in \{0,1\}^U,s=\sum_u u\cdot s_u\} E(s):={Zu=RGSWk(su)s {0,1}U,s=uusu}

    实际上,这里 E ( s ) E(s) E(s) 就是 MUX-Gate 的控制位,[MP21] 利用自举的线性将它用 U U U 做了扩展(如果简单使用 Equality Test 构造 Multi-Input MUX,这会是一个高次多项式)。对于 { 0 , 1 } \{0,1\} {0,1} 的秘密,选取 U = { 1 } U=\{1\} U={1};对于 { 0 , ± 1 } \{0,\pm1\} {0,±1} 秘密,选取 U = { ± 1 } U=\{\pm 1\} U={±1};对于 Z q \mathbb Z_q Zq 中的秘密,选取 U = { 1 , 2 , 4 , ⋯   , 2 log ⁡ 2 q − 1 } U=\{1,2,4,\cdots,2^{\log_2q-1}\} U={1,2,4,,2log2q1}

  • Update 阶段:我们根据 c c c 构造 MUX-based OBDD 为 M U X ( s , m ⋅ X 0 , m ⋅ X c ) MUX(s,m \cdot X^0,m \cdot X^{c}) MUX(s,mX0,mXc),设置 Z ˉ u = G − Z u \bar Z_u=G-Z_u Zˉu=GZu,迭代计算
    A C C f ← A C C f ∘ Z ˉ u + ( X u ⋅ c ⋅ A C C f ) ∘ Z u ,    ∀ u ∈ U ACC_f \gets ACC_f \circ \bar Z_{u} + (X^{u \cdot c} \cdot ACC_f) \circ Z_u,\,\, \forall u \in U ACCfACCfZˉu+(XucACCf)Zu,uU

    其中的 X = x 2 N / q ∈ R Q X=x^{2N/q} \in R_Q X=x2N/qRQ 是循环子群生成元。由于 M U X ( x , y , z ) = ( 1 − x ) ⋅ y + x ⋅ z = y + x ⋅ ( z − y ) MUX(x,y,z)=(1-x)\cdot y+x\cdot z = y+x\cdot(z-y) MUX(x,y,z)=(1x)y+xz=y+x(zy),因此我们可以把上述的 MUX 化简到只需要单个外积
    A C C f ← A C C f + ( X u ⋅ c − 1 ) ⋅ ( A C C f ∘ Z u ) ,    ∀ u ∈ U ACC_f \gets ACC_f + (X^{u \cdot c} -1) \cdot(ACC_f \circ Z_u),\,\, \forall u \in U ACCfACCf+(Xuc1)(ACCfZu),uU

    容易验证迭代的最终结果是
    R L W E k ( m ⋅ X c ⋅ ∑ u ⋅ s u ) = R L W E k ( m ⋅ X s ⋅ c ) RLWE_k(m \cdot X^{c \cdot \sum u \cdot s_u}) = RLWE_k(m\cdot X^{s \cdot c}) RLWEk(mXcusu)=RLWEk(mXsc)

TFHE 的完整 NAND 门的同态运算如下:

在这里插入图片描述

Comparison

[MP21] 选择了三种私钥分布:二元均匀、三元均匀、高斯分布。对于高斯分布,依据 [ACC+18] 的建议,选择了 σ ≈ 3.2 \sigma\approx 3.2 σ3.2 σ = n \sigma=\sqrt{n} σ=n 两种设置。对于 FHEW,他们选择了 B r = 2 B_r=2 Br=2(公钥小)和 B r = 32 B_r=32 Br=32(速度快),甚至可以极端的选取 B r = q B_r=q Br=q(速度与原始 TFHE 相同,但是自举秘钥巨大)。

Runtime

我们用 R Q R_Q RQ 上的 NTT 次数,作为自举复杂度的理论估计,

  • AP/FHEW:在 a a a 中有 n n n 个常数,每个 c c c 分解为 d r d_r dr 位,期望上每位有 1 / B r 1/B_r 1/Br 的概率 c j = 0 c_j=0 cj=0,每个外积的 RGSW 和 RLWE 需要 2 d g + 2 2d_g+2 2dg+2,共计需要 2 ⋅ ( 1 − 1 / B r ) ⋅ n d r ( d g + 1 ) 2\cdot (1-1/B_r) \cdot nd_r(d_g+1) 2(11/Br)ndr(dg+1) 次 NTT
  • GINX/TFHE:在 a a a 中有 n n n 个常数,每个 c c c U U U 累加,每个外积的 RGSW 和 RLWE 需要 2 d g + 2 2d_g+2 2dg+2,共计需要 2 ⋅ ∣ U ∣ ⋅ n ( d g + 1 ) 2\cdot |U|\cdot n(d_g+1) 2Un(dg+1) 次 NTT

因此,理论上的计算复杂度比值为 ∣ U ∣ ( 1 − 1 / B r ) d r \dfrac{|U|}{(1-1/B_r)d_r} (11/Br)drU

在这里插入图片描述

TFHE 仅在二元均匀分布下具有明显的效率优势。对于三元均匀分布,TFHE 甚至比 B r = 32 B_r=32 Br=32 的 FHEW 略微慢一点儿。对于高斯分布,即使 B r = 2 B_r=2 Br=2 下的 FHEW 也比 TFHE 快不少。

Size of BK

我们用 R Q R_Q RQ 上的 NTT 次数,作为自举复杂度的理论估计,

  • AP/FHEW:在 s k sk sk 中有 n n n 个秘密,每个 s s s 构造出 ( B r − 1 ) d r (B_r-1)d_r (Br1)dr 个 RGSW 密文,每个 RGSW 密文含有 4 d g 4d_g 4dg 个环元素,每个环元素需要 N log ⁡ 2 Q N\log_2Q Nlog2Q 比特存储,共计需要 4 ⋅ ( B r − 1 ) d r ⋅ n N d g log ⁡ 2 Q 4\cdot (B_r-1)d_r \cdot nNd_g\log_2Q 4(Br1)drnNdglog2Q 比特
  • GINX/TFHE:在 s k sk sk 中有 n n n 个秘密,每个 s s s 构造出 ∣ U ∣ |U| U 个 RGSW 密文,每个 RGSW 密文含有 4 d g 4d_g 4dg 个环元素,每个环元素需要 N log ⁡ 2 Q N\log_2Q Nlog2Q 比特存储,共计需要 4 ⋅ ∣ U ∣ ⋅ n N d g log ⁡ 2 Q 4\cdot |U|\cdot nNd_g\log_2Q 4UnNdglog2Q 比特

因此,理论上的公钥规模比值为 ∣ U ∣ ( B r − 1 ) d r \dfrac{|U|}{(B_r-1)d_r} (Br1)drU

在这里插入图片描述

对于二元均匀、三元均匀,TFHE 的自举秘钥规模远小于 FHEW 的。而对于高斯分布,选取 B r = 2 B_r=2 Br=2 的 FHEW 的秘钥规模与 TFHE 接近。

Recommendation

[MP21] 建议:

  • 标准化 [ACC+18] 不考虑二元秘钥分布。[Mic18] 给出了 Standard LWE with Binary secrets下的归约,[EJK20] 展示了 Ring-LWE with Binary secrets 的由二元秘密的特殊性质所导致的弱点。
  • 对于三元秘钥分布,采取 TFHE 自举,选择 U = { − 1 , 1 } U=\{-1,1\} U={1,1}
  • 对于高斯秘钥分布,采取 FHEW 自举,选择 B r = 2 B_r=2 Br=2 以最小化自举秘钥规模,设置高斯分布的取值范围 [ − 8 , 8 ] [-8,8] [8,8](大约对应标准差 σ = 8 / 2 π ≈ 3.19 \sigma =8/\sqrt{2\pi}\approx 3.19 σ=8/2π 3.19,除了概率 P r [ x > 2 π ] = e r f c ( 2 π / 2 ) ≈ 0.0122 Pr[x>\sqrt{2\pi}]=erfc(\sqrt{2\pi}/\sqrt2)\approx0.0122 Pr[x>2π ]=erfc(2π /2 )0.0122 越界)

[MP21] 选取的参数集

在这里插入图片描述

经典 128 128 128 比特安全性参数集的效率

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值