Amortized bootstrapping via Automorphisms

news2024/11/15 8:21:56

参考文献:

  1. [MS18] Micciancio D, Sorrell J. Ring packing and amortized FHEW bootstrapping. ICALP 2018: 100:1-100:14.
  2. [GPV23] Guimarães A, Pereira H V L, Van Leeuwen B. Amortized bootstrapping revisited: Simpler, asymptotically-faster, implemented. ASIACRYPT 2023 (6): 3-35.
  3. [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.
  4. 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] 的思路:

  1. 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} sRn
  2. 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 as+b 各个系数的 RGSW 密文。
  3. 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,nRq,n/m[X]/(XmY)Rq,n/m[X]/(Xkm1),其中 n ≥ k m 2 n \ge km^2 nkm2 并且 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=XmRq,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]/(Xp1),其中 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++Xp1,定义投影函数 L : R → R ~ L: R \to \tilde R L:RR~(疑问:系数 a p − 1 a_{p-1} ap1 不该存在吧):
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=0p1aiXii=0p1aiXi([p1]Qi=0p1ai)i=0p1Xi(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((1X)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 dl 是整数,定义 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=(i1)k+1ikqj,1id(就是分区 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=[Qi1]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) g1(a) 就是 { [ a ] D i } 1 ≤ i ≤ d \{[a]_{D_i}\}_{1\le i \le d} {[a]Di}1id,满足 ⟨ g − 1 ( a ) , g ⟩ = a \langle g^{-1}(a), g\rangle = a g1(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 aRQ,容易证明它满足 ⟨ g − 1 ( α − 1 a ) , g α ⟩ = a \langle g^{-1}(\alpha^{-1}a), g_\alpha\rangle = a g1(α1a),gα=a

Shrinking 就是删除一部分 CRT Digit,做模切换,并相应的调整缩放因子

  1. 给定 scaled gadget 分解 a i = [ a ] D i , 1 ≤ i ≤ d a_i=[a]_{D_i}, 1 \le i \le d ai=[a]Di,1id,它的缩放因子是 α \alpha α
  2. 给定 1 ≤ k < d 1 \le k < d 1k<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)
  3. 对于 k + 1 ≤ i ≤ d k+1 \le i \le d k+1id,计算 a i − k ′ = a i ⋅ [ D ( k ) ] D i a_{i-k}' = a_i \cdot [D^{(k)}]_{D_i} aik=ai[D(k)]Di
  4. 输出 a j ′ , 1 ≤ j ≤ d − k a_j', 1\le j\le d-k aj,1jdk,它的缩放因子是 α ′ = α ⋅ [ ( 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)+aRLWEsk(sk2)=RLWEsk(vimsk+esk)
把它们重排为 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 mZq,将它编码为 X m ∈ R r e g X^m \in R_{reg} XmRreg 加密为 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} zRin

在这里插入图片描述

对于卷积环,将它的 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++Xq1) 做 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+azRin,[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)/k1Zq[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} aRin,执行 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]qa(modXkζi)
对于私钥 z ∈ R i n z \in R_{in} zRin,也将它做 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)),0i<ϕ(d)/k,0j<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~iz~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=0jz~i(l)a~i(jl)+ζil=j+1l1z~i(l)a~i(k+jl)
由于 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(k1)) 和明文向量 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(j1),,a~i(0),ζia~i(k1),ζia~i(k2),,ζ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 ciZq 全都非零、可逆,如果是零则简单删除):
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=(((z0c0c11+z1)c1c21+)zk2zk11+zk1)ck1
这样整个过程都只需要 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~iz~iZq[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=as 的各个系数。

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]/(XkY)Zqϕ(d)/k[X]/(XkY)
其中 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]/(ZN1)
其中 Y = Z ζ Y = Z\zeta Y=,这里 ζ \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=0r1Zq[Z]/(ZR/rζNjr1+iN/r)
以及映射 Z R / r → ζ N j r − 1 + i N / r Z^{R/r} \to \zeta_N^{jr^{-1}+iN/r} ZR/rζNjr1+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=0R1akZkl=0R/r1(k=0r1al+kR/r(ζNjr1+iN/r)k)Zl
其中 ζ N j r − 1 + i N / r \zeta_N^{jr^{-1}+iN/r} ζNjr1+iN/r 是所有的 ζ N j \zeta_N^j ζNj r r r 次根,这里 r ∣ R ∣ N r \mid R \mid N rRN 是当前层的 radix 设置。Complete cyclic NTT 的每一层分解都是若干个关于某些单位根的多项式求值

在这里插入图片描述

在这里插入图片描述

