New Work-flow of Circuit Bootstrapping

参考文献:

  1. [CGGI17] Chillotti I, Gama N, Georgieva M, et al. Faster packed homomorphic operations and efficient circuit bootstrapping for TFHE. ASIACRYPT 2017 (1): 377-408.
  2. [CDKS21] Chen H, Dai W, Kim M, et al. Efficient homomorphic conversion between (ring) LWE ciphertexts. ACNS 2021 (1): 460-479.
  3. [KLD+23] Kim A, Lee Y, Deryabin M, et al. LFHE: Fully homomorphic encryption with bootstrapping key size less than a megabyte[J]. Cryptology ePrint Archive, 2023.
  4. [DKMS24] De Micheli G, Kim D, Micciancio D, et al. Faster amortized FHEW bootstrapping using ring automorphisms. Public Key Cryptography 2024 (4): 322-353.
  5. [WWL+24] Wang R, Wen Y, Li Z, et al. Circuit Bootstrapping: Faster and Smaller. EUROCRYPT 2024 (2): 342-372.
  6. Leveled mode of TFHE
  7. Conversion Between (R)LWE
  8. 加权自动机:在 Semirings 上建模

LHE Mode

TFHE 除了有 FHE mode,还有 [CGGI17] 提出的 LHE mode:

  • 前者每个 Gate 都需要自举,利用 LinPoly + PBS 实现布尔运算;
  • 后者仅在噪声过大或者类型不符时才自举,利用 det-WFA + CMux-based OBDD + BSR 实现布尔运算。由于 RLWE 和 RGSW 外积的噪声增长不对称性,只要 RGSW 加密消息的范数很小(比如:布尔值、单项式),那么 LHE 的容许 CMux 深度就会很大。

自动机的运算:

在这里插入图片描述

决策树的运算:

在这里插入图片描述

比特序列表示的运算:

在这里插入图片描述

但是,它们都是用 CMux Gate 搭建的,控制位是 RGSW 密文(布尔值/单项式的 Powers-of-Base),数据位是 RLWE/LWE 密文(系数编码)。如果想要把数据位提升到控制位,就需要 LWE-to-RGSW 的密文转换,也就是 “电路自举”。

Original TFHE

[CGGI17] 的电路自举的工作流如下:

在这里插入图片描述

他们使用三组参数:

  • ( q ‾ , n ‾ ) (\underline{q}, \underline{n}) (q,n) 是 Level 0 的 LWE 参数集,存储数据,具有最高的噪声。模数和维度都尽可能小,使得自举更高效。
  • ( q , N ) (q,N) (q,N) 是 Level 1 的 RGSW 参数集,存储控制位。模数和维度的规模,决定了外积的效率和深度。
  • ( Q ‾ , N ‾ ) (\overline{Q}, \overline{N}) (Q,N) 是 Level 2 的 RLWE 参数集,用于 PBS 自举,具有最小的噪声。选取足够大的模数,获得所需的深度。

