参考文献:
在 Gentry 的蓝图中,FHE 通过对 SWHE 做同态解密,以刷新密文中累计的噪声。以 AP14 的对称版本 GSW 为例,解密函数可以分为两部分,
线性运算: 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,2l−2),令 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′=2l−2μ
满足 2 l − 2 ≈ ( q / 4 , q / 2 ] 2^{l-2} \approx (q/4,q/2] 2l−2≈(q/4,q/2],只要噪声小于 q / 8 q/8 q/8 即可正确解密
纠错运算:我们根据 2 l − 2 μ ( m o d q ) 2^{l-2}\mu \pmod q 2l−2μ(modq) 计算出消息 μ ∈ { 0 , 1 } \mu \in \{0,1\} μ∈{0,1}
不失一般性,我们假设 2 l − 2 ≈ q / 2 2^{l-2} \approx q/2 2l−2≈q/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/2⟨s,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=b−⟨s,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,c⟩∈T 落在实数环面上,只需旋转 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) v∈T[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(b−s⋅a)∈T 对应的 TLWE 密文。离散环面上的园整函数,恰好就是一个反循环函数。
我们定义相位 ϕ s ( a , b ) = b − s ^ ( a ) ∈ T \phi_s(a,b)=b-\hat s(a) \in \mathbb T ϕs(a,b)=b−s^(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 TN⊆T,它上面的任意相位变换 f : T N → T N f: \mathbb T_N \to \mathbb T_N f:TN→TN,在给定 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)。
矩阵 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\| maxi∥bi∥。格基的 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,⋯,bi−1)⊥ 的正交投影。
任意有限阿贝尔群 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=1kZqi→G。此时的群可以写成(内)直和分解的形式:找到 { 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=⟨e1⟩⊕⋯⊕⟨ek⟩
我们说群是完全显式的(full-explicit),如果同构的逆(群元素的分解)是容易计算的。我们说群的秩(rank)是循环群分解后的最小数量(循环群可以继续分解为一些循环群直积)。我们可以约束 q i + 1 ∣ q i q_{i+1}|q_i qi+1∣qi,使得 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 k≤n,阶 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ˉ/L≅G,对应的满同态 ϕ : 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 0→L→idLˉ→ϕG→0 是短正合列。
令 L ⊆ Z m L \subseteq \mathbb Z^m L⊆Zm 是满秩格,那么因子群(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:={L∣rank(L)=m,Zm/L≅G}
那么 L ∈ L G , m L \in L_{G,m} L∈LG,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)∈Zm∣i∑xigi=0G}
对于 g ≠ h ∈ G m g \neq h \in G^m g=h∈Gm,那么 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} L∈LG,m 的自然密度为: ⋃ G is cyclic L G , m ≈ 85 % \bigcup_{\text{G is cyclic}} L_{G,m} \approx 85\% ⋃G is cyclicLG,m≈85%,当 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} L∈LZqn,m 十分稀少。
[GINX16] 给出了标准 SIS/LWE 的扩展,将群 G = Z q n G=\mathbb Z_q^n G=Zqn 扩展到了任意的有限阿贝尔群。
维度 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 x∈Lg,满足 ∥ x ∥ ≤ β \|x\| \le \beta ∥x∥≤β
当 β ≥ m ⋅ ∣ G ∣ 1 / m \beta \ge \sqrt{m}\cdot |G|^{1/m} β≥m⋅∣G∣1/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 g∈Gm 是来自 GSIS 分布还是 L G , m L_{G,m} LG,m 上均匀分布
当 m ≥ 2 log ∣ G ∣ + 2 m \ge 2\log|G|+2 m≥2log∣G∣+2 时,均匀的 g g g 生成 G G G 的概率至少为 1 − 1 / ∣ G ∣ 1-1/|G| 1−1/∣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 g∈Gm 按行矢排列,得到 B ∈ Z q m × n B \in \mathbb Z_q^{m \times n} B∈Zqm×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)∈Zm∣xtB≡0∈Zqn}=Lq⊥(B)
由于 m ≥ r a n k ( G ) = n m\ge rank(G)=n m≥rank(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)={x∈Zn∣x≡ztB(modq),z∈Zm} 是满秩矩阵。
实数环面 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 χ:G→T,构成了对偶群 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=⟨e1⟩⊕⋯⊕⟨ek⟩,此时群元素有唯一分解:
a = ∑ j α j e j , 0 ≤ α j < q j a=\sum_j \alpha_j e_j,0\le \alpha_j
那么对偶群就是 G ^ = ⟨ e ^ 1 ⟩ ⊕ ⋯ ⊕ ⟨ e ^ k ⟩ \hat G = \langle \hat e_1\rangle \oplus \cdots \oplus \langle \hat e_k\rangle G^=⟨e^1⟩⊕⋯⊕⟨e^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
令 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,⋯,am∈G,计算携带高斯扰动(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,
标准 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 s∈Zn,就有
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=1∑nsie^i(a)=q⟨s,a⟩(mod1)
它与 ⟨ s , a ⟩ ( m o d q ) \langle s,a \rangle \pmod q ⟨s,a⟩(modq) 仅相差一个因子 q q q,从而是等价的。
[GINX16] 提出了结构格约减:对于格 L ⊆ Z n L \subseteq \mathbb Z^n L⊆Zn,给定有限阿贝尔群 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,k≤n,找出对应的超格 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ˉ/L→G 的同构映射,及其对偶。
然后,利用上述的格基约减算法,[GINX16] 证明了 GSIS/GLWE 的安全性与标准 SIS/LWE 一样强。
在对 GLWE 归约时,他们推广了 modulus-dimension switching technique,称为 Group Switching。
最后,他们证明了 GLWE 分别在 Classical 和 Quantum 下的归约。
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,b∈Zq,计算 θ ( 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 g∈Gm
群 G G G 是 Z \mathbb Z Z-模,态射 f g : Z m → G f_g: \mathbb Z^m \to G fg:Zm→G 定义为
f g ( x ) = ∑ i x i g i f_g(x)=\sum_i x_i g_i fg(x)=i∑xigi
根据 leftover-hash lemma,它的输出分布是统计均匀的。在 GSIS 假设下,它是 OWF。
采样 e ← D α m e \gets D_\alpha^m e←Dαm,函数 f g × : G ^ × T m → T m f_g^\times:\hat G \times \mathbb T^m \to \mathbb T^m fg×:G^×Tm→Tm 定义为
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^×Zm→T,
θ ( 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))=i∑si⋅e^i(fg(x))=j∑xj(i∑si⋅e^i(gj))=j∑xj⋅s^(gj)
为了计算 θ ( s ^ , x ) \theta(\hat s,x) θ(s^,x),除了直接使用 ( s ^ , x ) (\hat s,x) (s^,x) 计算外,还可以:
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 问题。
GLWE 方案的密文是群 H H H 的元素,形如 c + μ h 1 ∈ H c+\mu h_1 \in H c+μh1∈H,其中 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:H→T,定义为
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(a∈G,b∈T)=b−s^(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:Zl→H,
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=1∑lxihi∈H,x∈Zl
是 Z \mathbb Z Z-模的满态射。定义它的伪逆(pseudo-inverse ) f h − 1 : H → Z l f_h^{-1}:H \to \mathbb Z^l fh−1:H→Zl,满足 f h ( f h − 1 ( c ) ) = c , ∀ c ∈ H f_h(f_h^{-1}(c))=c,\forall c \in H fh(fh−1(c))=c,∀c∈H,其中 I m ( f h − 1 ) Im(f_h^{-1}) Im(fh−1) 是 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} X∈Zl×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 xi∈Zl 是矩阵的行矢。同样的对于 c ∈ H l c \in H^l c∈Hl,定义 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)) Fh−1(c)=(fh−1(c1),⋯,fh−1(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(Fh−1(c))=X⋅c,Fh−1(c)⋅h=c=Fh−1(c)⋅(b+kh)=Fh−1(c)⋅b+kc,k∈Z
这个公式可以用于计算同态 AND 门。将 GLWE 的 0 0 0 密文并列 l l l 次,得到 c ∈ H l c \in H^l c∈Hl,使得 GSW 密文形如 c + μ h ∈ H l , μ ∈ { 0 , 1 } c+\mu h \in H^l,\mu \in \{0,1\} c+μh∈Hl,μ∈{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(Fh−1(c+μh))err=Fh−1(c+μh)⋅c′+μ′c+μ′μh=Fh−1(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 klβB
对于可以表示为稀疏低次多项式的布尔函数,尤其是线性布尔函数 ϕ ( x ) = b + ∑ i a i x i \phi(x)=b+\sum_i a_ix_i ϕ(x)=b+∑iaixi,可以用 MUX 实现布尔函数的直接计算:
但是无法表示成稀疏低次多项式的那些布尔函数,直接计算的开销将会很高。给定一个任意的 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=x1⋯xk 找到一条从 root 到对应 leaf 的路径。但是消息 x i x_i xi 被加密为 IND-CPA 密文,无法区分左右子树。我们需要一种数据独立的查表算法:
构造 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
把向量 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)
从 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]
从 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 门,类似上述的逆序思路,执行任意的有限自动机:
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 i∈Q,状态 Q Q Q 上定义的输出 F F F,转移函数 T 0 , T 1 : Q → Q T_0,T_1: Q \to Q T0,T1:Q→Q 分别表示当前输入 0 / 1 0/1 0/1 的下一状态
简记 X q , 0 , ∀ q ∈ Q X_{q,0},\forall q \in Q Xq,0,∀q∈Q 是自动机的全部状态上的输出
为了计算输入序列 w = w 1 w 2 ⋯ w k w=w_1w_2\cdots w_k w=w1w2⋯wk(注意这并不是布尔函数的输入)对应的输出,逆向状态转移箭头,迭代计算
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+1−j,XT0(q),j−1,XT1(q),j−1),∀q∈Q
执行 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(k⋅∣Q∣) 个节点,其中 k k k 和 ∣ Q ∣ |Q| ∣Q∣ 都仅为多项式大小。
我们假设私钥 s ^ ∈ G ^ \hat s \in \hat G s^∈G^ 可以表示为 s ∈ { 0 , 1 } n − 1 s \in \{0,1\}^{n-1} s∈{0,1}n−1,给定密文 ( 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)=c−s^(d)=c−i=1∑n−1si⋅di
其中 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/Z≅Z4n,定义
ϕ ( 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,⋯,sn−1)=MSB(c′−i∑sidi′(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′=⌊di⋅4n⌉。因为 s s s 是布尔的,园整误差的累计规模为 n ⋅ 1 / 8 n = 1 / 8 n \cdot 1/8n=1/8 n⋅1/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,⋯,sn−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} ∑ixidi′≡∑iyidi′(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 1≤k≤n−1 长前缀指示的不同 partial functions 最多只有 4 n 4n 4n 个(因为 ∑ i x i d i ′ \sum_i x_i d_i' ∑ixidi′ 只有这么多种取值)
将布尔函数转化为 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 n−1,也就是需要计算连续的 n − 1 n-1 n−1 个 AND 门。采取右结合策略,噪声仅为 O ( n l β B ) O(nl\beta B) O(nlβB),其中密文 c ∈ H l c \in H^l c∈Hl,密文噪声上界 B B B, f h − 1 f_h^{-1} fh−1 满足 β \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=1tpi≥4n,然后精度 1 / q 1/q 1/q 的离散化环面。使用 CRT 分解 Z q ≅ ∏ i Z p i \mathbb Z_q \cong \mathbb \prod_i Z_{p_i} Zq≅∏iZpi,假设 p i = O ( log n ) p_i=O(\log n) pi=O(logn),并且 t = O ( log n ) t=O(\log n) t=O(logn),那么
由于模掉了 p j p_j pj 和 q q q,因此 f j , ϕ ′ f_j,\phi' fj,ϕ′ 对应的 OBDD 每层的节点数不超过它们,从而计算复杂度 O ~ ( n ) \tilde O(n) O~(n) 是拟线性的。