虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

您现在的位置是:首页 > 技术阅读 >  利用不可见的数据进行计算

利用不可见的数据进行计算

时间:2024-01-26

通过加密数据,Web应用甚至可以

计算过程中的数据安全性。 

━━━ ━━━

曾经,黑客从塔吉特公司窃取了约4000万条借记卡和信用卡记录,从家得宝公司窃取了5600万条记录,从医院运营商Community Health Systems公司窃取了近500万条病人记录。2015年6月,美国联邦人事管理办公室上百万位联邦雇员的个人信息遭到窃取。

尽管人们为保护敏感数据付出了巨大的努力,但黑客还是经常能够得手。这个问题如今变得尤为严峻,因为现在大量的信息都被集中在各种云服务提供商的服务器上。大多数时候,我们甚至不知道这些设备在哪里,对于存储其中的数据,我们怎么可能感到安全呢?

有一种解决方法,那就是在存储数据之前就对其进行加密。这样一来,即使攻击者闯入了云提供商的系统并窃取了数据,他们也只会得到毫无意义的乱码。

这个方法看似很简单,但有一个很大的缺点:当数据被加密时,它对于坏人肯定是没用了,但是在很多情况下,它让好人也无法使用了。

今天的云提供商通常会对委托给它们的数据进行各种有效的计算——查询、统计、分析趋势等。有些提供商会对这些数据使用非常复杂的机器学习技术。但是,如果这些数据是加密的,那就谁都无法进行上述任何处理。

毕竟,如果脸谱网持有的图像是加密的,它怎么能对你的照片运行人脸检测算法来识别你的朋友呢?如果亚马逊无法了解你的购买历史,它怎么能提供购买建议呢?

因此,在简单的数据存储之外,过分地追求加密似乎是鲁莽的。但是,在过去几年里,一种变不可能为可能的技术已经出现了:它使云提供商能够对已加密的数据执行多种计算。

该技术基于某种加密体系的特殊数学特性,使云提供商能够进行有效的计算并生成加密数据,最后用户可以对结果进行解密,以得到想要的内容。

这种方法的好处是,云服务提供商存储的数据始终是加密的。所以,即使有人从云服务商的设备中窃取了所有数据(或将设备中的信息传递出去),也只能得到加密了的数据,基本上是毫无价值的。事实上,这种方法还可以防止黑客获得云提供商计算机的全部访问权限并随意运行计算机上的软件,即使遭到入侵也不会泄露数据。

如今的加密数据计算的工作有着很深的渊源,可以追溯到将近40年前。但是,直到现在这种计算才变得实用起来,这要部分归功于我们在麻省理工学院计算机科学和人工智能实验室参与开发的软件工具。这些工具是复杂的,但你无须了解它们深奥的数学原理就可以明白它们的工作原理和运行方法,甚至可以做出直觉上不可能的事情——利用不可见的数据对有用的信息进行计算。 

━━━ ━━━

为了说明我们正在进行的工作,我举个假设的例子。比如说有一个人——我们叫她爱丽丝吧——正在使用一个在云端运行的医疗Web应用。她用浏览器在提供商的网站上输入各种敏感信息——疾病症状、身体活动、饮食、信用卡支付信息等。不过,运行此服务的公司对安全性是一丝不苟的。爱丽丝的个人信息在本地的机器上就得到加密,然后再被发送到云提供商处,因此云提供商收到并存储的只是经过加密的数据。

之后,爱丽丝要求根据她之前的输入对某些信息(健身水平、饮食建议等)进行计算。值得称道的是,云服务可以仅利用爱丽丝的加密数据来进行这些计算。所得到的答案对提供商没有任何意义,但爱丽丝电脑上的软件会自动解密这些结果,并将其以常见的方式呈现在爱丽丝的浏览器上。所以,从她的角度来看,她与Web应用之间的交互非常正常。

让我们再想象一下,被授权获取服务的医生要求获得以下统计数据:特定某一周的病人数量、某种疾病病患的风险因素,或是其他一些信息。这位医生也会得到通过加密数据计算得出的结果,并且结果会以加密的形式返回到医生的电脑上,此时,这些信息会自动解密并显示出来。

