同态加密:云安全的未来

同态加密指南

1 引言

在云计算中,全同态加密(FHE)常被称为云安全的“圣杯”(金特里, 2009a;米奇安奇奥,2010;范迪克和尤尔斯,2010)。尽管许多人知道其 潜力,但很少有人真正理解FHE的工作原理,以及为何尽管它前景广阔,却 尚未成为一种实用的解决方案。同态加密方案允许用户的数据在发送到云时 始终受到保护,同时保留云服务的一些有用特性,例如在文件内搜索字符串。
这是因为同态加密允许对加密数据执行操作和函数,意味着数据在用户环境 之外永远不会被解密。它可以防止云服务提供商的恶意员工访问私人数据。
一份报告(陈,2010)提到,2010年谷歌的一名员工曾描述一名前工程师滥 用其权限查看私人信息,并利用这些信息跟踪未成年女孩,窥探她们的聊天 会话。许多云服务员工拥有查看我们数据所需的权限,我们必须防止此类事 件再次发生。

同态加密有两种类型:部分同态加密和全同态加密。部分同态加密( PHE)仅允许在密文上执行单一操作,例如加法或乘法。目前已有可用的 PHE方案,并在第4节中描述了其中两种。然而,许多云服务需要的功能不 止于加法或乘法。这正是FHE(也被称为加密的“圣杯”)能够在保障云服 务安全性方面发挥巨大作用的地方。FHE支持多种可重复操作(目前为加法 和乘法),从而允许对加密数据执行更复杂的计算。

以一个例子来看,爱丽丝经营一家会计公司,她将所有客户的余额存储 在云上。通过使用云,她无需管理云的底层基础设施,这些基础设施由第三 方云服务提供商负责管理。爱丽丝面临的问题是,为了确保客户账户的安全, 她会在数据存储于数据库/存储中时对其进行加密。这可以防止恶意外部人员 直接访问信息,同时也能阻止云服务员工查看这些数据。

但当她需要修改账户余额时,她必须将加密的账户转回她自己的受信任环境, 或者在云中解密账户数据,更新账户后再重新加密并存储。这会带来风险, 因为数据在使用前必须在某个环节以明文形式被解密。由于同态加密能够在 数据保持加密状态下进行处理,爱丽丝只需向云发送加密数据,即可直接对 加密的账户余额进行修改,使账户得以更新,而数据始终无需以明文形式出 现。这使得爱丽丝的云会计公司能够在确保客户安全的同时,充分享受使用 云带来的便利。

然而,这个例子存在一个陷阱。目前全同态加密的性能相当低效,简单的操 作可能需要几秒到几小时不等,具体取决于安全参数(吉恩蒂和哈勒维,2011年)。
因此,当前同态加密是在实用性、保护性和性能之间的一种权衡。全同态加密在 保护性和实用性方面表现良好,但性能较差;而部分同态加密具有良好的性能和 保护性,但其实用性非常有限。这一点在图1中有所体现,理想的解决方案位于 维恩图的中心。

本章节将深入概述同态加密及其在云中的重要性。我们首先介绍为什么 云中需要同态加密,以及关于同态加密历史的一些基本背景信息。在第4节中, 我们将描述并举例说明两种部分同态加密方案:埃尔·加马尔和帕亚耶。这将 引出全同态加密,其中将介绍近似特征向量算法,并详细说明其工作原理、 数学性质以及一个示例。从第6节开始,将展示一些当今正在使用的同态加密 实例,随后探讨同态加密的未来发展方向。对于需要保护其数据的企业而言, 同态加密并不是当前唯一可用的解决方案,第8节 将介绍另一种在云中存储 加密数据的方法。

2 当前行业变通方法及其不足

云基于许多技术和理念构建,但其中最重要的莫过于信任。作为云服务的使 用者,我们必须相信服务提供者不会滥用我们的数据和信息,除此之外,我 们还必须相信他们的安全防护措施能够防止恶意用户访问这些数据。

Dropbox 是当今使用最广泛的云存储服务之一,产生的流量相当于 YouTube 流量的三分之一(Drago 等,2012)。在其帮助页面“ Dropbox 安全吗? ”(Dropbox 公司,2014)上,提供了一些关于 Dropbox 如何保护用户的信息。分析其中几点:Dropbox 使用现代加密方 法来传输和存储您的数据 (安全套接层和 AES‐256 位加密),以及 Dropbox 员工被禁止查看您账户中存储的文件内容 (Dropbox 公司, 2014)。显然,即使您的数据在存储时已加密,仍有可能被您以外的人以未 加密形式查看数据,无论是恶意 Dropbox 员工还是恶意攻击者。

然后是一些云存储服务,例如 Mega Limited(Mega有限公司,2014 年),它们通过仅允许终端用户设备加密和解密他们的数据来提供隐私和保 护。这确保了即使服务被攻破,也只有用户才能访问未加密的数据。然而, 这种方式也有代价,因为只有您自己可以查看您的文件。因此,Mega 很难 提供诸如在文件内搜索字符串或与他人共享文件等高级功能。这些功能仍然 可以实现,例如,由客户端构建并使用一个可被加密并存储在云中的搜索索 引,或者在共享文件时使用不同的密钥进行加密,从而让用户将该密钥提供 给需要访问的人员。

问题在于,Dropbox 可以自动、更快且更高效地执行相同的任务。因此, 实用性、保护性和性能之间的权衡是云服务提供商面临的关键问题。这正是 同态加密在云中能够发挥巨大作用的地方,因为它有助于结合 Dropbox 和 Mega 的功能,通过弥合实用性和保护性之间的差距,实现更安全可信的云 服务。需要注意的是,关于同态加密如何实际搜索文件的算法目前尚不清楚。
但这一目标可能以类似于第8节中描述的加密网关的方式实现,或使用其他加 密搜索技术(Li 等,2014;Kuzu 等,2012;Li 等,2010;Wang 等, 2014)。但一旦全同态加密变得更加实用,这些算法将开始被开发。

