环面上 FHE 的快速自举:LUT/Automata Blind Rotate

news2024/10/6 12:30:38

参考文献:

  1. [AP14] Alperin-Sheriff J, Peikert C. Faster bootstrapping with polynomial error[C]//Advances in Cryptology–CRYPTO 2014: 34th Annual Cryptology Conference, Santa Barbara, CA, USA, August 17-21, 2014, Proceedings, Part I 34. Springer Berlin Heidelberg, 2014: 297-314.
  2. [DM15] Ducas L, Micciancio D. FHEW: bootstrapping homomorphic encryption in less than a second[C]//Advances in Cryptology–EUROCRYPT 2015: 34th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Sofia, Bulgaria, April 26-30, 2015, Proceedings, Part I 34. Springer Berlin Heidelberg, 2015: 617-640.
  3. [CGGI16] Chillotti I, Gama N, Georgieva M, et al. Faster fully homomorphic encryption: Bootstrapping in less than 0.1 seconds[C]//Advances in Cryptology–ASIACRYPT 2016: 22nd International Conference on the Theory and Application of Cryptology and Information Security, Hanoi, Vietnam, December 4-8, 2016, Proceedings, Part I 22. Springer Berlin Heidelberg, 2016: 3-33.
  4. [GINX16] Gama N, Izabachene M, Nguyen P Q, et al. Structural lattice reduction: generalized worst-case to average-case reductions and homomorphic cryptosystems[C]//Advances in Cryptology–EUROCRYPT 2016: 35th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Vienna, Austria, May 8-12, 2016, Proceedings, Part II 35. Springer Berlin Heidelberg, 2016: 528-558.
  5. [XZDDF23] Xiang B, Zhang J, Deng Y, et al. Fast Blind Rotation for Bootstrapping FHEs[C]//Annual International Cryptology Conference. Cham: Springer Nature Switzerland, 2023: 3-36.
  6. 初探全同态加密之四:Bootstrapping的原理与实现
  7. 分式理想 & 对偶群 & 对偶空间
  8. 形式语言与自动机理论
  9. FSM, FAM, DFA, NFA 的区别与联系
  10. 混淆 OBDD
  11. Branching Program(5-PBP)

文章目录

  • Blind Rotate
  • GSIS/GLWE
    • Notation
    • Lattice Factor Group
    • Group-SIS
    • Group-LWE
    • Structural Lattice Reduction
  • GLWE Variant
    • ElGamal
    • GSW
    • LUT & Automata
    • Simple Bootstrapping Circuit

Blind Rotate