电路自举包含两个步骤:令 v = ( v 0 , v 1 , ⋯   , v l − 1 ) v=(v_0,v_1,\cdots,v_{l-1}) v=(v0,v1,,vl1) 是 RGSW 使用的 Gadget Vector,令 s k ‾ , s k , s k ‾ \underline{sk},sk,\overline{sk} sk,sk,sk 分别是三层的私钥。

  1. Functional Bootstrapping Step

    • 输入单个 Level-0 LWE 密文 L W E s k ‾ ( m ) LWE_{\underline{sk}}(m) LWEsk(m),使用 l l l 次 PBS 计算出 L W E s k ‾ ( m v i ) LWE_{\overline{sk}}(mv_i) LWEsk(mvi)
    • 这里可以使用 [CLOT21] 的 PBSmanyLUT 加速。
  2. Ciphertext Conversion Step

    • RGSW 密文的第一部分:使用 LWE-to-RLWE PubKS 过程,把 ( b , a ) = L W E s k ‾ ( m v i ) (b,a)=LWE_{\overline{sk}}(mv_i) (b,a)=LWEsk(mvi) 切换到 R L W E s k ( m v i ) RLWE_{sk}(mv_i) RLWEsk(mvi)

      使用的 KSK 是 R L W E s k ′ ( s k j ‾ ) RLWE'_{sk}(\overline{sk_j}) RLWEsk(skj),计算过程是
      ( b , 0 ) + ∑ j a j ⊙ R L W E s k ′ ( s k j ‾ ) (b,0) + \sum_j a_j \odot RLWE'_{sk}(\overline{sk_j}) (b,0)+jajRLWEsk(skj)

    • RGSW 密文的第二部分:使用 LWE-to-RLWE PriKS 过程,把 ( b , a ) = L W E s k ‾ ( m v i ) (b,a) = LWE_{\overline{sk}}(mv_i) (b,a)=LWEsk(mvi) 切换到 R L W E s k ( s k ⋅ m v i ) RLWE_{sk}(sk \cdot mv_i) RLWEsk(skmvi)

      使用的 KSK 是 R L W E s k ′ ( s k ⋅ s k j ‾ ) RLWE'_{sk}(sk \cdot \overline{sk_j}) RLWEsk(skskj) 以及 R L W E s k ′ ( s k ) RLWE'_{sk}(sk) RLWEsk(sk),计算过程是
      b ⊙ R L W E s k ′ ( s k ) + ∑ j a j ⊙ R L W E s k ′ ( s k ⋅ s k j ‾ ) b \odot RLWE'_{sk}(sk) + \sum_j a_j \odot RLWE'_{sk}(sk \cdot \overline{sk_j}) bRLWEsk(sk)+jajRLWEsk(skskj)

    • 最后把 R L W E s k ( m v i ) RLWE_{sk}(mv_i) RLWEsk(mvi) R L W E s k ( s k ⋅ m v i ) RLWE_{sk}(sk \cdot mv_i) RLWEsk(skmvi) 组装成 R G S W s k ( m ) RGSW_{sk}(m) RGSWsk(m) 密文即可。上述的 PubKS 和 PriKS 也可以采用 pre-computed variant,提高效率、降低噪声,代价是更大的 KSK 规模。

对于计算开销:使用 MV-PBS 之后,实际上 Ciphertext Conversion Step 占据了大部分。对于存储开销:也是 Ciphertext Conversion Step 中的 KSK 占据了大部分。

疑问:为何不使用 [CDKS21] 的基于自同构的 LWE-to-RLWE 呢?

  • [CGGI17] 的 PubKS 或 PriKS,需要 N ‾ \overline{N} N 次和标量 a j ∈ Z Q ‾ a_j \in \mathbb Z_{\overline Q} ajZQ(系数表示下分解和数乘)的外积运算,每次都需要 2 l N 2lN 2lN 次模乘,共计 2 l N ‾ N 2l\overline NN 2lNN
  • 基于自同构的 LWE-to-RLWE,需要 N ‾ / N ⋅ log ⁡ n \overline{N}/N \cdot\log n N/Nlogn 次和多项式 a ∈ R Q ‾ , n a \in R_{\overline Q,n} aRQ,n(系数表示下分解,再转化为 NTT 表示)的外积运算(长度 N ‾ \overline{N} N 的内积表示为 N ‾ / N \overline{N}/N N/N 个长度 N N N 的卷积),每次都需要 2 ( l + 1 ) N log ⁡ N + 2 l N 2(l+1)N\log N + 2lN 2(l+1)NlogN+2lN 次模乘,共计 2 ( l + 1 ) N ‾ log ⁡ 2 N + 2 l N ‾ log ⁡ N 2(l+1)\overline{N}\log^2 N + 2l\overline{N}\log N 2(l+1)Nlog2N+2lNlogN
  • 假如 N = 1024 N = 1024 N=1024,那么 log ⁡ 2 N = 100 ≪ N \log^2 N = 100 \ll N log2N=100N,效率提升应当十分显著,密钥规模也小得多,噪声方差会偏大 N ‾ log ⁡ N \overline{N}\log N NlogN 因子。

