GSW 学习笔记(1)

首先,对论文进行整体学习

Homomorphic Encryption from Learning with Errors:Conceptually-Simpler, Asymptotically-Faster,Attribute-Based(作者:Craig Gentry, Amit Sahai, Brent Waters)

摘要:本文的全同态加密方案是基于LWE的(Learning with errors)。在先前的LWE-based方案中,乘法步骤会涉及到"relinearization"[bv11b],所以会是复杂的。在这项工作中,我们关于建立一个全同态方案提出了一个新的技术,近似特征向量(approximate eigenvector)方法。在我们的方案中,很大程度同态加法和乘法是矩阵加法和乘法。这会让我们的方案同时渐进更快的并且很容易理解。                                                                                                                                                            在先前的方案中,同态求值需要获得用户的“求值密钥”,“求值密钥”是由一系列加密后的密钥组成。我们的方案没有求值密钥。求值者可以在根本不知道用户的公钥的情形下进行同态操作,当然,求值者可以获得一些基本的参数。这个事实可以帮助我们构造第一个基于身份的FHE方案。使用相似的技术,我们展示了如何把最近Gorbunov提出的关于电路的基于属性加密方案转化为一个允许加密的数据同态操作的基于属性的FHE方案。

1.介绍

1.1 先前的基于LWE的FHE

        当前,或许最简单的基于LWE假设[Reg05]有限级的FHE方案是[Bra12]。事实上,Barak和Brakerski关于这个方案在一个博客文章[BB12a]也描述了一个引人注目的清晰的讲解。然而,当方案的密钥生成,加密,解密,和同态加法程序是容易描述,这也表示“乘法是更狡猾的”。                        在Brakerski的方案中,相似于先前基于LWE的FHE方案[BV11b,BGV12],密文\vec{c}和私钥\vec{s}是n维向量,它们的点积\left \langle \vec{c},\vec{s} \right \rangle \approx \mu等于信息\mu,直到通过舍入一些小错误被删除。同态乘法使用identity关于向量张量积的点积,即,\left \langle \vec{u_{1}} \otimes \vec{u_{2}},\vec{v_{1}} \otimes \vec{v_{2}} \right \rangle =\left \langle \vec{u_{1}}, \vec{v_{1}} \right \rangle \cdot \left \langle \vec{u_{2}}, \vec{v_{2}} \right \rangle。因此,如果密文\vec{c_{1}}\vec{c_{2}}满足\left \langle \vec{c_{1}},\vec{s} \right \rangle \approx \mu_{1}\left \langle \vec{c_{1}},\vec{s} \right \rangle \approx \mu_{1}\left \langle \vec{c_{2}},\vec{s} \right \rangle \approx \mu_{2},然后\left \langle \vec{c_{1}}\otimes \vec{c_{2}},\vec{s}\otimes \vec{s} \right \rangle \approx \mu_{1} \cdot \mu_{2},这里\vec{c_{1}} \otimes \vec{c_{2}}解释为新密文,\vec{s} \otimes \vec{s}作为新私钥,每个的维度\Theta (n^{2})。因为张量的乘法放大了密文的大小,它能仅仅被使用常数步。为了效率,求值者张量后必须重现性化[BV11b]密文。再线性化是一个程序,使得长密文,即加密\mu_{1} \cdot \mu_{2}在长密钥\vec{s} \otimes \vec{s},压缩它成标准大小n维密文,即加密\mu_{1} \cdot \mu_{2}在一个正常大小n维私钥\vec{s}。为了重线性,求值者用一个特殊n \times \Theta(n^{2})再线性矩阵乘以长密文向量。这再线性矩阵是“求值密钥”的一部分,是求值者从公钥获得,执行同态求值。                                                        再线性化技术[BV11b]是有独创性的并且或许是主要深刻的理解导致基于LWE的FHE。然而,再线性化并不是特别的自然,也不容易给一个直觉的解释如何或为什么它如何工作。更多的,再线性化是昂贵的。每个再线性化的矩阵的大小是\Omega(n^{3}),公钥必须包含L,L代表最大的求值深度是L。从计算方面讲,再线性化要求\Omega(n^{3})操作,每个操作花费多项式倍的L。                                            这种情形提出了一个问题:我们可以用自然的乘法操作构造一个基于LWE的FHE方案?对于密文c_{1}c_{2},我们能否构造一个方案,在这个方案中,同态加法和乘法是c_{1}+c_{2}c_{1} \cdot c_{2},这里"+"和"\cdot"是自然的在环上的代数操作,这里新密文和旧密文有"相同的形式";例如,c_{1} \cdot c_{2}不是一个长密文。我们在一般情况下能不能删除一个"求值密钥"的需要,尤其是再线性化矩阵?如果可以的话,基于LWE的FHE可能变得容易解释。如果我们能够简化基于LWE的FHE,同时也提高它的效率和支持新的应用,这样会更好。

