参考文献:
- [KDE+23] Kim A, Deryabin M, Eom J, et al. General bootstrapping approach for RLWE-based homomorphic encryption[J]. IEEE Transactions on Computers, 2023.
- [BCC+22] Bae Y, Cheon J H, Cho W, et al. Meta-bts: Bootstrapping precision beyond the limit[C]//Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security. 2022: 223-234.
文章目录
BTS for CKKS
目前存在多种 CKKS 自举算法,它们的目标是将密文 c t ( s ) = m ∈ R q ct(s)=m \in R_q ct(s)=m∈Rq 转换为 c t ′ ( s ) = m ′ ∈ R Q ′ ct'(s)=m' \in R_{Q'} ct′(s)=m′∈RQ′,使得 Q ′ > q Q' > q Q′>q 以及 ∥ m − m ′ ∥ ∞ \|m-m'\|_\infty ∥m−m′∥∞ 误差很小。假设 q ∣ Q q|Q q∣Q,那么易知 c t ( s ) = m + q I ∈ R Q ct(s) = m+qI \in R_Q ct(s)=m+qI∈RQ,从而一个关键运算就是同态模约简。注意 CKKS 自举的目标是提升密文模数,而非减小噪声规模;事实上 CKKS 自举会引入额外的噪声,造成一定的精度损失。
-
[CHKKS18] 第一次给出了 CKKS 自举算法,它先用三角函数近似模约简,接着再用 Taylor 级数去近似三角函数,框架为:
- ModRaise, 执行模数提升,获得多项式 m + q I ∈ R Q m+qI \in R_Q m+qI∈RQ
- CtS,将此消息从系数表示切换到明文槽,为模约简做准备
- EvalMod, 使用多项式近似模约简函数,获得 m ′ ≈ m ∈ R Q ′ m' \approx m \in R_{Q'} m′≈m∈RQ′ 的各个系数
- StC, 将消息从明文槽切换回系数表示
-
[CCS19] 和 [HK20] 采用相同的思路,但是将 Taylor 级数替换为了 Chebyshev 插值,降低了近似多项式的度数,所需的乘法深度降低
-
[LLK+21] 和 [JM22] 将三角函数近似替换为 Inverse Sine 以及 Sine 级数,降低了三角函数的近似误差
-
[JM20] 和 [LLK+22] 直接对模约简做多项式近似,分别使用 Lagrange 插值以及最小二乘法,消除了中间的三角函数导致的近似误差,从而提高自举的精度
-
[BMTH21] 提出了 double-hoisting BSGS 的矩阵乘算法,使得 RNS-CKKS 的 StC 和 CtS 的速度更快
-
[KDE+23] 使用 FHEW/TFHE 自举 CKKS,可以获得较高的自举精度。然而 FHEW/TFHE 很难兼容批处理技术,因此对于大规模数据的自举效率很低。
在很多应用场景中,需要计算乘法深度很大的高精度的浮点数运算,因此高精度的 CKKS 自举算法是必要的。然而,为了更高的自举精度,就要减小噪声和模数的比值,出于安全考量就必须提高环的维度。为了达到 100 比特的精度,最先进的 [LLK+22] 需要 N = 2 17 N=2^{17} N=217,并且明文是稀疏的;[KDE+23] 可以在较小规模的参数下实现较高的自举精度,但是计算性能很差(没有采用 FHEW/TFHE 的批量自举)。
Meta-BTS
[BCC+22] 提出可以将 BTS 作为黑盒,首先对输入的密文 c t ( s ) = m ∈ R q ct(s)=m \in R_q ct(s)=m∈Rq 做一次自举来提升模数 c t ′ ( s ) = m + e ∈ R Q ′ ct'(s)=m+e \in R_{Q'} ct′(s)=m+e∈RQ′,可以计算出 [ c t ′ ( s ) ] q − c t ( s ) = e ∈ R q [ct'(s)]_q-ct(s)=e \in R_q [ct′(s)]q−ct(s)=e∈Rq,通过对 Bootstrapping error 再迭代 k − 1 k-1 k−1 次自举以消除它,从而提高自举的精度。在 OpenFHE 中提供了 k = 2 k=2 k=2 的实现,可以将自举精度加倍。
首先我们需要定义 BTS 的精度:令 CKKS 加密的消息 m ⃗ \vec m m 的范数上界是 2 r 2^r 2r,假设自举程序的噪声 e ⃗ \vec e e 的范数上界是 2 − n 2^{-n} 2−n,那么这之间的 r + n r+n r+n 比特就是准确值。我们称 r = 0 r=0 r=0 的 BTS 是标准的,也就是