其中的 { r i } 0 ≤ i < l \{r_i\}_{0 \le i < l} {ri}0i<l 是每一层分解的 radix,递归深度 l l l 是常数。由于自举的最终结果是单个 RLWE 密文,因此它的各个系数只需要被加密在单个 RLWE 寄存器里,所以最后一层使用外积 Q / 4 ⊙ c t i Q/4 \odot ct_i Q/4cti 把寄存器 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/4Xv) 密文,这里的 4 4 4 是原始 FHEW 的明文模数。

依次执行 v ~ i = a ~ i ⋅ s ~ i \tilde v_i = \tilde a_i \cdot \tilde s_i v~i=a~is~i 以及上述的 P F T − 1 ( { v ~ i } ) PFT^{-1}(\{\tilde v_i\}) PFT1({v~i}),最终获得各个系数的密文 R L W E ( Q / 4 ⋅ X ( a ⋅ s ) j ) RLWE(Q/4 \cdot X^{(a \cdot s)_j}) RLWE(Q/4X(as)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/4X(b+as)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+as)iZq 分别加密在 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/4XcRreg,私钥是 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++Xq1,因此有 X q − 1 ≡ − 1 − X − ⋯ − X q − 2 X^{q-1} \equiv -1-X-\cdots-X^{q-2} Xq11XXq2 以及 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=0ia^ijs^j+j=i+2q2a^q+ijs^jj=1q2a^q1js^j=b^i+⟨(a^i,a^i1a^q2,a^i2a^q3,,a^0a^qi1,0a^qi2,a^q2a^qi3,,a^i+2a^1),(s^0,,s^q2)⟩
因此 ( 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,a i:=(a^i,a^i1a^q2,a^i2a^q3,,a^0a^qi1,0a^qi2,a^q2a^qi3,,a^i+2a^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^q2),噪声是 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=q1,那么 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) μ=1c(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) 次外积

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1813748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代理设计模式之JDK动态代理CGLIB动态代理原理与源码剖析

代理设计模式 代理模式(Proxy),为其它对象提供一种代理以控制对这个对象的访问。如下图 从上面的类图可以看出,通过代理模式,客户端访问接口时的实例实际上是Proxy对象,Proxy对象持有RealSubject的引用,这样一来Proxy在可以在实际执行RealSubject前后做一些操作,相当于…

MTK烧录USB驱动下载

下载链接 https://www.catalog.update.microsoft.com/Search.aspx?qMediaTek%20USB%20Port 驱动安装教程 https://miuiver.com/install-official-mediatek-driver/

中科数安 |-公司办公透明加密系统,数据防泄漏软件

#数据防泄漏软件# 中科数安是一家专注于提供企业级数据防泄漏解决方案的公司&#xff0c;其办公透明加密系统是专为保护企业内部核心数据资料设计的。 PC地址&#xff1a;——www.weaem.com 该系统通过以下主要功能模块实现高效的安全防护&#xff1a; 文档透明加密&#xff1…

惠州惠城:可燃气体报警器定期校准检测,安全更放心

在惠州惠城这片繁华的土地上&#xff0c;工业发展日新月异&#xff0c;安全问题愈发受到重视。其中&#xff0c;可燃气体报警器作为预防火灾和爆炸事故的重要设备&#xff0c;正在越来越多的场所得到应用。 今天&#xff0c;佰德就来探讨一下可燃气体报警器在惠州惠城的重要性…

PV 操作

PV 操作是一种实现进程 互斥 与 同步 的有效方法。PV 操作与信号量的处理相关&#xff0c;P 表示 passeren 通过的意思&#xff0c;V 表示 vrijgeven 释放的意思. 包含在 1965 年, 由荷兰人 Dijkstra 提出的信号量机制; (同是 银行家算法 和 最短路径算法 的提出者) 术语: sema…

Pytorch 实现简单的 线性回归 算法

Pytorch实现简单的线性回归算法 简单 tensor的运算 Pytorch涉及的基本数据类型是tensor&#xff08;张量&#xff09;和Autograd&#xff08;自动微分变量&#xff09; import torch x torch.rand(5, 3) #产生一个5*3的tensor&#xff0c;在 [0,1) 之间随机取值 y torch.o…

ATFX汇市:非农数据超预期靓丽,美指重新站上105关口

ATFX汇市&#xff1a;6月7日&#xff0c;美国劳工统计局公布5月份非农就业报告&#xff0c;其中提到&#xff1a;5月份增加了27.2万个岗位&#xff0c;大幅高于前值16.5万人&#xff0c;数据超预期靓丽&#xff1b;几个行业的就业人数继续呈上升趋势&#xff0c;其中医疗领域增…

操作系统 c语言模仿 磁盘文件操作

1&#xff0e;实验目的 深入了解磁盘文件系统的实现。 2&#xff0e;实验预备知识 文件的操作&#xff1b; 文件的逻辑结构和物理结构&#xff1b; 磁盘空间的管理&#xff1b; 磁盘目录结构。 3&#xff0e;实验内容 设计一个简单的文件系统&#xff0c;用文件模拟磁盘&…

