参考文献:
- [Dv21] Ducas L, van Woerden W. NTRU fatigue: how stretched is overstretched?[C]//Advances in Cryptology–ASIACRYPT 2021: 27th International Conference on the Theory and Application of Cryptology and Information Security, Singapore, December 6–10, 2021, Proceedings, Part IV 27. Springer International Publishing, 2021: 3-32.
- [LMK+23] Lee, Y. et al. (2023). Efficient FHEW Bootstrapping with Small Evaluation Keys, and Applications to Threshold Homomorphic Encryption. In: Hazay, C., Stam, M. (eds) Advances in Cryptology – EUROCRYPT 2023. EUROCRYPT 2023. Lecture Notes in Computer Science, vol 14006. Springer, Cham. https://doi.org/10.1007/978-3-031-30620-4_8
- [XZD+23] Xiang, B., Zhang, J., Deng, Y., Dai, Y., Feng, D. (2023). Fast Blind Rotation for Bootstrapping FHEs. In: Handschuh, H., Lysyanskaya, A. (eds) Advances in Cryptology – CRYPTO 2023. CRYPTO 2023. Lecture Notes in Computer Science, vol 14084. Springer, Cham. https://doi.org/10.1007/978-3-031-38551-3_1
文章 [LMK+23] 提出了一种新的盲旋转方式,使用自同构 X → X t X \to X^t X→Xt 实现盲旋转,而非 AP/FHEW 或者 GINX/TFHE 的自举方式。文章的目标是使得盲旋转算法支持任意的私钥分布,保持较高的计算速度,同时显著减小自举秘钥的规模。另外,由于 Threshold-FHE 以及 Multi-Key FHE 的分布式秘钥生成的秘钥分布不是二元的,因此本文的自举算法容易扩展到两者。
文章 [XZD+23] 提出了一种特殊形式密文的 NTRU-based GSW-like 加密方案,其秘钥切换过程的效率和同态外积的效率一样。由于 KS 过程很快,且 NTRU 比 RLWE 少一半的环元素,这使得新的盲旋转算法的计算速度很快。
LMK+23
使用环自同构来实现盲旋转的基本思路是:输入 f ( X ) f(X) f(X),首先执行 ψ 1 / α ( f ) = f ( X 1 / α ) \psi_{1/\alpha}(f)=f(X^{1/\alpha}) ψ1/α(f)=f(X1/α),然后计算 f ( X 1 / α ) ⋅ X s f(X^{1/\alpha}) \cdot X^{s} f(X1/α)⋅Xs,最后执行 ψ α ( f ( X 1 / α ) ⋅ X s ) = f ( X ) ⋅ X α s \psi_\alpha(f(X^{1/\alpha}) \cdot X^{s}) = f(X) \cdot X^{\alpha s} ψα(f(X1/α)⋅Xs)=f(X)⋅Xαs。通过迭代,可以实现 f ⋅ X b − ⟨ a , s ⟩ f \cdot X^{b-\langle a,s\rangle} f⋅Xb−⟨a,s⟩ 的计算。
首先定义四种密文:
定义 R L W E ′ RLWE' RLWE′ 的数乘运算 ⊙ \odot ⊙,定义 R L W E RLWE RLWE 和 R G S W RGSW RGSW 的外积运算 ⊛ \circledast ⊛,
容易定义 RLWE 密文的密钥切换以及自同构,
New Blind Rotation via Automorphisms
[LMK+23] 使用 ring automorphisms 以及相应的 KS 过程实现盲旋转。而 AP/FHEW 和 GINX/TFHE 都是使用指数上加法(密文外积)实现的。
选取 N N N 是二的幂次,RLWE 密文的代数结构是 R = Z Q [ X ] / ( Φ 2 N ( X ) ) R=\mathbb Z_Q[X]/(\Phi_{2N}(X)) R=ZQ[X]/(Φ2N(X)),自同构群同构于 Z 2 N ∗ = { 1 , 3 , ⋯ , 2 N − 1 } \mathbb Z_{2N}^* = \{1,3,\cdots,2N-1\} Z2N∗={1,3,⋯,2N−1}。因此令 q = 2 N q=2N q=2N,我们假设 LWE 密文的各个系数都是奇数,从而存在对应的自同构。对于 N ≥ 8 N \ge 8 N≥8,存在同构 Z 2 N ∗ ≅ Z N / 2 ⊗ Z 2 \mathbb Z_{2N}^* \cong \mathbb Z_{N/2} \otimes \mathbb Z_2 Z2N∗≅ZN/2⊗Z2,生成集是 { g , − 1 } \{g,-1\} {g,−1}(可选取 g = 5 g=5 g=5),其中 g N / 2 = 1 ( m o d 2 N ) g^{N/2}=1 \pmod {2N} gN/2=1(mod2N)
给定 LWE 密文
(
α
,
β
)
∈
Z
q
n
+
1
(\alpha,\beta) \in \mathbb Z_q^{n+1}
(α,β)∈Zqn+1,可以将它写成
α
i
=
±
g
k
i
\alpha_i = \pm g^{k_i}
αi=±gki 的形式。我们定义指示函数(符号、指数),
I
l
+
=
{
i
:
α
i
=
+
g
l
}
,
I
l
−
=
{
i
:
α
i
=
−
g
l
}
I_l^+=\{i:\alpha_i=+g^l\},\,\, I_l^-=\{i:\alpha_i=-g^l\}
Il+={i:αi=+gl},Il−={i:αi=−gl}
利用 Horner 法则,以及
g
N
/
2
=
1
(
m
o
d
2
N
)
g^{N/2}=1 \pmod {2N}
gN/2=1(mod2N) 条件,可以写出:
∑
i
α
i
s
i
=
∑
l
∑
j
∈
I
l
+
g
l
s
j
−
∑
l
∑
j
∈
I
l
−
g
l
s
j
=
(
∑
j
∈
I
0
+
s
j
+
⋯
+
g
(
∑
j
∈
I
N
/
2
−
1
+
s
j
−
g
(
∑
j
∈
I
0
−
s
j
+
⋯
+
g
(
∑
j
∈
I
N
/
2
−
1
−
s
j
)
)
)
)
\begin{aligned} \sum_i \alpha_i s_i &= \sum_l\sum_{j \in I_l^+}g^ls_j - \sum_l\sum_{j \in I_l^-}g^ls_j\\ &= \Big(\sum_{j \in I_0^+}s_j + \cdots + g\Big(\sum_{j \in I_{N/2-1}^+}s_j - g\Big(\sum_{j \in I_0^-}s_j + \cdots + g\Big(\sum_{j \in I_{N/2-1}^-}s_j\Big)\Big)\Big)\Big) \end{aligned}
i∑αisi=l∑j∈Il+∑glsj−l∑j∈Il−∑glsj=(j∈I0+∑sj+⋯+g(j∈IN/2−1+∑sj−g(j∈I0−∑sj+⋯+g(j∈IN/2−1−∑sj))))
如果初始化 ACC 加密
f
′
(
X
)
f'(X)
f′(X),设置
b
r
k
i
=
R
G
S
W
z
(
X
s
i
)
brk_i = RGSW_z(X^{s_i})
brki=RGSWz(Xsi),以及
τ
g
,
τ
−
g
\tau_g, \tau_{-g}
τg,τ−g 对应的密钥切换密钥
R
L
W
E
z
′
(
τ
j
(
z
)
)
RLWE'_z(\tau_j(z))
RLWEz′(τj(z))。迭代的执行外积(指数上的加法)和自同构(指数上的数乘),则 ACC 的变化流程是:
R
G
S
W
z
(
f
′
(
X
g
)
⋅
X
∑
j
∈
I
N
/
2
−
1
−
α
i
s
i
)
R
G
S
W
z
(
f
′
(
X
g
2
)
⋅
X
∑
j
∈
I
N
/
2
−
2
−
α
i
s
i
+
∑
j
∈
I
N
/
2
−
1
−
α
i
s
i
)
⋯
R
G
S
W
z
(
f
′
(
X
g
N
/
2
−
1
)
⋅
X
∑
l
≥
1
∑
j
∈
I
l
−
g
l
s
j
)
R
G
S
W
z
(
f
′
(
X
−
1
)
⋅
X
−
∑
l
≥
0
∑
j
∈
I
l
−
g
l
s
j
)
⋯
R
G
S
W
z
(
f
′
(
X
−
g
N
/
2
−
1
)
⋅
X
∑
l
≥
1
∑
j
∈
I
l
+
g
l
s
j
−
∑
l
≥
0
∑
j
∈
I
l
−
g
l
s
j
)
\begin{aligned} & RGSW_z\left( f'(X^g) \cdot X^{\sum_{j \in I_{N/2-1}^-} \alpha_i s_i} \right)\\ & RGSW_z\left( f'(X^{g^2}) \cdot X^{\sum_{j \in I_{N/2-2}^-} \alpha_i s_i + \sum_{j \in I_{N/2-1}^-} \alpha_i s_i} \right)\\ & \cdots\\ & RGSW_z\left( f'(X^{g^{N/2-1}}) \cdot X^{\sum_{l \ge1}\sum_{j \in I_l^-}g^ls_j} \right)\\ &RGSW_z\left( f'(X^{-1}) \cdot X^{-\sum_{l \ge0}\sum_{j \in I_l^-}g^ls_j} \right)\\ & \cdots\\ & RGSW_z\left( f'(X^{-g^{N/2-1}}) \cdot X^{\sum_{l\ge1}\sum_{j \in I_l^+}g^ls_j - \sum_{l \ge0}\sum_{j \in I_l^-}g^ls_j} \right)\\ \end{aligned}\\
RGSWz(f′(Xg)⋅X∑j∈IN/2−1−αisi)RGSWz(f′(Xg2)⋅X∑j∈IN/2−2−αisi+∑j∈IN/2−1−αisi)⋯RGSWz(f′(XgN/2−1)⋅X∑l≥1∑j∈Il−glsj)RGSWz(f′(X−1)⋅X−∑l≥0∑j∈Il−glsj)⋯RGSWz(f′(X−gN/2−1)⋅X∑l≥1∑j∈Il+glsj−∑l≥0∑j∈Il−glsj)
最后一次外积不需要做自同构,最终获得:
R
G
S
W
z
(
f
′
(
X
−
g
N
/
2
−
1
)
⋅
X
∑
l
≥
0
∑
j
∈
I
l
+
g
l
s
j
−
∑
l
≥
0
∑
j
∈
I
l
−
g
l
s
j
)
=
R
G
S
W
z
(
f
′
(
X
−
g
N
/
2
−
1
)
⋅
X
∑
i
α
i
s
i
)
RGSW_z\left( f'(X^{-g^{N/2-1}}) \cdot X^{\sum_{l\ge0}\sum_{j \in I_l^+}g^ls_j - \sum_{l \ge0}\sum_{j \in I_l^-}g^ls_j} \right) = RGSW_z\left(f'(X^{-g^{N/2-1}}) \cdot X^{\sum_i \alpha_i s_i}\right)
RGSWz(f′(X−gN/2−1)⋅X∑l≥0∑j∈Il+glsj−∑l≥0∑j∈Il−glsj)=RGSWz(f′(X−gN/2−1)⋅X∑iαisi)
只要设置 LUT 成为
f
′
(
X
)
=
f
(
X
−
g
)
⋅
X
g
β
f'(X) = f(X^{-g}) \cdot X^{g^\beta}
f′(X)=f(X−g)⋅Xgβ,就可以获得
f
(
X
)
⋅
X
β
+
⟨
α
,
s
⟩
f(X) \cdot X^{\beta+\langle \alpha,s\rangle}
f(X)⋅Xβ+⟨α,s⟩ 的密文,这实现了盲旋转过程。
Reduce the Number of Automorphisms
由于一共只有 n n n 个 α i \alpha_i αi,因此存在许多的 I l ± I_l^\pm Il± 是空集(一般地 N > n N>n N>n),那么就会出现很多连续的 g ( g ( g ⋯ ) ) = g u g(g(g\cdots))=g^u g(g(g⋯))=gu 自同构运算,它们可以合并起来。当然,这就需要更多的对应 KSK,需要做存储开销的权衡。[LMK+23] 设置了一个 window size,实验确定 w = 10 w=10 w=10 是个较好的值,取更大不会带来更多效率提升。
Dealing with Even Ctxt
为了处理 LWE 密文的偶数系数,[LMK+23] 给出了多种变体。
Memory Efficient
如果遇到偶数 α i \alpha_i αi,我们设置 w i = α i − 1 w_i = \alpha_i-1 wi=αi−1;奇数就简单设置 w i = α i w_i=\alpha_i wi=αi。在盲旋转过程中,简单使用 w ⃗ \vec w w 执行。最后对其结果再乘上全部的偶数 α i \alpha_i αi 对应的 b r k i brk_i brki(将减去的 1 1 1 加回来)。算法为:
这个算法需要额外的乘法运算,效率降低。
Computation Efficient
另一种方法是寻找 ∑ i α i s i = ∑ i α i ′ s i ′ \sum_i \alpha_i s_i = \sum_i \alpha_i' s_i' ∑iαisi=∑iαi′si′,使得全部的 α i ′ \alpha_i' αi′ 都是奇数。我们强制 α 0 \alpha_0 α0 是奇数;如果不是,那么全部的 α i + 1 \alpha_i+1 αi+1,并在 ACC 初值额外 − ∑ i s i -\sum_i s_i −∑isi 做平衡。
设置 α 0 ′ = α 0 \alpha_0'=\alpha_0 α0′=α0 是奇数,第 i = 0 , ⋯ , n − 2 i=0,\cdots,n-2 i=0,⋯,n−2 步运算:
- 如果 α i + 1 \alpha_{i+1} αi+1 是奇数,那么设置 α i + 1 ′ = α i + 1 \alpha_{i+1}' = \alpha_{i+1} αi+1′=αi+1,并简单设置 s i ′ = s i s_i'=s_i si′=si
- 如果 α i + 1 \alpha_{i+1} αi+1 是偶数,那么设置 α i + 1 ′ = α i + 1 − α i ′ \alpha_{i+1}' = \alpha_{i+1}-\alpha_i' αi+1′=αi+1−αi′,并设置 s i ′ = s i + s i + 1 s_i'=s_i+s_{i+1} si′=si+si+1 补偿平衡
- 最终设置 s n − 1 ′ = s n − 1 s_{n-1}'=s_{n-1} sn−1′=sn−1
易知 α i ′ \alpha_i' αi′ 都是奇数,且它们满足所需的等式。除了 b r k i = R G S W ( X s i ) brk_i = RGSW(X^{s_i}) brki=RGSW(Xsi),我们额外准备 b r k i ∗ = R G S W ( X s i + s i + 1 ) brk_i^* = RGSW(X^{s_i + s_{i+1}}) brki∗=RGSW(Xsi+si+1),算法为:
这个算法的 BK 规模更大。
Case q = N
假如 q = N q=N q=N 已经足够使得解密失败率可忽略,此时可以将 LWE 密文整体放大两倍,于是 ( α , β ) ( m o d N ) → 2 ( α , β ) ( m o d 2 N ) (\alpha,\beta) \pmod{N} \to 2(\alpha,\beta) \pmod{2N} (α,β)(modN)→2(α,β)(mod2N) 的系数全都是偶数。整体加一成为奇数,在 ACC 初值中把它们减去即可。
在 [XZD+23] 中也是采取了这个约束。
Round-to-Odd
[LMK+23] 最后提出,可以在模切换的时候直接输出奇数的密文。定义
⌊
⋅
⌉
o
d
d
\lfloor\cdot\rceil_{odd}
⌊⋅⌉odd 是就近舍入到奇数,如果最靠近零则直接舍入到零。那么
(
α
,
β
)
∈
Z
Q
n
+
1
→
(
⌊
2
N
/
Q
⋅
α
⌉
o
d
d
,
⌊
2
N
/
Q
⋅
β
⌉
o
d
d
)
∈
Z
2
N
n
+
1
(\alpha,\beta) \in \mathbb Z_Q^{n+1} \to (\lfloor2N/Q \cdot\alpha\rceil_{odd},\lfloor2N/Q \cdot\beta\rceil_{odd}) \in \mathbb Z_{2N}^{n+1}
(α,β)∈ZQn+1→(⌊2N/Q⋅α⌉odd,⌊2N/Q⋅β⌉odd)∈Z2Nn+1
它的系数就全都是奇数(或者零),自举算法是直接的:
它的模切换舍入噪声等于模切换到 N N N,这比模切换到 2 N 2N 2N 偏大。
Implementation
复杂度分析:[LMK+23] 新自举算法的 BK 规模更小,计算复杂度比 TFHE 更好(对于三元或更大的秘密),并且噪声增长也更小(更紧凑的参数集)
效率测试:解密失败率较低,自举秘钥规模显著更小,计算速度仅比二元秘密的 TFHE 略慢
XZD+23
NTRU-Based GSW-Like Encryption
[XZD+23] 提出了支持高效 KS 过程的 NTRU-based FHEW-like 方案。
scalar NTRU ciphertexts:噪声
g
∈
R
Q
g \in R_Q
g∈RQ,私钥
f
∈
R
Q
f \in R_Q
f∈RQ,两者都是短的多项式,且后者是可逆的。消息
u
∈
R
u \in R
u∈R,其密文形如
N
T
R
U
Q
,
f
,
τ
,
Δ
(
u
)
=
τ
⋅
g
/
f
+
Δ
⋅
u
/
f
∈
R
Q
NTRU_{Q,f,\tau,\Delta}(u) = \tau \cdot g/f + \Delta \cdot u/f \in R_Q
NTRUQ,f,τ,Δ(u)=τ⋅g/f+Δ⋅u/f∈RQ
其中的整数
(
τ
,
Δ
)
(\tau,\Delta)
(τ,Δ) 是用于编码的,对于 Regev-like、BGV-like、CKKS-like 的编码方式,参数分别为:
通常的 NTRU 密文形如 c = t ⋅ g / f + m c=t\cdot g/f+m c=t⋅g/f+m,上述的密文可以视为加密了 m = u / f m=u/f m=u/f(存在快速秘钥切换),这是 key-dependent message,因此它需要 KDM security 假设。在 FHE 自举中总是需要循环安全假设,因此安全性降低可忽略。
vector NTRU ciphertexts:类似于 RLWE 扩展到 RGSW 的过程,为了更好地支持同态乘法,我们需要将 NTRU 密文扩展到向量版本,
N
T
R
U
Q
,
f
,
τ
′
(
v
)
=
(
τ
⋅
g
0
/
f
+
B
0
v
,
⋯
,
τ
⋅
g
d
−
1
/
f
+
B
d
−
1
v
)
∈
R
Q
d
NTRU_{Q,f,\tau}'(v) = (\tau \cdot g_0/f+B^0 v, \cdots, \tau \cdot g_{d-1}/f+B^{d-1} v) \in R_Q^d
NTRUQ,f,τ′(v)=(τ⋅g0/f+B0v,⋯,τ⋅gd−1/f+Bd−1v)∈RQd
其中
g
0
,
⋯
,
g
d
−
1
g_0,\cdots,g_{d-1}
g0,⋯,gd−1 都是小噪声,它的安全性可归约到一个向量版本的 NTRU 假设。
容易想到数乘运算:给定
c
∈
R
Q
c \in R_Q
c∈RQ,给定
c
′
=
N
T
R
U
′
(
v
)
∈
R
Q
d
c'=NTRU'(v) \in R_Q^d
c′=NTRU′(v)∈RQd,
c
⊙
c
′
=
⟨
D
e
c
o
m
B
(
c
)
,
c
′
⟩
=
τ
⋅
∑
i
=
0
d
−
1
c
i
g
i
/
f
+
c
v
∈
R
Q
c \odot c' = \langle Decom_B(c),c' \rangle = \tau\cdot\sum_{i=0}^{d-1}c_ig_i/f + cv \in R_Q
c⊙c′=⟨DecomB(c),c′⟩=τ⋅i=0∑d−1cigi/f+cv∈RQ
由于 NTRU 密文本身就是单个
R
Q
R_Q
RQ 环元素,容易验证:
- 同态乘法:输入 c = N T R U f ( u ) c=NTRU_f(u) c=NTRUf(u),给定 c ′ = N T R U f ′ ( v ) c'=NTRU_f'(v) c′=NTRUf′(v),那么 c ⊙ c ′ = N T R U f ( u v ) c \odot c' = NTRU_f(uv) c⊙c′=NTRUf(uv)
- 密钥切换:输入 c = N T R U f 1 ( u ) c=NTRU_{f_1}(u) c=NTRUf1(u),给定 c ′ = N T R U f 2 ′ ( f 1 / f 2 ) c'=NTRU_{f_2}'(f_1/f_2) c′=NTRUf2′(f1/f2),那么 c ⊙ c ′ = N T R U f 2 ( u ) c \odot c' = NTRU_{f_2}(u) c⊙c′=NTRUf2(u)
两者都只需执行 d d d 次环元素乘法。
同态自同构运算,就是先对密文(一个环元素)执行自同构映射 ψ t : a ( X ) → a ( X t ) \psi_t:a(X) \to a(X^t) ψt:a(X)→a(Xt),然后执行 f ( X t ) → f ( X ) f(X^t) \to f(X) f(Xt)→f(X) 的秘钥切换。由于前者仅仅是系数的带符号置换,主要的开销就是 KS 过程。
Fast Blind Rotation in the NTRU Setting
遵循 FHEW/TFHE 的盲旋转框架。假设
q
∣
2
N
q|2N
q∣2N,令
Y
=
X
2
N
/
q
Y=X^{2N/q}
Y=X2N/q 是阶
q
q
q 的单位根,给定 LWE 密文
(
a
⃗
,
b
)
∈
Z
q
n
+
1
(\vec a,b) \in \mathbb Z_q^{n+1}
(a,b)∈Zqn+1,我们需要计算
r
(
Y
)
⋅
Y
−
b
⋅
Y
∑
i
a
i
s
i
=
r
(
Y
)
⋅
Y
−
n
o
i
s
e
d
(
m
)
r(Y) \cdot Y^{-b} \cdot Y^{\sum_i a_is_i} = r(Y) \cdot Y^{-noised(m)}
r(Y)⋅Y−b⋅Y∑iaisi=r(Y)⋅Y−noised(m)
我们只考虑 Regev-like 编码方式。设置
r
(
Y
)
=
⋅
∑
i
=
0
q
−
1
[
i
/
⌊
q
/
t
⌉
]
t
⋅
Y
−
i
r(Y)=\cdot\sum_{i=0}^{q-1}[i/\lfloor q/t \rceil]_t \cdot Y^{-i}
r(Y)=⋅∑i=0q−1[i/⌊q/t⌉]t⋅Y−i,那么旋转后的常数项就是
m
∈
Z
Q
m \in \mathbb Z_Q
m∈ZQ 的纠错结果。
[XZD+23] 利用自同构来实现 Y s i → Y a i s i Y^{s_i} \to Y^{a_is_i} Ysi→Yaisi 的计算,因此私钥分布可以是任意的。由于 N N N 是二的幂次,从而只有 { 1 , 3 , 5 , ⋯ , 2 N − 1 } \{1,3,5,\cdots,2N-1\} {1,3,5,⋯,2N−1} 具有对应的自同构映射,它们都是奇数。然而, a i a_i ai 可能是偶数。
[XZD+23] 通过加强约束
q
∣
N
q|N
q∣N,然后可以使得指数整体上总是偶数,从而可以将它们都变成奇数,
r
(
Y
)
⋅
Y
−
b
⋅
Y
∑
i
a
i
s
i
=
r
(
Y
)
⋅
Y
−
b
⋅
X
∑
i
(
2
N
/
q
⋅
a
i
+
1
)
s
i
⋅
X
∑
i
−
s
i
\begin{aligned} r(Y) \cdot Y^{-b} \cdot Y^{\sum_i a_is_i} = r(Y) \cdot Y^{-b} \cdot X^{\sum_i (2N/q \cdot a_i+1)s_i} \cdot X^{\sum_i -s_i} \end{aligned}
r(Y)⋅Y−b⋅Y∑iaisi=r(Y)⋅Y−b⋅X∑i(2N/q⋅ai+1)si⋅X∑i−si
简记
w
i
=
2
N
/
q
⋅
a
i
+
1
w_i = 2N/q \cdot a_i+1
wi=2N/q⋅ai+1,易知它是奇数。我们令
S
=
{
2
N
i
/
q
+
1
:
1
≤
i
≤
q
−
1
}
S=\{2Ni/q+1: 1\le i\le q-1\}
S={2Ni/q+1:1≤i≤q−1},那么
S
∪
{
1
}
S \cup \{1\}
S∪{1} 就是全部的可能取值。我们需要
S
S
S 指示的那些自同构映射,以及对应的 KS 过程。
此外,由于采取了特殊形式的 NTRU 密文, N T R U ( u ) = τ ⋅ g / f + Δ ⋅ u / f NTRU(u) = \tau \cdot g/f + \Delta \cdot u/f NTRU(u)=τ⋅g/f+Δ⋅u/f,其中 f f f 是私钥。这导致给定常数 u u u,在没有 f f f 信息的情况下无法构造出对应的密文,即使噪声 g = 0 g=0 g=0 也不行。但是 ACC 的初值应当加密 r ( Y ) ⋅ Y − b r(Y)\cdot Y^{-b} r(Y)⋅Y−b,这是自举时确定的常数。[XZD+23] 的方法是在 evaluation key 中添加 f f f 的信息(而 TFHE/FHEW 的自举秘钥只需要含有 s s s 的信息)
由于 w i = 2 N / q ⋅ a i + 1 w_i = 2N/q \cdot a_i+1 wi=2N/q⋅ai+1 总是属于 S ∪ { 1 } S \cup \{1\} S∪{1},因此它们都是模 2 N 2N 2N 可逆的,记为 w i ′ = [ w i − 1 ] 2 N w_i'=[w_i^{-1}]_{2N} wi′=[wi−1]2N。额外地设置 w n ′ = 1 w_n'=1 wn′=1,它用于清理掉无用数据。
首先,计算初始值
r
(
Y
w
0
′
)
⋅
Y
−
b
w
0
′
r(Y^{w_0'}) \cdot Y^{-bw_0'}
r(Yw0′)⋅Y−bw0′,将它加密到 ACC 中,
c
0
(
X
)
=
(
Δ
⋅
r
(
Y
w
0
′
)
⋅
Y
−
b
w
0
′
)
⊙
e
v
k
0
=
N
T
R
U
Q
,
f
(
r
(
Y
w
0
′
)
⋅
Y
−
b
w
0
′
⋅
X
s
0
)
\begin{aligned} c_0(X) &= (\Delta \cdot r(Y^{w_0'}) \cdot Y^{-bw_0'}) \odot evk_0\\ &= NTRU_{Q,f}\left(r(Y^{w_0'}) \cdot Y^{-bw_0'} \cdot X^{s_0}\right) \end{aligned}
c0(X)=(Δ⋅r(Yw0′)⋅Y−bw0′)⊙evk0=NTRUQ,f(r(Yw0′)⋅Y−bw0′⋅Xs0)
接着利用自同构
X
→
X
w
0
w
1
′
X \to X^{w_0w_1'}
X→Xw0w1′,可以计算出
c
0
′
(
X
)
=
c
0
(
X
w
0
w
1
′
)
=
N
T
R
U
Q
,
f
(
X
w
0
w
1
′
)
(
r
(
Y
w
1
′
)
⋅
Y
−
b
w
1
′
⋅
X
w
0
w
1
′
s
0
)
c_0'(X) = c_0(X^{w_0w_1'}) = NTRU_{Q,f(X^{w_0w_1'})}\left(r(Y^{w_1'}) \cdot Y^{-bw_1'} \cdot X^{w_0w_1's_0}\right)
c0′(X)=c0(Xw0w1′)=NTRUQ,f(Xw0w1′)(r(Yw1′)⋅Y−bw1′⋅Xw0w1′s0)
最后利用 KS 过程,获得
c
^
0
(
X
)
=
c
0
′
(
X
)
⊙
k
s
k
w
0
w
1
′
=
N
T
R
U
Q
,
f
(
r
(
Y
w
1
′
)
⋅
Y
−
b
w
1
′
⋅
X
w
0
s
0
⋅
w
1
′
)
\begin{aligned} \hat c_0(X) &= c_0'(X) \odot ksk_{w_0w_1'}\\ &= NTRU_{Q,f}\left(r(Y^{w_1'}) \cdot Y^{-bw_1'} \cdot X^{w_0s_0 \cdot w_1'}\right) \end{aligned}
c^0(X)=c0′(X)⊙kskw0w1′=NTRUQ,f(r(Yw1′)⋅Y−bw1′⋅Xw0s0⋅w1′)
这就计算出了
w
0
s
0
w_0s_0
w0s0 的部分。接着,对于
1
≤
i
≤
n
−
1
1\le i \le n-1
1≤i≤n−1 迭代执行:
- 计算外积(插入 s i s_i si)
c i ( X ) = c ^ i − 1 ( X ) ⊙ e v k i = N T R U Q , f ( r ( Y w i ′ ) ⋅ Y − b w i ′ ⋅ X ( ∑ j = 0 i − 1 w j s j ) ⋅ w i ′ + s i ) \begin{aligned} c_i(X) &= \hat c_{i-1}(X) \odot evk_i\\ &= NTRU_{Q,f}\left(r(Y^{w_i'}) \cdot Y^{-bw_i'} \cdot X^{(\sum_{j=0}^{i-1}w_js_j) \cdot w_i' + s_i}\right) \end{aligned} ci(X)=c^i−1(X)⊙evki=NTRUQ,f(r(Ywi′)⋅Y−bwi′⋅X(∑j=0i−1wjsj)⋅wi′+si)
- 计算自同构(内积 w i s i w_is_i wisi)
c i ′ ( X ) = c i ( X w i w i + 1 ′ ) = N T R U Q , f ( X w i w i + 1 ′ ) ( r ( Y w i + 1 ′ ) ⋅ Y − b w i + 1 ′ ⋅ X ( ∑ j = 0 i w j s j ) ⋅ w i + 1 ′ ) c_i'(X) = c_i(X^{w_iw_{i+1}'}) = NTRU_{Q,f(X^{w_iw_{i+1}'})}\left(r(Y^{w_{i+1}'}) \cdot Y^{-bw_{i+1}'} \cdot X^{(\sum_{j=0}^{i}w_js_j) \cdot w_{i+1}'}\right) ci′(X)=ci(Xwiwi+1′)=NTRUQ,f(Xwiwi+1′)(r(Ywi+1′)⋅Y−bwi+1′⋅X(∑j=0iwjsj)⋅wi+1′)
- 执行秘钥切换(回到 f f f 下)
c ^ i ( X ) = c i ′ ( X ) ⊙ k s k w i w i + 1 ′ = N T R U Q , f ( r ( Y w i + 1 ′ ) ⋅ Y − b w i + 1 ′ ⋅ X ( ∑ j = 0 i w j s j ) ⋅ w i + 1 ′ ) \begin{aligned} \hat c_i(X) &= c_i'(X) \odot ksk_{w_iw_{i+1}'}\\ &= NTRU_{Q,f}\left(r(Y^{w_{i+1}'}) \cdot Y^{-bw_{i+1}'} \cdot X^{(\sum_{j=0}^{i}w_js_j) \cdot w_{i+1}'}\right) \end{aligned} c^i(X)=ci′(X)⊙kskwiwi+1′=NTRUQ,f(r(Ywi+1′)⋅Y−bwi+1′⋅X(∑j=0iwjsj)⋅wi+1′)
最后的最后,计算并输出
c
n
=
c
^
n
−
1
(
X
)
⊙
e
v
k
n
=
N
T
R
U
Q
,
f
(
r
(
Y
w
n
′
)
⋅
Y
−
b
w
n
′
⋅
X
(
∑
j
=
0
n
−
1
w
j
s
j
)
⋅
w
n
′
⋅
X
−
∑
j
=
0
n
−
1
s
j
)
=
N
T
R
U
Q
,
f
(
r
(
Y
)
⋅
Y
−
b
⋅
Y
∑
j
=
0
n
−
1
a
j
s
j
)
\begin{aligned} c_n &= \hat c_{n-1}(X) \odot evk_n\\ &= NTRU_{Q,f}\left(r(Y^{w_{n}'}) \cdot Y^{-bw_{n}'} \cdot X^{(\sum_{j=0}^{n-1}w_js_j) \cdot w_n'} \cdot X^{-\sum_{j=0}^{n-1}s_j}\right)\\ &= NTRU_{Q,f}\left(r(Y) \cdot Y^{-b} \cdot Y^{\sum_{j=0}^{n-1}a_js_j}\right) \end{aligned}
cn=c^n−1(X)⊙evkn=NTRUQ,f(r(Ywn′)⋅Y−bwn′⋅X(∑j=0n−1wjsj)⋅wn′⋅X−∑j=0n−1sj)=NTRUQ,f(r(Y)⋅Y−b⋅Y∑j=0n−1ajsj)
易知,这完成了
r
(
Y
)
r(Y)
r(Y) 盲旋转
⟨
a
,
s
⟩
−
b
\langle a,s \rangle-b
⟨a,s⟩−b 的任务。完整的盲旋转算法:
解下来的问题是如何从 NTRU 密文,提取出 LWE 密文。给定
c
=
N
T
R
U
Q
,
f
(
u
)
c=NTRU_{Q,f}(u)
c=NTRUQ,f(u),其中
(
τ
=
1
,
Δ
=
⌊
Q
/
t
⌉
)
(\tau=1, \Delta=\lfloor Q/t\rceil)
(τ=1,Δ=⌊Q/t⌉),那么解密为
f
c
=
g
+
Δ
u
∈
R
Q
fc = g + \Delta u \in R_Q
fc=g+Δu∈RQ
其中
g
g
g 是短的,
u
u
u 的常数项是
m
m
m,所以
⟨
f
,
c
′
⟩
=
g
0
+
Δ
m
\langle f,c' \rangle = g_0+\Delta m
⟨f,c′⟩=g0+Δm,其中
c
′
=
(
c
0
,
−
c
N
−
1
,
⋯
,
−
c
)
c'=(c_0,-c_{N-1},\cdots,-c)
c′=(c0,−cN−1,⋯,−c) 是反序的系数。那么,可构造出 LWE 密文:
L
W
E
Q
,
f
(
m
)
=
(
(
c
0
,
−
c
N
−
1
,
⋯
,
−
c
)
,
0
)
∈
Z
Q
n
+
1
LWE_{Q,f}(m) = ((c_0,-c_{N-1},\cdots,-c),0) \in \mathbb Z_Q^{n+1}
LWEQ,f(m)=((c0,−cN−1,⋯,−c),0)∈ZQn+1
只要
g
0
/
Q
≪
e
/
q
g_0/Q \ll e/q
g0/Q≪e/q,这里
e
e
e 是自举前 LWE 密文噪声,那么自举就是有效的。
Bootstrapping
LWE-based
对于 LWE 密文的自举,是容易的。
RLWE-based
对于 RLWE 密文的自举,先提取出 n n n 个 LWE 密文,然后分别自举,最后利用 [MS18] 的密文堆叠打包的技术回到 RLWE 密文。
Analysis and Comparisons
选取的参数集:NTRU 问题的模数 Q Q Q 过度拉伸,会导致有效的子域攻击;[Dv21] 设计了评估器,给出了疲劳点 Q ≈ 0.004 ⋅ N 2.484 Q \approx 0.004 \cdot N^{2.484} Q≈0.004⋅N2.484。[XZD+23] 给的参数集却是按照 Q < N 2.484 Q<N^{2.484} Q<N2.484 来选取的(似乎有安全问题啊)
复杂度分析:[XZD+23] 盲旋转的渐进复杂度最低,
噪声分析:[XZD+23] 盲旋转的噪声增长最小,
实际性能:[XZD+23] 盲旋转的计算效率最好,