同态加密GSW方案学习笔记1-GSW最初方案概述

概述

2013 年,Gentry 等人使用近似特征向量技术,设计了一个无需计算密钥的全同态加密方案:GSW,拉开了第三代全同态加密的帷幕。2014年,Chris Peikert 等人提出了一个更简单的对称 GSW 方案,并用之设计了一个快速的自举算法。
首先看 2013 年 GSW 方案的论文标题:Homomorphic Encryption from Learning with Errors Conceptually-Simpler,Asymptotically-Faster, Attribute-Based

  • 同态加密和 LWE 问题不再赘述。
  • Conceptually-Simpler:从概念上更加简单。因为在 GSW 方案中所使用的的密文都是矩阵。因此在进行同态运算加或乘的时候,只需将矩阵进行加或乘即可。在这之前,同态加密运算乘法非常复杂。
  • Asymptotically-Faster:渐进更快。在理论上每次乘法的计算量为 n ω n^{\omega} nω ,其中 ω < 2.3727 \omega < 2.3727 ω<2.3727 是矩阵乘法常数。以往的方案中重线性化都需要 n 3 n^3 n3 的计算量。
  • First identity-based FHE scheme:本文提出了第一个基于身份的 FHE 方案,即相同身份 (ID) 下的密文可以进行同态运算。
  • First attribute-based FHE scheme:本文提出了第一个基于属性的 FHE 方案,即相同属性下的密文可以进行同态运算。

此外,由于该方案是基于 BGV 方案设计的同态加密方案,因此从 BGV 方案中继承了许多优点:

  • 这是一个不需要自举的层次同态(多项式层)
  • 没有模转换 (modulus switching)
  • 安全性保障:
    • Based on classical GapSVP (基于经典 GapSVP)
    • 如果使用自举:Based on LWE for quasi-polynomial factors (基于拟多项式参数的 LWE)

GSW 方案整体思想:近似特征向量技术

基础设置

首先假设我们有这样的一个设置:一个矩阵 C {\color{blue}C} C 乘以 v {\color{green}v} v 等于一个特征值乘以 v {\color{green}v} v v {\color{green}v} v 是这个矩阵的特征向量,这里的 μ {\color{red}\mu} μ 是特征值:
GSW近似特征向量整体思想1
现在想象一下,把 C {\color{blue}C} C 看作密文, v {\color{green}v} v 看作密钥,要加密的消息是 μ {\color{red}\mu} μ
GSW近似特征向量整体思想2
很容易可以发现这个形式具有同态的性质:密文的加或乘相当于明文的加或者乘。即假设 C 1 ⋅ v = μ 1 ⋅ v {\color{blue}C_1} \sdot {\color{green}v} = \mu_1 \sdot {\color{green}v} C1v=μ1v mod q q q ,并且 C 2 ⋅ v = μ 2 ⋅ v {\color{blue}C_2} \sdot {\color{green}v} = \mu_2 \sdot {\color{green}v} C2v=μ2v mod q q q ,则 C 1 ⋅ C 2 ⋅ v = μ 1 ⋅ μ 2 ⋅ v {\color{blue}C_1} \sdot {\color{blue}C_2} \sdot {\color{green}v} = \mu_1 \sdot \mu_2 \sdot {\color{green}v} C1C2v=μ1μ2v mod q q q

然而,这个形式虽然具有同态的性质,但是很明显非常的不安全,因为找到一个矩阵的特征向量很简单,密钥很容易得到。为了保证安全性,我们可以将其转换为 LWE 的形式:
GSW近似特征向量整体思想3

  • e e e 是系数很小的噪声向量 (<<q)
  • v {\color{green}v} v 是一个近似特征向量 (approximate eigenvector)

方案的同态性质

现在我们来看看同态的性质是否还在:
GSW近似特征向量整体思想4
发现同态加和乘仍然成立,但是乘法中有新的噪声项。

方案的噪声处理

为了让这个噪声项尽量小,我们对这个新的噪声进行分析:

  • 可以减小 μ 2 {\color{red}\mu_2} μ2 ,即让消息空间变小。要达到这个目的仅需将消息空间设置成 { 0 , 1 } \{0, 1\} {0,1} 即可。GSW 方案中使用与非门 (NAND gats) 可将消息空间设置成 { 0 , 1 } \{0, 1\} {0,1}
  • 可以使密文 C {\color{blue}C} C 变小。密文可能是两个密文的乘法,即使初始的密文很小,计算后也可能得到较大的密文。是否能有什么技术能够使得密文一直保持在很小的范围内(甚至在 {0, 1} 内)?文中提出一种 Flatten ciphertext 的技术。

如果我们能够限制密文的大小:

  • 同态乘法会将噪声扩大至多 n + 1 n + 1 n+1 倍(全部代入 1 可得)
  • 在噪声达到 q q q 之前可以评估深度为 Θ ( l o g n + 1 q ) \Theta(log_{n + 1} q) Θ(logn+1q) 的电路
  • q q q 足够大,例如令 q = 2 n Θ ( 1 ) q = 2 ^{n^{\Theta(1)}} q=2nΘ(1) ,则我们可以评估多项式深度,并且得到一个层次全同态方案。