1.2 结果

        我们的主要结果是:

  • 基于LWE的概念更容易的FHE:我们完全描述我们的方案在介绍部分,并且认为我们新的方法将教学上(pedagogically)和理论上(theoretically)有价值的。
  • 基于LWE渐进快的FHE:我们消除了再线性化和大的再线性化矩阵,用\Omega(n^{3})复杂度。然而,密文是自然地加和乘。特别,矩阵乘法使用次立方(sub-cubic)计算:例,Strassen和Williams分别实现了n^{2.807}n^{2.3727}[Str69,Wil12]。
  • 基于身份FHE:我们解决一个开放的问题,这个问题提及在先前的工作[Nac10,GHV10,Bra12,CHT13],即,为了构造一个基于身份的FHE,没有用户具体的密钥被求值者或加密者获得。非正式的将,在一个基于身份的FHE方案中,一个用户仅仅有公共参数应该执行加密和同态操作。同态操作应该改允许一个用户使两个密文,被同一个身份指标加密的,同态的结合去产生另一个在同样身份指标的密文。以前,仅仅"弱(weak)"基于身份的FHE加密被了解,这里求值者需要具体的用户的求值密钥,因此同态不能被仅仅有公共参数的用户利用。我们的方案通过完全消去求值密钥解决这个问题。                                                          我们获得我们的基于身份FHE方案通过提出一个"编译器(compiler)"可以把任意基于LWE的IBE方案满足文献确定的性质,转化为全同态基于身份的方案。对于我们编译器几个LWE-based IBE 方案在文献满足性质[GPV08, ABB10a, ABB10b, CHKP10]。
  • 基于属性FHE:最近Gorbunov et.al[GVW13]构造了关于基于LWE的电路的基于属性的ABE(attribute-based encryption)。我们对于基于LWE的IBE的编译器(compiler)也适用于ABE,只需要较小的修改。对于一个多项式大小的电路深度,在不需要任意求值密钥的情况下,我们获得在同一指标加密的信息能被同态的处理,并且可以被有资格解密的一方解密原始的密文的ABE方案。

        我们的FHE方案保持其他基于LWE的FHE方案的优点,例如可选择自举的(bootstrapping)[BGV12];与[BGV12]亚指数因子相比,我们的方案基于拟多项式因子的基于LWE的安全性;消除了"模转换(modulus switching)"[Bra12];并且直接基于经典的GapSVP[Bra12]困难性假设。                   我们并不想过分吹嘘我们的渐进的结果;我们现在提供一些额外的内容:通常,基于LWE的FHE方案有更糟糕的性能(certainly asymptotically)比基于RLWE(环LWE)[LPR10,BV11a,GHS12a],即使RLWE-based方案不能被考虑为实际的[GHS12b]。此外,亚立方矩阵乘法算法可能不能在实际中打败(beat)立方。然而,我们视我们的渐进结果主要作为我们的技术根本上地有多新。我们注意关于我们的方案这是简单的去构造RLWE-based版本,但是它的性能是比一些最著名的RLWE-based[BGV12,Bra12,GHS12a,GHS12b]更糟糕log倍(log factors) {its performance is worse than the best known RLWE-based schemes by log factors}。当我们的技术没有和我们所期待的那样减少求值的复杂度,在另一方面,这显著的减少了空间复杂度(从拟立方次到拟二次),这对于实际中LWE-based方案是有巨大的影响。                                                                所有当前没有自举的(without bootstrapping)FHE方案,参数和每门复杂性的求值取决于电路的乘法深度L。"Bootstrapping"[Gen09],伴随着循环安全的假设,仍然是使这些性能指标独立于L的唯一已知方法,虽然自举的开销很高,但一旦L通过某个阈值,它就成为一个有吸引力的选择。然而,我们的方案一旦自举被使用就失去了优势。首先,去应用自举,求值者需要获得用户公钥对用户私钥加密后的密钥,即求值密钥,因此在这种情况下我们不能使用基于身份/属性的FHE。第二,加密的私钥在我们的方案有拟立方大小,虽然这可以通过公钥压缩技术[CNT12]缓解,但它消除了我们方案的空间复杂度的优势。本质上,自举导致我们回到"非自然"的操作,以及所有它的所有缺点。找到一些替代自举的"自然"替代方案,以及(相关地)在不需要循环安全假设的情况下实现"纯(pure)"FHE,仍然是一个令人着迷的开放问题。

