云计算中数据安全挑战与研究进展
崔 勇1 任 奎2 唐 俊1,3
1清华大学
2美国纽约州立大学水牛城分校
3解放军信息工程大学
关键词: 云计算 云数据 数据安全
引 言
云计算是随着计算、存储以及通信与网络技术的快速发展而出现的一种崭新的共享基础资源的商业计算模式。它具有按需自服务、可随时网络接入、资源池共享、弹性配置和服务可计量等特点。亚马逊、谷歌、微软、百度、阿里巴巴、腾讯等国内外互联网 企业 相继推出了云计算平台,可为用户提供方便快捷的服务和灵活的计费方式。因为能够为用户提供无限扩展的在线存储、数据共享和数据计算等服务,所以也受到越来越多的用户和企业的青睐。据高德纳公司(Gartner)的分析,2016年将有36%的数字内容和个人数据存储到云端服务器上。
用户在将大量数据交予云端处理的同时,也面临着巨大的安全风险。据威瑞森(Verizon)公司统计,2015年全球有61个国家出现了79790起数据泄露事件[1]。如此频繁发生的云安全事件,使用户对将数据外包给云端的安全性产生了担忧,也削弱了用户使用云服务的信心,致使多数用户和企业出于安全方面的考虑不愿意将关键数据存储于云端服务器或交给云端处理[2]。数据安全问题已经严重阻碍了云计算服务的进一步应用和发展。
◎ 云数据面临的安全威胁
在开放的网络环境下,外包于云端的用户数据面临着巨大的安全威胁,包括数据泄露、非法访问以及数据破坏或丢失等[3]。
数据泄露 导致数据泄露的有层出不穷的网络攻击、云服务安全漏洞和不完善的管理措施等。以2015年为例,2月,约5万名优步(Uber)公司的司机信息被第三方获取;3月,美国大型医疗保险商CareFirst被黑客攻击,致使110万名用户的信息泄露;9月,阿里云被曝存在重大安全漏洞,全部机器权限和用户资料被泄露。
非法访问 将数据外包给云服务器,用户就失去了对数据的物理控制权,云服务器对数据进行何种操作用户将不得而知。云服务提供商可能会因某种商业目的而蓄意窥探用户数据,甚至将用户数据提供给第三方使用。另一方面,存储于云端的用户数据还有可能在用户不知情的情况下,被第三方监听访问。恶意黑客的攻击也有可能获取系统访问权限,非法读取和使用用户数据。
数据破坏或丢失 存储于云中的数据可能会因管理误操作、物理硬件失效(如磁盘损坏)、电力故障、自然灾害等原因丢失或损坏,造成数据服务不可用。例如2015年,3月微软云(Microsoft Azure)因网络基础设施问题导致其服务连续数天瘫痪;8月,谷歌计算引擎(Google Compute Engine)因受到雷电暴风袭击而最终导致部分磁盘数据丢失。另外,云服务提供商还可能为了节省存储空间、降低运营成本而移除用户极少使用的数据,致使用户数据丢失。
◎ 云 数据安全 研究内容
在不可信云环境下,为确保云数据存储、共享、查询和计算等云服务中的数据安全,研究者们开展了大量研究,提出了一些新的、用户可控的安全技术,如表1所示。
云数据安全验证 不可信的云服务器无法保证用户数据的完整性,甚至可能为了节省存储空间而故意删除用户数据。为确保数据能够正确可靠地存储于云服务器中,势必需要用户对其进行完整性验证。
云数据安全共享 云数据共享是云数据的一种基础服务,也是用户使用云服务的主要目的之一。如何在不可信的云环境下和大规模用户中实现安全可控的数据共享是需要研究的问题。
云数据安全查询 在不可信的云环境下,出于机密性的考虑,存储于云服务器中的数据通常是被用户加密的,这使得云服务器无法为用户提供正常的数据查询功能。为解决这一问题,需要研究查询加密技术。
云数据安全计算 用户期望能够借助云端强大的计算能力为其进行数据处理,但又不想让云服务器获知所需处理的数据内容以及相应的计算结果。针对这种需求,需要研究安全外包计算技术。
◎ 云数据安全研究进展
• 云数据安全验证研究进展
在云存储环境下,由于用户带宽和存储资源的限制,用户不可能将数据全部取回进行完整性验证。因此,传统的数据完整性验证方案无法直接应用于云数据验证场景。针对此问题,研究者们提出了支持远程无块验证技术,即在不下载验证数据的前提下,仅通过简单的挑战-应答方式来完成数据的验证。典型的方案是数据持有性证明(Provable Data Possession, PDP)[4],该方案采用同态验证标签,具有聚合特性,能够将多块数据验证的证据聚合为一个验证响应,降低验证响应的带宽消耗。数据持有性证明方案还采用了随机抽样的概率性验证方法,有效降低了验证通信和计算开销。
支持动态数据操作 在许多云存储应用场景中,数据可能会被频繁地修改、删除和插入,如何支持这种动态变化的数据完整性验证,是构造数据持有性证明方案面临的一个挑战性问题。当数据动态变化时,为了能够进行完整性验证,需 要全部重新计算数据标签,这对资源受限的用户来说是不可接受的。为解决这一问题,埃尔韦(Erway)[5]等构造了两种动态数据的数据持有性证明方案,实现了动态数据完整性验证。但这两种方案均基于RSA1的模指运算,计算开销较大。如何构造支持动态操作的高效数据结构,以及如何减少动态数据验证的存储、计算和通信开销成为动态数据验证方案的研究重点。
支持公开可验证 当需要确保大量外包存储于云端数据的完整性时,如果仍由用户自己来验证,则会引入巨大的存储和计算开销,显然这对资源受限的用户来说是不可接受的。因此,有必要引入拥有更多资源和专业验证能力的第三方审计者(Third Party Auditor, TPA),设计支持公开可验证的方案,使得用户可借助第三方审计者高效地完成数据完整性验证,减轻用户的验证负担。但引入第三方审计者后会面临数据隐私保护问题,被验证数据的内容可能会泄露给第三方审计者。王(Wang)等人[6]构造了一个隐私保护的公开可验证方案,该方案保证了第三方审计者在完成数据完整性验证的同时,无法获知被验证数据的内容。
数据可恢复性证明 数据持有性证明方案能够检测出数据是否正确,但不保证数据是可取回的,即当数据被破坏时,不能恢复成原始的数据。朱尔斯(Juels)[7]等人提出了可恢复性证明(Proof of Retrievability, POR)概念。与数据持有性证明方案不同的是,可恢复性证明采用纠错编码技术,使部分数据在丢失或被破坏的情况下仍然有可能恢复成原始数据。然而,在冗余编码情况下,少量原始数据的变化将引起大量编码数据块的修改,这使得构造支持动态数据操作的可恢复性证明方案变得非常困难。为了减轻用户负担,需要设计支持公开可验证的可恢复性证明方案。近年来,一些研究者分别在这两个方面进行了探索,提出了轻量级动态可恢复性证明方案[8]和具有常数级通信开销的公开可验证可恢复性证明方案[9]。
• 云数据安全共享研究进展
在不可信云环境下,数据拥有者通常会将数据加密后上传到云服务器中,但这给数据共享带来一定的困难。一是大规模用户的数据共享需要大量密钥,生成、分发和保管这些密钥比较困难;二是如果制定灵活可控的访问策略,实施细粒度的访问控制,则会成倍地增加密钥数量;三是当用户访问权限更新或撤销时,需要重新生成新的密钥,势必引入巨大的计算量。另一个重要问题是传统的访问控制方法依赖于一个可信的服务器,而该假设条件在不可信云计算环境下是不成立的。针对上述问题,研究者们提出了基于属性的加密技术(Attribute-Based Encryption, ABE)[10],该技术以用户属性为公钥,通过引入访问结构将密文或用户私钥与属性关联,能够灵活地表示访问控制策略,对数据进行细粒度访问授权,且具有良好的系统扩展性,是实现云数据访问控制的理想方案。
访问策略表达 访问结构决定了基于属性的加密技术的访问控制策略的表达能力,目前主要有基于树的访问结构和基于LSSS(Linear Secret Sharing Scheme,线性密钥共享体制)矩阵的访问结构。基于树的访问结构支持属性的“与”、“或”、“门限”和“非”等操作,能够实现复杂逻辑表达式描述的访问策略。基于LSSS矩阵的访问结构与基于树的访问结构具有相同的策略表达能力,且描述更加简洁。基于树的访问结构可以通过相应算法转换为基于LSSS矩阵的访问结构。
访问权限撤销 实际的数据共享系统通常会动态地撤销用户访问权限。在基于属性的加密技术的访问控制系统中,用户访问权限撤销分为用户撤销、用户部分属性撤销和系统属性撤销三种。其中,用户撤销是撤销其所有属性;用户部分属性撤销只撤销用户的某些属性,并不影响具有这些属性的其他用户;而系统属性撤销则会影响具有该属性的所有用户。属性撤销的难点在于:当某一属性被撤销时,如何更新与该属性相关的密文数据和如何高效地分发属性更新密钥。现有方案利用双重加密、代理重加密等技术实现了上述三种访问权限的撤销[11,13]。
访问控制效率 基于属性的加密技术实质上是一种公钥密码,其构造主要以各种数学难题(如DBDH问题2)为基础,方案大都涉及复杂的双线性对运算,计算量非常大,且密文大小和加/解密时间会随访问结构复杂性的增加而增长。为了减少用户端的计算量,充分利用云服务器的计算能力,现有很多方案都采用外包计算的思想[12,13],将涉及大量计算的加密、解密、密钥产生以及属性撤销带来的密文更新等操作都外包给云服务器,提高云数据访问控制系统的实用性。
• 云数据安全查询研究进展
出于数据机密性的考虑,用户会将数据以密文的形式外包存储在云服务器中。但当用户需要提取包含某些关键字的数据时,会遇到如何在云端服务器进行密文搜索的难题。一种简单的方法是将所有密文数据下载到本地进行解密,然后再进行关键字查询,但这种方法会浪费巨大的网络带宽,为用户带来大量不必要的存储和计算开销。另一种方法是将密钥和要查询的关键字发给云服务器,由云服务器解密数据后进行查询,但这种方法会泄露用户数据,不能满足数据机密性要求。为此,支持密文搜索的查询加密(Searchable Encryption, SE)[14]技术应运而生,其基本思想是通过构造安全索引、利用查询陷门来高效地支持密文搜索。
丰富的查询功能 在保护数据和关键字隐私的前提下,如何在加密数据上获得与明文一样的查询体验是一个富有挑战性的问题。近年来提出的查询加密方案支持的查询条件越来越灵活,支持的查询功能也越来丰富,不但实现了单关键字查询和多关键字查询,而且能够提供模糊查询、范围查询等功能,有的查询加密方案同时支持多关键字和模糊查询。例如,王(Wang)等人[15]利用局部敏感哈希(Locality Sensitive Hashing, LSH)和布隆过滤器(Bloom filters)来构造安全索引,并采用欧氏距离(Euclidean distance)来衡量关键字之间的相似性,实现了多关键字模糊查询。
动态数据查询 在查询加密方案中,添加、修改或删除数据意味着需要动态地改变查询索引,才能支持原有的查询功能,否则查询的结果将不准确,甚至出现错误。因此,如何构造支持动态操作的查询索引结构是实现动态数据查询的关键。卡马拉(Kamara)等人[16]采用改进的倒排索引结构,构造了一个支持文件级更新操作的查询方案。而李(Li)等人[16,17]则采用矩阵分块的思想支持关键字索引字典的动态更新。
查询结果排序 用户在进行数据查询时,云服务器可能会搜索出大量的数据。而用户总是期望服务器能够返回与查询关键字最相关的数据,一方面可以快速找到目标数据,另一方面可减少不必要的带宽消耗。这就要求云服务器对查询到的结果进行排序,而这需要一个排序标准,如关键字频次与文档频次(TF×IDF)、坐标匹配内积相似度和余弦函数(cosine)相似性等。例如,孙(Sun)等人[18]基于cosine相似性和关键字频次与文档频次权重来计算查询结果的顺序,为用户返回更为精确的查询结果。
• 云数据安全计算研究进展
在解决大规模最优化、 大数据分析 、生物特征匹配等问题时,会涉及大量的数据计算。对于资源有限的用户来说,承担如此巨大的计算比较困难。一种有效的解决方案是借助云端的强大计算能力为用户提供计算服务,但这会将用户的敏感数据暴露给云服务器。解决的方法是可以通过加密数据,让云服务器在密文数据上进行计算。另一个重要问题是在不可信的云环境下,云服务器是否能够正确可靠地为用户进行所需的计算,并返回正确的结果,用户不得而知。这可以通过研究可验证外包技术来解决。
同态加密 同态加密是一种支持直接在密文上进行计算的特殊加密体系,它使得对密文进行代数运算得到的结果与对明文进行等价运算后再加密所得的结果一致,而且整个过程无须对数据进行解密。2009年,金特里(Gentry)提出并构造了第一个全同态加密(Fully Homomorphic Encryption, FHE)方案[19],理论上支持在密文上的任意运算。但该方案涉及非常复杂的计算,根本无法应用。因此,构造高效的全同态加密方案及其优化实现成为近年来同态加密的研究热点。一些研究者在密文大小控制、密钥产生效率和计算维数减少等方面进行了优化,一定程度上提高了全同态加密的运行效率,但仍然无法满足实际应用需求。
特定计算安全外包 由于全同态加密计算复杂性太高根本无法在实际中应用。而一些具体的应用只涉及特定的数据计算操作,如线性规划、矩阵运算、模指运算和布尔计算等。因此,如何针对特定的应用场景,研究构造实用的安全外包计算方案是一个值得研究的问题。例如,王(Wang)等人[20]解决了线性规划的安全外包计算问题,陈(Chen)等人[21]则关注模指运算的安全外包问题。
可验证外包计算 用户将数据外包给云端进行计算总是期望返回正确的处理结果,然而云端可能会因软硬件错误、外部攻击、商业利益等因素破坏计算结果的正确性和完整性,返回的是错误的或者不完整的计算结果。为防止此类问题发生,需要用户对云端的计算过程进行监测,并验证计算结果的正确性。这类研究可分为一般函数外包计算验证和特殊函数外包计算验证。其中,特殊函数计算验证需要根据涉及的计算操作进行具体设计,如许(Xu)等人[22]针对符合一定条件的凸优化外包计算问题,设计了相应的高效验证方案。
◎ 结束语:
云数据安全问题是当前 云计算 和信息安全领域的研究热点,得到了工业界和学术界的广泛关注,并提出了许多安全解决方案。从总体上看,现有多数安全方案的效率比较低,需要进一步在计算复杂度、通信带宽开销以及存储空间开销等方面进行优化,提高其实用性。
除了本文涉及的一些云数据安全研究外,还有很多其他关于云数据安全方面的研究内容,如存储隔离验证(Proof of Isolation, PoI)、存储位置证明(Proofs of Location, PoL)、二次外包验证、数据可信删除、数据所有权证明(Proofs of Ownership, PoW)和多云环境下的数据安全等。云数据安全仍是未来需要进一步深入研究的问题。
◎ 脚注:
1 RSA是目前最有影响力的公钥加密算法,是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。
2 Decisional Bilinear Diffie-Hellman,判定双线性Diffie-Hellman问题,是一种来源于离散对数问题和Diffie-Hellman问题的复杂性假设,该问题被广泛应用于基于属性的密码方案。
◎ 作者简介:
责任编辑:王培