Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

全同态加密的发展与应用

0
0

全同态加密的发展与应用
1976 年,Diffie 和 Hellman[DH76] 开创了公钥密码学,在密码学发展中具有划时代的意义。 不久,Rivest 等人 [RSA78] 提出第一个公钥加密 方案:RSA加密方案。Rivest等人[RAD78]随 后就指出 RSA 加密系统具有乘法同态性质:给定两个密文 C1=m18modN 和 C2=m28modN,通过计 算,c1c2 modN=(m1m2)8 modN, 我们就可以在不掌握私钥信息的情况下“同态”计算出明文 m1m2 的有效密文。根据此发现,他们提出了 “ 全同态加密”(Fully Homomorphic Encryption, FHE)的概念(当时称为私密同态,Privacy Homomorphism)。 尽管上述 RSA 公钥加密方案是乘法同态 的,但是由于它是一个确定性的公钥加密方案, 因而不是语义安全的。第一个语义安全的公钥加密方案由 Goldwaser 和 Micali[GM82] 提 出, 并 且当明文空间为 {0,1} 时,它是加法同态的。另 外,ElGamal[ElG84] 语义安全加密方案是乘法同 态的。上述方案具有一个共同点:它们都只能 支持同态计算一种运算,或者加法,或者乘法, 因此被称为单同态加密。

近年来,云计算受到广泛关注,它拥有强大的计算能力,可以帮助人们执行复杂的计算。 但是,在保护用户数据私密性的前提下,如何利用云计算的强大计算能力是云计算从理论走向实用必须解决的关键问题。在此迫切需求下,全同态加密如约而至。从数学上说,同态就是 保持运算,即先运算再同态与先同态再运算所得到的结果是一样的。而全同态加密是一类特 殊的加密方案,它允许用户通过加密保护数据的私密性,同时允许服务器(比如“云”)对密文执行任意可计算的运算 ( 同时包含加法、乘法 ),得到的结果是对相应明文执行相应运算结果的某个有效密文。这个特性对保护信息的安全具有重要意义:利用全同态加密可对多个密文进行同态计算之后再解密,不必对每个密文 解密而花费高昂的计算代价;利用全同态加密可以实现无密钥方对密文的计算,既可以减少通信代价,又可以转移计算任务,由此可平衡各方的计算代价;利用全同态加密可以实现让解密方只能获知最后的结果,而无法获得每个密文的消息与同态计算方式,可以提高信息的安全性。正是由于全同态加密技术在计算复杂性、通信复杂性与安全性上的优势,越来越多的研究力量投入到其理论和应用的探索中。

鉴于全同态加密的强大功能,一经提出便成为密码界的公开问题,被誉为“密码学圣杯”, 由 Gentry 在 2009 年摘取。之后,全同态加密迅速吸引了一批资深专家、学者对之进行广泛、深 入的研究,并取得了一系列的成果。目前可以构造全同态加密的密码学假设主要有:理想格上的 理想陪集问题(Ideal Coset Problem, ICP)、整数 上的近似最大公因子问题(Approximate Greatest Common Devisior, AGCD)、带错学习问题(Learning with Errors, LWE)等等。

下面我们先从构造技术的发展来分类介绍全同态加密的研究进展,然后给出一个简单易懂的全同态加密实例,最后介绍全同态加密的典型应用。

全同态加密的发展现状 第一代全同态加密 2009 年,Gentry [Gen09] 取得突破性进展,构造出第一个全同态加密方案(Fully Homomorphic Encryption, FHE) 摘取了“ 密码学圣杯”。Gentry 设计了一个构造全同态加密方案的 “蓝图”:首先构造一个类同态加密( Somewhat Homomorphic Encryption, SHE)方案(这类方案能够同态计算一定深度的电路);然后压缩解密电路(需要稀疏子集和假设),使得它能够同态计算它本身的增强的解密电路,得到一个可以“自举”(Bootstrapping)的同态加密方案;最后有序执行自举操作(需要循环安全假设),得到一个可以同态计算任意电路的 方案,即全同态加密。同时,基于理想格上的 ICP 假设,并结合稀疏子集和与循环安全假设, 他也开创性地构造了一个具体的方案。 随后,van Dijk 等人 [vDGHV10] 提出了一个 整数上的全同态加密方案,这个设计完全模仿 了 Gentry 的蓝图。该方案的安全性基于 AGCD 假设和稀疏子集和假设。它的主要优点在于概 念简单,易于理解,其缺点在于公钥太大。