1.3 我们FHE方案的概述

        我们主要的洞察力是我们能实现基于LWE同态加密,在这里同态加法和乘法是与矩阵的加法和乘法直接相符合的。

1.3.1 同态操作

        让我们暂且略过密钥生成和加密过程,直接跳到同态操作(解密)。                                                    在我们的方案,对于模数q和维度参数N在后面详细说明,密文C是N \times N的矩阵在Z_{q}上,"小"项(远小于q)和密钥\vec{v}Z_{q}上N维向量至少有一个"大"的系数v_{i}。我们将消息\mu限制为一个“小的”整数。当C \cdot \vec{v} =\mu \cdot \vec{v} + \vec{e}\vec{e}是"小"的错误向量,我们说C加密\mu。为了解密,我们从C中提取(extract)第i行C_{i},计算x\leftarrow \left \langle C_{i},\vec{v} \right \rangle = \mu \cdot v_{i} + e_{i},输出\mu = \left \lfloor x/v_{i } \right \rceil。总之,我们方案的本质是私钥是密文矩阵C的近似特征向量,消息\mu是特征值。                                                                          现在,让我们看看为什么矩阵的加法和乘法是合适的同态操作。假设C_{1}C_{2}通过C_{i} \cdot \vec{v} = \mu_{i} \cdot \vec{v} + \vec{e_{i}}加密\mu _{1}\mu _{2},其中\vec{e_{i}}是"小"的错误向量。让C^{+} =C_{1} +C_{2}C^{\times} = C_{1} \cdot C_{2}。对于加法,我们有C^{+} \cdot \vec{v} = (\mu_{1} +\mu_{2})\cdot \vec{v} +(\vec{e_{1}} + \vec{e_{2}}),这里错误可能成长的很小,跟往常的FHE方案一样。但是假设错误仍然"小",密文矩阵的和加密消息的和。对于乘法,我们有C^{\times} \cdot \vec{v} =C_{1} \cdot (\mu_{2} \cdot \vec{v} + \vec{e_{2}})=\mu_{2} \cdot (\mu_{1} \cdot \vec{v} + \vec{e_{1}}) + C_{1}\cdot \vec{e_{2}} =\mu_{1} \cdot \mu_{2} \cdot \vec{v} + \mu_{2} \cdot \vec{e_{1}} + C_{1}\cdot \vec{e_{2}}=\mu_{1} \cdot \mu_{2} \cdot \vec{v} + small                             这里最后的错误向量是希望"小的",因为\mu_{2}C_{1}\vec{e_{1}}\vec{e_{2}}是小的。如果这样,密文的乘积矩阵加密了消息的乘积。有趣的是,即使矩阵的乘法并不交换,C_{2} \cdot C_{1}也是\mu_{1} \cdot \mu_{2}的加密。                        为了进一步简化,这可能是有帮助的去想象一个没有错误版本的方案,这里精确的C_{i} \cdot \vec{v} = \mu_{i} \cdot \vec{v}。在这种情况下,密钥\vec{v}是密文矩阵精确的特征向量,消息\mu_{i}是特征值。通常,如果矩阵C_{1}C_{2}有共同的特征向量\vec{v},对应的特征值为\mu_{1}\mu_{2},那么C_{1} \cdot C_{2}C_{2} \cdot C_{1}有特征向量\vec{v},对应的特征值为\mu_{1} \cdot \mu_{2}。                                                                                                                        当然,在我们的方案,私钥\vec{v}仅仅是一个近似特征向量,并不是精确的一个。基于LWE方案的安全性介绍错误是必要的。使\vec{v}是近似特征向量的代价是我们方案的某些项必须是"小"的去确保同态操作并不会扰乱密文的基本的形式。我们称我们对于LWE-based(同态)加密方法为近似特征向量方法(approxiamate eigenvector method)。

