参考文献:
- [AP13] Alperin-Sheriffff, J., Peikert, C.: Practical bootstrapping in quasilinear time. In: Canetti, R., Garay, J.A. (eds.) CRYPTO 2013. LNCS, vol. 8042, pp. 1–20. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-40041-4 1
- [EGM23] Eldefrawy K, Genise N, Manohar N. On the Hardness of Scheme-Switching Between SIMD FHE Schemes[C]//International Conference on Post-Quantum Cryptography. Cham: Springer Nature Switzerland, 2023: 196-224.
- Bit Extraction and Bootstrapping for BGV/BFV
文章目录
- Homomorphic Scheme-Switching
- Bootstrapping via a Weak Scheme-Switching Oracle
- Bootstrapping for CKKS
- Bootstrapping for BGV
- Switching using Bootstrapping
- Bootstrapping via a Comparison Oracle
- Comparison Oracles
- Bootstrapping for CKKS
- Bootstrapping for BGV
[EGM23] 证明了 Scheme-Switching 以及 Comparison 的困难度,给出了 BTS 到它们的归约。因此,方案切换和同态比较的计算复杂度不会很低,都与自举的复杂度相关联。
Homomorphic Scheme-Switching
根据 [AP13],可以使用标量乘法实现 BGV 和 BGV 之间的密文切换。现在,我们只关注 BGV 和 CKKS 之间的方案切换。[EGM23] 证明这是至少和 BTS 一样困难的问题。
首先,我们定义 Weak Scheme-Switching Oracles,这里的 “weak” 指的是不处理 encoding/decoding 问题,仅保证 m ( X ) ∈ R m(X) \in R m(X)∈R 是相同的。
当然,BGV 密文的相位是 m 1 ( X ) + p ⋅ e 1 ( X ) ∈ R Q 1 m_1(X)+p \cdot e_1(X) \in R_{Q_1} m1(X)+p⋅e1(X)∈RQ1,而 CKKS 密文的相位是 Δ ⋅ m 2 ( X ) + e 2 ( X ) ∈ R Q 2 \Delta \cdot m_2(X)+e_2(X) \in R_{Q_2} Δ⋅m2(X)+e2(X)∈RQ2,为了保证可以相互正确转换,最基本的要求是 ∥ f ( e 1 ) ∥ ∞ < Δ \|f(e_1)\|_\infty < \Delta ∥f(e1)∥∞<Δ 以及 ∥ m 2 ∥ ∞ < p / 2 \|m_2\|_\infty < p/2 ∥m2∥∞<p/2
接下来,我们定义 Strong Scheme-Switching Oracles,它保证 evaluation representation (slots) 的一致性。可以由 weak 版本再附加上 StC 和 CtS 线性变换来得到。
Bootstrapping via a Weak Scheme-Switching Oracle
[EGM23] 给出了从 Bootstrapping 到 Weak Scheme-Switching 的归约。乍一看 BTS 似乎是比 Weak SS 更复杂的任务,但实际上后者不比前者简单。
Bootstrapping for CKKS
我们可以用 BGV-to-CKKS 实现 CKKS-BTS:关键在于把 CKKS 密文 c t ( s ) = Δ m + e + q I ( X ) ∈ R ct(s) = \Delta m+e + qI(X) \in R ct(s)=Δm+e+qI(X)∈R 视为 BGV 密文。
设置其明文空间为 p = q p=q p=q,则消息是 Δ m + e \Delta m+e Δm+e,噪声是 I ( X ) I(X) I(X)。使用 BGV-to-CKKS 获得相位是 Δ ′ ( Δ m + e ) + e χ \Delta'(\Delta m+e)+e_\chi Δ′(Δm+e)+eχ 的 CKKS 密文,利用 RS 消除额外的缩放因子,获得原始相位的 CKKS 密文。
归约算法的示意图:
Bootstrapping for BGV
我们可以用 CKKS-to-BGV 实现 BGV-BTS:关键在于把 BGV 密文 c t ( s ) = z ∈ R ct(s) = z \in R ct(s)=z∈R,其中 q = p r + 1 q=p^r+1 q=pr+1,视为 CKKS 密文。
设置编码因子为 Δ = p r \Delta=p^r Δ=pr,则消息是 z [ r ] z[r] z[r],噪声是 z [ r − 1 : 0 ] z[r-1:0] z[r−1:0]。使用 CKKS-to-BGV 获得 z [ r ] z[r] z[r] 的 BGV密文,然后可以利用 [GHS12] 的简化解密算法,获得 m = [ [ z ] q ] p = [ z [ 0 ] − z [ r ] ] p m = [[z]_q]_p = [z[0]-z[r]]_p m=[[z]q]p=[z[0]−z[r]]p 的 BGV 密文。
归约算法的示意图:
Switching using Bootstrapping
利用 BTS 容易实现方案切换:关键在于把 BFV 密文 c t ( s ) = ⌊ Q / p ⌉ ⋅ m + e ct(s)=\lfloor Q/p\rceil \cdot m+e ct(s)=⌊Q/p⌉⋅m+e 视为 “耗尽的” CKKS 密文,其中 Δ = ⌊ Q / p ⌉ \Delta=\lfloor Q/p\rceil Δ=⌊Q/p⌉
构造 weak 版本的方案切换,
- 对于 BFV-to-CKKS,我们将 BFV 密文直接视为 CKKS 密文,调用 CKKS-BTS 提升模数,这就获得了具有足够计算容量的 CKKS 密文
- 对于 CKKS-to-BFV,我们将 CKKS 密文模切换到最底层,可以视为 BFV 密文,调用 BFV-BTS 消除噪声,这就获得了具有足够计算容量的 BFV 密文
由于 BGV 和 BFV 的密文很容易相互转换,这也就实现了 BGV 和 CKKS 之间的切换。
Bootstrapping via a Comparison Oracle
在机器学习中,Min/Max 和 ReLU 都大量的用到了比较运算。但是比较运算难以表示为低次多项式,同态下计算的效率很低。[EGM23] 给出了同态比较的困难度证明,它也至少和 BTS 一样困难。
Comparison Oracles
首先,分别定义 BGV 和 CKKS 中的比较运算,
注意,这里定义的是密文 c t ct ct 和标量 α \alpha α 之间的比较。一般的算法设计中,计算的是两个密文之间的比较。前者可以归约到后者(自行用 pk 加密就是了),[EGM23] 证明了 BTS 可以归约到前者。因此两个密文的比较,实际上是一个很难的问题。
Bootstrapping for CKKS
由于 CKKS 密文的相位是 c t ( s ) = m + e + q I ∈ R ct(s)=m+e+qI \in R ct(s)=m+e+qI∈R,满足 q I ≪ Q qI \ll Q qI≪Q,因此可以假设 ∥ I ∥ ∞ < K \|I\|_\infty < K ∥I∥∞<K,然后通过 log K \log K logK 次迭代,依次二分搜索获得 I = ∑ i 2 i I i I=\sum_i 2^iI_i I=∑i2iIi,从而消除它得到 m + e ∈ R Q m+e \in R_Q m+e∈RQ 的密文。
Bootstrapping for BGV
在 BGV 密文自举时,首先得到 z = a ⋅ s + b ( m o d p r + 1 ) z=a \cdot s +b \pmod{p^{r+1}} z=a⋅s+b(modpr+1) 下的密文,然后试图分别提取 z [ 0 ] z[0] z[0] 和 z [ r ] z[r] z[r],前者是自然的,而后者可以写作 z [ r ] = ∑ i 2 i z i z[r] = \sum_i 2^iz_i z[r]=∑i2izi,然后通过 log p \log p logp 次迭代的二分搜索来获得,从而完成 [GHS12] 的自举。