迭代的 CKKS 高精度自举

博客介绍了多种CKKS自举算法,目标是提升密文模数,虽会引入额外噪声造成精度损失,但高精度算法在应用中必要。还阐述了Meta - BTS,通过迭代自举消除误差提高精度,可将固定精度算法转化为更高精度,所需参数规模更小、执行效率更高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文献:

  1. [KDE+23] Kim A, Deryabin M, Eom J, et al. General bootstrapping approach for RLWE-based homomorphic encryption[J]. IEEE Transactions on Computers, 2023.
  2. [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)=mRq 转换为 c t ′ ( s ) = m ′ ∈ R Q ′ ct'(s)=m' \in R_{Q'} ct(s)=mRQ,使得 Q ′ > q Q' > q Q>q 以及 ∥ m − m ′ ∥ ∞ \|m-m'\|_\infty mm 误差很小。假设 q ∣ Q q|Q qQ,那么易知 c t ( s ) = m + q I ∈ R Q ct(s) = m+qI \in R_Q ct(s)=m+qIRQ,从而一个关键运算就是同态模约简。注意 CKKS 自举的目标是提升密文模数,而非减小噪声规模;事实上 CKKS 自举会引入额外的噪声,造成一定的精度损失。

  • [CHKKS18] 第一次给出了 CKKS 自举算法,它先用三角函数近似模约简,接着再用 Taylor 级数去近似三角函数,框架为:

    1. ModRaise, 执行模数提升,获得多项式 m + q I ∈ R Q m+qI \in R_Q m+qIRQ
    2. CtS,将此消息从系数表示切换到明文槽,为模约简做准备
    3. EvalMod, 使用多项式近似模约简函数,获得 m ′ ≈ m ∈ R Q ′ m' \approx m \in R_{Q'} mmRQ 的各个系数
    4. 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)=mRq 做一次自举来提升模数 c t ′ ( s ) = m + e ∈ R Q ′ ct'(s)=m+e \in R_{Q'} ct(s)=m+eRQ,可以计算出 [ c t ′ ( s ) ] q − c t ( s ) = e ∈ R q [ct'(s)]_q-ct(s)=e \in R_q [ct(s)]qct(s)=eRq通过对 Bootstrapping error 再迭代 k − 1 k-1 k1 次自举以消除它,从而提高自举的精度。在 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} 2n,那么这之间的 r + n r+n r+n 比特就是准确值。我们称 r = 0 r=0 r=0 的 BTS 是标准的,也就是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值