Novel Work Flow

[WWL+24] 提出了新的工作流,移除了 ACC to LWE 步骤,直接把 ACC 重构为 RGSW(实际上就是把 Extract 和基于自同构的 LWE-to-RLWE 合并了),从而消除了开销最大的 PubKS 和 PriKS 过程。

在这里插入图片描述

仅使用 Level 0 和 Level 2 两组参数集,新的电路自举流程是:

  1. PBS Without Sample Extraction

    • 输入单个 Level-0 LWE 密文 L W E s k ‾ ( m ) LWE_{\underline{sk}}(m) LWEsk(m),使用 l l l 次 PBS 计算出
      R L W E s k ‾ ( N ‾ − 1 m v i + ∑ k = 1 N ‾ − 1 y k X k ) RLWE_{\overline{sk}}(\overline{N}^{-1}mv_i+\sum_{k=1}^{\overline{N}-1}y_k X^k) RLWEsk(N1mvi+k=1N1ykXk)
      预期的明文在常数项(缩放 N ‾ − 1 \overline{N}^{-1} N1 抵消后续自同构的影响),其余的系数是冗余的。

    • 这里使用了 [WWL+24] 优化的 Automorphism-Based MV-PBS 算法。

  2. Ciphertext Conversion

  • RGSW 密文的第一部分:使用 [CDKS21] 提出的 Trace 稀疏分解算法(分圆塔),使用 Galois自同构 τ 2 k + 1 , k = log ⁡ N ‾ , ⋯   , 2 , 1 \tau_{2^k+1}, k=\log \overline{N},\cdots,2,1 τ2k+1,k=logN,,2,1 对应的 KSK,计算出 ( b , a ) = R L W E s k ‾ ( m v i ) (b,a) = RLWE_{\overline{sk}}(mv_i) (b,a)=RLWEsk(mvi)

  • RGSW 密文的第二部分:使用 [DKMS24] 提出的 RLWE’-to-RGSW 技术, 给定 S S K = R L W E s k ‾ ′ ( s k ‾ 2 ) SSK = RLWE'_{\overline{sk}}(\overline{sk}^2) SSK=RLWEsk(sk2),计算
    ( 0 , b ) + a ⊙ R L W E s k ‾ ′ ( s k ‾ 2 ) = R L W E s k ‾ ( s k ‾ ⋅ m v i + s k ‾ ⋅ e ) (0,b) + a \odot RLWE'_{\overline{sk}}(\overline{sk}^2) = RLWE_{\overline{sk}}(\overline{sk} \cdot mv_i + \overline{sk} \cdot e) (0,b)+aRLWEsk(sk2)=RLWEsk(skmvi+ske)
    其中 e ∈ R Q ‾ , N ‾ e \in R_{\overline{Q},\overline{N}} eRQ,N R L W E s k ‾ ( m v i ) RLWE_{\overline{sk}}(mv_i) RLWEsk(mvi) 的噪声。

  • 最后把 R L W E s k ‾ ( m v i ) RLWE_{\overline{sk}}(mv_i) RLWEsk(mvi) R L W E s k ‾ ( s k ‾ ⋅ m v i ) RLWE_{\overline{sk}}(\overline{sk} \cdot mv_i) RLWEsk(skmvi) 组装成 R G S W s k ‾ ( m ) RGSW_{\overline{sk}}(m) RGSWsk(m) 密文即可。

Ciphertext Conversion 的算法是:

在这里插入图片描述

总体的复杂度是:

在这里插入图片描述