1.3.2 限制错误和类同态加密

        虽然我们没有完全详尽具体说明这个方案,让我们继续前进并且估计如何进行同态。上述方案工作正确,直到误差向量的系数开始接近q的大小。在这发生之前,我们可以执行多少次同态操作呢?                                                                                                                                                       假设C_{1}C_{2}是B有界密文,即\mu_{i}C_{i}\vec{e_{i}}的系数最多都有一些界B的大小。那么,C^{+}是2B有界的,C^{\times}(N+1)B^{2}有界的。简而言之,误差水平比B^{2^{L}}更糟糕,与电路的乘法深度L呈双指数增长(doubly exponentially)。或者,如果我们想要考虑求值函数的次数(而不是深度),如果我们计算乘法多项式P(x_{1},\cdots,x_{t})总次数为d,在B界密文作为输入时,最后的密文是\left | P \right | (N+1)^{d-1}B^{d}有界的,这里\left | P \right |是P的系数向量的l_{1}范数。取q舒适地超过这个界,我们(大致)可以计算次\log_{NB} q的多项式。由于安全原因,q/B在N中必须是次指数(subexponential)的(最多),因此到目前为止,我们的方案只能计算N中的(次线性(sublinear))多项式度的多项式(只有对数深度)。总之,到目前为止,我们的方案是一种类同态的加密(SWHE)方案[Gen09],它可以计算对数深度或多项式次数。虽然还不是完全同态的,但它是迄今为止最同态的基于LWE的加密方案,只使用"自然的"同态操作。