限制密文大小

那么我们怎么限制密文的大小?这里需要使用分解技术。

首先先定义一些符号:

  • a ∈ Z q k \pmb{a} \in \mathbb{Z}_q^k aaaZqk 其中 k k k 是维度, q q q 是模。
  • l = ⌊ l o g q ⌋ + 1 l = \lfloor log_q \rfloor + 1 l=logq+1 q q q 的对数
  • N = k ⋅ l N = k \sdot l N=kl

定义一些函数:

  • B i t D e c o m p ( a ) = ( a 1 , 0 , . . . , a 1 , l − 1 , . . . , a k , 0 , . . . , a k , l − 1 ) BitDecomp(\pmb{a}) = (a_{1, 0}, ..., a_{1, l-1}, ..., a_{k, 0}, ..., a_{k, l-1}) BitDecomp(aaa)=(a1,0,...,a1,l1,...,ak,0,...,ak,l1) a \pmb{a} aaa 的每个系数的比特分解,从最低位到最高位 (least to most significant)。
  • B i t D e c o m p − 1 ( b ∈ Z q N ) = ( ∑ j 2 j b 1 , j    m o d    q , . . . , ∑ j 2 j b k , j    m o d    q ) BitDecomp^{-1}(\pmb{b} \in \mathbb{Z}_q^N) = (\sum_j 2^j b_{1, j}\; mod \; q, ..., \sum_j 2^j b_{k, j} \; mod \; q) BitDecomp1(bbbZqN)=(j2jb1,jmodq,...,j2jbk,jmodq) 是上面那个比特分解函数的逆函数。
  • F l a t t e n ( b ∈ Z q N ) = B i t D e c o m p ( B i t D e c o m p − 1 ( b ) ) Flatten(\pmb{b} \in \mathbb{Z}_q^N) = BitDecomp(BitDecomp^{-1} (\pmb{b})) Flatten(bbbZqN)=BitDecomp(BitDecomp1(bbb)) 是一个系数都在 { 0 , 1 } \{0, 1\} {0,1} 中的向量。
  • P o w e r s o f 2 ( s ) = ( s 1 , 2 s 1 , . . . , 2 l − 1 s 1 , . . . , s k , 2 s k , . . . , 2 l − 1 s k )    m o d    q Powersof2(s) = (s_1, 2s_1, ..., 2^{l - 1}s_1, ..., s_k, 2s_k, ..., 2^{l -1}s_k) \; mod \; q Powersof2(s)=(s1,2s1,...,2l1s1,...,sk,2sk,...,2l1sk)modq

有一些显而易见的结论:

  • 对于任意 a , s ∈ Z q k \pmb{a}, \pmb{s} \in \mathbb{Z}_q^k aaa,sssZqk ,有 < a , s > = < B i t D e c o m p ( a ) , P o w e r s o f 2 ( s ) > <\pmb{a}, \pmb{s}> = <BitDecomp(\pmb{a}), Powersof2(\pmb{s})> <aaa,sss>=<BitDecomp(aaa),Powersof2(sss)>
  • 对于任意 b ∈ Z q N \pmb{b} \in \mathbb{Z}_q^N bbbZqN s ∈ Z q k \pmb{s} \in \mathbb{Z}_q^k sssZqk ,有 < b , P o w e r s o f 2 ( s ) > = < B i t D e c o m p − 1 ( b ) , s > = < F l a t t e n ( b ) , P o w e r s o f 2 ( s ) > <\pmb{b}, Powersof2(\pmb{s})> = <BitDecomp^{-1}(\pmb{b}), \pmb{s}> = <Flatten(\pmb{b}), Powersof2(\pmb{s})> <bbb,Powersof2(sss)>=<BitDecomp1(bbb),sss>=<Flatten(bbb),Powersof2(sss)>

这些函数和结论如何在同态加密方案中应用呢?

现在我们给出近似特征向量的一个特殊形式:

  • v = P o w e r s o f 2 ( s ) {\color{green}v} = Powersof2(s) v=Powersof2(s) 其中 s s s 是随机的

开始 Flatten Ciphertext (展平密文):

  • 假设对于一个与非门(NAND): C N A N D = I N − C 1 ⋅ C 2    m o d    q {\color{blue}C^{NAND}} = I_N - {\color{blue}C_1} \sdot {\color{blue}C_2} \; mod \; q CNAND=INC1C2modq
  • C 3 ← F l a t t e n ( C N A N D ) {\color{blue}C_3} \leftarrow Flatten({\color{blue}C^{NAND}}) C3Flatten(CNAND) C N A N D {\color{blue}C^{NAND}} CNAND 每一行的展平结果, C 3 {\color{blue}C_3} C3 中所有的系数都在集合 { 0 , 1 } \{0, 1\} {0,1} 中。
  • C 3 ⋅ v = C N A N D ⋅ v    m o d    q {\color{blue}C_3} \sdot {\color{green}v} = {\color{blue}C^{NAND}} \sdot {\color{green}v} \; mod \; q C3v=CNANDvmodq ,我们没有改变加密的消息,甚至没有增加噪声。

