概述
- 同态加密和 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} μ 是特征值:

讯享网
现在想象一下,把 C {\color{blue}C} C 看作密文, v {\color{green}v} v 看作密钥,要加密的消息是 μ {\color{red}\mu} μ :

很容易可以发现这个形式具有同态的性质:密文的加或乘相当于明文的加或者乘。即假设 C 1 ⋅ v = μ 1 ⋅ v {\color{blue}C_1} \sdot {\color{green}v} = \mu_1 \sdot {\color{green}v} C1⋅v=μ1⋅v mod q q q ,并且 C 2 ⋅ v = μ 2 ⋅ v {\color{blue}C_2} \sdot {\color{green}v} = \mu_2 \sdot {\color{green}v} C2⋅v=μ2⋅v 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} C1⋅C2⋅v=μ1⋅μ2⋅v mod q q q
然而,这个形式虽然具有同态的性质,但是很明显非常的不安全,因为找到一个矩阵的特征向量很简单,密钥很容易得到。为了保证安全性,我们可以将其转换为 LWE 的形式:

- e e e 是系数很小的噪声向量 (<<q)
- v {\color{green}v} v 是一个近似特征向量 (approximate eigenvector)
方案的同态性质
现在我们来看看同态的性质是否还在:

发现同态加和乘仍然成立,但是乘法中有新的噪声项。
方案的噪声处理
为了让这个噪声项尽量小,我们对这个新的噪声进行分析:
- 可以减小 μ 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 aaa∈Zqk 其中 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=k⋅l
定义一些函数:
- 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,l−1,...,ak,0,...,ak,l−1) 是 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) BitDecomp−1(bbb∈ZqN)=(∑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(bbb∈ZqN)=BitDecomp(BitDecomp−1(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,...,2l−1s1,...,sk,2sk,...,2l−1sk)modq
有一些显而易见的结论:
- 对于任意 a , s ∈ Z q k \pmb{a}, \pmb{s} \in \mathbb{Z}_q^k aaa,sss∈Zqk ,有 < 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 bbb∈ZqN 和 s ∈ Z q k \pmb{s} \in \mathbb{Z}_q^k sss∈Zqk ,有 < 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)>=<BitDecomp−1(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=IN−C1⋅C2modq
- 令 C 3 ← F l a t t e n ( C N A N D ) {\color{blue}C_3} \leftarrow Flatten({\color{blue}C^{NAND}}) C3←Flatten(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 C3⋅v=CNAND⋅vmodq ,我们没有改变加密的消息,甚至没有增加噪声。
现在,我们拥有了一个层次全同态。
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 。

- 密钥生成 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 v←Powersof2(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} B←Zqm×n 和一个向量 e ⃗ ← χ m \vec{e} \leftarrow \chi^m e←χm ,设 b ⃗ = B ⋅ t ⃗ + e ⃗ \vec{b} = B \sdot \vec{t} + \vec{e} b=B⋅t+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} A⋅s=e ),这里公钥看作一个LWE实例,是由向量组成的矩阵,且与密钥点积得到的结果很小。

- 加密 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 A⋅R 的每一行为 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(R⋅A))∈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 C⋅v=μ⋅v+Bitdesomp(RRR⋅AAA)⋅v=μ⋅v+RRR⋅AAA⋅sss=μ⋅v+small ,从 2 l − 1 + s m a l l 2^{l - 1} + small 2l−1+small 中获得明文 μ \mu μ 。

- 同态操作:在密文上进行加法/乘法后,展平密文。
参考资料
- 参考论文: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/
- 参考文章:https://blog.csdn.net/yuxinqingge/article/details/



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/115994.html