Small and Fast Blind Rotation via Automorphisms

参考文献:

  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.
  2. [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
  3. [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 XXt 实现盲旋转,而非 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} fXba,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,,2N1}。因此令 q = 2 N q=2N q=2N,我们假设 LWE 密文的各个系数都是奇数,从而存在对应的自同构。对于 N ≥ 8 N \ge 8 N8,存在同构 Z 2 N ∗ ≅ Z N / 2 ⊗ Z 2 \mathbb Z_{2N}^* \cong \mathbb Z_{N/2} \otimes \mathbb Z_2 Z2NZN/2Z2,生成集是 { 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=ljIl+glsjljIlglsj=(jI0+sj++g(jIN/21+sjg(jI0sj++g(jIN/21sj))))
如果初始化 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)XjIN/21αisi)RGSWz(f(Xg2)XjIN/22αisi+jIN/21αisi)RGSWz(f(XgN/21)Xl1jIlglsj)RGSWz(f(X1)Xl0jIlglsj)RGSWz(f(XgN/21)Xl1jIl+glsjl0jIlglsj)

最后一次外积不需要做自同构,最终获得:
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(XgN/21)Xl0jIl+glsjl0jIlglsj)=RGSWz(f(XgN/21)Xiαisi)
只要设置 LUT 成为 f ′ ( X ) = f ( X − g ) ⋅ X g β f'(X) = f(X^{-g}) \cdot X^{g^\beta} f(X)=f(Xg)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=αi1;奇数就简单设置 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αisi,使得全部的 α 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,,n2 步运算:

  • 如果 α 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} sn1=sn1

易知 α 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 gRQ,私钥 f ∈ R Q f \in R_Q fRQ,两者都是短的多项式,且后者是可逆的。消息 u ∈ R u \in R uR,其密文形如
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/fRQ
其中的整数 ( τ , Δ ) (\tau,\Delta) (τ,Δ) 是用于编码的,对于 Regev-like、BGV-like、CKKS-like 的编码方式,参数分别为:

在这里插入图片描述

通常的 NTRU 密文形如 c = t ⋅ g / f + m c=t\cdot g/f+m c=tg/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,,τgd1/f+Bd1v)RQd
其中 g 0 , ⋯   , g d − 1 g_0,\cdots,g_{d-1} g0,,gd1 都是小噪声,它的安全性可归约到一个向量版本的 NTRU 假设。

容易想到数乘运算:给定 c ∈ R Q c \in R_Q cRQ,给定 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 cc=DecomB(c),c=τi=0d1cigi/f+cvRQ
由于 NTRU 密文本身就是单个 R Q R_Q RQ 环元素,容易验证:

  1. 同态乘法:输入 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) cc=NTRUf(uv)
  2. 密钥切换:输入 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) cc=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)YbYiaisi=r(Y)Ynoised(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=0q1[i/q/t]tYi,那么旋转后的常数项就是 m ∈ Z Q m \in \mathbb Z_Q mZQ 的纠错结果。

[XZD+23] 利用自同构来实现 Y s i → Y a i s i Y^{s_i} \to Y^{a_is_i} YsiYaisi 的计算,因此私钥分布可以是任意的。由于 N N N 是二的幂次,从而只有 { 1 , 3 , 5 , ⋯   , 2 N − 1 } \{1,3,5,\cdots,2N-1\} {1,3,5,,2N1} 具有对应的自同构映射,它们都是奇数。然而, a i a_i ai 可能是偶数。

[XZD+23] 通过加强约束 q ∣ N q|N qN,然后可以使得指数整体上总是偶数,从而可以将它们都变成奇数,
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)YbYiaisi=r(Y)YbXi(2N/qai+1)siXisi
简记 w i = 2 N / q ⋅ a i + 1 w_i = 2N/q \cdot a_i+1 wi=2N/qai+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:1iq1},那么 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)Yb,这是自举时确定的常数。[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/qai+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=[wi1]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)Ybw0,将它加密到 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)Ybw0)evk0=NTRUQ,f(r(Yw0)Ybw0Xs0)
接着利用自同构 X → X w 0 w 1 ′ X \to X^{w_0w_1'} XXw0w1,可以计算出
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)Ybw1Xw0w1s0)
最后利用 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)Ybw1Xw0s0w1)
这就计算出了 w 0 s 0 w_0s_0 w0s0 的部分。接着,对于 1 ≤ i ≤ n − 1 1\le i \le n-1 1in1 迭代执行:

  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^i1(X)evki=NTRUQ,f(r(Ywi)YbwiX(j=0i1wjsj)wi+si)

  1. 计算自同构(内积 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)Ybwi+1X(j=0iwjsj)wi+1)

  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)Ybwi+1X(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^n1(X)evkn=NTRUQ,f(r(Ywn)YbwnX(j=0n1wjsj)wnXj=0n1sj)=NTRUQ,f(r(Y)YbYj=0n1ajsj)
易知,这完成了 r ( Y ) r(Y) r(Y) 盲旋转 ⟨ a , s ⟩ − b \langle a,s \rangle-b a,sb 的任务。完整的盲旋转算法:

在这里插入图片描述

解下来的问题是如何从 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+ΔuRQ
其中 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,cN1,,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,cN1,,c),0)ZQn+1
只要 g 0 / Q ≪ e / q g_0/Q \ll e/q g0/Qe/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} Q0.004N2.484。[XZD+23] 给的参数集却是按照 Q < N 2.484 Q<N^{2.484} Q<N2.484 来选取的(似乎有安全问题啊)

在这里插入图片描述

复杂度分析:[XZD+23] 盲旋转的渐进复杂度最

在这里插入图片描述

噪声分析:[XZD+23] 盲旋转的噪声增长最

在这里插入图片描述

实际性能:[XZD+23] 盲旋转的计算效率最

在这里插入图片描述

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值