当前位置:   article > 正文

全同态加密:GSW_gsw同态

gsw同态

参考文献:

  1. Micciancio D, Peikert C. Trapdoors for lattices: Simpler, tighter, faster, smaller[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, Berlin, Heidelberg, 2012: 700-718.
  2. Gentry C, Sahai A, Waters B. Homomorphic encryption from learning with errors: Conceptually-simpler, asymptotically-faster, attribute-based[C]//Annual Cryptology Conference. Springer, Berlin, Heidelberg, 2013: 75-92.

Gadget

2012年 Micciancio 和 Peikert 介绍了一种不是格基的陷门。首先构造了一类特殊的格族(family of lattices)Primitive Lattices,它们拥有快速、可并行的解码算法。令 primitive matrix G ∈ Z q n × w G \in \mathbb Z_q^{n \times w} GZqn×w,它满足 G ⋅ Z w = Z q n G \cdot \mathbb Z^w = \mathbb Z_q^n GZw=Zqn,其中 k = ⌈ log ⁡ 2 q ⌉ k=\lceil \log_2 q \rceil k=log2q w = n k w=nk w=nk

  1. 在格 Λ ⊥ ( G ) \Lambda^\perp(G) Λ(G) 上,有一个已知的短格基 S ∈ Z w × w S \in \mathbb Z^{w \times w} SZw×w,满足 ∥ S ~ ∥ ≤ 5 \|\tilde S\| \le \sqrt 5 S~5 ∥ S ∥ ≤ max ⁡ { 5 , k } \|S\| \le \max\{\sqrt 5,\sqrt k\} Smax{5 ,k }。如果 q = 2 k q=2^k q=2k,那么 S ~ = 2 I \tilde S = 2I S~=2I,从而 ∥ S ~ ∥ = 2 \|\tilde S\| = 2 S~=2 以及 ∥ S ∥ = 5 \|S\| = \sqrt 5 S=5

  2. 函数
    f G ( x ) : = G x ( m o d q ) f_G(x) := Gx \pmod{q} fG(x):=Gx(modq)

    的原像采样(preimage sampling)算法,只需要 O ( n ⋅ log ⁡ c n ) O(n \cdot \log^c{n}) O(nlogcn) 的时间

  3. 函数
    g G ( s , e ) : = s t G + e t ( m o d q ) g_G(s,e) := s^tG + e^t \pmod{q} gG(s,e):=stG+et(modq)

    的陷门求逆(trapdoor inversion)算法,只需要 O ( n ⋅ log ⁡ c n ) O(n \cdot \log^c{n}) O(nlogcn) 的时间。

  4. 并且,这两个算法都可以 n n n 路并行,进一步降低为 O ( log ⁡ c n ) O(\log^c{n}) O(logcn) 的时间。如果 q = 2 k q=2^k q=2k,那么这 O ( log ⁡ c n ) O(\log^c n) O(logcn) 的运算就仅仅是 k k k 比特整数的加法和位移。

如果令 A ′ = [ A ‾ ∣ G ] A'=\left[\overline A \mid G\right] A=[AG] T = [ I − R 0 I ] T =

[IR0I]
T=[I0RI],设置 A = A ′ ⋅ T = [ A ‾ ∣ G − A ‾ R ] A = A' \cdot T = \left[\overline A \mid G-\overline A R\right] A=AT=[AGAR],那么

  1. 易知 T − 1 = [ I R 0 I ] T^{-1} =
    [IR0I]
    T1=[I0RI]
    ,因此 A A A A ′ A' A 之间的双向转换是容易的,花费是与 R R R 的矩阵乘。
  2. 函数 f A ( x ) : = A x ( m o d q ) f_A(x) := Ax \pmod{q} fA(x):=Ax(modq) g A ( s , e ) : = s t A + e t ( m o d q ) g_A(s,e) := s^tA+e^t \pmod{q} gA(s,e):=stA+et(modq) 都可以归约到 f G f_G fG g G g_G gG 上,归约的花费仅仅是与 R R R 的矩阵向量乘积。

博主只粗略浏览了论文的前两节(已在格密码综述里看过),旧内容见 格密码:陷门OWF(Short Basis、Gadget)

GSW

2013年 Gentry, Sahai, Waters 三位大牛提出了一种不需要 evaluation key 的全同态加密方案,拉开了第三代全同态加密的帷幕。

Approximate Eigenvector

之前的 FHE 方案(BGV-typeFV-type)的乘法同态运算都“不自然”,需要密文的张量积、多项式乘积。那么,是否可以设计一种密码算法,它的同态运算就直接是环上的加法和乘法呢?GSW 提出了近似特征向量技术,将明文整数作为密文矩阵特征值,而私钥特征向量

GSW 基于 LWE 问题,它在平均情况下的困难程度,至少最坏情况下的一些格问题的困难程度。

在这里插入图片描述

整数环 Z q \mathbb Z_q Zq,明文 μ ∈ Z q \mu \in \mathbb Z_q μZq 是 “small integer”,密文 C ∈ Z q N × N C \in \mathbb Z_q^{N \times N} CZqN×N 是 “small entries” 的方阵,私钥 v ∈ Z q N v \in \mathbb Z_q^N vZqN 是至少有一个 “big coefficient” 的向量。

我们说 C C C 加密了 μ \mu μ,如果:
C ⋅ v = μ ⋅ v + e C \cdot v = \mu \cdot v + e Cv=μv+e

其中 e e e 是 “small error” 的向量。令 v i v_i vi v v v 中足够大的一项,令 C i C_i Ci 是第 i i i 行向量(因为 C i ⋅ v = μ ⋅ v i + e i C_i \cdot v = \mu \cdot v_i + e_i Civ=μvi+ei 包含的整数 μ \mu μ 精度最高, 仅当 ∣ e i / v i ∣ > 0.5 |e_i/v_i|>0.5 ei/vi>0.5 时才会出错),那么:
μ = ⌊ ⟨ C i , v ⟩ v i ⌉ \mu = \left\lfloor \frac{\langle C_i,v \rangle}{v_i} \right\rceil μ=viCi,v

假设 μ 1 \mu_1 μ1 的密文是 C 1 C_1 C1 μ 2 \mu_2 μ2 的密文是 C 2 C_2 C2,那么有

  • 同态加法就是环加法: C + = C 1 + C 2 C^+ = C_1+C_2 C+=C1+C2
    C + ⋅ v = C 1 ⋅ v + C 2 ⋅ v = ( μ 1 + μ 2 ) ⋅ v + ( e 1 + e 2 )

    C+v=C1v+C2v=(μ1+μ2)v+(e1+e2)
    C+v=C1v+C2v=(μ1+μ2)v+(e1+e2)

  • 同态乘法就是环乘法: C × = C 1 ⋅ C 2 C^\times = C_1 \cdot C_2 C×=C1C2
    C × ⋅ v = C 1 ⋅ ( C 2 ⋅ v ) = C 1 ⋅ ( μ 2 ⋅ v + e 2 ) = μ 2 ⋅ ( C 1 ⋅ v ) + C 1 ⋅ e 2 = ( μ 1 ⋅ μ 2 ) ⋅ v + ( C 1 ⋅ e 2 + μ 2 ⋅ e 1 )

    C×v=C1(C2v)=C1(μ2v+e2)=μ2(C1v)+C1e2=(μ1μ2)v+(C1e2+μ2e1)
    C×v=C1(C2v)=C1(μ2v+e2)=μ2(C1v)+C1e2=(μ1μ2)v+(C1e2+μ2e1)

因此 GSW 的同态运算,就简单是矩阵加法和矩阵乘法,这是 “natural” 运算。

对于矩阵乘来说,在 Strassen 算法下的复杂度为 n 2.807 n^{2.807} n2.807,在 Schonhage 的 Laser Method 下的复杂度目前为 O ( n 2.3727 ) O(n^{2.3727}) O(n2.3727)(Williams 2012)。不过,似乎只有 Strassen 算法是实用的,任何渐进复杂度更低的矩阵乘算法都只适合 n n n 特别大的(现代计算机无法承受的地步)矩阵。而且这些算法由于浮点数精度问题,超大矩阵的计算误差也是大问题。还是分块、并行的 GEMM 更具实用性。

Flattening

我们说密文 C C C B B B - bounded,如果 μ i \mu_i μi C i C_i Ci e i e_i ei 的数量级都至多是 B B B

C 1 , C 2 C_1,C_2 C1,C2 B B B - bounded,那么

  1. C + C^+ C+ 2 B 2B 2B - bounded,深度为 L L L 的加法电路,得到的密文的噪音大小为 2 L B 2^L B 2LB
  2. C × C^\times C× ( N + 1 ) B 2 (N+1)B^2 (N+1)B2 - bounded,深度为 L L L 的乘法电路,得到的密文的噪音大小为 ( N + 1 ) 2 L − 1 B 2 L (N+1)^{2^L-1} B^{2^L} (N+1)2L1B2L

由于 q / B q/B q/B 至多是关于 N N N 的亚指数的(安全性),因此上述同态运算只能支持对数深度(log-depth)的电路。那么怎么才能限制噪声的增长呢?

我们说密文 C C C B B B - strongly - bounded,如果 μ \mu μ C C C 的数量级都至多是 1 1 1 e e e 的数量级至多是 B B B

假如 C 1 , C 2 C_1,C_2 C1,C2 B B B - strongly - bounded,那么 C × C^\times C× 将是 ( N + 1 ) B (N+1)B (N+1)B - bounded,但 C × C^\times C× 的系数的数量级将成为 N N N。要是可以使得 C × C^\times C× 成为 ( N + 1 ) B (N+1)B (N+1)B - strongly - bounded,那么深度为 L L L 的乘法电路后的噪声大小为 ( N + 1 ) L B (N+1)^L B (N+1)LB,于是 q / B q/B q/B 就可以支持多项式深度(poly-depth)的电路了!

与 BGV 和 BFV 一样,GSW 也使用二进制分解(或者说 Gadget 矩阵 G G G)来约束噪声的增长:

  • B i t D e c o m p ( a ) BitDecomp(a) BitDecomp(a):输入 a = ( a 1 , ⋯   , a k ) ∈ Z q k a=(a_1,\cdots,a_k) \in \mathbb Z_q^k a=(a1,,ak)Zqk,令 l = ⌊ log ⁡ 2 q ⌋ + 1 l = \lfloor \log_2 q \rfloor+1 l=log2q+1 N = k ⋅ l N = k \cdot l N=kl,设 a i = a i , 0 a i , 1 ⋯ a i , l − 1 a_i = a_{i,0}a_{i,1}\cdots a_{i,l-1} ai=ai,0ai,1ai,l1 是二进制分解,输出
    a ′ = G − 1 ( a ) = ( a 1 , 0 , ⋯   , a 1 , l − 1 , ⋯   , a k , 0 , ⋯   , a k , l − 1 ) ∈ { 0 , 1 } N a' = G^{-1}(a) =(a_{1,0},\cdots,a_{1,l-1},\cdots,a_{k,0},\cdots,a_{k,l-1}) \in \{0,1\}^{N} a=G1(a)=(a1,0,,a1,l1,,ak,0,,ak,l1){0,1}N

  • B i t D e c o m p − 1 ( a ′ ) BitDecomp^{-1}(a') BitDecomp1(a):输入 a ′ ∈ Z q N a' \in \mathbb Z_q^N aZqN(不必是 { 0 , 1 } N \{0,1\}^N {0,1}N),设 a i = ∑ j = 0 l − 1 2 j a i , j a_i = \sum_{j=0}^{l-1} 2^j a_{i,j} ai=j=0l12jai,j 是二进制合成,输出
    a = G ⋅ a ′ = ( a 1 , a 2 , ⋯   , a k ) ∈ Z q k a = G \cdot a' = (a_1,a_2,\cdots,a_k) \in \mathbb Z_q^k a=Ga=(a1,a2,,ak)Zqk

  • F l a t t e n ( a ′ ) Flatten(a') Flatten(a):输入 a ′ ∈ Z q N a' \in \mathbb Z_q^N aZqN(不必是 { 0 , 1 } N \{0,1\}^N {0,1}N),输出
    B i t D e c o m p ( B i t D e c o m p − 1 ( a ′ ) ) ∈ { 0 , 1 } N BitDecomp(BitDecomp^{-1}(a')) \in \{0,1\}^N BitDecomp(BitDecomp1(a)){0,1}N

  • F l a t t e n ( A ) Flatten(A) Flatten(A):输入 A ∈ Z q N × N A \in \mathbb Z_q^{N \times N} AZqN×N,设 A i A_i Ai 是行向量,输出
    ( F l a t t e n ( A 1 ) , ⋯   , F l a t t e n ( A N ) ) T \left(Flatten(A_1),\cdots,Flatten(A_N)\right)^T (Flatten(A1),,Flatten(AN))T

  • P o w e r s o f 2 ( b ) Powersof2(b) Powersof2(b):输入 b = ( b 1 , ⋯   , b k ) ∈ Z q k b=(b_1,\cdots,b_k) \in \mathbb Z_q^k b=(b1,,bk)Zqk,输出
    b ′ = G t ⋅ b = ( b 1 , 2 b 1 , ⋯   , 2 l − 1 b 1 , ⋯   , b k , 2 b k , ⋯   , 2 l − 1 b k ) ∈ Z q N b' = G^t \cdot b = (b_1,2b_1,\cdots,2^{l-1}b_1,\cdots,b_k,2b_k,\cdots,2^{l-1}b_k) \in \mathbb Z_q^N b=Gtb=(b1,2b1,,2l1b1,,bk,2bk,,2l1bk)ZqN

可以验证如下事实:

  1. 对于 a , b ∈ Z q k a,b \in \mathbb Z_q^k a,bZqk,有
    ⟨ B i t D e c o m p ( a ) , P o w e r s o f 2 ( b ) ⟩ = b t ⋅ G ⋅ G − 1 ( a ) = ⟨ a , b ⟩ \lang BitDecomp(a),Powersof2(b)\rang = b^t \cdot G \cdot G^{-1}(a) = \lang a,b\rang BitDecomp(a),Powersof2(b)=btGG1(a)=a,b

  2. 对于 a ′ ∈ Z q N a' \in \mathbb Z_q^N aZqN b ∈ Z q k b \in \mathbb Z_q^k bZqk,有
    ⟨ a ′ , P o w e r s o f 2 ( b ) ⟩ = b t ⋅ G ⋅ a ′ = ⟨ B i t D e c o m p − 1 ( a ′ ) , b ⟩ \lang a',Powersof2(b) \rang = b^t \cdot G \cdot a' = \lang BitDecomp^{-1}(a'),b \rang a,Powersof2(b)=btGa=BitDecomp1(a),b

  3. 明显, ⟨ a ′ , P o w e r s o f 2 ( b ) ⟩ = ⟨ F l a t t e n ( a ′ ) , P o w e r s o f 2 ( b ) ⟩ \lang a',Powersof2(b) \rang = \lang Flatten(a'),Powersof2(b) \rang a,Powersof2(b)=Flatten(a),Powersof2(b)

采用增广形式的 LWE 样本。对于随机矩阵 A ∈ Z q m × ( n + 1 ) A \in \mathbb Z_q^{m \times (n+1)} AZqm×(n+1),设秘密向量为 s ∈ Z q n + 1 s \in \mathbb Z_q^{n+1} sZqn+1,满足 A ⋅ s = e A \cdot s=e As=e B B B - bounded 噪声,令 v = P o w e r s o f ( s ) v = Powersof(s) v=Powersof(s),那么 v v v 确实至少有一个 “big coefficient”,并且 v v v 的随机性等同于 s s s 的随机性。

l = ⌊ log ⁡ 2 q ⌋ + 1 l = \lfloor \log_2 q \rfloor+1 l=log2q+1 N = ( n + 1 ) ⋅ l N = (n+1) \cdot l N=(n+1)l,容易看出
C ⋅ v = F l a t t e n ( C ) ⋅ v C \cdot v = Flatten(C) \cdot v Cv=Flatten(C)v

也就是说,把密文 ”拍平“ 并不会改变明文

对于明文 μ ∈ Z q \mu \in \mathbb Z_q μZq,随机选取 R ∈ { 0 , 1 } N × m R \in \{0,1\}^{N \times m} R{0,1}N×m,“拍平” 的密文为:
C = F l a t t e n ( μ ⋅ I N + B i t D e c o m p ( R ⋅ A ) ) ∈ Z q N × N C = Flatten(\mu \cdot I_N + BitDecomp(R \cdot A)) \in \mathbb Z_q^{N \times N} C=Flatten(μIN+BitDecomp(RA))ZqN×N

容易验证 C ⋅ v = ( μ ⋅ I N + B i t D e c o m p ( R ⋅ A ) ) ⋅ v = μ ⋅ v + R ⋅ A ⋅ s C \cdot v = (\mu \cdot I_N + BitDecomp(R \cdot A)) \cdot v = \mu \cdot v + R \cdot A\cdot s Cv=(μIN+BitDecomp(RA))v=μv+RAs,包含的噪音 R ⋅ e R \cdot e Re 很小。

如果 m = O ( n log ⁡ q ) m = O(n \log q) m=O(nlogq),那么根据剩余哈希引理(leftover hash lemma) R ⋅ A R \cdot A RA 是统计均匀的(statistically uniform)。因此 B i t D e c o m p − 1 ( C ) = B i t D e c o m p − 1 ( μ ⋅ I N ) + R ⋅ A BitDecomp^{-1}(C) = BitDecomp^{-1}(\mu \cdot I_N) + R \cdot A BitDecomp1(C)=BitDecomp1(μIN)+RA 也是统计均匀的矩阵。

LHE

GSW 的方案如下:

在这里插入图片描述

同态运算为:

  1. 加法 A d d ( C 1 , C 2 ) = F l a t t e n ( C 1 + C 2 ) Add(C_1,C_2) = Flatten(C_1+C_2) Add(C1,C2)=Flatten(C1+C2),噪音为 e 1 + e 2 e_1+e_2 e1+e2,增长因子为 2 2 2
  2. 乘法 M u l t ( C 1 , C 2 ) = F l a t t e n ( C 1 ⋅ C 2 ) Mult(C_1,C_2) = Flatten(C_1 \cdot C_2) Mult(C1,C2)=Flatten(C1C2),噪音为 μ 2 ⋅ e 1 + C 1 ⋅ e 2 \mu_2 \cdot e_1 + C_1 \cdot e_2 μ2e1+C1e2,增长因子为 μ 2 + N \mu_2+N μ2+N
  3. 乘常数 M u l t C o n s t ( C , α ) = F l a t t e n ( F l a t t e n ( α ⋅ I N ) ⋅ C ) MultConst(C,\alpha) = Flatten\left(Flatten(\alpha \cdot I_N) \cdot C\right) MultConst(C,α)=Flatten(Flatten(αIN)C),噪音为 F l a t t e n ( α ⋅ I N ) ⋅ e Flatten(\alpha \cdot I_N) \cdot e Flatten(αIN)e,增长因子为 N N N 而非 α \alpha α
  4. 与非门 N A N D ( C 1 , C 2 ) = F l a t t e n ( I N − C 1 ⋅ C 2 ) NAND(C_1,C_2) = Flatten(I_N - C_1 \cdot C_2) NAND(C1,C2)=Flatten(INC1C2),噪音为 − μ 2 ⋅ e 1 − C 1 ⋅ e 2 -\mu_2 \cdot e_1 - C_1 \cdot e_2 μ2e1C1e2,由于 u 2 ∈ { 0 , 1 } u_2 \in \{0,1\} u2{0,1},增长因子为 N + 1 N+1 N+1

在解密时 x i = C i ⋅ v = μ ⋅ v i + R i ⋅ e x_i = C_i \cdot v = \mu \cdot v_i + R_i \cdot e xi=Civ=μvi+Rie, 令错误为 e ′ = R i ⋅ e e' = R_i \cdot e e=Rie,那么 ∣ e ′ ∣ |e'| e 的数量级为 ∥ e ∥ 1 \|e\|_1 e1,仅当 ∣ e ′ / v i ∣ < 0.5 |e'/v_i| < 0.5 e/vi<0.5 时才不会出错。因为 v i ∈ ( q / 4 , q / 2 ] v_i \in (q/4,q/2] vi(q/4,q/2],所以只要 e ′ < q / 8 e' < q/8 e<q/8,那么解密就是正确的。

如果布尔电路仅由与非门组成,那么 L L L 层计算后的噪声大小为 ( N + 1 ) L B (N+1)^L B (N+1)LB - bounded,那么令 q / B > 8 ( N + 1 ) L q/B > 8(N+1)^L q/B>8(N+1)L 即可保证噪音是 q / 8 q/8 q/8 - bounded,从而解密正确。

给定安全参数 λ \lambda λ,维度 n n n 应随着 log ⁡ ( q / B ) \log(q/B) log(q/B) 线性增长。GSW 将 n n n 视作一个定值,选取不算太大的 B B B,记 κ = log ⁡ q \kappa = \log q κ=logq,设置 κ = O ( L log ⁡ N ) = O ( L log ⁡ n ) \kappa = O(L \log N) = O(L \log n) κ=O(LlogN)=O(Llogn)

由于 N = O ( n κ ) = O ~ ( n L ) N = O(n \kappa) = \tilde O(nL) N=O(nκ)=O~(nL),因此同态运算的渐进复杂度为 O ~ ( ( n L ) w ) \tilde O((nL)^w) O~((nL)w),其中 w < 2.3727 w < 2.3727 w<2.3727。这个渐进复杂度优于基于 LWE 的 BGV 和 BFV 的 O ~ ( n 3 L 2 ) \tilde O(n^3L^2) O~(n3L2),但是比基于 RLWE 的 BGV / BFV 慢一些对数因子。GSW 可以显著降低存储开销,从伪立方降低到了伪平方。

IBHE & ABHE

之前的 FHE 都无法转化为基于身份的加密(IBE)和基于属性的加密(ABE),主要是因为同态计算需要 evaluation key,这个密钥无法根据身份 ID 来生成。

GSW 的同态运算完全不需要 evaluation key,只需要知道公开参数即可。因此,只要管理员生成 M S K MSK MSK,公布 M P K MPK MPK,然后

  • 对于任意的 p k = ( M P K , I D ) pk=(MPK,ID) pk=(MPK,ID),管理员计算 s k I D ← K e y G e n ( M S K , I D ) sk_{ID} \leftarrow KeyGen(MSK,ID) skIDKeyGen(MSK,ID),那么就把 GSW 转化为了 IBHE。

  • 类似的,对于任意的属性 x x x,令公钥为 p k = ( M P K , x ) pk = (MPK,x) pk=(MPK,x),对于访问策略 y y y,管理员计算 s k y ← K e y G e n ( M S K , y ) sk_y \leftarrow KeyGen(MSK,y) skyKeyGen(MSK,y),那么仅当 R ( x , y ) = 1 R(x,y)=1 R(x,y)=1 时才可以正确解密。这就把 GSW 转化为了 ABHE。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/455426
推荐阅读
相关标签
  

闽ICP备14008679号