总之,爱丽丝和医生享受着与普通Web应用同样水平的服务。不同的是,敏感信息不会被暴露给可能试图闯入提供商的数据库或监听网络通信的黑客。

这要怎么实现呢?为了解释得具体一些,可以想象一个简单的计算。试想一下,医生想知道在过去一年里使用该系统并患有特定疾病的患者人数。假设云服务在一年中的每个月都有该疾病患病人数的记录,但这个信息是加密的。

要回答医生的询问,云提供商需要以某种方式合计12个不同的加密数字并返回结果。这似乎是不可能的,但如果选择适当的加密方案,还是可以实现的。

1999年,当帕斯卡尔•帕耶(PascalPaillier)在法国国立巴黎高等电信学院完成毕业论文时,他顺便开发了一个性能出众的加密系统:如果你将一组加密后的数字相乘,你将获得整体加密的数据,这是非常值得称道的。

因此,我们例子中的云服务只需要使用帕耶的加密系统,并将与当年每个月疾病总数对应的12个加密值相乘即可。这一运算将生成一个值,即12个月总体的加密值,且云服务无须读取每个月的具体值。云服务将这个结果返回到医生的电脑,然后电脑将这个值解密,并在医生的电脑屏幕上显示出这一年的全部数据。

这种加工加密数据的一般方法并不限于简单的加法。如果你选择了恰当的加密方案,你还可以利用加密数据完成各种其他任务,包括比较、排序、乘法和其他算术运算,以及三角函数。 

━━━ ━━━

利用加密数据进行计算的想法首次出现在1978年,当时罗纳德•李维斯特(Ronald Rivest)、伦恩•艾德曼(LenAdleman)和迈克尔•德托罗斯(Michael Dertouzos)撰写了一篇题为《论数据库和隐私同态》(On DataBanks and Privacy Homomorphisms)的开创性文章。在这篇文章里,他们介绍了在数据加密的状态下利用其进行计算的想法。他们将可以支持这种计算的加密方案称为“同态”。当时,他们并不知道如何实现允许执行各种计算的加密,其他人也不知道——但他们和其他计算机科学家们都急于找到一种方法。

他们一找就找了三十多年。2009年,当时还是斯坦福大学研究生的克雷格•金特里(Craig Gentry)取得了一项重大突破:他提出了一个加密方案,允许计算机对加密后的数据进行任何函数计算。这一方案被称为全同态加密。

从数学的角度来看,金特里解决问题的办法确实很出色。很快,一些研究人员提出了其他的全同态加密系统,主要针对金特里原方案的性能和安全性进行提升。

尽管有了这样的进展,但仍然存在一个巨大的问题:与针对某一函数的非加密计算花费的时间相比,最佳全同态加密方案要多100万倍。如果网站通常需要1秒钟来计算出结果,那么完全同态加密则需要12天左右。这么慢的速度显然是一个败笔。

然后,在2011年,包括我们两个人(本文作者)在内的一个安全和加密技术专家团队搭建了一个名为CryptDB的系统。它允许Web应用以广泛使用的结构化查询语言(SQL)来执行一系列数据库查询,而运算速度只会降低27%。

它有什么诀窍呢?关键就是要摆脱“一个加密系统适用全部问题”的想法。全同态加密旨在支持一个加密方案中的所有函数,这使得它即使只进行简单的运算也会很慢。

我们和同事们发现,专门针对一项运算的数据加密方案可以快得多。例如,帕耶的加密方案可以很快地计算出总体的加密值,但它不能进行其他运算。

为了支持多种运算,你需要使用各种专门的加密方案。每一种加密方案只对一项运算有效,但它们合起来就会覆盖很大的范围。

目前,许多常见的运算都有专门(和快速)的算法,其中一些是由我们开发的,包括加法、乘法、按等同性或顺序比较、交集、多项式计算、机器学习分类任务和检索加密文本等。使用所有这些算法来加密数据,并存储多组加密的数据,你就可以利用加密的结果进行各种不同的计算。你只需在加密数据集之间来回切换,每次使用你需要进行运算的相应数据集即可。

