参考文献:
- [MS18] Micciancio D, Sorrell J. Ring packing and amortized FHEW bootstrapping. ICALP 2018: 100:1-100:14.
- [GPV23] Guimarães A, Pereira H V L, Van Leeuwen B. Amortized bootstrapping revisited: Simpler, asymptotically-faster, implemented. ASIACRYPT 2023 (6): 3-35.
- [DKM+24] De Micheli G, Kim D, Micciancio D, et al. Faster amortized FHEW bootstrapping using ring automorphisms. Public Key Cryptography 2024 (4): 322-353.
- Amortized FHEW bootstrapping:Nussbaumer Transform & Ring Packing
文章目录
- RNS-GSW
- Shrinking
- Amortized Bootstrapping
- RLWE‘ to RGSW
- Prime Cyclotomic Rings
- Decryption
- INTT
- msbExtract
- Counting
[GPV23] 和 [DKM+24] 都遵照 [MS18] 的思路:
- packing:将 n n n 个 LWE 密文打包成单个 RLWE 密文,系数编码,形如 ( b , a ) ∈ R q , n 2 (b,a) \in R_{q,n}^2 (b,a)∈Rq,n2,私钥 s ∈ R n s \in R_{n} s∈Rn
- decryption:把 s i s_i si 加密在 RGSW 密文中作为自举密钥,将多项式 a , b a,b a,b 的 DFT-form 加密在 RGSW 密文的指数上( q q q 阶乘法循环群),利用 RGSW 同态乘法(指数上的加法)计算常数 N T T ( a ) NTT(a) NTT(a) 和密文 N T T ( s ) NTT(s) NTT(s) 的 Hadamard-product,然后做同态 IDFT 获得 a ⋅ s + b a \cdot s+b a⋅s+b 各个系数的 RGSW 密文。
- msbExtract:最后把各个系数的 MSB 从 RGSW 密文中提出成为 LWE 密文。
[MS18] 使用二的幂次分圆环对应的 RGSW 密文(模数 q = 2 N q = 2N q=2N),将它搭建成支持模 q q q 加法的寄存器。使用数字分解和枚举技术,使得这个寄存器也支持模 q q q 数乘。为了快速计算 IDFT,[MS18] 使用 Nussbaumer Transform R q , n ≅ R q , n / m [ X ] / ( X m − Y ) → R q , n / m [ X ] / ( X k m − 1 ) R_{q,n} \cong R_{q,n/m}[X]/(X^m-Y) \to R_{q,n/m}[X]/(X^{km}-1) Rq,n≅Rq,n/m[X]/(Xm−Y)→Rq,n/m[X]/(Xkm−1),其中 n ≥ k m 2 n \ge km^2 n≥km2 并且 n , m , k n,m,k n,m,k 都是同一个素数的幂次,这就构造出了合适的 k m km km 次本原单位根 Y = X m ∈ R q , n / m Y=X^m \in R_{q,n/m} Y=Xm∈Rq,n/m,并且和 Y Y Y 的数乘就只是在 R q , n / m R_{q,n/m} Rq,n/m 环元素的系数旋转(重排 RGSW 寄存器)。
[MS18] 的均摊开销是 O ~ ( n ϵ ) \tilde O(n^\epsilon) O~(nϵ),然而隐藏常数 O ( 2 1 / ϵ ) O(2^{1/\epsilon}) O(21/ϵ) 过大,导致并不实用。[GPV23] 和 [DKM+24] 都使用 Galois 自同构来实现数乘,并且直接用 Incomplete NTT 而非 Nussbaumer Transform。区别在于:[GPV23] 使用了素数次卷积环的 RGSW 寄存器,[DKM+24] 使用了素数次分圆环的 RLWE 寄存器,后者的计算效率会高一些。
RNS-GSW
由于均摊 FHEW/TFHE 自举的噪声比盲旋转大得多,这导致寄存器的密文模数可能会超过机器字。[GPV23] 提出了 GSW 的 Double-CRT 变体,以提高计算效率。
[GPV23] 使用卷积环
R
~
:
=
Z
[
X
]
/
(
X
p
−
1
)
\tilde R := \mathbb Z[X]/(X^p-1)
R~:=Z[X]/(Xp−1),其中
p
p
p 是素数,称为 CLWE 问题。有文章指出它和素数次分圆环的 RLWE 一样难。对于
R
:
=
Z
[
X
]
/
(
Φ
p
(
X
)
)
R := \mathbb Z[X]/(\Phi_p(X))
R:=Z[X]/(Φp(X)),其中
Φ
p
(
X
)
=
1
+
X
+
X
2
+
⋯
+
X
p
−
1
\Phi_p(X) = 1+X+X^2+\cdots+X^{p-1}
Φp(X)=1+X+X2+⋯+Xp−1,定义投影函数
L
:
R
→
R
~
L: R \to \tilde R
L:R→R~(疑问:系数
a
p
−
1
a_{p-1}
ap−1 不该存在吧):
L
Q
:
∑
i
=
0
p
−
1
a
i
X
i
→
∑
i
=
0
p
−
1
a
i
X
i
−
(
[
p
−
1
]
Q
⋅
∑
i
=
0
p
−
1
a
i
)
⋅
∑
i
=
0
p
−
1
X
i
(
m
o
d
Q
)
L_Q: \sum_{i=0}^{p-1} a_i X^i \to \sum_{i=0}^{p-1} a_i X^i - \left([p^{-1}]_Q \cdot \sum_{i=0}^{p-1} a_i\right) \cdot \sum_{i=0}^{p-1} X^i \pmod{Q}
LQ:i=0∑p−1aiXi→i=0∑p−1aiXi−([p−1]Q⋅i=0∑p−1ai)⋅i=0∑p−1Xi(modQ)
给定 RLWE 样本
(
a
′
,
b
′
)
∈
R
Q
2
(a',b') \in R_Q^2
(a′,b′)∈RQ2,将它转换为 CLWE 样本
(
a
:
=
L
Q
(
a
′
)
,
b
:
=
L
Q
(
(
1
−
X
)
⋅
b
′
)
)
∈
R
~
Q
2
(a:=L_Q(a'), b:=L_Q((1-X)\cdot b')) \in \tilde R_Q^2
(a:=LQ(a′),b:=LQ((1−X)⋅b′))∈R~Q2
素数次卷积环的 RNS-GSW 如下,
在 RLWE 假设下,对于形如 X k X^k Xk 的消息是 CPA-IND 安全的。
Shrinking
对于 Digit 分解,Approximate Gadget Decomposition 可以减少分解数量,并且基本不增加噪声。但是对于 RNS 分解,由于不存在确切的 LSD,因此并不兼容。[GPV23] 提出了 Shrinking 技术,用于 RNS 的近似分解。
模数 Q = ∏ i = 1 l q i Q = \prod_{i=1}^l q_i Q=∏i=1lqi,令 d ∣ l d \mid l d∣l 是整数,定义 CRT Digit 为 D i = ∏ j = ( i − 1 ) k + 1 i k q j , 1 ≤ i ≤ d D_i = \prod_{j=(i-1)k + 1}^{ik}q_j, 1 \le i \le d Di=∏j=(i−1)k+1ikqj,1≤i≤d(就是分区 d d d 块),令 D = max { D i } D = \max\{D_i\} D=max{Di} 是上界。定义 Q i = Q / D i Q_i = Q/D_i Qi=Q/Di 和 Q ^ i = [ Q i − 1 ] D i \hat Q_i = [Q_i^{-1}]_{D_i} Q^i=[Qi−1]Di,那么令 g = ( Q 1 Q ^ 1 , ⋯ , Q d Q ^ d ) ∈ Z d g = (Q_1\hat Q_1, \cdots, Q_d\hat Q_d) \in \mathbb Z^d g=(Q1Q^1,⋯,QdQ^d)∈Zd 是 gadget vector,对应的分解 g − 1 ( a ) g^{-1}(a) g−1(a) 就是 { [ a ] D i } 1 ≤ i ≤ d \{[a]_{D_i}\}_{1\le i \le d} {[a]Di}1≤i≤d,满足 ⟨ g − 1 ( a ) , g ⟩ = a \langle g^{-1}(a), g\rangle = a ⟨g−1(a),g⟩=a
给定缩放因子 α ∈ Z Q \alpha \in \mathbb Z_Q α∈ZQ,对应的 RNS 表示是 α i = [ α ] D i \alpha_i = [\alpha]_{D_i} αi=[α]Di,然后定义 g α = ( Q 1 Q ^ 1 α 1 , ⋯ , Q d Q ^ d α d ) g_\alpha = (Q_1\hat Q_1\alpha_1, \cdots, Q_d\hat Q_d\alpha_d) gα=(Q1Q^1α1,⋯,QdQ^dαd),将它称为 scaled gadget vector。对于任意的 a ∈ R Q a \in R_Q a∈RQ,容易证明它满足 ⟨ g − 1 ( α − 1 a ) , g α ⟩ = a \langle g^{-1}(\alpha^{-1}a), g_\alpha\rangle = a ⟨g−1(α−1a),gα⟩=a
Shrinking 就是删除一部分 CRT Digit,做模切换,并相应的调整缩放因子
- 给定 scaled gadget 分解 a i = [ a ] D i , 1 ≤ i ≤ d a_i=[a]_{D_i}, 1 \le i \le d ai=[a]Di,1≤i≤d,它的缩放因子是 α \alpha α
- 给定 1 ≤ k < d 1 \le k < d 1≤k<d,定义 D ( k ) = ∏ i = 1 k D i D^{(k)} = \prod_{i=1}^k D_i D(k)=∏i=1kDi 和 Q ′ = Q / D ( k ) Q' = Q/D^{(k)} Q′=Q/D(k)
- 对于 k + 1 ≤ i ≤ d k+1 \le i \le d k+1≤i≤d,计算 a i − k ′ = a i ⋅ [ D ( k ) ] D i a_{i-k}' = a_i \cdot [D^{(k)}]_{D_i} ai−k′=ai⋅[D(k)]Di
- 输出 a j ′ , 1 ≤ j ≤ d − k a_j', 1\le j\le d-k aj′,1≤j≤d−k,它的缩放因子是 α ′ = α ⋅ [ ( D ( k ) ) − 1 ] Q ′ \alpha' = \alpha \cdot [(D^{(k)})^{-1}]_{Q'} α′=α⋅[(D(k))−1]Q′
如果 RNS-GSW 密文加密了 α ⋅ m \alpha \cdot m α⋅m,噪声 E E E,私钥分布是 S S S 亚高斯。那么执行 Shrinking 之后,加密 α ′ ⋅ m \alpha' \cdot m α′⋅m,噪声 O ( E / D ( k ) + p ⋅ S ) O(E/D^{(k)}+\sqrt p \cdot S) O(E/D(k)+p⋅S),其中 p p p 是 CLWE 中的素数次。
Amortized Bootstrapping
由于 [GPV23] 和 [DKM+24] 的整体思路是相同的,仅仅是使用的寄存器不同。现在只看看 [DKM+24] 是怎么工作的。
RLWE‘ to RGSW
[DKM+24] 使用 RLWE’ 寄存器,但是在计算同态乘法时需要 RGSW 密文。因此,需要把 RLWE’ 提升到 RGSW
使用
R
L
W
E
s
k
′
(
s
k
2
)
RLWE'_{sk}(sk^2)
RLWEsk′(sk2) 作为提示(称为 evaluation key),那么给定
(
b
,
a
)
=
R
L
W
E
s
k
(
v
i
m
)
(b,a) = RLWE_{sk}(v_i m)
(b,a)=RLWEsk(vim),可以计算
(
0
,
b
)
+
a
⊙
R
L
W
E
s
k
′
(
s
k
2
)
=
R
L
W
E
s
k
(
v
i
m
⋅
s
k
+
e
⋅
s
k
)
(0,b) + a \odot RLWE_{sk}'(sk^2) = RLWE_{sk}(v_i m \cdot sk + e \cdot sk)
(0,b)+a⊙RLWEsk′(sk2)=RLWEsk(vim⋅sk+e⋅sk)
把它们重排为 RGSW 密文即可。
Prime Cyclotomic Rings
[DKM+24] 使用 R r e g = Z Q [ X ] / ( Φ q ( X ) ) R_{reg} = \mathbb Z_Q[X]/(\Phi_q(X)) Rreg=ZQ[X]/(Φq(X)) 作为寄存器的空间,其中 q q q 是素数。对于整数 m ∈ Z q m \in \mathbb Z_q m∈Zq,将它编码为 X m ∈ R r e g X^m \in R_{reg} Xm∈Rreg 加密为 RLWE’ 或者 RGSW 密文。
需要重新考虑这种 RGSW 密文上外积的噪声增长情况,
对于二的幂次分圆环,噪声为 σ ⊙ 2 = B 2 d B N σ i n p u t 2 / 12 \sigma^2_\odot = B^2d_BN\sigma_{input}^2/12 σ⊙2=B2dBNσinput2/12,因此素数次分圆环上的噪声仅增长了 2 2 2 因子,可以接受。
Decryption
[DKM+24] 使用 [MS18] 的框架,主要的区别就是在同态解密步骤使用了素数次分圆环,利用 Galois 自同构实现数乘,利用 Incomplete NTT 实现 IDFT。
令 d d d 是二的幂次,定义 R i n = Z q [ X ] / ( Φ d ( X ) ) R_{in} = \mathbb Z_q[X]/(\Phi_d(X)) Rin=Zq[X]/(Φd(X)),作为打包密文的空间。给定 ϕ ( d ) \phi(d) ϕ(d) 个 LWE 密文,使用 Ring Packing(就是 column method Pub-KS)将它们转化为系数打包的 RLWE 密文 ( b , a ) ∈ R i n 2 (b,a) \in R_{in}^2 (b,a)∈Rin2,私钥是 z ∈ R i n z \in R_{in} z∈Rin
对于卷积环,将它的 FFT/NTT 称为 standard/cyclic FFT。对于分圆环,将它的 FFT/NTT 称为 primitive/cyclotomic FFT。
- 对于寄存器本身,基本运算是在 R r e g R_{reg} Rreg 上执行的,需要把 Z Q [ X ] / ( 1 + X + X 2 + ⋯ + X q − 1 ) \mathbb Z_Q[X]/(1+X+X^2+\cdots+X^{q-1}) ZQ[X]/(1+X+X2+⋯+Xq−1) 做 primitive FFT,不过我们直接将寄存器视为一个黑盒,可以不关心这个的实现。
- 对于打包密文,基本运算是在 R i n R_{in} Rin 上执行的,需要对反卷积环 Z q [ X ] / ( X ϕ ( d ) + 1 ) \mathbb Z_q[X]/(X^{\phi(d)}+1) Zq[X]/(Xϕ(d)+1) 做 primitive FFT,可以先执行相同长度的 cyclic FFT,然后乘以一些 twist factor 即可。这些运算是利用大量的寄存器完成的。
为了快速计算
b
+
a
⋅
z
∈
R
i
n
b + a \cdot z \in R_{in}
b+a⋅z∈Rin,[DKM+24] 采用了 partial primitive FFT(PFT),因为噪声增长是和递归分解的深度呈指数的,只能做常数深度的分解。分解是:
Z
q
[
X
]
/
(
X
ϕ
(
d
)
+
1
)
≅
∏
i
=
0
ϕ
(
d
)
/
k
−
1
Z
q
[
X
]
/
(
X
k
−
ζ
i
)
\mathbb Z_q[X]/(X^{\phi(d)}+1) \cong \prod_{i=0}^{\phi(d)/k-1} \mathbb Z_q[X]/(X^k - \zeta_i)
Zq[X]/(Xϕ(d)+1)≅i=0∏ϕ(d)/k−1Zq[X]/(Xk−ζi)
其中
ζ
i
\zeta_i
ζi 是所有的
d
/
k
d/k
d/k 次本原单位根。由于 DFT 和 IDFT 的表达式之间有个缩放因子,自举过程中 DFT 是明文下的,IDFT 是密文下的。为了减少同态开销,[DKM+24] 将这个缩放因子从 IDFT 移动到了 DFT。于是,给定环元素
a
∈
R
i
n
a \in R_{in}
a∈Rin,执行 PFT 获得:
a
~
i
=
[
(
ϕ
(
d
)
/
k
)
−
1
]
q
⋅
a
(
m
o
d
X
k
−
ζ
i
)
\tilde a_i = [(\phi(d)/k)^{-1}]_q \cdot a \pmod{X^k-\zeta_i}
a~i=[(ϕ(d)/k)−1]q⋅a(modXk−ζi)
对于私钥
z
∈
R
i
n
z \in R_{in}
z∈Rin,也将它做 PFT 获得
ϕ
(
d
)
/
k
\phi(d)/k
ϕ(d)/k 个多项式
{
z
~
i
}
\{\tilde z_i\}
{z~i},将它们的系数
z
~
i
(
j
)
∈
Z
q
\tilde z_i^{(j)} \in \mathbb Z_q
z~i(j)∈Zq 加密为:
R
G
S
W
(
X
z
~
i
(
j
)
)
,
0
≤
i
<
ϕ
(
d
)
/
k
,
0
≤
j
<
k
RGSW(X^{\tilde z_i^{(j)}}), 0 \le i < \phi(d)/k, 0\le j< k
RGSW(Xz~i(j)),0≤i<ϕ(d)/k,0≤j<k
对于某个小环
Z
q
[
X
]
/
(
X
k
−
ζ
i
)
\mathbb Z_q[X]/(X^k - \zeta_i)
Zq[X]/(Xk−ζi),按照 Schoolbook 方式计算
v
=
a
~
i
⋅
z
~
i
v = \tilde a_i \cdot \tilde z_i
v=a~i⋅z~i,
v
j
=
∑
l
=
0
j
z
~
i
(
l
)
a
~
i
(
j
−
l
)
+
ζ
i
⋅
∑
l
=
j
+
1
l
−
1
z
~
i
(
l
)
a
~
i
(
k
+
j
−
l
)
\begin{aligned} v_j = \sum_{l=0}^j\tilde z_i^{(l)}\tilde a_i^{(j-l)} + \zeta_i\cdot\sum_{l=j+1}^{l-1}\tilde z_i^{(l)}\tilde a_i^{(k+j-l)} \end{aligned}
vj=l=0∑jz~i(l)a~i(j−l)+ζi⋅l=j+1∑l−1z~i(l)a~i(k+j−l)
由于
a
~
i
\tilde a_i
a~i 是明文,因此可以把
v
j
v_j
vj 视为密文向量
z
⃗
=
(
z
~
i
(
0
)
,
⋯
,
z
~
i
(
k
−
1
)
)
\vec z = (\tilde z_i^{(0)}, \cdots, \tilde z_i^{(k-1)})
z=(z~i(0),⋯,z~i(k−1)) 和明文向量
c
⃗
=
(
a
~
i
(
j
)
,
a
~
i
(
j
−
1
)
,
⋯
,
a
~
i
(
0
)
,
ζ
i
a
~
i
(
k
−
1
)
,
ζ
i
a
~
i
(
k
−
2
)
,
⋯
,
ζ
i
a
~
i
(
j
+
1
)
)
\vec c = (\tilde a_i^{(j)}, \tilde a_i^{(j-1)},\cdots, \tilde a_i^{(0)}, \zeta_i\tilde a_i^{(k-1)}, \zeta_i\tilde a_i^{(k-2)}, \cdots, \zeta_i\tilde a_i^{(j+1)})
c=(a~i(j),a~i(j−1),⋯,a~i(0),ζia~i(k−1),ζia~i(k−2),⋯,ζia~i(j+1)) 的内积。毕竟密文上的数乘是相对明文数乘更贵的。[DKM+24] 使用 RLWE’ 寄存器(编码在指数上,线性同态),同态数乘使用 Galois 自同构(输入输出都是 RLWE’ 密文),同态加法使用 RGSW 外积(输入 RGSW 和 RLWE’ 密文,输出 RLWE’ 密文)。为了减少 RLWE’ to RGSW 转换,可以使用如下的方式计算
z
⃗
,
c
⃗
\vec z, \vec c
z,c 的内积(假设
c
i
∈
Z
q
c_i \in \mathbb Z_q
ci∈Zq 全都非零、可逆,如果是零则简单删除):
v
j
=
(
(
⋯
(
z
0
c
0
c
1
−
1
+
z
1
)
c
1
c
2
−
1
+
⋯
)
z
k
−
2
z
k
−
1
−
1
+
z
k
−
1
)
c
k
−
1
v_j = ((\cdots(z_0c_0c_1^{-1} + z_1)c_1c_2^{-1} +\cdots)z_{k-2}z_{k-1}^{-1} + z_{k-1})c_{k-1}
vj=((⋯(z0c0c1−1+z1)c1c2−1+⋯)zk−2zk−1−1+zk−1)ck−1
这样整个过程都只需要 RLWE’ 寄存器,并不需要转换到 RGSW 密文。
算法是:
现在,我们计算出了 v ~ i = a ~ i ⋅ z ~ i ∈ Z q [ X ] / ( X k − ζ i ) \tilde v_i = \tilde a_i \cdot \tilde z_i \in \mathbb Z_q[X]/(X^k-\zeta_i) v~i=a~i⋅z~i∈Zq[X]/(Xk−ζi),它的系数加密在 k k k 个 RLWE’ 寄存器内。重复 ϕ ( d ) / k \phi(d)/k ϕ(d)/k 次,计算出所有的 { v ~ i } \{\tilde v_i\} {v~i},接下来需要执行 Homomorphic IPFT 恢复出 v = a ⋅ s v=a \cdot s v=a⋅s 的各个系数。
INTT
这个过程的思想很简单,就是直接用 RLWE’ 寄存器的线性同态,执行 Inverse PFT 即可。
根据环同构:
Z
q
[
X
]
/
(
X
ϕ
(
d
)
+
1
)
≅
(
Z
q
[
Y
]
/
(
Y
ϕ
(
d
)
/
k
+
1
)
)
[
X
]
/
(
X
k
−
Y
)
≅
Z
q
ϕ
(
d
)
/
k
[
X
]
/
(
X
k
−
Y
)
\begin{aligned} \mathbb Z_q[X]/(X^{\phi(d)}+1) &\cong (\mathbb Z_q[Y]/(Y^{\phi(d)/k}+1))[X]/(X^k-Y)\\ &\cong \mathbb Z_q^{\phi(d)/k}[X]/(X^k-Y) \end{aligned}
Zq[X]/(Xϕ(d)+1)≅(Zq[Y]/(Yϕ(d)/k+1))[X]/(Xk−Y)≅Zqϕ(d)/k[X]/(Xk−Y)
其中
Z
q
ϕ
(
d
)
/
k
\mathbb Z_q^{\phi(d)/k}
Zqϕ(d)/k 是以 coeff-wise 方式运算的。Incomplete cyclotomic NTT 可以写成多个 Complete cyclotomic NTT 的并行。
根据环同构:
Z
q
[
Y
]
/
(
Y
ϕ
(
d
)
/
k
+
1
)
≅
Z
q
[
Z
]
/
(
Z
N
−
1
)
\mathbb Z_q[Y]/(Y^{\phi(d)/k}+1) \cong \mathbb Z_q[Z]/(Z^{N}-1)
Zq[Y]/(Yϕ(d)/k+1)≅Zq[Z]/(ZN−1)
其中
Y
=
Z
ζ
Y = Z\zeta
Y=Zζ,这里
ζ
\zeta
ζ 是
d
/
k
d/k
d/k 次本原单位根,而
Z
Z
Z 是
N
=
ϕ
(
d
)
/
k
N=\phi(d)/k
N=ϕ(d)/k 次本原单位根。Complete cyclotomic NTT 可以写成 Complete cyclic NTT,然后再扭曲。
根据环同构:
Z
q
[
Z
]
/
(
Z
R
−
ζ
N
j
)
≅
∏
i
=
0
r
−
1
Z
q
[
Z
]
/
(
Z
R
/
r
−
ζ
N
j
r
−
1
+
i
N
/
r
)
\mathbb Z_q[Z]/(Z^{R}-\zeta_N^j) \cong \prod_{i=0}^{r-1}\mathbb Z_q[Z]/(Z^{R/r}-\zeta_N^{jr^{-1}+iN/r})
Zq[Z]/(ZR−ζNj)≅i=0∏r−1Zq[Z]/(ZR/r−ζNjr−1+iN/r)
以及映射
Z
R
/
r
→
ζ
N
j
r
−
1
+
i
N
/
r
Z^{R/r} \to \zeta_N^{jr^{-1}+iN/r}
ZR/r→ζNjr−1+iN/r,
∑
k
=
0
R
−
1
a
k
Z
k
→
∑
l
=
0
R
/
r
−
1
(
∑
k
=
0
r
−
1
a
l
+
k
R
/
r
(
ζ
N
j
r
−
1
+
i
N
/
r
)
k
)
⋅
Z
l
\sum_{k=0}^{R-1} a_kZ^k \to \sum_{l=0}^{R/r-1} \left(\sum_{k=0}^{r-1} a_{l+kR/r}(\zeta_N^{jr^{-1}+iN/r})^k\right)\cdot Z^l
k=0∑R−1akZk→l=0∑R/r−1(k=0∑r−1al+kR/r(ζNjr−1+iN/r)k)⋅Zl
其中
ζ
N
j
r
−
1
+
i
N
/
r
\zeta_N^{jr^{-1}+iN/r}
ζNjr−1+iN/r 是所有的
ζ
N
j
\zeta_N^j
ζNj 的
r
r
r 次根,这里
r
∣
R
∣
N
r \mid R \mid N
r∣R∣N 是当前层的 radix 设置。Complete cyclic NTT 的每一层分解都是若干个关于某些单位根的多项式求值。
其中的 { r i } 0 ≤ i < l \{r_i\}_{0 \le i < l} {ri}0≤i<l 是每一层分解的 radix,递归深度 l l l 是常数。由于自举的最终结果是单个 RLWE 密文,因此它的各个系数只需要被加密在单个 RLWE 寄存器里,所以最后一层使用外积 Q / 4 ⊙ c t i Q/4 \odot ct_i Q/4⊙cti 把寄存器 R L W E ′ ( X v ) RLWE'(X^v) RLWE′(Xv) 转化为 R L W E ( Q / 4 ⋅ X v ) RLWE(Q/4 \cdot X^v) RLWE(Q/4⋅Xv) 密文,这里的 4 4 4 是原始 FHEW 的明文模数。
依次执行 v ~ i = a ~ i ⋅ s ~ i \tilde v_i = \tilde a_i \cdot \tilde s_i v~i=a~i⋅s~i 以及上述的 P F T − 1 ( { v ~ i } ) PFT^{-1}(\{\tilde v_i\}) PFT−1({v~i}),最终获得各个系数的密文 R L W E ( Q / 4 ⋅ X ( a ⋅ s ) j ) RLWE(Q/4 \cdot X^{(a \cdot s)_j}) RLWE(Q/4⋅X(a⋅s)j),然后再分别乘以 X b j X^{b_j} Xbj 得到 ϕ ( d ) \phi(d) ϕ(d) 个密文 R L W E ( Q / 4 ⋅ X ( b + a ⋅ s ) j ) RLWE(Q/4 \cdot X^{(b+a \cdot s)_j}) RLWE(Q/4⋅X(b+a⋅s)j)
msbExtract
现在 ( b , a ) ∈ R i n 2 (b,a) \in R_{in}^2 (b,a)∈Rin2 相位的各个系数 c = ( b + a ⋅ s ) i ∈ Z q c=(b+a \cdot s)_i \in \mathbb Z_q c=(b+a⋅s)i∈Zq 分别加密在 RLWE 密文 ( b ^ , a ^ ) ∈ R r e g 2 (\hat b, \hat a) \in R_{reg}^2 (b^,a^)∈Rreg2 相位的指数上,简记为 m ( X ) = Q / 4 ⋅ X c ∈ R r e g m(X) = Q/4 \cdot X^{c} \in R_{reg} m(X)=Q/4⋅Xc∈Rreg,私钥是 s ^ ∈ R r e g \hat s \in R_{reg} s^∈Rreg
由于
Φ
q
(
X
)
=
1
+
X
+
⋯
+
X
q
−
1
\Phi_q(X) = 1+X+\cdots+X^{q-1}
Φq(X)=1+X+⋯+Xq−1,因此有
X
q
−
1
≡
−
1
−
X
−
⋯
−
X
q
−
2
X^{q-1} \equiv -1-X-\cdots-X^{q-2}
Xq−1≡−1−X−⋯−Xq−2 以及
X
q
=
1
X^q=1
Xq=1,那么
m
i
+
e
i
=
b
^
i
+
∑
j
=
0
i
a
^
i
−
j
s
^
j
+
∑
j
=
i
+
2
q
−
2
a
^
q
+
i
−
j
s
^
j
−
∑
j
=
1
q
−
2
a
^
q
−
1
−
j
s
^
j
=
b
^
i
+
⟨
(
a
^
i
,
a
^
i
−
1
−
a
^
q
−
2
,
a
^
i
−
2
−
a
^
q
−
3
,
⋯
,
a
^
0
−
a
^
q
−
i
−
1
,
0
−
a
^
q
−
i
−
2
,
a
^
q
−
2
−
a
^
q
−
i
−
3
,
⋯
,
a
^
i
+
2
−
a
^
1
)
,
(
s
^
0
,
⋯
,
s
^
q
−
2
)
⟩
\begin{aligned} m_i + e_i &= \hat b_i + \sum_{j=0}^{i}\hat a_{i-j}\hat s_j + \sum_{j=i+2}^{q-2}\hat a_{q+i-j}\hat s_j - \sum_{j=1}^{q-2} \hat a_{q-1-j}\hat s_j\\ &= \hat b_i + \langle(\hat a_i, \hat a_{i-1}-\hat a_{q-2}, \hat a_{i-2}-\hat a_{q-3}, \cdots, \\ &\,\,\,\,\,\,\,\, \hat a_{0}-\hat a_{q-i-1}, 0-\hat a_{q-i-2}, \hat a_{q-2}-\hat a_{q-i-3}, \cdots, \hat a_{i+2}-\hat a_{1}), (\hat s_0,\cdots,\hat s_{q-2})\rangle \end{aligned}
mi+ei=b^i+j=0∑ia^i−js^j+j=i+2∑q−2a^q+i−js^j−j=1∑q−2a^q−1−js^j=b^i+⟨(a^i,a^i−1−a^q−2,a^i−2−a^q−3,⋯,a^0−a^q−i−1,0−a^q−i−2,a^q−2−a^q−i−3,⋯,a^i+2−a^1),(s^0,⋯,s^q−2)⟩
因此
(
b
i
,
a
⃗
i
:
=
(
a
^
i
,
a
^
i
−
1
−
a
^
q
−
2
,
a
^
i
−
2
−
a
^
q
−
3
,
⋯
,
a
^
0
−
a
^
q
−
i
−
1
,
0
−
a
^
q
−
i
−
2
,
a
^
q
−
2
−
a
^
q
−
i
−
3
,
⋯
,
a
^
i
+
2
−
a
^
1
)
)
∈
Z
Q
q
(b_i,\vec a_i := (\hat a_i, \hat a_{i-1}-\hat a_{q-2}, \hat a_{i-2}-\hat a_{q-3}, \cdots, \hat a_{0}-\hat a_{q-i-1}, 0-\hat a_{q-i-2}, \hat a_{q-2}-\hat a_{q-i-3}, \cdots, \hat a_{i+2}-\hat a_{1})) \in \mathbb Z_Q^{q}
(bi,ai:=(a^i,a^i−1−a^q−2,a^i−2−a^q−3,⋯,a^0−a^q−i−1,0−a^q−i−2,a^q−2−a^q−i−3,⋯,a^i+2−a^1))∈ZQq 就是
m
(
X
)
m(X)
m(X) 系数
m
i
m_i
mi 的密文,私钥是
s
⃗
:
=
(
s
^
0
,
⋯
,
s
^
q
−
2
)
\vec s := (\hat s_0,\cdots,\hat s_{q-2})
s:=(s^0,⋯,s^q−2),噪声是
e
i
e_i
ei
- 如果 c = i c=i c=i,那么 m i = Q / 4 m_i = Q/4 mi=Q/4
- 如果 c = q − 1 c=q-1 c=q−1,那么 m i = − Q / 4 m_i=-Q/4 mi=−Q/4
- 对于其他的 c c c,都是 m i = 0 m_i=0 mi=0
为了提取出系数 c = q / 2 ⋅ μ + e c=q/2 \cdot \mu + e c=q/2⋅μ+e 所编码的消息 μ ∈ { 0 , 1 } \mu \in \{0,1\} μ∈{0,1},由于噪声范围 [ − q / 4 , q / 4 ) [-q/4, q/4) [−q/4,q/4),因此 μ = 1 ⟺ c ∈ ( q / 4 , 3 q / 4 ) \mu=1 \iff c \in (q/4,3q/4) μ=1⟺c∈(q/4,3q/4),那么把这个区间的 LWE 密文加起来即可(注意 m ( X ) m(X) m(X) 恰是 one-hot 向量)。
Counting
以外积为单位,各个步骤的复杂度是:
各个步骤的噪声增长是:
安全强度 λ = O ( n ) \lambda = O(n) λ=O(n),模数 Q = p o l y ( n ) Q=poly(n) Q=poly(n),打包数量 ϕ ( d ) = O ( n ) \phi(d)=O(n) ϕ(d)=O(n),Gadget 分解长度 d B = log B Q d_B = \log_B Q dB=logBQ。由于环元素和 RLWE’ 密文外积的噪声是 σ ⊙ 2 = B 2 d B q σ i n p u t 2 / 6 = O ( n ) ⋅ σ i n p u t 2 \sigma^2_\odot = B^2d_Bq\sigma_{input}^2/6 = O(n)\cdot\sigma_{input}^2 σ⊙2=B2dBqσinput2/6=O(n)⋅σinput2,上述的 σ ⊙ , a u t 2 , σ ⊙ , e v a l 2 , σ ⊙ , R G S W 2 \sigma_{\odot,aut}^2, \sigma_{\odot,eval}^2, \sigma_{\odot,RGSW}^2 σ⊙,aut2,σ⊙,eval2,σ⊙,RGSW2 分别是 RLWE’ 自同构密钥、RLWE‘ to RGSW 切换密钥、RGSW 自举密钥的方差取代 σ i n p u t 2 \sigma_{input}^2 σinput2 之后的值。假如 PFT 的迭代深度是 l l l 层,那么最终的方差是 O ( n l ) ⋅ σ a u t , e v a l , R G S W 2 O(n^l) \cdot \sigma_{aut,eval,RGSW}^2 O(nl)⋅σaut,eval,RGSW2,是关于 l l l 指数级的。由于 Q Q Q 是多项式规模的,因此 l l l 必须是较小的常数。
对于常数深度 l l l,设置 k = r = ϕ ( d ) 1 / l k=r=\phi(d)^{1/l} k=r=ϕ(d)1/l,这里 k k k 是分解后的小多项式长度, r r r 是各层分解的 radix 大小。那么,总的复杂度是 O ( l n 1 + 1 / l log n ) O(ln^{1+1/l}\log n) O(ln1+1/llogn) 次环元素和 RLWE’ 的外积,均摊复杂度是 O ( l n 1 / l log n ) O(ln^{1/l}\log n) O(ln1/llogn) 次外积。