这些被称为第一代全同态加密方案。

第二代全同态加密

随着 Gentry 全同态加密方案的提出,人们开始尝试基于 (R)LWE 构造全同态加密方案,并 结合理想格的代数结构、快速运算等优良性质 来进行方案的优化和实现,最终取得了巨大的成功。

2011 年,Brakerski 和 Vaikuntanathan [BV11a, BV11b] 基于 LWE 与 RLWE 分别提出了全同态 加密方案,其核心技术是再线性化和模数转换。 这些新技术的出现使得我们无需 压缩解密电路, 从而也就不需要稀疏子集和假设,这样方案的 安全性完全基于 (R)LWE 的困难性。Brakerski 和 Vaikuntanathan [BV11b] 还提出了循环安全的类 同态加密方案。但是,他们的方案不能够利用 自举以达到全同态的目的,这是因为他们所得到的循环安全是相对于私钥作为环元素表示的, 而不是自举算法所需要的比特表示。构造循环安全的可自举的同态加密依然是一个公开问题。 Brakerski 等人 [BGV12] 指出:依次使用模数转换能够很好的控制噪音的增长。据此他们 设计了一个层次型的全同态加密方案:BGV。层次型全同态加密可以同态计算任意多项式深度的电路,从而在实际应用中无需启用计算量过大的自举。 研究人员对 BGV 方案做了大量的优化、实现 [GHS12a, GHS12b, GHS12c, AP13, HS14, HS15, HS18],对 BGV 方案的研究越来越深刻、完善, 效率也越来越高。其中,Halevi 和 Shoup [HS14] 先是针对 BGV 算法开发了 Helib 库,随后实现 了 BGV 自举算法 [HS15]:在打包的情形下(对 约 300 比特消息实施自举),一次自举算法大约耗费 5 分钟。分销来看,1 个比特的自举大约需要 1 秒。最近,Halevi 和 Shoup [HS18] 又改进 了该自举技术,最快可提升速度大约 75 倍,使得自举时间降到了大约 13ms。目前来看,(优 化后的)BGV 方案是最高效的全同态加密方案 之一。 2012 年,Brakerski [Bra12] 又提出了一个基 于 LWE 的无模数转换的全同态加密方案,该方案不需要模数转换管理噪音,也能够很好地控制噪音的增长。

以上方案与第一代方案相比,无需压缩解密电路,也就不需要稀疏子集和假设。这样一来, 方案的效率与安全性都得到极大的提升,但在同态计算时仍然需要计算密钥的辅助,故被称为第二代全同态加密方案。

第三代全同态加密

上述所有方案无论是层次型的还是纯的全同态加密,都需要“计算密钥”(私钥信息的加密, 可以看做公钥的一部分)的辅助才能达到全同态的目的。但是计算密钥的尺寸一般来说都很大,是制约全同态加密效率的一大瓶颈。