CryptDB系统首次以务实的方式运用了这一理论,在行业中起到了带头作用。例如,在CryptDB系统的引领下(这也是表达对该软件的拥护),谷歌最近部署了一个名为Encrypted BigQuery的系统。该系统可以在谷歌BigQuery数据库的加密版中进行查询。软件巨头SAP实施了一个名为Search Over Encrypted Data的系统,它在SAP的高性能分析设备数据库服务器上使用了CryptDB系统。此外,麻省理工学院林肯实验室的研究人员还将CryptDB用于一个特别版的开源Apache Accumulo数据库。

由于每个系统都使用了各种不同的加密方案,应用设计师们在结合各种运算方式方面受到了限制。不过,你通常需要的只是对各种加密数据进行SQL查询。 

━━━ ━━━

2014年,我们开发了一个名为“迈拉”(Mylar)的系统,扩充了CryptDB的功能。迈拉不仅能在一个满是加密数据的数据库中进行查询,还能让Web应用的使用者相互分享数据。这种数据共享是许多Web应用最重要的功能,比如脸谱网用户彼此分享照片和帖子、在线日历的用户共享活动等。根据用户授予他人的权限,迈拉可以实现所有此类共享。

举例来说,假设我们例子中的爱丽丝要和医生分享她的病史,以便接受治疗。在这里我们的愿望是,爱丽丝和她的医生都能够解密爱丽丝的医疗信息。即使黑客——我们叫他马里斯吧——设法入侵了云服务提供商并盗取了所有存储的数据和代码,也无法破解爱丽丝的数据。

当然,这对于选择与该医生共享信息的任何人都同样适用——也许包括数据库中的每个人。事实上,让医生能够获取每个人的数据是回答许多重要问题的先决条件。例如,医生可能想搜索所有存储在云医疗应用中的数据,寻找患有一种罕见疾病的病人。医生发送到Web应用的搜索请求将包含对应于该疾病名称的加密关键字。如果所有数据都使用相同的密钥进行加密,CryptDB系统就可以处理该请求。当然,问题是,不同人的记录肯定会用不同的密钥进行加密,所以在整个集合中进行搜索一般是不可能的。

迈拉向希望共享数据的用户分发共享加密密钥,从而规避了这个问题。这个过程必须谨慎进行,以防黑客欺骗用户与他所控制的服务器共享数据。

为了避免这种情况,迈拉加入了一个特殊的浏览器扩展套件,以验证从服务器上下载的代码。没有这个扩展套件,该系统仍然是有效的,但安全性要差一些。迈拉还提供了身份提供商服务,它就像一个Web认证中心。Web认证中心就是超文本传输协议(http)的安全版:当你访问网站时,http能够帮助确保你连接到真正要访问的网站。

我们已经用迈拉来确保各种Web应用的安全性,包括医疗、聊天、论坛、照片共享、日历和在线课程。这些试验表明,迈拉的速度还是很快的:它仅将计算时间平均增加了17%。

迈拉已经得到了实际应用。在位于马萨诸塞州牛顿市的牛顿-韦尔斯利医院,迈拉被用于收集患有子宫内膜异位症(一种痛苦的腹部疾病)的女性的相关信息。此时此刻,迈拉正在帮助保护这些患者的隐私。

━━━ ━━━

我们相信,利用Crypt-DB和迈拉这样的系统,加密数据计算将成为保护存储在云中的机密信息的主要策略之一。而且这种方法不仅可以保护数据,还可以保护运行线性代数运算、大数据分析和机器学习工具的云计算机。

在线存储信息的安全性是如今的一个大问题,而加密数据计算可能是其解决方案的重要组成部分。它能防止敏感信息被窃取,原因很简单:如果连掌握着数据的公司都不知道这些数据的意义,那么对攻击者来说,这些数据也就毫无窃取的价值了。

作者:Raluca AdaPopa,Nickolai Zeldovich

往期推荐

研究人员全力发掘可逆计算,将其投入使用的时机已经到来

机器学习和量子计算将成为“密友”

从云到雾,物联网分布式计算的崛起