参考文献:
- [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: Bootstrap** precision beyond the limit[C]//Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security. 2022: 223-234.
文章目录
- BTS for CKKS
- Meta-BTS
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 级数去近似三角函数,框架为:
- StC, 将消息从明文槽切换到系数上,为模数提升做准备
- ModRaise, 执行模数提升,获得 m + q I ∈ R Q m+qI \in R_Q m+qI∈RQ
- CtS, 将消息从系数切换回明文槽,为模约简做准备
- EvalMod, 使用多项式近似模约简函数,获得 m ′ ∈ R Q ′ m' \in R_{Q'} m′∈RQ′
-
[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] 可以在较小规模的参数下实现较高的自举精度,但是计算性能很差。
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 是标准的,也就是 m ⃗ \vec m m 是范围 ( − 1 , 1 ) (-1,1) (−1,1) 的带符号尾数,自举后的有效位数是 n n n 比特。指数信息是额外的明文标记,并不是缩放因子 Δ > 2 n \Delta > 2^n Δ>2n,后者将有限精度的尾数变成一个大整数。
BTS Standardization:假设某个 BTS 是非标准的,缩放因子 Δ \Delta Δ,输入界 2 r 2^r 2r,自举精度 r + n r+n r+n,那么只需要调整为 Δ ′ = Δ ⋅ 2 r \Delta'=\Delta \cdot 2^r Δ′=Δ⋅2r 用于消息编码,那么新的 BTS 就是标准的,且自举精度不变。
现在,我们已经有了一个标准 BTS 算法,可以用它构造出更高精度的 BTS,算法如下:
基础的 B T S ( 1 ) BTS^{(1)} BTS(1) 是标准的,并且它的自举精度 n n n 是已知的。我们不是输入 c t ( m , q ) ct(m,q) ct(m,q),而是输入 Level 更高的密文 c t ( 2 n m , 2 n q ) ct(2^n m, 2^n q) ct(2nm,2nq),其中 ∥ m ∥ ∞ < 1 \|m\|_\infty<1 ∥m∥∞<1,然后对缩放 2 n 2^n 2n 后的密文执行 BTS 接着乘以 2 n 2^n 2n 得到 c t 3 ct_3 ct3,这些操作使得我们可以获得加密了放大 2 n 2^n 2n 倍的自举噪声 2 − 1 e 1 2^{-1}e_1 2−1e1 的密文 c t 5 ct_5 ct5,其中压倒性概率 ∥ e 1 ∥ ∞ < 1 \|e_1\|_\infty < 1 ∥e1∥∞<1,假设舍入噪声很小 ∥ 2 n e r s + e 1 ∥ ∞ < 1 \|2^ne_{rs}+e_1\|_\infty<1 ∥2ners+e1∥∞<1,于是我们就可以对 c t 5 ct_5 ct5 应用 B T S ( 1 ) BTS^{(1)} BTS(1) 提升它的模数到和 c t 3 ct_3 ct3 相同,从而消除了噪声 e 1 e_1 e1(但添加了第二次 BTS 的噪声 2 − n e 2 2^{-n}e_2 2−ne2)。
算法执行过程中密文的变化:
容易将上述的 BTS 推广到任意的 k ≥ 2 k \ge 2 k≥2,得到精度为 k n kn kn 的自举算法。我们利用 B T S ( 1 ) BTS^{(1)} BTS(1) 搭建出的 B T S ( k ) BTS^{(k)} BTS(k) 作为黑盒去自举密文,再用 B T S ( 1 ) BTS^{(1)} BTS(1) 对前者的自举噪声继续自举以消除它,就可以搭建出精度更高的 B T S ( k + 1 ) BTS^{(k+1)} BTS(k+1),
注意到输入密文的模数从
q
q
q 提升到了
2
k
n
⋅
q
≤
Q
r
e
m
2^{kn} \cdot q \le Q_{rem}
2kn⋅q≤Qrem,因此固定参数的某个
B
T
S
(
1
)
BTS^{(1)}
BTS(1) 它的迭代次数
k
k
k 存在上界。假设基础的 BTS 性能是
P
E
R
F
B
T
S
(
1
)
=
(
n
,
Q
r
e
m
/
q
,
t
)
PERF_{BTS^{(1)}} = (n,Q_{rem}/q,t)
PERFBTS(1)=(n,Qrem/q,t),那么迭代
k
k
k 次之后的性能为:
P
E
R
F
B
T
S
(
k
)
=
(
k
n
,
Q
r
e
m
2
(
k
−
1
)
n
q
,
k
t
)
PERF_{BTS^{(k)}} = \left(kn,\,\, \frac{Q_{rem}}{2^{(k-1)n}q},kt\right)
PERFBTS(k)=(kn,2(k−1)nqQrem,kt)
迭代次数越多,那么自举精度越高,同时剩余的乘法深度也就越小。当自举后的乘法深度为
1
1
1 时就达到最高的自举精度,设置缩放因子为
Δ
=
Q
r
e
m
/
2
(
k
−
1
)
n
q
\Delta={Q_{rem}}/{2^{(k-1)n}q}
Δ=Qrem/2(k−1)nq,三元秘密的重量为
h
h
h,则同态乘法的精度损失为
log
O
(
N
h
)
\log O(\sqrt{Nh})
logO(Nh),为了在无界运算中保持至少
k
n
kn
kn 比特的精度,我们列出如下的不等式:
k
n
≤
Δ
−
log
N
h
kn \le \Delta - \log\sqrt{Nh}
kn≤Δ−logNh
最终可以得到 Meta-BTS 的自举精度上界:
与其他 CKKS-BTS 对比,Meta-BTS 可以将某个固定精度的自举算法转化为更高精度的自举,因此所需的参数规模更小。为达到相同的自举精度
n
n
n,可以将
n
n
n 切分为
n
/
k
n/k
n/k 的迭代,执行效率会更高。