尽管同态加密目前尚不能轻松支持搜索操作,但它非常适合对加密数据 执行数学函数。例如,在大型数据集中计算统计信息,如均值或平均值。其 他可以受益的应用领域包括银行业和数据挖掘。因此,同态加密对于云非常 重要,一旦其技术成熟,将得到广泛应用。

3 历史与相关工作

据我们所知,使用同态加密来保护数据的想法已经存在数十年了,里维斯特 等人于1978年提出了称为“隐私同态”的特殊加密函数(里维斯特等人, 1978b)。作者讨论了使用硬件安全地处理数据的方法,其中数据仅在物理 上安全的处理器内部被解密。这样,每当数据离开处理器(例如传送到内存) 时,它始终是已加密的,类似于我们今天看到的AEGIS芯片(苏等人, 2003, 2005)。然而,这类芯片的问题在于它们是定制硬件,实现成本高昂, 并且仍然需要为数据提供解密密钥。随后,里维斯特等人提到了一种解决方 案:数据无需解密,标准硬件仍可正确处理数据,由此诞生了同态加密的概 念。他们提出了一些不具实用性的概念验证示例,但重要的是证明了处理加 密数据这一想法是可行的,并以两个开放性问题结束:
• 这种方法是否具有足够的实用性,使其在实践中值得采用?(里维斯特等人,
1978b)• 对于哪些代数系统U,存在有用的隐私同态?(里维斯特等人, 1978b) 同年,由Rivest et al.(1978b)的两位作者里维斯特和阿德曼,加上沙米尔共同 公开了RSA加密方案(注:RSA实际上代表三位作者姓氏的首字母)( Rivest et al., 1978a)。原始论文中并未提及同态加密;然而,后来被证明 RSA确实支持对加密数据进行乘法运算(邓宁,1982)。这是由于RSA的数 学性质,即通过对消息在模e的n下进行e次幂运算,使得在解密阶段去除e之 后,两个密文消息能够正确相乘。因此,部分同态加密从概念上而言已经支 持一段时间了。

1985年,布莱克利等人提出了一种数据库加密方案,该方案支持对存储 在数据库中的加密数据执行某些统计操作。尽管该论文并未明确提及同态性, 但这一步骤表明同态加密在实际中可能是有价值的。1987年阿伊图夫等人 (1987)提供了一些更多可支持同态操作的示例算法,但这些算法的安全性 非常弱。在次年布里克尔和雅可比(1988)评估了里维斯特等人(1978年) 提出的首批同态算法的安全性,并提出了一种加法同态算法,该算法在发生 一定次数的加法后便会失效。

直到1996年,我们才看到第一个支持加法和乘法的同态算法(费雷尔, 1996)。多明戈‐费雷尔为该领域提供了必要的突破,并在2002年进一步证 明所提出的方案能够抵御已知明文攻击;然而,该方案在一年后被瓦格纳 (2003)攻破。

到目前为止的问题在于,开发一种既安全又能保持其同态性质、能够多 次重复执行操作且不会效率极低的方案。阿姆克内希特等人提出了一种解决 方案,支持任意数量的加法和固定数量的乘法(阿姆克内希特和萨迪吉, 2008),同时在已知解码问题下保持安全性。

然而,真正的突破发生在2009年,当时金特里提出了一种能够支持任意
数量的加法和乘法运算的方案,并将安全性基于格问题的困难性(Gentry, 2009a)。自那时起,金特里参与了多种全同态加密方案的研究(Gentry,
2009b;VanDijk et al., 2010;Gentry etal., 2013),逐步改进这些方案,但至 今仍不够高效,无法在实际中应用。本节所给出的简要历史总结见于表1。

4 部分同态加密方案概述

支持同态加密思想的算法已经存在相当长的时间,如第3节所述。本节将介绍 两种部分同态加密方案:ElGamal(1985)和帕耶(1999)。选择这两种方案 是为了展示支持加法和乘法的加密机制。本节将首先介绍公钥加密的概念, 因为这两种方案均属于公钥加密范畴。在详细介绍埃尔·加马尔和帕亚耶之前, 先给出加法和乘法的示例。

4.1 公钥加密

迪菲和赫尔曼(1976) 在1976年提出了公钥加密的概念,也称为非对称密码 学。与当今的全同态加密类似,公钥加密的实际实现最初也有限。然而如今 它们已被广泛使用,包括埃尔·加马尔和帕亚耶方案。这两种方案都使用一个 大素数进行模运算,该素数作为安全参数。但需要注意的是,尽管这些方案 可以提供同态操作,但由于模运算的性质,如果输入或输出的值大于模,则 结果可能与预期不符。

以公钥加密为例,爱丽丝、鲍勃和克莱尔是好朋友,他们每天放学后晚上都 会在线上聊天会话中互相发送消息。然而,爱丽丝和鲍勃想为克莱尔举办一场惊 喜生日派对。问题在于,爱丽丝和鲍勃都无法想出办法将克莱尔从聊天会话中移 除,但他们又不希望克莱尔看到他们的对话,以免破坏惊喜。解决这个问题的一 个方法是,两人都创建一对私钥和公钥,也就是所谓的公钥加密。然后,他们可 以将自己的公钥发送给聊天会话中的每个人。这样,鲍勃就可以使用爱丽丝的公 钥将秘密消息加密,再在聊天会话中广播。只有爱丽丝能够解密并阅读该消息, 这意味着克莱尔无法看到任何关于她惊喜派对的消息。

但从整体来看,这也防止了恶意用户读取消息。例如,聊天服务管理员只能 看到公钥和密文消息。对于任何窃听网络的用户也是如此,最终这意味着即使聊 天服务遭到入侵,爱丽丝和鲍勃的聊天记录仍然是安全的。这并不是说已加密的 聊天能够百分之百保证安全,但它为他们的数据增加了一层保护。