1.3.3 变平(Flattening)密文和全同态加密

        为了获得一个有限级的FHE方案,这个方案在没有像再线性化技术的自举技术的时候,可以求多项式深度的电路,我们需要确保误差增长有更好的界。假设一个密文C的关联\mu和C的系数大小至多是1,\vec{e}的系数大小最多是B,我们就称密文C是B强有界的。如果我们对强有界的密文C_{1}C_{2}求值一个NAND门去获得一个新的密文C_{3} \leftarrow I_{N} -C_{1} \cdot C_{2}(这里I_{N}是N维的单位矩阵),消息保持在\left \{ 0,1 \right \}C_{3}的系数的误差向量的大小至多是(N+1)B。如果我们能以某种方式另外确保C_{3}的系数的幅度最多为1,从而保持强有界性,那么我们就可以求值一个深度为L的电路,同时保持误差幅度最多为\left ( N+1 \right ) ^{L} B。设置q/B关于N是次指数的(subexponential),我们可以求值多项式深度的电路,而不仅仅是多项式次数。总之,我们将有一个有限级的FHE方案。                                            这里我们描述一个叫做密文变平(ciphertext flattening)操作,这个操作可以使密文强有界,以至于我们获得一个有限级的FHE。                                                                                                             变平(flattening)使用一些来自[BV11b,BGV12,Bra12]简单的转化,修改向量而不影响点积。让\vec{a}\vec{b}维度为k的向量在Z_{q}。让l=\left \lfloor \log_{2}q \right \rfloor +1N=k \cdot l。BitDecomp(\vec{a})表示N为向量(a_{1,0}, \cdots , a_{1,l-1}, \cdots , a_{k,0} , \cdots , a_{k, l-1}),这里a_{i,j}表示a_{i}的二级制表示的第j个比特,从最低有效位到最高有效位。让\vec{a }^{ \ '} = (a_{1,0}, \cdots , a_{1,l-1}, \cdots , a_{k,0} , \cdots , a_{k, l-1}),让BitDecomp^{-1}( \vec{a}^{ \ '})=(\sum 2^{j} \cdot a_{1,j}, \cdots, \sum 2^{j} \cdot a_{k,j})表示BitDecomp的逆,当输入不是0/1向量时,仍然是well-defined。对于N维\vec{a} ^{ \ '},让Flatten(\vec{a} ^{ \ '})=BitDecomp(BitDecomp^{-1}( \vec{a}^{ \ '})),是N维系数为0/1的向量。当A是矩阵,让BitDecomp(A),BitDecomp^{-1},Flatten(A)是矩阵形式,通过分辨应用A的每一行。最后,让Powersof2(\vec{b})=(b_{1},2b_{1},\cdots,2^{l-1}b_{1},\cdots,b_{k},2b_{k}, \cdots ,\2^{l-1}b_{k}),一个N维向量。这里是一些明显的事实:

  • \left \langle BitDecomp(\vec{a}), Powersof2(\vec{b}) \right \rangle = \left \langle \vec{a},\vec{b} \right \rangle
  • 对于任意N维的\vec{a} ^{ \ '}\left \langle \vec{a} ^{ \ '} , Powersof2(\vec{b}) \right \rangle=\left \langle BitDecomp^{-1}(\vec{a} ^{ \ '}),\vec{b} \right \rangle=\left \langle Flatten(\vec{a} ^{ \ '}),Powersof2(\vec{b}) \right \rangle

        关于变平Flatten的一个有趣的特征就是它使一个向量或矩阵的系数变小,在不影响和Powersof2(\vec{b})的乘积,也不知道\vec{b}。                                                                                                       为了便利密文变平,对于我们的私钥\vec{v}我们给一个特殊的形式。具体来说,我们对于私钥\vec{s}设置\vec{v} = Powersof2(\vec{s})(后面会详细说明)。这个形式和我们先前要求一致,即\vec{v}有一些大的系数v_{i}可以解密;事实上,因为\vec{v}的系数上升到2^{\left \lfloor \log _{2} q \right \rfloor},它必须有一个较大的系数,适合恢复\mu \in \left \{ 0,1 \right \}。现在,对于任意的N \times N矩阵C,我们有Flatten(C) \cdot \vec{v}=C \cdot \vec{v}。所以,在我们对于NAND门计算最初的密文C_{3} \leftarrow I_{N} -C_{1} \cdot C_{2},我们设置C^{NAND}=Flatten(C_{3})去获得0/1系数的密文,并且是强有界的。因此,我们在没有再线性化技术下,而在一个固定的近似的特征向量私钥的情况下获得有限级的FHE。

1.3.4 密钥生成,加密,和归约到LWE

        让我们最后回到密钥生成和加密。我们想要基于LWE的安全性。所以,对于密钥生成,我们生成一个LWE实例。对于合适的参数q,n,m=O(n \log q),一个在Z_{q}上的LWE实例由以下组成m \times (n+1)的矩阵A,存在一个(n+1)维向量\vec{s},且该向量的第一个系数是1,这里\vec{e} =A \cdot \vec{s}是一个"小"的误差向量。(看第二部分关于LWE的正式定义)。在我们的方案,A是公钥,\vec{s}是私钥。我们设置我们的近似特征向量为\vec{v} =Powersof2(\vec{s}),一个维度为N=(n+1)\cdot l的向量,这里l=\left \lfloor \log _{2}q \right \rfloor +1。                                                                                                                                     为了加密\mu \in Z_{q},加密者生成一个随机的N \times m的矩阵R,每个位置为0/1,同时设置C=Flatten(\mu \cdot I_{N} + BitDecomp(R \cdot A)),这里I_{N}是N维的单位矩阵。因为Flatten没有影响与\vec{v}的乘积,我们有:

C \cdot \vec{v}=\mu \cdot \vec{v} + BitDecomp(R \cdot A)\cdot \vec{v} = \mu \cdot \vec{v} +R \cdot A \cdot \vec{s} = \mu \cdot \vec{v} + small

Flatten确保C的系数是小的,因此C是允许我们进行同态操作的正常的密文形式。解密工作和上面提及到一样。                                                                                                                                             为了展示是基于LWE的安全性,现在这是足够去展示当A是在Z_{q}均匀随机m \times (n+1)的矩阵,C是统计上地独立于\mu。让C^{'}=BitDecomp^{-1}(C)。回顾C是变平的,所以CC=Flatten(C)=BitDecomp(C{'})。因此,C没有比C^{'}揭示更多信息。但是C^{'} =BitDecomp^{-1}(\mu \cdot I_{N})+R\cdot A,当m=O(n \log q)被适当地选择,通过leftover hash lemma,R\cdot A是统计均匀的。

1.4 路标(Roadmap)

在完成一些准备工作在第二部分,我们描述我们新的FHE构造更正式的在第三部分。在第四部分,我们提供一个概观关于我们基于身份和基于属性的FHE方案。

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值