参考文献:
- [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
- [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.
文章目录
- NTRU-Based GSW-Like Encryption
- Fast Blind Rotation in the NTRU Setting
- Bootstrapping
- LWE-based
- RLWE-based
- Analysis and Comparisons
文章 [XZD+23] 提出了一种特殊形式密文的 NTRU-based GSW-like 加密方案,其秘钥切换过程的效率和同态外积的效率一样。文章使用自同构 X → X t X \to X^t X→Xt 实现盲旋转,而非 AP/FHEW 或者 GINX/TFHE 的自举方式。由于 KS 过程很快,且 NTRU 比 RLWE 少一半的环元素,这使得新的盲旋转算法的计算速度很快。
NTRU-Based GSW-Like Encryption
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] 盲旋转的计算效率最好,