因此,公钥加密提供了一种加密数据的方法,只有私钥持有者才能读取 这些数据。任何人都可以获取用于加密数据的公钥,但理想情况下,只有一 个人或一个系统拥有用于解密数据的私钥。每个使用互联网的人都可能已经 体验过公钥加密,但可能并未意识到这一点。例如,超文本传输安全协议 (HTTPS)在浏览器中通过公钥加密建立安全通道。客户端使用服务器的公 钥向服务器发送数据,服务器则使用客户端的公钥将数据发送回客户端。密 钥的设置比上述示例稍微复杂一些,但这一切都在后台自动完成。

在设计和设置云服务时,需要考虑公钥加密将如何发挥作用以提高服务的安 全性。如今,提供身份验证的安全通道是必须的,而HTTPS是一种可行的解决 方案。然而,还有其他方法可以进一步提高服务的安全性,例如使用PHE。第6 节将介绍同态加密的一些实际应用示例,但现在将先描述埃尔·加马尔和帕亚耶的 方案,以展示实现PHE是多么简单。Section 6,但现在埃尔·加马尔和帕亚耶的方 案将被描述以展示实现PHE是多么简单。

4.2 埃尔·加马尔

埃尔·加马尔的安全性基于求解离散对数的困难性,该方案最早由ElGamal
(1985)于1985年提出。从概念上讲,埃尔·加马尔支持对加密数据进行同态乘 法运算。密钥生成算法见Algorithm 1。

算法1 埃尔·加马尔密钥生成算法
1: 选择一个大素数p
2: 在模p下选择一 个原根a
3: 随机选择d,使得 2 d p
2
4: 计算b¼ad mod p
5: 公钥¼
(p,a,b)
6: 私钥¼d

密钥生成后,E(x)的加密D(x)和解密算法分别在算法 2 和 3中给出。

算法2 EL GAMAL加密算法
加密一个整数消息M,其中M小于大素数p
1: 选择一个随机整数k(必须保密)
2: 计算 r¼ak
mod p
3: 计算 t¼bkM mod p
4: 丢弃k
5: 已加密消
息¼(r,t)

第2行 算法2 允许我们隐藏 k,以便在解密消息时可以从 t中移除。我们 丢弃 k,使其保持机密,不会泄露。这是必要的,因为该算法的安全性基于 求解 k是困难的。因此,如果恶意用户获得了 k,他们就可以在没有私钥的 情况下解密消息。

算法3 EL GAMAL解密算法
解密消息 (r,t) 以得到 M:计算 M¼
trd mod p

理解加解密证明非常重要,因为它展示了公钥和私钥如何相互抵消,从 而还原出原始消息。这有助于深入理解El Gamal背后的数学原理。尽管实现 加密算法并不需要了解这些知识
它们的工作原理是,发现的安全漏洞通常出现在实现中,而非算法本身。

证明:
1: M¼trd mod p
2: M¼bkM(ak)d mod p
3: M¼(ad)kM(ak)d mod p
4: M¼M(adkadk) mod p
5: M¼M1 mod p

由于该算法仅对消息值使用乘法运算,因此很容易看出它是如何支持同 态乘法运算的。给定a和b,我们希望证明对它们进行加密、相乘后再解密的 结果为a b。

DðEðaÞEðbÞÞ mod p ¼ ta tbðra rbÞ d mod p

首先,当r值相乘时,由于k值是随机的,因此将它们相加仍然得到一个随机的k。
) r¼ ra rb mod p r¼ aka akb mod p r¼ aka+ kb mod p r¼ ak mod p

t个值的乘法还涉及随机的ks,这些ks可以以相同的方式合并。这使得a和b值相 乘,同时还有bk。
) t¼ ta tb mod p
t¼ðb k a MaÞðb k b MbÞ mod p
t¼ b k a + k b MaMb mod p
t¼ b kMaMb mod p

现在,通过将 t 和 r 的值代入解密方程,a 项相互抵消,结果使得解密后的值等 于 ab。
) DðcÞ¼ðb kMaMbÞðakÞd mod p
DðcÞ¼ðadÞ kMaMbðakÞd mod p
DðcÞ¼Ma M bðadk adkÞ mod p ; DðcÞ¼ a b mod p

到目前为止,数学表明埃尔·加马尔支持同态乘法运算。然而,为了得出结论, 将展示一个埃尔·加马尔实际操作的示例。

给定 6 和 5,我们希望求解 E(6) E(5),其中 p ¼47,a ¼7,d ¼35,且 b ¼735
mod 47¼17。此外,此示例将说明加法不被支持。

加密 6
k ¼ 41
r ¼ 741模 47 ¼ 42模 47
t ¼ 1741 6模 47 ¼ 14模 47
Eð6Þ ¼ð42,14Þ

加密 5
k ¼ 29
r ¼ 729模 47 ¼ 8模 47
t ¼ 17295模 47 ¼ 23模 47
Eð5Þ ¼ð8,23Þ

计算 E(6) E(5)
¼ Eð6Þ Eð5Þ ¼ð42 8,14 23Þ ¼ð7,40Þ

计算 E(6)+E(5)
¼ Eð6Þ+Eð5Þ ¼ð42+ 8,14+ 23Þ ¼ð3,37Þ

解密 (7,40)
¼ 735 40模 47 ¼ 30模 47

解密 (3,37)
¼ 335 37模 47 ¼ 7模 47

4.3 Paillier密码系统

由帕耶(1999)于1999年提出,Paillier密码系统基于计算格维度n次剩余类 在计算上是困难的问题。该算法的特性使得在解密后可通过同态加法运算得 到正确的结果。Paillier密码系统的密钥生成过程如算法4所示,比埃尔·加马 尔更复杂一些。