在 Gentry 的蓝图中,FHE 通过对 SWHE 做同态解密,以刷新密文中累计的噪声。以 AP14 的对称版本 GSW 为例,解密函数可以分为两部分,

  1. 线性运算: s t C = e t + μ ⋅ s t G s^tC=e^t+\mu \cdot s^tG stC=et+μstG,其中 s = ( s ′ , 1 ) s=(s',1) s=(s,1) G G G 的倒数第二列是 g ′ = ( 0 , ⋯   , 0 , 2 l − 2 ) g'=(0,\cdots,0,2^{l-2}) g=(0,,0,2l2),令 c c c 是密文矩阵倒数第二列,我们计算内积
    ⟨ s , c ⟩ ≈ μ ⋅ s t g ′ = 2 l − 2 μ \langle s,c \rangle \approx \mu \cdot s^tg' = 2^{l-2}\mu s,cμstg=2l2μ

    满足 2 l − 2 ≈ ( q / 4 , q / 2 ] 2^{l-2} \approx (q/4,q/2] 2l2(q/4,q/2],只要噪声小于 q / 8 q/8 q/8 即可正确解密

  2. 纠错运算:我们根据 2 l − 2 μ ( m o d q ) 2^{l-2}\mu \pmod q 2l2μ(modq) 计算出消息 μ ∈ { 0 , 1 } \mu \in \{0,1\} μ{0,1}

不失一般性,我们假设 2 l − 2 ≈ q / 2 2^{l-2} \approx q/2 2l2q/2,可容忍 q / 4 q/4 q/4 的噪声。SWHE 对于同态线性函数是特别高效的,但是纠错步骤则很麻烦:对于 MSB 编码,需要计算除法然后园整 ⌊ ⟨ s , c ⟩ q / 2 ⌉ ∈ { 0 , 1 } \Big\lfloor \dfrac{\langle s,c \rangle}{q/2} \Big\rceil \in \{0,1\} q/2s,c{0,1},这种布尔电路特别复杂。当然,也可以使用比较电路,阈值为 ± q / 4 \pm q/4 ±q/4,但这个布尔电路也很复杂。实际上,纠错过程可以通过盲旋转(Blind Rotate),把相位 q / 4 q/4 q/4 旋转角度 ⟨ s , c ⟩ \langle s,c \rangle s,c 成为 ⟨ s , c ⟩ + q / 4 \langle s,c \rangle+q/4 s,c+q/4(的密文),那么同态提取 signed int 的符号位即可(消息空间是 { 0 , 1 } \{0,1\} {0,1},这是直接的)。有两种盲旋转方案:

  • [AP14] 将解码函数记为 f ( v ) , v ∈ [ q ] f(v),v \in [q] f(v),v[q],然后依次判等 ⟨ s , c ⟩ = v , ∃ f ( v ) = 1 \langle s,c \rangle = v,\exist f(v)=1 s,c=v,f(v)=1,从而得到消息。使用 CRT 将 Z q \mathbb Z_q Zq 分解为若干个小的对称群 S r S_r Sr,然后利用群 S r S_r Sr 的同态方案(HEPerm 而非 SWHE)做同态的判等运算。

    之后的 [DM15] 提出了 FHEW 方案,使用特殊的解码函数 f ( v ) = 1 , ∀ v ∈ [ q / 4 , 3 q / 4 ) f(v)=1,\forall v \in [q/4,3q/4) f(v)=1,v[q/4,3q/4),可转化为 M S B ( v + q / 4 ) MSB(v+q/4) MSB(v+q/4),使用 Homomorphic Accumulator 同态提取。FHEW 使用 RGSW 实例化累加器,消息编码在多项式的指数上。盲旋转:把多项式 X q / 4 X^{q/4} Xq/4 乘以 X v ( m o d X N + 1 ) , q ∣ 2 N X^v \pmod{X^N+1},q|2N Xv(modXN+1),q∣2N,其中的消息 v = b − ⟨ s , a ⟩ v=b-\langle s,a \rangle v=bs,a 被 RGSW 加密。提取 MSB:把得到的 one-hot 多项式 X v + q / 4 X^{v+q/4} Xv+q/4 的一些项 X v , v ∈ [ q / 2 , q ) X^v,v \in [q/2,q) Xv,v[q/2,q) 的系数累加起来。

  • [GINX16] 提出了 Group 扩展版本的 SIS/LWE 问题,使得线性运算 s ^ ( c ) = ⟨ s , c ⟩ ∈ T \hat s(c)=\langle s,c \rangle \in \mathbb T s^(c)=s,cT 落在实数环面上,只需旋转 1 / 4 1/4 1/4 相位,然后通过 MUX-based OBDD 来实现解密函数的 Lookup Table。

    之后的 [CGGI16] 提出了 TFHE 方案,它将 FHEW 映射到环面上,并使用 TGSW 和 TLWE 的外积实现 MUX 门,进而构建出更快的同态累加器。对于盲旋转,它将环面以精度 1 / 2 N 1/2N 1/2N 离散化,然后使用 TRLWE 加密的 v ∈ T [ X ] / ( X N + 1 ) v \in \mathbb T[X]/(X^N+1) vT[X]/(XN+1) 记录 “反循环函数”(满足 f ( x + 1 / 2 ) = − f ( x ) f(x+1/2)=-f(x) f(x+1/2)=f(x) 反对称性) f ( i / 2 N ) f(i/2N) f(i/2N) 的 Lookup Table,使用 TRGSW 加密的自举秘钥 B K j BK_j BKj 作为控制位,串行执行 MUX 实现向量 v v v 盲的循环移位,最后提取出 f ( b − s ⋅ a ) ∈ T f(b-s \cdot a) \in \mathbb T f(bsa)T 对应的 TLWE 密文。离散环面上的园整函数,恰好就是一个反循环函数。

我们定义相位 ϕ s ( a , b ) = b − s ^ ( a ) ∈ T \phi_s(a,b)=b-\hat s(a) \in \mathbb T ϕs(a,b)=bs^(a)T,我们计算布尔函数 f f f,它满足 f ( ϕ s ( E ( μ ) ) ) = μ f(\phi_s(E(\mu))) = \mu f(ϕs(E(μ)))=μ。我们将环面以精度 1 / N 1/N 1/N 离散化(约 log ⁡ N \log N logN 比特),得到离散环面 T N ⊆ T \mathbb T_N \subseteq \mathbb T TNT,它上面的任意相位变换 f : T N → T N f: \mathbb T_N \to \mathbb T_N f:TNTN,在给定 f ( i / N ) f(i/N) f(i/N) 的密文时,通过 MUX-based OBDD 是容易计算的,深度 O ( log ⁡ N ) O(\log N) O(logN),复杂度 O ( N log ⁡ N ) O(N\log N) O(NlogN)。舍入函数,就是把 0 T 0_{\mathbb T} 0T 附近的区间映射到 0 T 0_{\mathbb T} 0T 相位,把 0. 5 T 0.5_{\mathbb T} 0.5T 附近的区间映射到 0. 5 T 0.5_{\mathbb T} 0.5T 相位。TFHE 实际上是把这些 f ( i / N ) f(i/N) f(i/N) 打包到一个多项式的各个系数上(SIMD slots),并行执行 OBDD 的每层 MUX 门,复杂度降低为 O ( log ⁡ N ) O(\log N) O(logN),深度依然是 O ( log ⁡ N ) O(\log N) O(logN)

GSIS/GLWE

Notation

矩阵 B = { b 1 , ⋯   , b n } B=\{b_1,\cdots,b_n\} B={b1,,bn} 包括 n n n 个行矢,范数 ∥ B ∥ \|B\| B 定义为 max ⁡ i ∥ b i ∥ \max_i\|b_i\| maxibi。格基的 Gram-Schmidt Orthogonalization 写作 B = μ D Q B=\mu DQ B=μDQ,其中 μ \mu μ 是单位对角线的下三角阵, D D D 是对角阵, Q Q Q 是行矢的单位正交阵,那么 GSO 矩阵 B ∗ = D Q = { b 1 ∗ , ⋯   , b n ∗ } B^*=DQ=\{b_1^*,\cdots,b_n^*\} B=DQ={b1,,bn} 满足 b i ∗ = π i ( b i ) b_i^*=\pi_i(b_i) bi=πi(bi),这里 π i \pi_i πi 是到子空间 S p a n ( b 1 , ⋯   , b i − 1 ) ⊥ Span(b_1,\cdots,b_{i-1})^\perp Span(b1,,bi1) 的正交投影。

任意有限阿贝尔群 G G G 同构于一些循环群的直积 ∏ i = 1 k Z q i \prod_{i=1}^k \mathbb Z_{q_i} i=1kZqi,我们说群 G G G显式的(explicit),如果我们知道 q 1 , ⋯   , q k q_1,\cdots,q_k q1,,qk 以及同构 ∏ i = 1 k Z q i → G \prod_{i=1}^k \mathbb Z_{q_i} \to G i=1kZqiG。此时的群可以写成(内)直和分解的形式:找到 { e 1 , ⋯   , e k } ∈ G \{e_1,\cdots,e_k\} \in G {e1,,ek}G,满足 o r d ( e i ) = q i ord(e_i)=q_i ord(ei)=qi,使得 G = ⟨ e 1 ⟩ + ⋯ + ⟨ e k ⟩ G=\langle e_1\rangle+\cdots+\langle e_k\rangle G=e1++ek ⟨ e i ⟩ ∩ ⟨ { e 1 , ⋯   , e k } − e i ⟩ = { 0 } \langle e_i\rangle \cap \langle \{e_1,\cdots,e_k\}-e_i\rangle = \{0\} ei⟨{e1,,ek}ei={0},记作
G = ⟨ e 1 ⟩ ⊕ ⋯ ⊕ ⟨ e k ⟩ G = \langle e_1\rangle \oplus \cdots \oplus \langle e_k\rangle G=e1ek

我们说群是完全显式的(full-explicit),如果同构的逆(群元素的分解)是容易计算的。我们说群的(rank)是循环群分解后的最小数量(循环群可以继续分解为一些循环群直积)。我们可以约束 q i + 1 ∣ q i q_{i+1}|q_i qi+1qi,使得 k k k 是秩。

一个 n n n 维格 L L L,它的超格(overlattice)是包含 L L L 的相同维度 n n n 的格 L ˉ \bar L Lˉ,易知商群 L ˉ / L \bar L/L Lˉ/L 是有限阿贝尔群,秩 k ≤ n k \le n kn,阶 v o l ( L ) / v o l ( L ˉ ) vol(L)/vol(\bar L) vol(L)/vol(Lˉ),其中 v o l ( L ( B ) ) = d e t ( B B t ) vol(L(B))=\sqrt{det(BB^t)} vol(L(B))=det(BBt) 是平行基本区的体积。那么 L ˉ / L ≅ G \bar L/L \cong G Lˉ/LG,对应的满同态 ϕ : L ˉ → G \phi:\bar L \to G ϕ:LˉG 的核是 ker ⁡ ϕ = L \ker\phi=L kerϕ=L,那么 0 → L → i d L ˉ → ϕ G → 0 0 \to L \overset{id}{\to} \bar L \overset{\phi}{\to} G \to 0 0LidLˉϕG0短正合列

Lattice Factor Group

L ⊆ Z m L \subseteq \mathbb Z^m LZm 是满秩格,那么因子群(factor/coset group) Z m / L \mathbb Z^m/L Zm/L 是一个阶 v o l ( L ) vol(L) vol(L) 的有限阿贝尔群。给定任意的有限阿贝尔群 G G G,我们收集那些因子群是 G G G 的满秩格,
L G , m : = { L ∣ r a n k ( L ) = m , Z m / L ≅ G } L_{G,m}:=\{L| rank(L)=m, \mathbb Z^m/L \cong G\} LG,m:={Lrank(L)=m,Zm/LG}

那么 L ∈ L G , m L \in L_{G,m} LLG,m 当仅当: r a n k ( G ) ≤ m rank(G) \le m rank(G)m,并且存在 g = ( g 1 , ⋯   , g m ) ∈ G m g=(g_1,\cdots,g_m) \in G^m g=(g1,,gm)Gm 使得 G = ⟨ g ⟩ G=\langle g\rangle G=g,同时有 L = L g L=L_g L=Lg
L g : = { ( x 1 , ⋯   , x m ) ∈ Z m ∣ ∑ i x i g i = 0 G } L_g:=\{(x_1,\cdots,x_m) \in \mathbb Z^m| \sum_i x_ig_i=0_G\} Lg:={(x1,,xm)Zmixigi=0G}

对于 g ≠ h ∈ G m g \neq h \in G^m g=hGm,那么 L g = L h L_g=L_h Lg=Lh 当仅当:存在自同构 ψ \psi ψ 使得 h i = ψ ( g i ) , ∀ i h_i=\psi(g_i),\forall i hi=ψ(gi),i,且 ψ \psi ψ 是唯一确定的。

给定因子群 G G G,从集合 L G , m L_{G,m} LG,m 中均匀采样格 L L L,算法如下:

在这里插入图片描述

对于循环群 G G G,格 L ∈ L G , m L \in L_{G,m} LLG,m 的自然密度为: ⋃ G is cyclic L G , m ≈ 85 % \bigcup_{\text{G is cyclic}} L_{G,m} \approx 85\% G is cyclicLG,m85%,当 m m m 足够大。因此标准 SIS/LWE 对应的群 G = Z q n G=\mathbb Z_q^n G=Zqn(非循环群),格 L ∈ L Z q n , m L \in L_{\mathbb Z_q^n,m} LLZqn,m 十分稀少。

[GINX16] 给出了标准 SIS/LWE 的扩展,将群 G = Z q n G=\mathbb Z_q^n G=Zqn 扩展到了任意的有限阿贝尔群。

Group-SIS

维度 m m m,有限阿贝尔群 G G G(需满足 r a n k ( G ) ≤ m rank(G) \le m rank(G)m),范数上界 β \beta β

GSIS 问题 G S I S ( G , m , β ) GSIS(G,m,\beta) GSIS(G,m,β),均匀采样 g = ( g 1 , ⋯   , g m ) ∈ G m g=(g_1,\cdots,g_m) \in G^m g=(g1,,gm)Gm(注意此处不要求 g g g 生成 G G G

  • 搜索版本:给定 g g g,寻找整数解 x ∈ L g x \in L_g xLg,满足 ∥ x ∥ ≤ β \|x\| \le \beta xβ

    β ≥ m ⋅ ∣ G ∣ 1 / m \beta \ge \sqrt{m}\cdot |G|^{1/m} βm G1/m 时,方程 ∑ i x i g i = 0 G \sum_i x_ig_i=0_G ixigi=0G 必定存在解。

  • 判定版本:给定 g g g,区分 g ∈ G m g \in G^m gGm 是来自 GSIS 分布还是 L G , m L_{G,m} LG,m 上均匀分布

    m ≥ 2 log ⁡ ∣ G ∣ + 2 m \ge 2\log|G|+2 m2logG+2 时,均匀的 g g g 生成 G G G 的概率至少为 1 − 1 / ∣ G ∣ 1-1/|G| 11/∣G,因此两个分布统计接近。

  • 选取合适的 β , ∣ G ∣ , m \beta,|G|,m β,G,m,求解 GSIS 问题,基本等价于:在 L G , m L_{G,m} LG,m 的均匀随机格上,寻找短向量。

对于 r a n k ( G ) > m rank(G)>m rank(G)>m 的群 G ′ G' G,可以做分解 G ′ = G × H G'=G \times H G=G×H,然后将 G ′ G' G 投射(project)到 G G G 上。

标准 SIS 问题:选取 G = Z q n G=\mathbb Z_q^n G=Zqn,它是 n n n 个循环群 Z q \mathbb Z_q Zq 的直积。将 g ∈ G m g \in G^m gGm 按行矢排列,得到 B ∈ Z q m × n B \in \mathbb Z_q^{m \times n} BZqm×n,那么
L g = { ( x 1 , ⋯   , x m ) ∈ Z m ∣ x t B ≡ 0 ∈ Z q n } = L q ⊥ ( B ) L_g = \{(x_1,\cdots,x_m) \in \mathbb Z^m| x^tB \equiv 0 \in \mathbb Z_q^n\} = L_q^\perp(B) Lg={(x1,,xm)ZmxtB0Zqn}=Lq(B)

由于 m ≥ r a n k ( G ) = n m\ge rank(G)=n mrank(G)=n,因此均匀矩阵 B B B 以压倒性概率是列满秩的,使得 L q ( B ) = { x ∈ Z n ∣ x ≡ z t B ( m o d q ) , z ∈ Z m } L_q(B)=\{x \in \mathbb Z^n|x \equiv z^tB \pmod q,z \in \mathbb Z^m\} Lq(B)={xZnxztB(modq),zZm} 是满秩矩阵。

Group-LWE

实数环面 T = R / Z \mathbb T=\mathbb R/\mathbb Z T=R/Z,它是 Z \mathbb Z Z-模(是阿贝尔群,不是交换环)。有限阿贝尔群 G G G 的特征 χ : G → T \chi:G \to \mathbb T χ:GT,构成了对偶群 G ^ ≅ G \hat G \cong G G^G

假如 G G G 是显式的,直和分解 G = ⟨ e 1 ⟩ ⊕ ⋯ ⊕ ⟨ e k ⟩ G = \langle e_1\rangle \oplus \cdots \oplus \langle e_k\rangle G=e1ek,此时群元素有唯一分解:
a = ∑ j α j e j , 0 ≤ α j < q j a=\sum_j \alpha_j e_j,0\le \alpha_j<q_j a=jαjej,0αj<qj

那么对偶群就是 G ^ = ⟨ e ^ 1 ⟩ ⊕ ⋯ ⊕ ⟨ e ^ k ⟩ \hat G = \langle \hat e_1\rangle \oplus \cdots \oplus \langle \hat e_k\rangle G^=e^1e^k,其中特征 e ^ i \hat e_i e^i 满足:
e ^ i ( ∑ j α j e j ) = α i q i ( m o d 1 ) \hat e_i\left(\sum_j \alpha_j e_j\right) = \dfrac{\alpha_i}{q_i} \pmod 1 e^i(jαjej)=qiαi(mod1)

那么,任意一个 s ^ ∈ G ^ \hat s \in \hat G s^G^,都可以写作线性组合 s ^ = ∑ i s i e ^ i \hat s=\sum_i s_i\hat e_i s^=isie^i,其中 0 ≤ s i < q i 0 \le s_i<q_i 0si<qi 是整数。给定 a ∈ G a \in G aG,有 s ^ ( a ) = ∑ i s i e ^ i ( a ) \hat s(a)=\sum_i s_i\hat e_i(a) s^(a)=isie^i(a) ,计算 d i = e ^ i ( a ) ∈ T d_i=\hat e_i(a) \in \mathbb T di=e^i(a)T,特征的计算可以线性化 s ^ ( a ) = ∑ i s i ⋅ d i = ⟨ s , d ⟩ \hat s(a)=\sum_i s_i \cdot d_i=\langle s,d\rangle s^(a)=isidi=s,d,其中 s ∈ Z k s \in \mathbb Z^k sZk

S S S 是对偶群 G ^ \hat G G^ 上的分布, D R , α D_{\mathbb R,\alpha} DR,α 是连续高斯分布。选取特征 s ^ ← S \hat s \leftarrow S s^S,公开的随机元素 a 1 , ⋯   , a m ∈ G a_1,\cdots,a_m \in G a1,,amG,计算携带高斯扰动(Gaussian perturbation)的值 b i = s ^ ( a i ) + e i b_i=\hat s(a_i)+e_i bi=s^(ai)+ei

GLWE 问题 G L W E ( G , α , S ) GLWE(G,\alpha,S) GLWE(G,α,S),采样一个特征 s ^ ← S \hat s \leftarrow S s^S

  • GLWE 分布:均匀选取 a ∈ G a \in G aG,计算携带高斯扰动(Gaussian perturbation)的值 b ← D T , α , s ^ ( a ) b \gets D_{\mathbb T,\alpha,\hat s(a)} bDT,α,s^(a),输出 ( a , b ) ∈ G × T (a,b) \in G \times \mathbb T (a,b)G×T,记为 A G , α ( s ^ ) A_{G,\alpha}(\hat s) AG,α(s^)
  • 搜索版本:给定独立样本 ( a i , b i ) (a_i,b_i) (ai,bi),寻找特征 s ^ \hat s s^(或者说,寻找 s i ∈ Z s_i \in \mathbb Z siZ 使得 s ^ = ∑ i s i e ^ i \hat s=\sum_i s_i\hat e_i s^=isie^i
  • 决策版本:给定独立样本 ( a i , b i ) (a_i,b_i) (ai,bi),区分它们来自 A G , α ( s ^ ) A_{G,\alpha}(\hat s) AG,α(s^) 还是 G × T G \times \mathbb T G×T 上的均匀分布

标准 LWE 问题:选取 G = Z q n G=\mathbb Z_q^n G=Zqn,它是 n n n 个循环群 Z q \mathbb Z_q Zq 的直积。生成元 e j ( m o d q ) e_j \pmod q ej(modq) 是单位向量,对应的对偶基
e ^ i : ( α 1 , ⋯   , α n ) ( m o d q ) → α i / q ( m o d 1 ) \hat e_i:(\alpha_1,\cdots,\alpha_n) \pmod q \to \alpha_i/q \pmod 1 e^i:(α1,,αn)(modq)αi/q(mod1)

那么 s ^ = ∑ s i e ^ i \hat s=\sum s_i \hat e_i s^=sie^i,其中 s ∈ Z n s \in \mathbb Z^n sZn,就有
s ^ ( a ) = ∑ i = 1 n s i e ^ i ( a ) = ⟨ s , a ⟩ q ( m o d 1 ) \hat s(a) = \sum_{i=1}^n s_i \hat e_i(a) = \dfrac{\langle s,a \rangle}{q} \pmod 1 s^(a)=i=1nsie^i(a)=qs,a(mod1)

它与 ⟨ s , a ⟩ ( m o d q ) \langle s,a \rangle \pmod q s,a(modq) 仅相差一个因子 q q q,从而是等价的。

Structural Lattice Reduction

[GINX16] 提出了结构格约减:对于格 L ⊆ Z n L \subseteq \mathbb Z^n LZn,给定有限阿贝尔群 G = Z q 1 × ⋯ × Z q k , k ≤ n G=\mathbb Z_{q_1} \times \cdots \times \mathbb Z_{q_k},k \le n G=Zq1××Zqk,kn,找出对应的超格 L ˉ \bar L Lˉ 的短格基 B ˉ \bar B Bˉ,使得 ∥ B ∗ ˉ ∥ ≤ σ \|\bar{B^*}\| \le \sigma Bˉσ,并且 B = { q 1 b ˉ 1 , ⋯   , q k b ˉ k , b ˉ k + 1 , ⋯   , b ˉ n } B=\{q_1\bar b_1,\cdots,q_k\bar b_k,\bar b_{k+1},\cdots,\bar b_n\} B={q1bˉ1,,qkbˉk,bˉk+1,,bˉn} 是格 L L L 的一组基。

本文先给出了循环群 G G G 的格基约减算法,然后给出了任意群的格基约减算法。选取充分大的群,可以获得超格的短格基。我没仔细看(也看不太懂)。

给定格和超格的基 B B B B ˉ \bar B Bˉ,且满足 B = { q 1 b ˉ 1 , ⋯   , q k b ˉ k , b ˉ k + 1 , ⋯   , b ˉ n } B=\{q_1\bar b_1,\cdots,q_k\bar b_k,\bar b_{k+1},\cdots,\bar b_n\} B={q1bˉ1,,qkbˉk,bˉk+1,,bˉn},那么可以高效地计算出 L ˉ / L → G \bar L/L \to G Lˉ/LG 的同构映射,及其对偶。

在这里插入图片描述

然后,利用上述的格基约减算法,[GINX16] 证明了 GSIS/GLWE 的安全性与标准 SIS/LWE 一样强。

在这里插入图片描述

在对 GLWE 归约时,他们推广了 modulus-dimension switching technique,称为 Group Switching

在这里插入图片描述

最后,他们证明了 GLWE 分别在 Classical 和 Quantum 下的归约。

在这里插入图片描述

GLWE Variant

ElGamal

Diffie-Hellman 协议,使用 q q q 阶循环群 G = ⟨ g ⟩ G=\langle g \rangle G=g,令 f ( x ) : = g x f(x):=g^x f(x):=gx 是 OWF,定义双线性映射 θ ( x , y ) : = g x y \theta(x,y):=g^{xy} θ(x,y):=gxy。那么对于 a , b ∈ Z q a,b \in \mathbb Z_q a,bZq,计算 θ ( a , b ) \theta(a,b) θ(a,b) 有三种高效的方法:根据 ( a , b ) (a,b) (a,b) 计算 g a b g^{ab} gab、根据 ( f ( a ) , b ) (f(a),b) (f(a),b) 计算 ( g a ) b (g^a)^b (ga)b、根据 ( a , f ( b ) ) (a,f(b)) (a,f(b)) 计算 ( g b ) a (g^b)^a (gb)a。Alice 和 Bob 分别秘密的采样 a , b a,b a,b,然后公布 f ( a ) , f ( b ) f(a),f(b) f(a),f(b),那么 Alice 和 Bob 可以轻易地计算出 θ ( a , b ) \theta(a,b) θ(a,b),而敌手只有 ( f ( a ) , f ( b ) ) (f(a),f(b)) (f(a),f(b)) 无法计算。

ElGamal 加密方案,Alice 设置 s k = a sk=a sk=a p k = f ( a ) pk=f(a) pk=f(a),Bob 采样 b b b 计算 one-time 秘钥 θ ( a , b ) \theta(a,b) θ(a,b),执行 one-time pad 获得密文 ( f ( b ) , μ + θ ( a , b ) ) (f(b),\mu+\theta(a,b)) (f(b),μ+θ(a,b)),Alice 可以自然地解密。

现在,我们使用 GLWE 构造两个 OWF,均匀选取 g ∈ G m g \in G^m gGm

  • G G G Z \mathbb Z Z-模,态射 f g : Z m → G f_g: \mathbb Z^m \to G fg:ZmG 定义为
    f g ( x ) = ∑ i x i g i f_g(x)=\sum_i x_i g_i fg(x)=ixigi

    根据 leftover-hash lemma,它的输出分布是统计均匀的。在 GSIS 假设下,它是 OWF。

  • 采样 e ← D α m e \gets D_\alpha^m eDαm,函数 f g × : G ^ × T m → T m f_g^\times:\hat G \times \mathbb T^m \to \mathbb T^m fg×:G^×TmTm 定义为
    f g × ( s ^ , e ) = ( s ^ ( g 1 ) + e 1 , ⋯   , s ^ ( g m ) + e m ) = s ^ ( g ) + e f_g^\times(\hat s,e) = (\hat s(g_1)+e_1,\cdots,\hat s(g_m)+e_m) = \hat s(g)+e fg×(s^,e)=(s^(g1)+e1,,s^(gm)+em)=s^(g)+e

    根据 decisional GLWE,它与随机函数不可区分。根据 search GLWE,它是 OWF。

我们定义新的双线性函数 θ : G ^ × Z m → T \theta:\hat G \times \mathbb Z^m \to \mathbb T θ:G^×ZmT
θ ( s ^ , x ) = s ^ ( f g ( x ) ) = ∑ i s i ⋅ e ^ i ( f g ( x ) ) = ∑ j x j ( ∑ i s i ⋅ e ^ i ( g j ) ) = ∑ j x j ⋅ s ^ ( g j ) \begin{aligned} \theta(\hat s,x) &= \hat s(f_g(x)) = \sum_i s_i \cdot \hat e_i(f_g(x))\\ &= \sum_j x_j\left(\sum_i s_i \cdot \hat e_i( g_j)\right)\\ & = \sum_j x_j \cdot \hat s(g_j)\\ \end{aligned} θ(s^,x)=s^(fg(x))=isie^i(fg(x))=jxj(isie^i(gj))=jxjs^(gj)

为了计算 θ ( s ^ , x ) \theta(\hat s,x) θ(s^,x),除了直接使用 ( s ^ , x ) (\hat s,x) (s^,x) 计算外,还可以:

  1. 给定 s ^ \hat s s^ y = f g ( x ) y=f_g(x) y=fg(x),然后计算 s ^ ( y ) = θ ( s ^ , x ) + 0 \hat s(y) = \theta(\hat s,x)+0 s^(y)=θ(s^,x)+0,这是准确值
  2. 给定 c = f g × ( s ^ , e ) c=f_g^\times(\hat s,e) c=fg×(s^,e) x x x,然后计算 ∑ i c i x i = θ ( s ^ , x ) + ∑ i e i x i \sum_i c_i x_i = \theta(\hat s,x)+\sum_ie_ix_i icixi=θ(s^,x)+ieixi,这是近似值

Diffie-Hellman 协议的 GLWE 变体,Alice 采样 s ^ \hat s s^ 公开 f g × ( s ^ , e ) f_g^\times(\hat s,e) fg×(s^,e),Bob 采样 x x x 公开 f g ( x ) f_g(x) fg(x),那么 Alice 和 Bob 可以轻易地计算出 θ ( a , b ) \theta(a,b) θ(a,b)(近似值),而敌手无法计算。最后纠错,双方 agree 同一个秘钥。

ElGamal 加密方案的 GLWE 变体,定义 T k = 1 2 k Z / Z \mathbb T_k = \dfrac{1}{2^k}\mathbb Z/\mathbb Z Tk=2k1Z/Z 是离散化的环面,群 H = G × T k H=G \times \mathbb T_k H=G×Tk 是密文空间,

在这里插入图片描述

将 Alice 和 Bob 的地位互换,就可以得到 ElGamal dual scheme:此时 s k = x sk=x sk=x p k = f g ( x ) pk=f_g(x) pk=fg(x),临时秘钥 ( s ^ , e , e ′ ) (\hat s,e,e') (s^,e,e),密文 ( f g × ( s ^ , e ) , s ^ ( p k ) + e ′ + μ / 2 ) ∈ T × T m (f_g^\times(\hat s,e),\hat s(pk)+e'+\mu/2) \in \mathbb T \times \mathbb T^m (fg×(s^,e),s^(pk)+e+μ/2)T×Tm

两种 ElGamal 方案的 IND-CPA 安全都基于 GLWE-DDH 问题,它等价于 decisional GLWE 问题。

在这里插入图片描述

GSW

GLWE 方案的密文是群 H H H 的元素,形如 c + μ h 1 ∈ H c+\mu h_1 \in H c+μh1H,其中 h 1 = ( 0 , 1 / 2 ) h_1=(0,1/2) h1=(0,1/2) 的阶是 2 2 2。私钥 s ^ \hat s s^ 诱导了一个同态 P h a s e : H → T Phase: H \to \mathbb T Phase:HT,定义为
P h a s e ( a ∈ G , b ∈ T ) = b − s ^ ( a ) ∈ T Phase(a \in G,b \in \mathbb T) = b-\hat s(a) \in \mathbb T Phase(aG,bT)=bs^(a)T

易知 P h a s e ( c + μ h ) ≈ μ / 2 Phase(c+\mu h) \approx \mu/2 Phase(c+μh)μ/2,消息 0 0 0 的密文十分靠近 ker ⁡ P h a s e \ker Phase kerPhase。由于 o r d ( h 1 ) = 2 ord(h_1)=2 ord(h1)=2,GLWE 密文在群 H H H 上运算,将导致消息在加群 Z 2 \mathbb Z_2 Z2 上运算(同态 XOR 门)。我们将上述的 GLWE-based ElGamal Scheme(简记为 GLWE 方案)扩展为 GLWE-GSW 方案,使之可以同态计算 AND 门。

扩展 h 1 = ( 0 , 1 / 2 ) h_1=(0,1/2) h1=(0,1/2) h = ( h 1 , h 2 , ⋯   , h l ) h=(h_1,h_2,\cdots,h_l) h=(h1,h2,,hl),使得它是群 H H H 作为 Z \mathbb Z Z-模的生成集,那么函数 f h : Z l → H f_h: \mathbb Z^l \to H fh:ZlH
f h ( x ) = ∑ i = 1 l x i h i ∈ H ,    x ∈ Z l f_h(x) = \sum_{i=1}^l x_i h_i \in H,\,\, x \in \mathbb Z^l fh(x)=i=1lxihiH,xZl

Z \mathbb Z Z-模的满态射。定义它的伪逆(pseudo-inverse ) f h − 1 : H → Z l f_h^{-1}:H \to \mathbb Z^l fh1:HZl,满足 f h ( f h − 1 ( c ) ) = c , ∀ c ∈ H f_h(f_h^{-1}(c))=c,\forall c \in H fh(fh1(c))=c,cH,其中 I m ( f h − 1 ) Im(f_h^{-1}) Im(fh1) f h f_h fh短原像 β \beta β-bounded)。对于均匀的 h h h,求逆 f h f_h fh 是困难的;但是某些特殊的 h h h(称为 gadget),短原像容易计算。

f h ( x ) f_h(x) fh(x) 扩展到矩阵 X ∈ Z l × l X \in \mathbb Z^{l \times l} XZl×l,定义 F h ( X ) = ( f h ( x 1 ) , ⋯   , f h ( x l ) ) F_h(X)=(f_h(x_1),\cdots,f_h(x_l)) Fh(X)=(fh(x1),,fh(xl)),其中 x i ∈ Z l x_i \in \mathbb Z^l xiZl 是矩阵的行矢。同样的对于 c ∈ H l c \in H^l cHl,定义 F h − 1 ( c ) = ( f h − 1 ( c 1 ) , ⋯   , f h − 1 ( c l ) ) F_h^{-1}(c)=(f_h^{-1}(c_1),\cdots,f_h^{-1}(c_l)) Fh1(c)=(fh1(c1),,fh1(cl)) 是它的伪逆。那么,
F c ( X ) = X ⋅ c ,    F h − 1 ( c ) ⋅ h = c F b + k h ( F h − 1 ( c ) ) = F h − 1 ( c ) ⋅ ( b + k h ) = F h − 1 ( c ) ⋅ b + k c ,    k ∈ Z \begin{aligned} F_c(X) &= X \cdot c,\,\, F_h^{-1}(c)\cdot h = c\\ F_{b+kh}(F_h^{-1}(c)) &= F_h^{-1}(c) \cdot (b+kh) = F_h^{-1}(c) \cdot b + kc,\,\, k \in \mathbb Z \end{aligned} Fc(X)Fb+kh(Fh1(c))=Xc,Fh1(c)h=c=Fh1(c)(b+kh)=Fh1(c)b+kc,kZ

这个公式可以用于计算同态 AND 门。将 GLWE 的 0 0 0 密文并列 l l l,得到 c ∈ H l c \in H^l cHl,使得 GSW 密文形如 c + μ h ∈ H l , μ ∈ { 0 , 1 } c+\mu h \in H^l,\mu \in \{0,1\} c+μhHl,μ{0,1},其中的第一分量 c 1 + μ h 1 c_1+\mu h_1 c1+μh1 是 GLWE 密文。那么,
F c ′ + μ ′ h ( F h − 1 ( c + μ h ) ) = F h − 1 ( c + μ h ) ⋅ c ′ + μ ′ c + μ ′ μ h e r r = F h − 1 ( c + μ h ) ⋅ e ′ + μ ′ e \begin{aligned} F_{c'+\mu'h}(F_h^{-1}(c+\mu h)) &= F_h^{-1}(c+\mu h) \cdot c' + \mu'c + \mu'\mu h\\ err &= F_h^{-1}(c+\mu h) \cdot e' + \mu'e \end{aligned} Fc+μh(Fh1(c+μh))err=Fh1(c+μh)c+μc+μμh=Fh1(c+μh)e+μe

于是 GLWE-based GSW 方案为:

在这里插入图片描述

同态运算为:

在这里插入图片描述

噪声增长为:

在这里插入图片描述

对于连续 k k k 个 AND 门,采取 [AP14] 的右结合策略,最坏噪声仅为 k l β B kl\beta B klβB。如果采用平均噪声的评估,那么噪声仅为 k l β B \sqrt{k}l\beta B k lβB

LUT & Automata

对于可以表示为稀疏低次多项式的布尔函数,尤其是线性布尔函数 ϕ ( x ) = b + ∑ i a i x i \phi(x)=b+\sum_i a_ix_i ϕ(x)=b+iaixi,可以用 MUX 实现布尔函数的直接计算

  1. 初始化 X 0 = b X_0=b X0=b
  2. 迭代计算 X i = M U X ( x i , X i − 1 , a i + X i − x ) X_i=MUX(x_i,X_{i-1},a_i+X_{i-x}) Xi=MUX(xi,Xi1,ai+Xix)
  3. 输出 X k = ϕ ( x ) X_k=\phi(x) Xk=ϕ(x)

但是无法表示成稀疏低次多项式的那些布尔函数,直接计算的开销将会很高。给定一个任意的 k k k 变元布尔函数 ϕ : x ∈ { 0 , 1 } k ↦ ϕ ( x ) ∈ { 0 , 1 } \phi:x \in \{0,1\}^k \mapsto \phi(x) \in \{0,1\} ϕ:x{0,1}kϕ(x){0,1},可以做一个 Lookup Table(LUT),它是 2 k 2^k 2k 向量 T j = ϕ ( j ) T_j=\phi(j) Tj=ϕ(j)。一般来说,查表可以使用二叉树,根据 x = x 1 ⋯ x k x=x_1\cdots x_k x=x1xk 找到一条从 root 到对应 leaf 的路径。但是消息 x i x_i xi 被加密为 IND-CPA 密文,无法区分左右子树。我们需要一种数据独立的查表算法

  1. 构造 full Binary Decision Diagram 的满二叉树,深度 k k k,节点记为 X i , j X_{i,j} Xi,j,根 X 0 , 0 X_{0,0} X0,0,叶子 X k , j X_{k,j} Xk,j

  2. 把向量 T j , j ∈ [ 2 k ] T_j,j \in [2^k] Tj,j[2k] 存放在叶子 X k , j X_{k,j} Xk,j 上,内部节点 X i , j X_{i,j} Xi,j 对应的子树是 partial function ϕ ( j , x i + 1 , ⋯   , x k ) , j ∈ [ 2 i ] \phi(j,x_{i+1},\cdots,x_k),j \in [2^i] ϕ(j,xi+1,,xk),j[2i](输入的 i i i 比特前缀被写死为 j j j

  3. 从 leaf 回到 root,根据 x i x_i xi 的输入值,计算中间节点的值
    X i , j = M U X ( x i , X i + 1 , 2 j , X i + 1 , 2 j + 1 ) , ∀ j ∈ [ 2 i ] X_{i,j} = MUX(x_i,X_{i+1,2j},X_{i+1,2j+1}),\forall j \in [2^i] Xi,j=MUX(xi,Xi+1,2j,Xi+1,2j+1),j[2i]

  4. x k x_k xk 迭代到 x 1 x_1 x1,获得根节点的值 X 0 , 0 = ϕ ( x 1 , ⋯   , x k ) X_{0,0}=\phi(x_1,\cdots,x_k) X0,0=ϕ(x1,,xk)

注意,OBDD 的计算是从 root 到 leaf 的,只有路径上的 k k k 个节点被计算。而上述的 MUX-based BDD 是从 leaf 回到 root 的,全部的 O ( 2 k ) O(2^k) O(2k) 个节点都需要被计算!完全二叉树中可能会包含很多相同的子树,把它们合并,以减少计算量(不幸的是,几乎全部的函数需要指数级节点)。

在这里插入图片描述

对于某些常用函数(例如整数乘法),对应的 OBDD 节点数指数多,因此使用 MUX-based LUT 是不可行的。然而,诸如加法、乘法、比较等等算术运算,可以表示为多项式大小的确定性有限自动机(有限状态的转移图)。

事实上,BDD 就是某种自动机的 mirror graph。我们也可以使用 MUX 门,类似上述的逆序思路,执行任意的有限自动机:

  1. Moore 型状态机(输出仅与系统状态有关) A = ( Q , i , T 0 , T 1 , F ) A=(Q,i,T_0,T_1,F) A=(Q,i,T0,T1,F),状态集 Q Q Q,初始状态 i ∈ Q i \in Q iQ,状态 Q Q Q 上定义的输出 F F F,转移函数 T 0 , T 1 : Q → Q T_0,T_1: Q \to Q T0,T1:QQ 分别表示当前输入 0 / 1 0/1 0/1 的下一状态

  2. 简记 X q , 0 , ∀ q ∈ Q X_{q,0},\forall q \in Q Xq,0,qQ 是自动机的全部状态上的输出

  3. 为了计算输入序列 w = w 1 w 2 ⋯ w k w=w_1w_2\cdots w_k w=w1w2wk(注意这并不是布尔函数的输入)对应的输出,逆向状态转移箭头,迭代计算
    X q , j = M U X ( w k + 1 − j , X T 0 ( q ) , j − 1 , X T 1 ( q ) , j − 1 ) , ∀ q ∈ Q X_{q,j}=MUX(w_{k+1-j}, X_{T_0(q),j-1}, X_{T_1(q),j-1}),\forall q \in Q Xq,j=MUX(wk+1j,XT0(q),j1,XT1(q),j1),qQ

  4. 执行 k k k 步得到 { X q , k } \{X_{q,k}\} {Xq,k},其中的 X i , k X_{i,k} Xi,k 就是初始状态 i i i 根据序列 w w w 转移 k k k 轮后的最终状态的输出。

对于布尔函数 ϕ ( x 1 , ⋯   , x n ) \phi(x_1,\cdots,x_n) ϕ(x1,,xn),将它转化为有限自动机,执行的序列 w x w_x wx x x x 指定。不失一般性地,我们使得 ∣ w ∣ = k |w|=k w=k 长度固定(比如设置 “终止状态” 使得 T 0 ( o b ) = T 1 ( o b ) = o b , b = 0 / 1 T_0(o_b)=T_1(o_b)=o_b,b=0/1 T0(ob)=T1(ob)=ob,b=0/1,在不等长序列 w x w_x wx 之后添加无限序列),从而可以使用上述的逆序算法。这个自动机对应的 MUX-based BDD 包含了 O ( k ⋅ ∣ Q ∣ ) O(k\cdot|Q|) O(kQ) 个节点,其中 k k k ∣ Q ∣ |Q| Q 都仅为多项式大小

在这里插入图片描述

Simple Bootstrapping Circuit

我们假设私钥 s ^ ∈ G ^ \hat s \in \hat G s^G^ 可以表示为 s ∈ { 0 , 1 } n − 1 s \in \{0,1\}^{n-1} s{0,1}n1,给定密文 ( d , c ) ∈ H = G × T (d,c) \in H=G \times \mathbb T (d,c)H=G×T,解密函数被线性化:
P h a s e ( d , c ) = c − s ^ ( d ) = c − ∑ i = 1 n − 1 s i ⋅ d i Phase(d,c)=c-\hat s(d) = c-\sum_{i=1}^{n-1} s_i \cdot d_i Phase(d,c)=cs^(d)=ci=1n1sidi
其中 d i = e ^ i ( d ) ∈ T d_i=\hat e_i(d) \in \mathbb T di=e^i(d)T 是环面元素。于是 P h a s e ( d , c ) Phase(d,c) Phase(d,c) 是已知常数 c , d i c,d_i c,di 的关于输入 s s s 的布尔函数:把环面以精度 1 / 4 n 1/4n 1/4n 离散化(园整误差 1 / 8 n 1/8n 1/8n 1 4 n Z / Z ≅ Z 4 n \frac{1}{4n}\mathbb Z/\mathbb Z \cong \mathbb Z_{4n} 4n1Z/ZZ4n,定义
ϕ ( s 1 , ⋯   , s n − 1 ) = M S B ( c ′ − ∑ i s i d i ′ ( m o d 4 n ) ) \phi(s_1,\cdots,s_{n-1}) = MSB\left(c'-\sum_i s_i d_i' \pmod{4n}\right) ϕ(s1,,sn1)=MSB(cisidi(mod4n))
其中 c ′ = ⌊ ( c + 1 / 4 ) ⋅ 4 n ⌉ c'=\lfloor (c+1/4) \cdot 4n\rceil c=⌊(c+1/4)4n d i ′ = ⌊ d i ⋅ 4 n ⌉ d_i'=\lfloor d_i \cdot 4n\rceil di=di4n。因为 s s s 是布尔的,园整误差的累计规模为 n ⋅ 1 / 8 n = 1 / 8 n \cdot 1/8n=1/8 n1/8n=1/8,只要 N o i s e ( d , c ) ≤ 1 / 8 Noise(d,c) \le 1/8 Noise(d,c)1/8,那么总误差小于 1 / 4 1/4 1/4,在环面上可以纠错从而解密正确。

布尔函数 ϕ ( s 1 , ⋯   , s n − 1 ) \phi(s_1,\cdots,s_{n-1}) ϕ(s1,,sn1) 的计算:

  1. 对于前缀 ( x 1 , ⋯   , x k ) ≠ ( y 1 , ⋯   , y k ) (x_1,\cdots,x_k) \neq (y_1,\cdots,y_k) (x1,,xk)=(y1,,yk),如果满足 ∑ i x i d i ′ ≡ ∑ i y i d i ′ ( m o d 4 n ) \sum_i x_i d_i' \equiv \sum_i y_i d_i' \pmod{4n} ixidiiyidi(mod4n),那么关于变元 ( z k + 1 , ⋯   , z n ) (z_{k+1},\cdots,z_n) (zk+1,,zn) 的 partial functions,
    ϕ ( x 1 , ⋯   , x k , z k + 1 , ⋯   , z n ) = ϕ ( x 1 , ⋯   , x k , z k + 1 , ⋯   , z n ) \phi(x_1,\cdots,x_k,z_{k+1},\cdots,z_n) = \phi(x_1,\cdots,x_k,z_{k+1},\cdots,z_n) ϕ(x1,,xk,zk+1,,zn)=ϕ(x1,,xk,zk+1,,zn)
    因此,由 1 ≤ k ≤ n − 1 1 \le k \le n-1 1kn1 长前缀指示的不同 partial functions 最多只有 4 n 4n 4n(因为 ∑ i x i d i ′ \sum_i x_i d_i' ixidi 只有这么多种取值)

  2. 将布尔函数转化为 OBDD,它有 n n n 层,每层包含至多 4 n 4n 4n 个节点(每个节点对应的子树就是一个 partial functions),共计 O ( 4 n 2 ) O(4n^2) O(4n2) 个 MUX 门就可以完成计算。

连续的 MUX 深度为 n − 1 n-1 n1,也就是需要计算连续的 n − 1 n-1 n1 个 AND 门。采取右结合策略,噪声仅为 O ( n l β B ) O(nl\beta B) O(nlβB),其中密文 c ∈ H l c \in H^l cHl,密文噪声上界 B B B f h − 1 f_h^{-1} fh1 满足 β \beta β-bounded,而 n n n 是私钥 s ^ \hat s s^ 的长度(安全参数)。上述的 Bootstrapping Circuit,计算复杂度是二次的,噪声增长是线性的

进一步选取 q = ∏ i = 1 t p i ≥ 4 n q=\prod_{i=1}^t p_i \ge 4n q=i=1tpi4n,然后精度 1 / q 1/q 1/q 的离散化环面。使用 CRT 分解 Z q ≅ ∏ i Z p i \mathbb Z_q \cong \mathbb \prod_i Z_{p_i} ZqiZpi,假设 p i = O ( log ⁡ n ) p_i=O(\log n) pi=O(logn),并且 t = O ( log ⁡ n ) t=O(\log n) t=O(logn),那么

  1. 对于每个 j ∈ [ t ] j \in [t] j[t],计算 y j = f j ( s ) : = c ′ − ∑ i s i d i ′ ( m o d p j ) y_j=f_j(s) := c'-\sum_i s_i d_i' \pmod{p_j} yj=fj(s):=cisidi(modpj),它是 O ( log ⁡ p j ) O(\log p_j) O(logpj) 个输入长度为 n − 1 n-1 n1 的布尔函数
  2. 计算 ϕ ′ ( y 1 , ⋯   , y t ) : = M S B ( C R T ( y 1 , ⋯   , y t ) ( m o d q ) ) \phi'(y_1,\cdots,y_t):=MSB(CRT(y_1,\cdots,y_t) \pmod q) ϕ(y1,,yt):=MSB(CRT(y1,,yt)(modq)),它是 ∑ i log ⁡ ( p i ) \sum_i \log(p_i) ilog(pi) 比特输入的布尔函数

由于模掉了 p j p_j pj q q q,因此 f j , ϕ ′ f_j,\phi' fj,ϕ 对应的 OBDD 每层的节点数不超过它们,从而计算复杂度 O ~ ( n ) \tilde O(n) O~(n) 是拟线性的。

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

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

相关文章

如何实现浏览器的前进和后退功能?

文章来源于极客时间前google工程师−王争专栏。 如何理解栈 后进者先出&#xff0c;先进者后出&#xff0c;这就是典型的“栈”结构。 从栈的操作特性来看&#xff0c;栈是一种“操作受限”的线性表&#xff0c;只允许在一端插入和删除数据。 当某个数据集合只涉及在一端插入…

【yolov系列:yolov7改进添加SIAM注意力机制】

yolo系列文章目录 文章目录 yolo系列文章目录一、SimAM注意力机制是什么&#xff1f;二、YOLOv7使用SimAM注意力机制1.在yolov7的models下面新建SimAM.py文件2.在common里面导入在这里插入图片描述 总结 一、SimAM注意力机制是什么&#xff1f; 论文题目&#xff1a;SimAM: A …

使用访问图像三种办法,指针,迭代器,动态地址计算

使用访问图像三种办法&#xff0c;指针&#xff0c;迭代器&#xff0c;动态地址计算 指针访问 方法一 #include <opencv2/opencv.hpp> #include <iostream> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp>using n…

TS中interface接口的使用

接口用来定义一个类的结构&#xff0c;用来定义一个接口中应该包含哪些属性和方法 语法结构如下&#xff1a; interface 接口名 { // 属性和方法 } 一、使用接口进行类型声明 我们声明一个对象类型可以使用如下方法&#xff1a; // 定义一个对象类型 type Mytype {name: st…

show index 中部分字段的含义

show index from 表名 查看某张表的索引情况 另: SELECT * FROM information_schema.STATISTICS WHERE TABLE_NAME "t1" 与 show index from t1 作用相似,且会返回更多的字段信息 创建一张测试表t1: CREATE TABLE t1 ( id INT ( 11 ) NOT NULL AUTO_INCREMENT, nam…

【C++】STL详解(十二)—— 用哈希表封装出unordered_map和unordered_set

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C学习 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C】STL…

Zookeeper 集群搭建

Zookeeper Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目 Zookeeper 工作机制 Zookeeper从设计模式角度来理解&#xff1a;是一个基于观察者模式设计的分布式服务管理框架 一旦这些数据的状态发生变化&#xff0c;Zookeeper就将负责通知…

【EI复现】基于同步发电机转动惯量和阻尼系数协同自适应控制策略(Simulink仿真实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

华为OD机试 - 计算最大乘积(2022Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

分贝定义简介

一、什么是分贝 辅助单元Bel表示任何给定部件、电路或系统的输入和输出之间的对数比L,并且可以用电压、电流或功率来表示: 如果使用场量(电压或电流)代替功率量,则: 我们可以将增益或损耗因子相加为正或负dB值,而不是将其乘以比率。 分贝与功率转化的速读表如下所示:…

流程图设计制作都有哪些好用的工具

流程图是一种直观的图形表示方式&#xff0c;通常用于显示事物的过程、步骤和关系。在现代工作中&#xff0c;设计师经常需要绘制各种流程图来解释工作过程、产品设计等。本文将为您推荐7个流程图软件&#xff0c;以帮助您快速绘制高效的流程图&#xff0c;并提高工作效率。 即…

IDEA 2021.2.2设置自动热部署

1.导入包坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency> 2.pom.xml添加piugins插…

Redis-双写一致性

双写一致性 双写一致性解决方案延迟双删&#xff08;有脏数据的风险&#xff09;分布式锁&#xff08;强一致性&#xff0c;性能比较低&#xff09;异步通知&#xff08;保证数据的最终一致性&#xff0c;高并发情况下会出现短暂的不一致情况&#xff09; 双写一致性 当修改了数…

光伏并网逆变器低电压穿越技术研究(Simulink仿真)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

JavaScript系列从入门到精通系列第十八篇:JavaScript中的函数作用域

文章目录 前言 一&#xff1a;函数作用域 前言 我们刚才提到了&#xff0c;在<Script>标签当中进行定义的变量、对象、函数对象都属于全局作用域&#xff0c;全局作用域在页面打开的时候生效在页面关闭的时候失效。 一&#xff1a;函数作用域 调用函数时创建函数作用域…

New Journal of Physics:不同机器学习力场特征的准确性测试

文章信息 作者&#xff1a;Ting Han1, Jie Li1, Liping Liu2, Fengyu Li1, * and Lin-Wang Wang2, * 通信单位&#xff1a;内蒙古大学物理科学与技术学院、中国科学院半导体研究所 DOI&#xff1a;10.1088/1367-2630/acf2bb 研究背景 近年来&#xff0c;基于DFT数据的机器学…

Docker安装及基本使用

一、Docker安装 1.下载关于Docker的依赖环境 在Xterm中输入以下代码安装依赖环境 回车 yum -y install yum-utils device-mapper-persistent-datalvm2 2.设置一下下载Docker的镜像源 依赖环境下载完毕以后&#xff0c;设置下载的镜像源&#xff0c;如果不设置&#xff0c…

使用Docker部署Redis(单机部署)

目录 一、查看Redis镜像版本二、拉取自己需要的镜像版本三、创建挂载目录四、添加配置文件五、运行Redis容器六、连接测试 一、查看Redis镜像版本 先去Docker Hub查看Redis镜像有那些版本&#xff0c;我部署的时候Redis最新已经到7.x的版本了&#xff0c;我这里准备部署6.x的版…

17哈希表-简单遍历

目录 LeetCode之路——383. 赎金信 分析&#xff1a; 解法一&#xff1a;哈希表 解法二&#xff1a;数组 LeetCode之路——383. 赎金信 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&…

pinduoduo.item_get拼多多平台根据ID取商品详情 API 封装数据接口返回值说明

参数说明 通用参数说明 version:API版本key:调用key,测试key:test_api_keyapi_name:API类型[item_search,item_get]cache:[yes,no]默认yes&#xff0c;将调用缓存的数据&#xff0c;速度比较快result_type:[json,xml,serialize,var_export]返回数据格式&#xff0c;默认为jsonl…