全同态加密

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

全同态加密

丁津泰

一、引言

人们普遍认为全同态密码是密码学中的圣杯。Craig Gentry 在近期提出的解决方案虽然在实际应用中效率不高,但在该领域仍是一个重大突破。自那以后,人们又在提高全同态密码的效率问题上取得了很大的进步。

在一个加密体系中,Bob通过加密明文得到密文,Alice解密密文得到明文。

在全同态密码体系中,第三方可以在不知道明文内容的情况下,针对密文做一系列计算,解密的结果和对明文进行相同计算的所得相同。云计算是全同态密码的一个主要应用方向。Alice可以将她的数据存储在云端——例如,一个通过英特网连接的遥远的服务器。由于云端的存储和计算能力都要远远优于Alice的终端设备,因此她可以使用云端服务器来处理她的数据。不过,Alice还是无法信任云端,因为有些数据是很敏感的(例如,病人的医疗记录),所以她更希望云端在不知道数据本身的前提下处理数据、计算结果。因此,Alice将数据加密,传送给云端,云端在不知道原始数据的前提下对加密后的数据进行一系列数学运算。

使用全同态密码,云端可以在不知道“关键字”的前提下,使用搜索引擎搜索用户需要的内容。更精确的讲,全同态密码有如下特点:密文ci 解密得到明文mi ,其中ci , mi 是环上的元素,在这个环上,只有加法操作和乘法操作:

Decrypt c i + c j=m i+ m j

Decrypt c i×c j=m i× m j

这就表示解密是双重同态的(Doubly homomorphic)也就是说,解密在加法和乘法上同态。全同态意味着不论函数 f 是一个由多少(即便很多个)加法和乘法组成的环,都有如下的公式成立:

Decrypt f c1,…,c n= f m1,…,m n

如果云端可以高效的计算出f c1,…,c n的结果,并且这种计算是在不知道明文m1,…,m n的前提下进行的,那么这个加密体系是安全且高效的。

全同态加密既适用于公钥加密体系,也可用于对称加密体系。

1978年,在RSA密码系统发明后不久,Rivest, Adleman, 以及Dertouzos 三人提出了全同态加密体系——所谓的“隐私同态”。在他们的论文中这样写到,

尽管存在着固有的缺陷(on what can be accomplished),隐私同态似乎告诉我们,存在一种加密函数,允许我们在没有预先解密操作数的情况下操作已加密的数据。我们把这种特殊的加密函数称为“homomor- phisms”,尽管他们三人非常乐观,全同态加密在相当长的一段时间里还是没能实现。

一些加密系统仅能在一种运算上同态。例如:RSA以及ElGamal加密体系是在乘法运算上同态的。还有一些其他加密方案有同态性质,例如GGH(Goldwasser-Micali cryptosystem GGH)以及Paillier 加密体系仅满足在明文上的加法同态,但不满足乘法同态;Boneh, Goh, Nissim 三人提出了一种部分同态方案:仅能做一次乘法和任意次加法。

然而,这一尴尬的局面在2009年终于被打破。一个当时还在斯坦福读研究生的人,Gentry,提出了他具有突破意义的方案。

自那以后,各种新思想接踵而至。

二、一些突破性的新进展

Gentry构建的密码系统仅仅使用了一些平常的加密解密函数,它以位为单位转换明密文。同时,他还构建了一个评估函数(evalueate function)来描述密文上的运算,这些运算并不是一段顺序执行的程序,事实上,它是一个循环结构或者一个网状结构,输入信号要经过一系列逻辑门电路,而这些电路是由一些布尔门(AND,OR,NOT等)组成的,但是,他们也可以按照加法、乘法的步骤组合。

所谓评估函数,是指一个内嵌在加密系统中的计算机。倘若,评估函数中,电路的深度(或者说电路中布尔门的个数)可以任意扩展,那么,原则上,它可以计算任何可计算的函数。所谓电路的深度就是指从输入到输出的最长路径上布尔门的个数。一个火力全开的计算机理应可以计算任意深度的门电路。与此同时,这一同态系统也遇到了障碍——密文数据被噪声影响从而偏离理想值。每一次算数运算都扩大了噪声,长期积累以至于最后无法返回正确的明文。

粗略的讲,每做一次同态加法,噪声加倍;每做一次同态乘法,噪声平方。因此我们需要限制算术运算的次数限制噪声的积累。而由于电路深度的限制,我们只能达到部分同态,不能达到全同态。

我们可以通过如下方法来减免电路深度的限制:当噪声快达到临界阈值时,解密数据,然后重加密数据,这样可以将噪声复位到初始的低水平。不过,解密需要私钥,但是我们又不能让第三方得到私钥。

使用评估函数可以解决上述问题。倘若不超过电路深度上的噪声限值,评估函数可以进行任何运算。因此我们可以使用评估函数调用解密函数。我们设计评估函数用来操作加密后的数据,因此在这个加密体系中,我们提供给评估函数的

密钥也是加密后的。

实际上,Alice给Bob的用来解密数据的密钥是放在一个带锁的盒子里的,Bob在使用它的时候也无法打开这个盒子,事实上,能够打开这个盒子的钥匙其实装在这个盒子里面。

事实上,只要需要,我们可以随时调用上述重加密和刷新密文的过程。这样,计算机就可以执行任意有限长度的门电路,这个系统就成为了一个全同态系统了,他已经可以对密文执行任何复杂的计算。

上述方案是建立在这样一个基本的假设之上的:解密电路本身足够浅,不足以超过噪声阈值。当Gentry首次实现FHE时,它的实现并不满足这个条件。他的评估函数在调用解密函数时,噪声,依然在增长。补救措施是使用一种“挤压解密”(squashing decrypt)方法,它的代价是使得密钥更长更复杂。从而解决了上述问题。

Gentry在它的博士论文和2009年的Symposium on the Theory of Computing 会议文献上描述了它的全同态加密系统。从那以后的四年至今,世界上已经发表了几十种方案,这其中还包括已经实现的三个全同态加密的计算机程序。

大多数系统有着相同的整体架构——由部分同态上升到全同态的架构。他们的不同之处在于底层加密机制方法不同。

每个加密系统都是建立在一个普遍情况下难以解决但在知晓捷径时又容易解决的问题之上的。RSA建立在大素数分解之上;当知道因子时,问题得以解决。Gentry在2009年提出的这一方法基于整数格中的离散点问题,类似于高维空间中的原子晶体。格产生了一系列计算难题,例如:对于空间中的一个随机点,在格中找到离他最近的格点是一个很难的问题,除非你知道一组特殊的坐标,拥有它们可以让你更加了解这个格。

在2010年,美国麻省理工学院的Marten van Dijk,IBM的Gentry, Shai Halevi 以及Vinod Vaikuntanathan 提出了一种新的全同态实现方案,这种方案是基于数论中的近似GCD问题,或者说是近似最大公约数问题。

Zvika Brakerski 和Vaikuntanathan 提出一种基于LWE问题的全同态方案。这种方案的主要思想是:求一组联立方程的解,在这组方程中的每一个方程都有可能是错的(一个方程是错的概率很小has some small probability of being false.)。

最近,Brakerski, Vaikuntanathan 和Gentry 三人构建了一个LWE系统的变体,它采用不同的方法管理噪声。他们抛弃了每隔一段间隔“刷新”一次的方法,采用了在每一步计算后渐增式的调整系统参数来防治噪声等级达到阈值。

相关文档
最新文档