算法4 Paillier密码系统密钥生成算法
1: 选择两个大素数 p 和 q,使得 gcd(pq, (p1)(q1))¼1
2: 计算 n¼pq
3: 计算 λ¼
lcm(p1, q1)4 2 n 2
5 ¼x1
4: 选择一个随机整数 g,其 中 g:定义 L(x)n
6: 通过验证以下模乘逆元的存在性,确保 n 能整除 g 的阶
7: u¼(L(g l mod n2 )) 1 mod n
8: 公钥¼(n, g)
9: 私钥¼(λ, u)

要加密一条消息,需将消息用作g的指数,并将一个随机值升至另一个公
钥值n的幂,如算法5所示。这会在模n 2下生成一个密文值。解密同样是一个 简单的方程,类似于埃尔·加马尔,其方法在算法6中给出。注意,L(x) 的定 义已在密钥生成时给出。

算法5 Paillier密码系统的加密算法
加密 一条消息 M其中 M2Zn
1 2 n2
2 ¼ m n 2
:选择 一个随机整数 r,其中 r :计算 c g r mod n

算法6 Paillier密码系统的解密算法
解密一条消息 c,其中 c 2 n21:计 算 m¼L(cl mod n2)u mod n

现在给出加密和解密的证明,以说明公钥和私钥值是如何相互抵消的。
这一点非常重要,因为它有助于解释帕亚耶密码系统为何能够支持同态加法 运算。