现在,我们拥有了一个层次全同态。

GSW 基本加密方案

  • 设置 S e t u p ( 1 n , 1 L ) Setup(1^n, 1^L) Setup(1n,1L) :选择一个 k = k ( λ , L ) k = k(\lambda, L) k=k(λ,L) bit 的模 q q q ,格的维度参数是 n = n ( λ , L ) n = n(\lambda, L) n=n(λ,L) ,适当地为 LWE 取误差分布 X = X ( λ , L ) X = X(\lambda, L) X=X(λ,L) 使得在已知攻击下达到 2 λ 2^{\lambda} 2λ 的安全性。同时,选择参数 m = m ( λ , L ) = O ( n l o g   q ) m = m(\lambda, L) = O(n log \, q) m=m(λ,L)=O(nlogq) 。令参数集 p a r a m s = ( n , q , X , m ) params = (n, q, X, m) params=(n,q,X,m) ,令 l = ⌊ l o g q ⌋ + 1 , N = ( n + 1 ) ⋅ l l = \lfloor log _q \rfloor + 1, N = (n + 1) \sdot l l=logq+1,N=(n+1)l
    GSW方案设置阶段
  • 密钥生成 S e c r e t K e y G e n ( p a r a m s ) SecretKeyGen(params) SecretKeyGen(params) :采样 t ⃗ ← Z q n \vec{t} \leftarrow \mathbb{Z}_q^n t Zqn ,输出 s k = s ⃗ ← ( 1 , − t 1 , . . . , − t n ) ∈ Z q n + 1 sk = \vec{s} \leftarrow (1, -t_1, ..., -t_n) \in \mathbb{Z}_q^{n + 1} sk=s (1,t1,...,tn)Zqn+1 。令 v ← P o w e r s o f 2 ( s ) ∈ Z q N v \leftarrow Powersof2(s) \in \mathbb{Z}_q^N vPowersof2(s)ZqN
  • 公钥生成 P u b l i c K e y G e n ( p a r a m s , s k ) PublicKeyGen(params, sk) PublicKeyGen(params,sk) :均匀生成一个矩阵 B ← Z q m × n B \leftarrow \mathbb{Z}_q^{m \times n} BZqm×n 和一个向量 e ⃗ ← χ m \vec{e} \leftarrow \chi^m e χm ,设 b ⃗ = B ⋅ t ⃗ + e ⃗ \vec{b} = B \sdot \vec{t} + \vec{e} b =Bt +e ,设 A A A ( n + 1 ) (n + 1) (n+1)-列矩阵,由 b ⃗ \vec{b} b B B B n n n 列组成。设置公钥为 p k = A pk = A pk=A (注意:观察到 A ⋅ s ⃗ = e ⃗ A \sdot \vec{s} = \vec{e} As =e ),这里公钥看作一个LWE实例,是由向量组成的矩阵,且与密钥点积得到的结果很小。
    GSW方案密钥生成阶段
  • 加密 E n c ( A , μ ) Enc(A, \mu) Enc(A,μ) :为了加密消息 μ ∈ 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 ,可得 A ⋅ R A \sdot R AR 的每一行为 0 0 0 的加密,因为他们与密钥的点积的结果非常小。同时输出如下的密文 C C C 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 \sdot I_N + BitDecomp(R \sdot A)) \in \mathbb{Z}_q^{N \times N} C=Flatten(μIN+BitDecomp(RA))ZqN×N
  • 解密 D e c ( C , v ) Dec(C, v) Dec(C,v) :计算 C ⋅ v = μ ⋅ v + B i t d e s o m p ( R ⋅ A ) ⋅ v = μ ⋅ v + R ⋅ A ⋅ s = μ ⋅ v + s m a l l C \sdot v = \mu \sdot v + Bitdesomp(\pmb{R} \sdot \pmb{A}) \sdot v = \mu \sdot v + \pmb{R} \sdot \pmb{A} \sdot \pmb{s} = \mu \sdot v + small Cv=μv+Bitdesomp(RRRAAA)v=μv+RRRAAAsss=μv+small ,从 2 l − 1 + s m a l l 2^{l - 1} + small 2l1+small 中获得明文 μ \mu μ
    GSW方案加解密阶段
  • 同态操作:在密文上进行加法/乘法后,展平密文。

整个方案的安全性可规约到 LWE 困难问题(通过左哈希引理 leftover hash lemma)。
基于该方案可构造 IBE 或 ABE

参考资料

  • 参考论文: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.
  • 参考论文:Alperin-Sheriff, Jacob, and Chris Peikert. “Faster bootstrapping with polynomial error.” Annual Cryptology Conference. Springer, Berlin, Heidelberg, 2014.
  • 参考视频:https://www.youtube.com/watch?v=uabmoq4-tGQ
  • 参考视频:https://www.youtube.com/watch?v=tczcle2T-Ak
  • 参考 PPT :http://yuyu.hk/files/FHE.pdf
  • 参考文章:https://blog.csdn.net/Artisgrammer/article/details/99436600
  • 参考文章:https://blog.csdn.net/yuxinqingge/article/details/104566212
  • 16
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值