2013 年,Gentry 等 人 [GSW13] 利 用“ 近 似 特征向量”技术,设计了一个无需计算密钥的全同态加密方案:GSW,标志着第三代全同态加密方案的诞生。他们进而还设计了基于身份和基于属性的全同态加密方案,掀起了全同态加密研究的一个新高潮。此后,研究人员在高效的自举算法、多密钥全同态加密、CCA1 安全的全同态加密和电路私密的全同态加密等方面进行了大量的研究,得到了丰硕的成果。下面逐一介绍。 高效的自举算法 Brakerski 和 Vaikuntanathan [BV14] 在 GSW 的基础上,设计了第一个安全性与普通的基于 LWE 的公钥加密算法的安全性相当的全同态加 密算法,使得全同态加密的安全性进一步得到了保障。他们的主要技术就是利用 GSW 方案的噪音增长是非对称的性质,结合 Barrington 定理构造了一个能够很好控制噪音增长的自举算法。 Alperin-Sheriff 和 Peikert [AP14] 基于上述新 成果 [GSW13, BV14],提出了一个更简单的对称 的 GSW 方案,并用之设计了一个快速的自举算 法:直接同态计算解密函数。该自举方法直接、简单、高效,向实际应用迈出了坚实的一步。 Hiromasa 等人 [HAO15] 提出了一个打包形式的 GSW 方案(要假定循环安全假设成立),并结 合 [AP14] 巧妙地设计了一个打包形式的自举算 法,效率得到了一定的提高。 Ducas 和 Micciancio [DM15] 在 [AP14] 的基础上,利用一个变形的基于 RLWE 的 GSW 方案 来直接同态计算解密函数,大大提升了效率, 他们的测试表明:1 秒内就可以完成一次自举过 程。Chillotti 等 人 [CGGI16] 改进了 [DM15] 的方案,在自举时,他们巧妙地用矩阵与向量间的 运算来代替矩阵与矩阵间的运算,有效地降低了自举所花费的时间:0.1 秒内就可以完成一次自举过程。随后,Chillotti [CGGI17] 等人又改进这一自举过程至 13ms。从公开发表的文献来看, 这是目前最高效的自举方案之一。 此外,Gama 等 人 [GINX16] 也 在 [AP14] 的 基础上设计了一个更高效的自举算法:运行一 次自举算法累积的噪音的上界是线性的。这意 味着全同态加密的安全性与公钥加密的安全性 是一致的(除了额外的循环安全要求)。 多密钥全同态加密 Lopez-Alt 等人 [LTV12] 最先开始研究多密 钥全同态加密,他们基于 NTRU 构造了第一个 多密钥全同态加密,并利用它设计了一个多方安全计算协议。但是,他们的方案用到了一个非标准的假设,并且近年来也遭受到比较严重的攻击。所以设计安全的多密钥全同态加密引起了人们的注意,并研究出多个基于 LWE 的多 密钥全同态加密 [CM15, MW16, PS16, BP16]。其 中,[CM15, MW16] 的多密钥全同态加密方案的密文会随着不同的密钥数的增长而膨胀,而且同 态计算后的密文不能继续执行同态运算。Peikert 等人 [PS16] 利用全同态加密 [GSW13] 与全同态 签名 [GVW15],一定程度上解决了上述两个问题。 Brakerski 等人 [BP16] 提出了完全动态的多密钥全同态加密,基本解决了上述两个问题。但是,他们利用了笨重的自举技术,并不实用。 CCA1 安全的全同态加密 CCA 安全对于加密来说已经成为标准的安 全性要求。遗憾的是 CCA 安全与同态性质是矛 盾的,不可能同时实现。但是,可以通过控制 同态计算来达到 CCA 安全。赖俊祚等人 [LDM+16] 提出了第一个 CCA2 安全的密钥控制的全同态加 密方案。但是他们的方案利用了不可区分混淆器来验证密文的合法性。 众所周知,CCA1 安全与同态性质并无矛盾之处,它们可以共存。Canetti 等人 [CRRV17] 研 究了 CCA1 安全的全同态加密方案,给出了 3 个 构造:前两个都是由多身份全同态加密转化而来(我们也提出了这个转化方式,遗憾的是未 能及时发表),并构造了两个多身份全同态加密方案,第三个使用了 SNARKs,得到了一个紧 凑的方案。前两个构造的缺点是密文不紧凑, 第三个构造建立在非标准的假设上。 电路私密的全同态加密

在全同态加密领域,有时不但要保护好数 据的私密性,而且要保护好电路的私密性。电路的私密性是指同态计算出来的密文不泄露电路的任何信息,也就是说只有执行同态运算的人才知道电路,而其他人 ( 包括解密者 ) 都不能从同态计算出来的密文挖掘出电路的信息。