证明:
1: m¼L(cl mod n2)u mod n
2: m¼L(cl mod n2)(L(gl
mod n2))1 mod n
3: m¼L c l 2 ð Þ
L l
modn g mod n
2 ð
(1999)中的引理10)
5: m¼[ c1+n [g 1+n mod n
6: m¼[ c]g mod n
7: m¼m mod n (因为 c¼g½ c g rn mod n2
((Paillier, 1999))

如果希望对加密数据执行加法运算,实际上需要使用乘法运算。这是因 为消息是以指数形式进行加密的。因此,为了相加指数,需要对相同底数 (在本例中为g)的两个值执行乘法运算。注意,由于r0和r1是随机值,它 们可以合并形成另一个随机值r。

DðEðaÞEðbÞÞ¼ a+ b
) c¼ ca cb mod n 2
c¼ g a r n 0 g b r n 1 mod n 2
c¼ g a+ b r n 0 r n 1 mod n 2
c¼ g a+ b r n mod n 2
; DðcÞ¼ a+ b

5 完全同态加密

如今出现了许多声称支持全同态加密(FHE)的方案(阿姆克内希特和萨迪吉, 2008;Gentry, 2009a,b;范迪克等人,2010;Brakerski 和 Vaikuntanathan, 2011;杰尼特等人,2013;Brakerski 和 Vaikuntanathan,2014)。在本章节中, 我们将仅关注其中一种基于带误差学习(LWE)问题实现全同态加密的方案,如 Gentry et al.(2013)所述。他们将其方法称为近似特征向量方法,该方法允许执行同态 加法和乘法运算。这是通过使用矩阵加法和乘法操作实现的,且无需自举用户密钥。

本节将介绍近似特征向量算法所基于的一些概念。格是关键的构建模块, 因此首先进行解释,然后讨论使该算法难以破解的相关问题。最后,将描述 该算法,包括一个同态加密的小示例。

5.1 格

为了理解格为何对全同态加密有用,我们必须首先了解格的基本性质。

定义1 一个格由d维空间中的一组点p0…pn构成,这些点形成独立的线性
向量v0…vn(也称为基向量),从而构成一种几何模式。

需要注意的是,不同的基向量可以生成相同的格;因此,通常认为格是由一 组唯一的、最接近原点的向量构成的。

任何通过组合这些向量得到的点称为格点,而能够通过格点平移并重复 该模式的区域称为基本区域。基本区域用于计算格的行列式,即基本平行六 面体的体积,它表示密度的倒数。观察图2中的示例,我们给定基向量v0和 v1, ,以多种不同方式组合这些向量可得到格点的网格图案。基本区域以红 色显示(在印刷版本中为深灰色),在这个简单的二维示例中,很容易看出 如何重复基本区域以延续该图案。

现在想象添加一个位于 z轴上的基向量 v{v3},使得格变为三维,如 图3 所示。方形的基本区域被替换为立方体形状的基本区域。作为人类,我们很难想象超过三维的格,但对于 计算机而言,更高维度的计算是简单的,因为它接收的输入是一个矩阵。2010年8月, IBM举办了一场竞赛(IBM, 2010),邀请参赛者尝试 破解全同态加密密钥。用于测试的“玩具”挑战问题的维度为512,而最难的问题则 达到了32,768维。这表明维度数量与密钥强度直接相关。

5.2 格问题

密码学所基于的一些困难的格问题包括最近向量问题(CVP)和最短向量问题 (SVP)。

定义2 给定点P和格M,最近向量问题要求我们找到格M中离点P最近的格点 L。

在图4中,可以直观地看出最近的格点。但由于计算机仅被给予一个矩阵,且 维度要大得多,因此寻找最近格点的计算复杂度要高得多。

定义3 给定格M,最短向量问题要求我们找到格M中最小的非零向量V。

非零很重要,因为从技术上讲,每个格都包含一个零向量。图4中,这只
是一v 0,因为示例格仅展示了基向量。然而,如果给定更大的向量,可能存 在一个更小的向量来构成基本区域。注意,最近向量问题实际上是
SVP,因为如果你拥有一个用于解决最近向量问题的预言机(函数),就可以通过向该预 言机查询来找到最短向量(米奇安乔和戈德瓦塞尔,2002;戈德赖希等,1999)。因此, 由于最近向量问题是NP难问题,SVP也是NP难问题(van Emde-Boas, 1981;米奇安乔, 2001)。

5.3 带误差学习

LWE 问题由 雷格夫(2010)提出,并广泛用于多种加密函数,例如公钥加 密(佩克特,2009)。这是因为 LWE 问题被认为与最坏情况下的格问题一 样困难(雷格夫,2010),这意味着基于 LWE 构建的任何函数都是安全的。
这一点在第5.2节中已简要讨论过。目前还普遍认为,最坏情况下的格问题即 使面对量子计算机也是安全的。

定义4 LWE 问题要求我们通过给定的一系列关于x的近似随机线性方程来恢复一
个秘密x2 n q( Regev, 2010)。

将此与格联系起来,该定义意味着要区分由均匀随机向量之间的含噪声(包 含某些误差)线性方程组所生成的向量。参考雷格夫(2010)中的一个示例, 我们得到了如图5 所示的一组线性方程,其中每个方程在此情况下的误差约 为 1,那么我们只需解出x即可。但引入误差后使得求解x变得更加困难。
例如,若尝试使用高斯消元法(行化简)来求解这组方程,则误差会累积, 导致结果无效。

给定 2 Oðn lo g n Þ个方程,我们可以在 x的 2 Oðn lo g n Þ时间内推导出密钥,但这种方 法更多依赖运气而非理性。一种更简单的方法是最大似然算法,它仅需要 O(n) 个方程,并计算出能够满足这些方程的唯一 x值。该方法通过暴力破解计算所有可能的值
来实现,导致运行时间为 2 Oðn lo g n
Þ (Regev, 2010)。目前,求解LWE最有效的已知算法
由布鲁姆等提出,需要 2 O( n )个方程和时间(Blum et al.,2003),这与以下事实相关:
求解格问题的最佳算法需要 2 O ( n )时间(阿贾伊等,2001;米奇安乔和沃尔加里斯, 2013)。

因此,基于LWE问题的同态加密方案需要保持误差相对较小,否则结果可能 无效。例如,图6 显示了一个格点 L,以及添加了一些误差的点 P,使得

5.4 近似特征向量算法

全同态加密的近似特征向量方案由Gentry 等人(2013)于2013年提出,该方案使用 了第5.3节中先前描述的LWE问题。第5.3节。该方案支持加法和乘法同态操作,以实 现
与矩阵加法和乘法运算的计算方式相同,在大多数情况下。盖内等人声称这使得 该方案在渐近意义上更快且更容易理解(杰尼特等人,2013),这也是我们选择 该方案用于本章节的原因。特征向量的形式化定义如下所示,其中 T是一个方阵, λ 是一个标量。本质上,要将 v!归类为矩阵 T 的特征向量,其结果必须等价于 将 v!乘以某个标量因子。在此方案中,v!是一个近似特征向量,而非完美的特 征向量。

定义5 一个向量!是特征向量(也称为本征向量、潜变量或特征向量),如果Tðv
!Þ¼λv!对于某个标量λ(Marcus, 1988年)。

为了使该方案成为分级方案(即它可以在一定深度内工作),必须控制误差。
如图6所示,控制误差的大小极为重要,以确保解密后的值是正确的。这是通 过将密文矩阵展平,使其包含{0,1}中的值来实现的。展平使用位分解操作, 而不会影响矩阵上的点积操作。这使得同态操作仍能正确计算,同时保持误 差较小。

接下来,我们将介绍该方案,首先介绍安全参数和函数定义,然后给出 密钥生成、加密和解密算法。之后,我们将证明该方案确实支持同态加法和 乘法运算,并给出一个示例。

安全参数
模数q¼模 n¼格维
度 λ¼误差分布 w¼ m=O(nlogq) ¼ b
log2 qc+1N¼(格维 度n+1)‘

定义 定义 BitDecomp(a)¼将a的每个系数分解为二进制位¼(a0,bit( 0 ),…,a 0,bit(l 1 ),…,ak1,bit( 0 ),…,
ak1,bit(l 1 )) ∈ {0,1} N定义 BitDecomp 1 (b ∈ Z q N )¼若 b¼∈ BitDecomp(a),即将b还原 为a,其中b的每个元素属于{0,1},否则b ∈ Z q k,因此需将各系数乘以2的幂次。¼(P j
2 j
b0, j modq,…,P j
2 jbk1, j modq) 定义 Flatten(b ∈ Z q N )¼BitDecomp(BitDecomp 1 (b))定义 Powersof2(s)¼(s0 2 0 ,,s0 2 1 ,,s 0 2 2 ,,…,s0 2 l1,…,sk1 2 0,sk1 2 1,sk1 2 2,…,s
k1 2
l1 )IN 表示N维单位矩阵。

密钥生成
根据安全参数,私钥生成如算法7所示,其中s !为私钥。向量t !是在模q下随机 生成的具有整数值的向量(没有值大于q),其长度为n。该长度与格维度数
相同,以便可在格矩阵上计算点积。私钥s !比t !多一个值(即,n+1),该值 被附加

算法7 近似特征向量私钥生成
1
q n
2 !¼ 1 :随机生成 n+13:计算 v!¼Powersof2(!s)

一旦生成私钥,我们就可以生成公钥矩阵A,如算法8所示。首先,在模 q下随机生成一个大小为nm且包含整数值的矩阵B。接下来,必须使用误 差分布w生成一个大小为m!的误差向量e!。为了将公钥和私钥关联起来,需 要利用密钥生成步骤中的随机向量!t并加入一些误差来计算向量b。最后,通 过将向量b和矩阵B组合起来形成公钥矩阵A,使得A的第一列为向量b,其余 列为矩阵B。这一点在第5.4.1节给出的示例中将更容易理解。

算法8 近似特征向量公钥生成
1:随机生成矩阵 B Zq mn2 m
3
! !¼ :生成 e!w:计算 b!B !t+ !e!4:生成具有 (n+1) 列的矩阵 A,其中第一列为 b,其余列为矩阵 B 的列。

5.4.1 加密与解密

现在,公钥和私钥已经可以生成,我们将展示如何使用它们来加密和解密数 据。对模数u q下的整数q进行加密的算法在算法9中给出。为了使密文值在输 入消息u相同时仍然不同,首先必须生成一个随机矩阵R。然后将矩阵R与公 钥矩阵A进行点积运算,再应用比特分解函数。该结果每次都会变化,有助 于隐藏消息。消息u乘以一个大小为NN的单位矩阵I(u被沿对角线添加到 一个零矩阵中),然后加到比特分解函数的结果上。消息u成为前面所示特 征向量定义中的标量值λ。

算法9 近似特征向量加密
加密一条消息 u其中 u2 Zq
1 N m
2 2 0,1
¼
:随机生成一个均匀矩阵 R { } :计算密文矩阵C = 展平(u I N +BitDecomp(R A)) 2Z q N N

解密密文矩阵可以采用几种不同的技术,具体取决于所选择的q值。如果q是 2的幂,则使用MPDec
函数可用于解密。否则必须使用标准的Decrypt函数。首先,我们将描述 Decrypt函数,如算法10中所给出,其中C是已加密的密文矩阵。一旦选 择了满足所示条件的i值,就计算矩阵i行与C和v!的内积(标量积)。现在 可以恢复消息u。

算法10 近似特征向量解密
1: 设置 i,其中 i <‘ 且 q/4< 2i< q/2
2: 计算 xi hCi, v !i,其中 Ci 是第 i 行
3: 然后消息
u¼xi/2 i

对MPDec函数的描述如算法11 所示,更详细的说明见第5.4.1节 以及
Micciancio和Peikert(2012)。但简要总结来说,我们可以从密文矩阵C
的第‘ 2列中恢复出消息u的最低有效位。然后将各列依次处理回第0列,该 列将包含最高有效位。给定密文矩阵Ci以及当前结果,接下来将说明每一位 应为高或低。注意,在计算C‘2时,结果应初始化为0。

算法11 近似特征向量 MPDec
1: x¼Ci v!(结果(1 i))
2: 如果 x 比 q 或 0 更接近 q/2,
则该位为高,否则为低
3: 结果+¼位(‘ 2 i)

同态加法和乘法的证明

现在算法已经描述完毕,接下来我们将证明该算法支持同态加法和乘法运算。
给定:
Cn v !¼ un v !
+ en
! ðwhere e ! is smallÞ

加法:
ðC1+ C2Þ v ! ¼ðC1 v !Þ+ðC2 v !Þ
¼ðu1 v !
+ e1 !Þ+ðu2 v !
+ e2 !Þ
¼ðu1 + u2Þ v !
+ e1
!
+ e2
!
¼ðu1 + u2Þ v !
+ e ! ðwhere e ! is smallÞ

乘法
ðC1 C2Þ v ! ¼ C 1 ðu2 v !
+ e 2 !Þ
¼ðC1 v !Þ u2 +ðC1 e 2 !Þ
¼ðu1 v !
+ e 1 !Þ u2 +ðC1 e 2 !Þ
¼ u 1 u2 v ! +ðu2 e 1 2 !Þ
¼ u 1 u2 v !
+ e ! ðwhere e ! is smallÞ

为示了例帮助更好地理解该算法,接下来将通过一个简单的例子来解释5和20的 加法运算。由于生成的矩阵尺寸较大,它们将以压缩形式展示。本例中选择 以下参数,以保持向量和矩阵的尺寸较小。
q¼ 65,536 n¼ 3 w¼ 8 m¼ 48 ‘¼ 17 N ¼ 68
!现在我们需要生成私钥。首先,t在模q下随机生成取值。然后可以通过 简单地将1与t的负值连接起来创建私钥向量!。例如,!t 0 ¼ 4754变为 4754, 然后求其模q的结果 4754+65,536,得到60,782。
!t ¼ ½4754 38,896 47,731
sk ! ¼ ½1 60,782 26,640 17,805

计算v!需要在sk!上计算Powersof2函数。前17个值是从 20到 216,的2的幂,因 为它们乘以了!sk0,而该值为1。注意这些是模q下的值,因此有1216¼0。现 在我们进行同样的操作,但改为将20到 216乘以!sk1。因此,下一个值是 2060,782¼60,782,接着是 2160,782¼121,564¼56,028(mod q)。
v!¼ ½1 2 4 8 16 32 64 128 256 5121024 2048 4096 8192 16384 32768 0, 60782 56028 46520 27504 55008 44480 23424 46848 28160 56320 4710428672 57344 49152 32768 0 0; 26640 5328041024 16512 33024 512 1024 2048 4096 8192 16384 32768 0 0 0 0 0; 17805 35610 5684 11368 22736 45472 25408
50816 36096 6656 13312 26624 53248 40960 16384 32768 0

现在需要生成公钥。我们随机生成矩阵 B 和向量 e!。

24159 15679…19457 1520
60227 16241…21388 55398
40328 9895…36960 6044
2 4 3 5
e !¼½14 65532 1 65529 65531 65528 3 5 65526 10 1 65533 5 11 11 65531 9
65521 65532 65530 65520 14 65535 65534 4 0 65514 6 6 65531
0 6 6 7 7 1 6 465529 65527 65535 7 1 3 465528 2 5!计算向量 b。
b ! ¼½4754 38896 47731
24159 15679…19457 1520
60227 16241…21388 55398
40328 9895…36960 6044
2 664 3
775+½14 65532…2 5
¼½10276 12255…60660 40328

现在我们可以将向量 b 与矩阵 B 结合,形成矩阵 A。

10276 12255…60660 40328
24159 15679…19457 1520
60227 16241…21388 55398
40328 9895…36960 6044
2 664 3 775

这标志着密钥生成的结束,因此我们可以开始加密一个整数值。接下来将展 示对20的加密过程,并给出5的密文矩阵。首先,我们随机生成随机矩阵R。
需要注意的是,在加密20和5时,所使用的随机矩阵R是不同的。然后我们将 该随机矩阵与公钥(矩阵A)相乘。

0 0…0 0
0 0…1 0
.........
0 1…1 0
0 0…1 1
2 66664 3 77775 A R¼
23482 31088… 507 48622
39624 49556…36113 62689
62379 56720…38675 355 42466 276…20430 31877
2 664 3 775

因为我们希望{0,1}中的值保持较小的误差,现在必须对A R进行比特分解。
以第一个值23,482为例,转换为17位值后变为001011011101110102。然后将 其按最低有效位开始垂直放入矩阵中。此处仅显示值23,482、31,088、507 和48,622。我们还必须计算单位矩阵,并将其乘以我们要加密的值u(即20)。
BitDecompðA RÞ¼
0 0…1 0
1 0…1 1
0 0…0 1
1 0…1 1
1 1…1 0
1 1…1 1
0 1…1 1
1 0…1 1
1 1…1 1
1 0…0 0
0 0…0 1
1 1…0 1
1 1…0 1
0 1…0 1
1 1…0 0
0 0…0 1
0 0…0 0
.........
2 6666666666666666666666666666664 3 7777777777777777777777777777775 u IN ¼
20 0… 0 0
0 20… 0 0
.........
0 0…20 0
0 0… 0 20
2 66664 3 77775

这两个矩阵现在需要相加。注意,在示例中仅显示了前17行,因此只出现了两次 20的加法。
u IN+ BitDecompðA RÞ¼
20 0…1 0
1 20…1 1
0 0…0 1
1 0…1 1
1 1…1 0
1 1…1 1
0 1…1 1
1 0…1 1
1 1…1 1
1 0…0 0
0 0…0 1
1 1…0 1
1 1…0 1
0 1…0 1
1 1…0 0
0 0…0 1
0 0…0 0
.........
2 6666666666666666666666666666664 3 7777777777777777777777777777775

加法运算后,我们必须再次将值变小。这需要使用展平函数,该函数执行逆比特 分解,然后进行常规的比特分解。对第0列的值 [20, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0],进行逆比特分解后得到值 001011011101110102+ 20,结果为23,502。该值随后以从最低有效位到最高有效 位的顺序表示为二进制位01110011110110100,并垂直存储在密文矩阵中。注意, 在对第1列进行逆分解时,会将20作为 20 1加入。最终的密文矩阵表示为 E(20),同时给出了5的密文矩阵。
Eð20Þ¼
0 0…1 0
1 0…1 1
1 0…0 1
1 1…1 1
0 1…1 0
0 0…1 1
1 0…1 1
1 1…1 1
1 1…1 1
1 0…0 0
0 0…0 1
1 1…0 1
1 1…0 1
0 1…0 1
1 1…0 0
0 0…0 1
0 0…0 0
.........
2 6666666666666666666666666666664 3 7777777777777777777777777777775 Eð5Þ¼
1 1…0 0
0 1…0 0
1 1…0 1
0 0…1 1
1 1…1 0
1 0…0 1
0 1…1 1
1 1…1 1
1 0…0 1
1 0…1 0
0 1…1 1
0 0…1 0
0 1…0 1
1 0…1 0
1 0…1 0
1 0…1 1
0 0…0 0
.........
2 6666666666666666666666666666664 3 7777777777777777777777777777775

加密完成后,我们现在可以执行两个密文矩阵的加法。这只是一个简单的矩 阵加法运算。请注意,如果需要进行大量操作,则结果矩阵需要进行展平。
如果对两个密文矩阵执行乘法运算,结果矩阵也需要展平。在此示例中,由 于值仍然较小,因此不需要进行展平操作。
Eð20Þ+ Eð5Þ¼
1 1…1 0
1 1…1 1
2 1…0 2
1 1…2 2
1 2…2 0
1 0…1 2
1 1…2 2
2 2…2 2
2 1…1 2
2 0…1 0
0 1…1 2
1 1…1 1
1 2…0 2
1 1…1 1
2 1…1 0
1 0…1 2
0 0…0 0
.........
2 6666666666666666666666666666664 3 7777777777777777777777777777775

由于本示例中的模数q是2的幂,我们可以使用MPDec函数进行解密。使用 MPDec函数时,可以从第15列开始,逐步回推至第0列,从而得到16位答案。
其中第15列包含第0位的值,而第0列包含第15位的值。
result ¼ 0 x ¼!v C15ðresultð1 15ÞÞ
¼ 32802 0
bit ¼ minð32802, 65536 32802Þ>¼ absð32802ð65536
1ÞÞ
¼ 1
result ¼ result+ðbit ð15 15ÞÞ
result ¼ 1 x ¼v ! C14ðresultð1 14ÞÞ
¼ 16430 16384
bit ¼ minð46, 65536 46Þ>¼ absð46ð65536
1ÞÞ
¼ 0
result ¼ result+ðbit ð15 14ÞÞ
result ¼ 1

x ¼!v C12ðresultð1 12ÞÞ
¼ 36849 4096
bit ¼ minð32753, 65536 32753Þ>¼ absð32753ð65536
1ÞÞ
¼ 1
result ¼ result+ðbit ð15 12ÞÞ
result ¼ 9
x ¼!v C11ðresultð1 11ÞÞ
¼ 51252 18432
bit ¼ minð32820, 65536 32820Þ>¼ absð32820ð65536
1ÞÞ
¼ 1
result ¼ result+ðbit ð15 11ÞÞ
result ¼ 25

6 云中的同态加密

目前,由于所提出的全同态加密方案在性能上存在严重限制,导致其在云服务中 缺乏吸引力,因此在云环境中几乎找不到全同态加密的实际应用。IBM研究院和 微软等机构正在积极研究全同态加密的实用化实现,同时全球多所大学也在开展 相关研究,例如斯坦福大学和怀卡托大学(CROW, 2014)。在这些方案变得切 实可行之前,我们不会在面向公众的服务中看到它们的应用。另一方面,部分同 态加密已经使一些云服务和系统获得了实际益处。一些例子包括:
• CryptDB(Popa 等, 2011) 是一个数据库隐私保护层,探索了使用全同态加 密对加密数据执行查询的方法,但最终选择采用多种技术来执行不同类型的 查询。对于整数上的基本加法运算,实现了帕亚耶密码系统(Paillier, 1999), 该系统提供部分同态加密。在使用帕亚耶时,要对两个值 x和 y进行加法运算, 需将它们的加密值相乘,解密后结果等价于对原始未加密值进行加法运算。
• Helios(Adida, 2008) 是一个基于云的公开审计投票系统,从2.0版本开始使用同 态加密来统计选票(Adida et al., 2009)。这使得所有选票可以以加密形式提交和 统计,只有在最终投票完成并加入总计后,才对结果进行解密。所使用的PHE方 案是埃尔·加马尔的一种变体,该方案在第4节中描述,即指数型埃尔·加马尔。
• Porticor(2014a)成立于2010年,据我们所知,是最早实现同态加密的商业公 司之一,该公司利用PHE提供安全云密钥管理平台。该公司指出,FHE目前 尚不可行于实际系统在实际系统中尚不可行(Porticor,2014b),并且通过仅 支持少量计算操作可为关键业务应用带来快速、可靠的性能(Porticor,2014b), 同时确保密钥安全。

7 同态加密的未来与开放性问题

同态加密在云环境中仍处于相对早期阶段,采用速度较慢。尽管全同态加密目前在现 实场景中尚难以实现,但部分同态加密没有理由不能为云服务提供商提供支持
目前提供了一层额外的安全性。随着时间的推移,当方案提供更好的性能时, 再迁移到FHE。云需要更高层次的安全性,而同态加密是一个可行的解决方 案。一些云解决方案已经意识到了这一点,例如第6节中的示例,但在不久的 将来,这将在更多样化的云应用和服务中变得更加普遍。

如本章节中所讨论的,同态加密仍存在一些问题,这些问题将影响其未 来发展。例如,全同态加密(FHE)可以支持多种操作。然而,一个尚未解 决的问题是,即使这正是FHE的定义,FHE在支持广泛的操作/函数方面仍 然存在限制。这是因为两种操作可能相互抵消,从而使安全性变得毫无意义。
例如,支持对未加密值进行减法操作以及将加密值与零进行比较的情况:恶 意用户只需不断减去1,直到加密值变为零,从而得到答案。这引出了另一个 问题:目前FHE被视为完美的解决方案;然而,必须根据具体应用来考虑其 适用性。一种通用的解决方案不会像为特定应用设计的方案那样安全。最后, 通过使用同态加密来保护用户信息/数据,会阻止云服务从中获取有关用户的 信息。这可能会阻止定向广告、出售匿名用户数据以及其他云服务即使对最 终用户免费也能盈利的方式。问题是,尽管用户希望在线上更安全,但他们 是否愿意为云服务付费,还是更倾向于选择免费但不安全的服务?这些只是 同态加密在努力成为云中未来安全解决方案过程中面临的一些当前问题。

8 同态加密的替代方案

处理敏感数据的企业在云采用方面进展缓慢,因为他们无法承受数据泄露的 风险。无论是企业私有数据还是客户数据,都可能因需要保护自身形象或因 合同义务而必须保持机密。虽然同态加密是一个可行的解决方案,但还有其 他方法也能应对这一问题,对某些企业而言,这些方法可能更符合其商业模 式或基础设施需求。

一种广泛采用的保护云数据安全的模式是在企业网络与云之间设置一个网关 (Salehi等人,2014年),该网关在数据离开网络前对其进行加密,并对来自云 的数据进行解密。这类似于早期描述的Mega云服务(Mega有限公司,2014年), 但该模式是为企业的使用设计的,而Mega则更适用于个人使用。这并不是说 Mega不能用于企业,事实上它非常适合小型企业,但网关解决方案功能更强大 且更灵活。

使用加密网关的基本思路如图7所示。图中显示了公司内的两台计算机,分别由 爱丽丝和鲍勃使用,它们是

连接到公司的内部网络。然后,任何离开内部网络的流量都必须经过所谓的 边界路由器。然而,任何发往云服务的数据还必须经过一个网关。例如,鲍 勃创建了一个文件并希望将其保存到云上。当保存该文件时,在其进入互联 网之前,必须先通过网关设备。该网关对文件进行加密,并通过边界路由器 将其转发至云服务。随后,爱丽丝希望查看此文件,因此她从云服务请求该 文件。已加密的文件将再次通过网关设备,并在到达爱丽丝之前被解密。这 确保了文件在离开内部网络前往云服务存储之前始终处于已加密状态。同时 也意味着公司自行管理其密钥,而不像Dropbox等服务那样。爱丽丝和鲍勃 的使用不受加密网关的影响,但公司的数据仍然保持安全。

加密网关不仅可以加密和解密数据。RESeED(Salehi等人,2014年) 通过在文件加密并保存到云之前从明文文件创建索引,从而实现基于正则表 达式的云中加密文件搜索。该设备仍存在一些限制,例如密钥无法在设备外 恢复。因此,如果设备发生故障而停止工作,则存储在云中的加密数据将无 法恢复。CipherCloud(2014) 是另一种加密网关的例子,支持亚马逊网 络服务、Gmail 和 Office 365 等云服务。这些加密网关设备现在就可以部 署到网络中,而涉及同态加密的解决方案则仍需数年才能大规模应用。

9 摘要

本章节对同态加密方案进行了深入的概述。它提供了证明,以表明这些方案 能够支持同态操作,同时还提供了示例,以帮助更轻松地理解数学和算法。
随着这些方案性能的提升,同态加密在云服务中将变得越来越重要,从而实 现更安全和可信的应用。一些云服务 already benefiting from homomorphic encryption,希望未来会有更多服务跟进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值