参考文献:
[CLOT21] 提出了 WoP-PBS,它基于事实 ( ? 1 ) ? ( ? m ) = m (-1) \cdot (-m)=m (?1)?(?m)=m,先将 m m m 扩展为 β ∥ m \beta\|m β∥m,然后使用 GenPBS 分别计算出 ( ? 1 ) β ? f ( m ) (-1)^\beta \cdot f(m) (?1)β?f(m) 和 ( ? 1 ) β (-1)^\beta (?1)β,最后使用 FV-like 同态乘法,将它们组合成 f ( m ) f(m) f(m)。这需要底层的 LWE 同时支持加法和乘法,并且同态乘法导致了噪声增长。因此,模数(正确性)和维度(安全性)都会相应的变大,导致它比一般的 FHEW/TFHE 的效率更至少一倍。
[LMP22] 也是将 m m m 扩展到 β ∥ m \beta\|m β∥m,单它首先将 β \beta β 消除掉使之成为 0 ∥ m 0\|m 0∥m,接着使用原始的 PBS 就可以计算出正确的 f ( m ) f(m) f(m)。在这个过程中,并不需要使用同态乘法,因此它的噪声就是 PBS 本身的噪声,常规的参数就足够使用。
首先,[LMP22] 研究了如何对于高精度 LWE 密文执行自举。这里的 “精度” 指的是 MSD 编码的消息的比特长度。我们先给出一些参数定义:
FHEW/TFHE 要求 LWE 的密文模数满足 Q ∣ 2 N Q \mid 2N Q∣2N,随着明文精度的增加( k k k 比特),多项式长度 N N N 指数级增加( 2 k 2^k 2k 倍)。对于通常的参数集 N = 1024 / 2048 N=1024/2048 N=1024/2048,只能支持至多 3 , 4 3,4 3,4 比特的明文精度。[LMP22] 为了计算高精度的 Sign 函数,通过不断移除 LSD(保持 MSB 不变),直到密文模数 Q Q Q 倍缩减到 q q q 规模,从而可以使用常规参数集执行 PBS。
这个过程中,一个关键步骤是同态 Floor 函数。假设 LWE 密文
(
c
,
d
)
∈
Z
Q
n
+
1
(c,d) \in \mathbb Z_Q^{n+1}
(c,d)∈ZQn+1? 的相位是:
ψ
=
α
?
m
+
e
(
m
o
d
Q
)
\psi = \alpha \cdot m + e \pmod Q
ψ=α?m+e(modQ)
其中
∣
e
∣
≤
β
?
q
|e| \le \beta \ll q
∣e∣≤β?q,
m
∈
Z
Q
/
α
m \in \mathbb Z_{Q/\alpha}
m∈ZQ/α?,根据不同的场景
α
\alpha
α 选取不同的值。
注意到
Q
>
q
>
α
Q>q>\alpha
Q>q>α 都是二的幂次。如果我们将 LWE 密文模掉
q
q
q,获得的
(
a
,
b
)
∈
Z
q
n
+
1
(a,b) \in \mathbb Z_q^{n+1}
(a,b)∈Zqn+1?:
[
m
′
]
q
=
α
?
[
m
]
q
/
α
+
e
(
m
o
d
q
)
[m']_q = \alpha \cdot [m]_{q/\alpha} + e \pmod q
[m′]q?=α?[m]q/α?+e(modq)
使用 PBS 将它提升回
(
a
′
,
b
′
)
∈
Z
Q
n
+
1
(a',b') \in \mathbb Z_Q^{n+1}
(a′,b′)∈ZQn+1?,并从原始密文中把它减掉,就清除了
m
m
m 的最低
log
?
q
/
α
\log{q/\alpha}
logq/α 比特。密文
(
c
′
,
d
′
)
(c',d')
(c′,d′) 的相位是:
ψ
′
=
α
?
(
?
α
q
m
?
?
q
α
)
+
e
′
(
m
o
d
Q
)
\psi' = \alpha \cdot \left(\left\lfloor \frac{\alpha}{q} m \right\rfloor \cdot \frac{q}{\alpha} \right) + e' \pmod Q
ψ′=α?(?qα?m??αq?)+e′(modQ)
现在,我们可以把
α
,
Q
\alpha,Q
α,Q 同时缩小
q
/
α
q/\alpha
q/α 倍,得到的密文
(
c
′
′
,
d
′
′
)
∈
Z
(
α
/
q
)
?
Q
n
+
1
(c'',d'') \in \mathbb Z_{(\alpha/q) \cdot Q}^{n+1}
(c′′,d′′)∈Z(α/q)?Qn+1? 相位的 MSB 保持和
(
c
,
d
)
∈
Z
Q
n
+
1
(c,d) \in \mathbb Z_Q^{n+1}
(c,d)∈ZQn+1? 的一样。
我们将这个长度 log ? ( q / α ) \log(q/\alpha) log(q/α) 的小块明文称为 LSD,我们的目标是将它清零。然而,函数 f : m ∈ Z q / α ? m ∈ Z Q / α f:m \in \mathbb Z_{q/\alpha} \mapsto m \in \mathbb Z_{Q/\alpha} f:m∈Zq/α??m∈ZQ/α? 并非反循环的,导致了原始的 PBS 无法实现从 ( a , b ) (a,b) (a,b) 到 ( a ′ , b ′ ) (a',b') (a′,b′) 的自举过程。[LMP22] 给出了两种实现,通过 2 , 3 2,3 2,3 次 PBS 来实现它。用到的三个函数为:
为了构造 LUT 的方便,下面的推导中总是使得 PBS 输入的密文噪声是正整数,范围是 [ 0 , 2 β ) [0,2\beta) [0,2β)。这可通过 ( c , d ) → ( c , d + β ) (c,d) \to (c,d+\beta) (c,d)→(c,d+β) 来实现。只要满足 α ≥ 2 β \alpha \ge 2\beta α≥2β,就可以准确解密。FHEW/TFHE 中的 LWE 私钥 s ∈ { 0 , ± 1 } n s \in \{0,\pm1\}^n s∈{0,±1}n 服从三元分布。
[LMP22] 的第一个方法:使用两次 PBS,但是对于噪声的约束较强, α ≥ 4 β \alpha \ge 4\beta α≥4β
基本思路:分别提取 ( [ c ] q , [ d ] q ) ([c]_q,[d]_q) ([c]q?,[d]q?) 相位(加密了 LSD)的 MSB 和其他位置,
假定 PBS 输出的噪声界是 β \beta β,初始输入 ( c , d ) c,d) c,d) 的噪声上界也是 β \beta β,
当然,上述的分析是最坏情况的。如果使用平均情况,那么 ∥ s ∥ 2 = O ( n ) \|s\|_2 = O(\sqrt{n}) ∥s∥2?=O(n?),独立密文的加和噪声界 2 β \sqrt{2}\beta 2?β,可以将 β \beta β 和 α \alpha α 都降低一些。
为了给出通用的算法(尤其是 CKKS 的噪声和明文混合在一起),[LMP22] 给出了第二个方法:使用三次 PBS,支持任意的噪声, α ≥ 2 β \alpha \ge 2\beta α≥2β
基本思路:
假定 PBS 输出的噪声界是 β \beta β,初始输入 ( c , d ) c,d) c,d) 的噪声上界也是 β \beta β,
利用上述 HomFloor 的计算思路,为了利用 PBS 计算任意函数,我们可以将 m ∈ Z q / α m\in \mathbb Z_{q/\alpha} m∈Zq/α? 扩展到 b ∥ m ∈ { m , m + q / α } ? Z 2 q / α b\|m\in\{m,m+q/\alpha\} \subseteq \mathbb Z_{2q/\alpha} b∥m∈{m,m+q/α}?Z2q/α?(随机的 b ∈ { 0 , 1 } b\in \{0,1\} b∈{0,1}),然后提取 sign 消除为 ( 0 ∥ m ) 2 = m (0\|m)_2=m (0∥m)2?=m,接着使用半环上的函数执行 PBS 即可。
现在我们假定输入的 LWE 密文模数是 q q q,满足 2 q ∣ 2 N 2q \mid 2N 2q∣2N 可以被原始 PBS 支持。这导致相较于 HomFloor 中的 PBS,这里的 q q q 更小,明文精度丢失了 1 1 1 比特。
为了执行 [GBA21] 的 Tree-based PBS(包括高精度 LWE 密文的自举),我们需要同态数字分解算法。因为 HomFloor 事实上就是在计算各个 Digit,并将它们从高精度 LWE 密文中减去的过程,因此仅需追踪此过程中产生的 ( [ c ] q , [ d ] q ) ([c]_q,[d]_q) ([c]q?,[d]q?) 即可。
输入 LWE 密文的相位 α ? m + e \alpha \cdot m+e α?m+e,输出 k = log ? ( Q / α ) / log ? ( q / α ) k=\log(Q/\alpha)/\log(q/\alpha) k=log(Q/α)/log(q/α) 个密文,它们的相位是 α ? m i + e i \alpha \cdot m_i+e_i α?mi?+ei?,满足 m = ∑ i = 0 k ? 1 m i ? ( q / α ) i m=\sum_{i=0}^{k-1} m_i \cdot (q/\alpha)^i m=∑i=0k?1?mi??(q/α)i
略。。。