疑问:文章说由于 step 2 无法切换维度,因此就把 RGSW 留在 Level 2 参数集。但是,这会导数 LHE 的计算开销较大(自举噪声和密钥切换噪声都累积在 Z Q ‾ \mathbb Z_{\overline{Q}} ZQ 的低位,它们没必要保留)。可以依然使用中等规模的参数 ( q , N ) (q,N) (q,N),可修改为:

  1. 使用 Ring-Swich 技术,额外要求 s k ‾ ∈ R N ≤ R N ‾ \overline{sk} \in R_{N} \le R_{\overline{N}} skRNRN,首先把 ACC 模切换到安全的模数 q q q,然后直接提取出维度 N N N 子环(含有所需的常数项),这几乎是免费的
  2. 现在 ACC 是参数 ( q , N ) (q,N) (q,N) 下的 RLWE 密文,执行 Trace 消除冗余系数,然后做成 RGSW 密文,执行 LHE 运算
  3. 这样做,step 1 完全不变(稀疏私钥的安全性),step 2 速度更快、存储更小

如果不想要稀疏私钥,也可以这么做:依旧提取出维度 N ‾ \overline{N} N 的 LWE 密文,然后分成 N ‾ / N \overline{N}/N N/N 个区间(内积 = 卷积),使用 [CDKS21] 的基于自同构的 LWE-to-RLWE 算法,仅需 N ‾ / N \overline{N}/N N/N 次调用,效率损失也很小。

Automorphism-Based PBS

[WWL+24] 使用了两种 PBS Without Sample Extraction 算法,其一是 CMux-based Blind Rotation,其二是 Automorphism-Based Blind Rotation。

[WWL+24] 对前者的 Level 0 使用二元秘密( ∥ s ∥ 2 2 = n ‾ / 2 \|s\|_2^2 = \underline{n}/2 s22=n/2),对后者的 Level 0 使用 σ = 3.2 \sigma=3.2 σ=3.2 的高斯秘密( ∥ s ∥ 2 2 = n ‾ σ 2 \|s\|_2^2 = \underline{n}\sigma^2 s22=nσ2)。为了降低模切换噪声(大约是 σ m s 2 = ( ∥ s ∥ 2 2 + 1 ) / 12 \sigma_{ms}^2 = (\|s\|_2^2+1)/12 σms2=(s22+1)/12),[WWL+24] 两者的 Level 2 都使用二元秘密。

Using Sparse Isomorphism

[LMK+23] 的基于自同构的自举,关键是使用了同构 Z 2 N ∗ ≅ Z N / 2 × Z 2 \mathbb Z_{2N}^* \cong \mathbb Z_{N/2} \times \mathbb Z_2 Z2NZN/2×Z2,生成元是 { g , − 1 } \{g,-1\} {g,1}。要求系数形如 2 k + 1 ∈ Z 2 N 2k+1 \in \mathbb Z_{2N} 2k+1Z2N,从而可以表示为 ± g j \pm g^{j} ±gj 形式,只需要准备 2 2 2 个 KSK,使用 Galois 自同构计算指数上的数乘 X a i ⋅ s i = τ ± g j ( X s i ) X^{a_i \cdot s_i} = \tau_{\pm g^j}(X^{s_i}) Xaisi=τ±gj(Xsi)

为了进一步提高自举效率(和 a i a_i ai 不同取值的数量有关),[WWL+24] 使用了更加稀疏的系数,形如 k ⋅ 2 ν + 1 ∈ Z 2 N k \cdot 2^\nu +1 \in \mathbb Z_{2N} k2ν+1Z2N,只要 N ≥ 8 N \ge 8 N8 并且 ν ≥ 2 \nu \ge 2 ν2,则它们构成了某个元素 g ∈ Z 2 N g \in \mathbb Z_{2N} gZ2N 生成的乘法循环群,只需要准备 1 1 1 个 KSK 即可。易知 o r d ( 5   m o d   2 N ) = N / 2 ord(5 \bmod 2N)=N/2 ord(5mod2N)=N/2,因此可以选取 g = 5 2 ν − 2 g=5^{2^{\nu-2}} g=52ν2