Gentry[Gen09a] 在提出全同态加密的时候就已经考虑了这个问题,他建议在输出同态计算 密文之前,给它增加一个大的噪音,完全掩盖该密文所隐含的同态计算所积累的噪音。这一方法的缺点也是明显的:这样的密文所含的噪音太大,故不能再对它执行同态运算了。 Ducas 等人 [DS16] 多次调用自举算法来控制同态计算后的噪音分布,使得同态计算后的密文 的噪音分布与新鲜密文的噪音分布是统计不可区分的。他们的方法可以运用到所有 ( 理想 ) 格全同态加密方案 [Gen09a, Gen09b, BGV12, Bra12, GSW13]。这个方法依赖于高效的自举算法,目前并不可行。 Bourse 等人 [BPMW16 ] 利用高斯噪音的特性,巧妙地部分解决了上述方案的缺点:在同态计算的每一步,只需要增加一个与当前噪音大小相当的高斯噪音,即可一定程度上保证电 路的私密性。这个技巧的优点是避免了复杂的自举,缺点是泄露了电路的深度。 Chongchitmate 等人 [CO17] 研究了存在恶意用户情形下的多密钥全同态加密,提出了一个一般的转换,可以把任意非电路私密的多密钥全同态加密转换为电路私密的多密钥全同态加密。

在短短的 10 年内,国际上在全同态加密技术方面已经取得了丰硕的成果,全同态加密也从第一代发展到了第三代,其效率与安全性都得到了极大地提升。

全同态加密实例:GSW 2013 年,Gentry 等 人 [GSW13] 利 用“ 近 似 特征向量”技术,设计了一个无需计算密钥的层次型全同态加密方案:GSW,标志着第三代全同态加密方案的诞生。在很多应用场景下, 层次型全同态加密的同态能力就足够了。由于 GSW 无需计算密钥参与同态计算,所以它是最简单最易理解的全同态加密。这里我们以 GSW 为例,说明全同态加密的设计思想。

全同态加密除了传统公钥加密拥有的密钥生成、加密、解密等算法外,还有一个同态计算算法。为了清晰地叙述 GSW,我们增加了参数设置算法 Setup,并把密钥生成算法分解为私钥生成算法和公钥生成算法。注意到任意电路可以分解为一系列的加法和乘法运算,因此我们还把同态计算算法分解为同态加法和同态乘法。

为了详细描述 GSW,我们需要两个工具: 一个是 Regev [Reg05] 提出的 LWE,用来保证 GSW 的安全性,另一个是 Micciancio 和 Peikert [MP12] 提出的矩阵 G,用来支持同态计算。

考虑有限域 Zq, 判定型 LWE 就是区分(B,sB+e)与(B,u),这里B←Zq(n-1)m,s←Zqn-1,e ← Dm, u ← Zqm。Regev 证明了 LWE 是困难的。 目前人们普遍认为 LWE 甚至是抵抗量子攻击的。

设 G 是一个具有下面性质的公开矩阵: 对任意的 u,容易抽取满足 G G-1(u) = u 的短向量 G-1(u)。

现在我们详细描述 GSW 方案:

Setup(1n,1L): 给定安全参数 n,最大同 态深度 L,选取公共参数 prms = (n,m,q,D), 令 K=" logq 」+1。

SKGen(prms): 随机选取 s ← Zqn-1, 令私钥 sk = t = (-s||1) ∈ Zqn 。

PKGen(sk): 随机选取矩阵 B ← Zq(n-1)×m, 抽 取高斯错误e←Dm, 计算b = sB+e, 令公钥pk = A = (B, b) ∈ Zqn×m。

Enc(μ,pk): 给定明文消息 μ ∈ {0,1}, 随机选取矩阵R←Z2m×nk, 计算密文C= AR+μG ∈ Zqn×nk。

Dec(sk, C): 令 w = (0,0,...,q/2)T, 先 计 算 tC- G-1(w) =μtw+e=μq/2 + e,再根据该数值的大小 判定出消息是 0 还是 1。

注意:只要密文满足形式 C = AR+μG(称 为解密形式)且 R 是一个小矩阵,就可以成功 解密。

Add: C1"


Viewing all articles
Browse latest Browse all 12749