springboot+vue前后端分离项目中使用jwt实现登录认证

文章目录 一、后端代码1.响应工具类2.jwt工具类3.登录用户实体类4.登录接口5.测试接口6.过滤器7.启动类 二、前端代码1.登录页index 页面 三、效果展示 一、后端代码 1.响应工具类 package com.etime.util;import com.etime.vo.ResponseModel; import com.fasterxml.jackson.…

RAG核心算法

一、分块与向量化 首先,我们的目标是创建一个向量索引,用以代表我们文档的内容,然后在运行时寻找所有这些向量与查询向量之间的最小余弦距离,以匹配最接近的语义含义。 1、分块 由于 Transformer 模型具有固定的输入序列长度,即便输入上下文窗口很大,一个句子或几个句…

【全网最有效,保姆级教程】KEPServerEX 6下载安装解决时长问题

1、下载KEPServer KEPServerEX 6下载链接(为了防止版本不兼容&#xff0c;一定要使用下面链接里面的版本&#xff01;)&#xff1a; https://pan.baidu.com/s/19pAXzhWa5nxduU3mi1V4Nw?pwd1234 提取码:1234 2、安装KEPServer 基本上都是默认下一步&#xff0c;选择中文&…

python中用列表实现栈

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 python中用列表实现栈 选择题 以下代码最后一次输出的结果是&#xff1f; stack [] stack.append(1) stack.append(2) stack.append(3) print(【显示】stack ,stack) print(【显示】stack.…

SpringCloud 前端-网关-微服务-微服务间实现信息共享传递

目录 1 网关获取用户校验信息并保存至请求头&#xff08;前端-网关&#xff09; 2 微服务获取网关中的用户校验信息&#xff08;网关-微服务&#xff09; 2.1 一般的做法是在公共的module中添加&#xff0c;此处示例为common 公共配置module中添加 2.2 定义拦截器 2.3 定义…

C++|哈希结构封装unordered_set和unordered_map

上一篇章&#xff0c;学习了unordered系列容器的使用&#xff0c;以及哈希结构&#xff0c;那么这一篇章将通过哈希结构来封装unordered系列容器&#xff0c;来进一步的学习他们的使用以及理解为何是如此使用。其实&#xff0c;哈希表的封装方式和红黑树的封装方式形式上是差不…

鸿蒙低代码开发的局限性

在版本是DevEco Studio 3.1.1 Release&#xff0c;SDK是3.1.0(API9) 的基础上。 1、低代码插件没有WebView组件。 2、低代码插件没有空白的自定义组件&#xff0c;当前提供的所谓自定义组件&#xff0c;只能用列表中提供的组件来拼接新的组件。 3、使用ets代码自定义的组件&…

JVM 常量池汇总

Tips JVM常量池分为静态常量池和运行时常量池&#xff0c;因为Jdk1.7后字符串常量池从运行时常量池存储位置剥离&#xff0c;故很多博客也是区分开来&#xff0c;存储位置和内容注意区别&#xff01; 字符串常量池底层是由C实现&#xff0c;是一个类似于HashTable的数据结构&am…

Spring 中使用MyBatis

一、Mybatis 的作用 1、MyBatis&#xff08;前身为iBatis&#xff09;是一个开源的Java持久层框架&#xff0c;它主要用于与数据库交互&#xff0c;帮助开发者更轻松地进行数据库操作。 持久层&#xff1a;指的是就是数据访问层(dao)&#xff0c;是用来操作数据库的。 2、MyB…

Filament 【表单操作】修改密码

场景描述&#xff1a; 新增管理员信息时需要填写密码&#xff0c;修改管理员信息时密码可以为空&#xff08;不修改密码&#xff09;&#xff0c;此时表单中密码输入有冲突&#xff0c;需要对表单中密码字段进项条件性的判断&#xff0c;使字段在 create 操作时为必需填写&…

深度学习-注意力机制和分数

深度学习-注意力机制 注意力机制定义与起源原理与特点分类应用领域实现方式优点注意力机制的变体总结注意力分数定义计算方式注意力分数的作用注意力分数的设计总结 注意力机制&#xff08;Attention Mechanism&#xff09;是一个源自对人类视觉研究的概念&#xff0c;现已广泛…

实测 WordPress 最佳优化方案:WP Super Cache+Memcached+CDN

说起 WordPress 优化加速来可以说是个经久不衰的话题了&#xff0c;包括明月自己都撰写发表了不少相关的文章。基本上到现在为止明月的 WordPress 优化方案已经固定成型了&#xff0c;那就是 WP Super CacheMemcachedCDN 的方案&#xff0c;因为这个方案可以做到免费、稳定、安…