概述
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} μ 是特征值:
现在想象一下,把 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(a<