类似于 [LMK+23],只要系数 a i a_i ai 都具有 k ⋅ 2 ν + 1 k \cdot 2^\nu+1 k2ν+1 形式,那么就可以把内积写成关于 g g g 的多项式,再使用 Horner 法则整理为:
∑ i a i s i = P s ( g ) : = ∑ j ∈ I 0 s j + g ( ⋯ + g ( ∑ j ∈ I 2 N / 2 ν − 1 s j ) ) ( m o d 2 N ) \sum_i a_i s_i = P_s(g) := \sum_{j \in I_0} s_j + g\left(\cdots+g\left(\sum_{j \in I_{2N/2^\nu}-1}s_j\right)\right) \pmod{2N} iaisi=Ps(g):=jI0sj+g +g jI2N/2ν1sj (mod2N)
其中 I j = { i : a i = g j } , j = 0 , 1 , ⋯   , 2 N / 2 ν − 1 I_j = \{i: a_i = g^j\}, j=0,1,\cdots,2N/2^\nu-1 Ij={i:ai=gj},j=0,1,,2N/2ν1

由于 o r d ( g ) = 2 N / 2 ν ord(g) = 2N/2^\nu ord(g)=2N/2ν,盲旋转总共执行了 2 N / 2 ν − 1 2N/2^\nu-1 2N/2ν1 次串行的 τ g \tau_g τg 自同构,因此初始 ACC 加密 T V ( X ) TV(X) TV(X),则最终计算出 T V ( X g − 1 ) ⋅ X ∑ i a i s i TV(X^{g^{-1}}) \cdot X^{\sum_i a_i s_i} TV(Xg1)Xiaisi,因此需要预先把 test vector 扭曲 X → X g X \to X^g XXg,保证计算结果的正确性。

在执行盲旋转之前,使用 ⌊ x ⌉ k ⋅ 2 ν + 1 \lfloor x \rceil_{k \cdot 2^\nu+1} xk2ν+1 把 LWE 系数都舍入到合适的形式,这里的舍入噪声会比 [LMK+23] 更大。

在这里插入图片描述

也采用了 [LMK+23] 的窗口技术,进一步降低自同构的数量。

在这里插入图片描述

由于期望值难以计算,为了确定最优的窗口大小,他们使用 Monte Carlo simulation 统计出不同 w w w 对应的自同构数量。对于不同维度 N ′ = 2 N / 2 ν N' = 2N/2^\nu N=2N/2ν,试验出的最佳 w w w 是:

在这里插入图片描述

完整的 PBS 算法是:

在这里插入图片描述

MV-PBS

由于 LWE 密文舍入到的 ( b , a ) (b,a) (b,a) 都是 k ⋅ 2 ν + 1 k \cdot 2^\nu+1 k2ν+1 形式的整数,而非 2 ν 2^\nu 2ν 倍数,因此无法直接成为 Multi-Value PBS。可以采取很简单的技巧:
X b + ∑ i a i s i = X b + ∑ i ( a i + 1 ) s i − ∑ i s i X^{b+\sum_i a_is_i} = X^{b+\sum_i(a_i+1)s_i - \sum_i s_i} Xb+iaisi=Xb+i(ai+1)siisi
其中的 ( b , a ) (b,a) (b,a) 都是 2 ν 2^\nu 2ν 的倍数,从而 b + ∑ i a i s i b+\sum_i a_is_i b+iaisi 也都是 2 ν 2^\nu 2ν 的倍数。这额外需要 A U X = R G S W s k ‾ ( X − ∑ i s k ‾ i ) AUX = RGSW_{\overline{sk}}(X^{- \sum_i \underline{sk}_i}) AUX=RGSWsk(Xiski) 作为辅助信息。

用于电路自举的 MV-PBS 算法如下:计算符号函数、不做密文提取。

在这里插入图片描述

完整的 PBS 算法是:

在这里插入图片描述

Analysis & Parameters

为了减少 Gadget Vector 的长度,[WWL+24] 对于所有的外积都使用了 [KLD+23] 的 Approximate Gadget Decomposition,选取 B l < q B^l < q Bl<q,那么 v = ( δ , δ B , ⋯   , δ B l − 1 ) v = (\delta,\delta B,\cdots,\delta B^{l-1}) v=(δ,δB,,δBl1),其中 δ = ⌈ q / B l ⌉ \delta = \lceil q/B^l \rceil δ=q/Bl,近似误差 ϵ ≤ δ / 2 \epsilon \le \delta/2 ϵδ/2,环元素和 R L W E ′ ( m ) RLWE'(m) RLWE(m) 的外积噪声是 σ 2 ≤ l N B 2 σ f r e s h 2 / 12 + V a r ( m ) ⋅ ϵ 2 / 3 \sigma^2 \le lNB^2\sigma_{fresh}^2/12 + Var(m)\cdot\epsilon^2/3 σ2lNB2σfresh2/12+Var(m)ϵ2/3(减少了前者,增加了后者,做个平衡),其中 V a r ( m ) ≤ ∥ m ∥ 2 2 Var(m) \le \|m\|_2^2 Var(m)m22。如果是 R L W E RLWE RLWE R G S W RGSW RGSW 的外积,则还有 ∥ m ∥ 2 2 ⋅ σ R L W E 2 \|m\|_2^2 \cdot \sigma_{RLWE}^2 m22σRLWE2 的影响。

有五个不同的 Gadget Vector,它们的 R L W E ′ RLWE' RLWE 的消息格式为

  1. 执行 LHE mode 运算:维度 N ‾ \overline{N} N,模数 Q ‾ \overline{Q} Q,控制位形如 m = b X i , b ∈ { 0 , 1 } m=bX^i, b \in \{0,1\} m=bXi,b{0,1},因此 ∥ m ∥ 2 2 ≤ 1 \|m\|_2^2 \le 1 m221
  2. PBS 中的外积:维度 N ‾ \overline{N} N,模数 Q ‾ \overline{Q} Q,CMux-based 形如 m = s k ‾ i m=\underline{sk}_i m=ski(二元),Auto-based 形如 m = X s k ‾ i m=X^{\underline{sk}_i} m=Xski(高斯),都是 ∥ m ∥ 2 2 ≤ 1 \|m\|_2^2 \le 1 m221
  3. PBS 中的自同构:维度 N ‾ \overline{N} N,模数 Q ‾ \overline{Q} Q,CMux-based 中不存在,Auto-based 形如 m = s k ‾ ( X g j ) m=\overline{sk}(X^{g^j}) m=sk(Xgj),满足 ∥ m ∥ 2 2 ≤ N ‾ / 2 \|m\|_2^2 \le \overline{N}/2 m22N/2
  4. 密文转换中的迹映射:维度 N ‾ \overline{N} N,模数 Q ‾ \overline{Q} Q,形如 m = s k ‾ ( X g u ) m=\overline{sk}(X^{g^u}) m=sk(Xgu),满足 ∥ m ∥ 2 2 ≤ N ‾ / 2 \|m\|_2^2 \le \overline{N}/2 m22N/2
  5. 密文转换中的乘以私钥:维度 N ‾ \overline{N} N,模数 Q ‾ \overline{Q} Q,形如 m = s k ‾ 2 m=\overline{sk}^2 m=sk2(二元),满足 ∥ m ∥ 2 2 ≤ N ‾ 2 / 4 \|m\|_2^2 \le \overline{N}^2/4 m22N2/4

[WWL+24] 首先选取了 Level 0 和 Level 2 的维度和模数,然后固定 ν = 2 \nu=2 ν=2 以及 PBS 输入密文的最大容许噪声 σ i n 2 = 2 10 \sigma_{in}^2 = 2^{10} σin2=210(保证自举后的解密失败率足够小),最后选取不同的 Gadget Vector 参数(效率和深度的平衡)。

在这里插入图片描述

由于对 step 2 的优化,新电路自举算法的规模和效率都有很大的提升:

在这里插入图片描述

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值