Oblivious Random Access Machine(简称ORAM协议)
随着云计算的发展,类似DropBox、谷歌Driver等云存储服务应运而生。用户将数据的控制权交给第三方,不免担心数据安全以及个人隐私得不到保障。近年来屡有发生的云端敏感信息泄露事件表明这种担心并不是空穴来风,黑客入侵服务端来获取信息更成为主要手段。可搜索加密技术允许用户将数据的密文存储到服务端且可以对密文进行搜索,避免云端获取数据内容。然而,研究表明,即便云端数据使用语义安全的加密方案加密,用户访问过程中产生的访问模式也会泄露敏感信息,甚至有很大概率恢复出用户搜索的明文信息[1]。因此,访问模式越来越成为一个保护用户隐私中必须考虑的重要影响因素。本文承担的第一个工作是在云存储场景,单用户模式下,针对读取和写入两个操作,总结并分析向云端隐藏访问模式的有效方法。这一工作研究了两个模型,分别是私有信息检索(PIR)和茫然随机存储(ORAM)。PIR允许用户从加密或未加密的数据库中检索信息,同时向服务端隐藏访问模式。ORAM允许用户茫然访问私有数据,以使操作过程中的访问模式不泄露任何敏感信息。本文分析了两种模型的特点,总结了这两个模型下相关方案使用的主要技术以及产生的结果对比。本人认为这部分工作对于云存储场景下隐私保护方案的研究具有一定的参考意义。本文的第二个工作关注数据共享这一应用场景。ORAM是用户读写时保护访问模式的最优选择,而计算复杂度是设计ORAM方案面临的一个瓶颈。数据共享是云存储的基础应用之一,它与云计算的可扩展和多用户特性相契合,而其要求的授权机制,使得实现隐藏访问模式的数据共享方案更加困难。目前已知的基于ORAM的数据共享方案存在使用计算复杂度过高,密码原语较复杂等缺点。本文设计了一个高安全性,高效率的基于Path ORAM的数据共享方案,允许数据拥有者将数据分享给其他用户,其他用户不能在没有权限的情况下对数据进行非法读写操作。在用户访问数据后辅助以重排正确性证明保证用户不能非法修改数据,同时降低数据持有者负担。分析表明,在最坏情况下,本方案具有目前已知同类方案中最优的通信复杂度和计算复杂度。
云存储技术是当前快速发展的新技术,以云计算为基础的云存储系统,结合网络化和虚拟化技术,计算能力和存储能力非常高效。但是云计算未来的发展被安全问题所制约。当用户将数据上传到不可信的远程服务器,用户将不能不能控制自己的数据,对数据加密是最简单的保护用户数据的方法,加密数据后保护了数据的隐私性和机密性。数据加密后存储在云存储器中,但是对加密数据搜索的过程中存在着安全隐患,数据搜索过程中访问模式会泄露用户的敏感数据。ORAM技术是能有效防止访问模式泄露的关键密码学技术,它的基本思想是:将数据存储在不可信的第三方服务器,但不会向第三方服务器泄露任何关于数据存储位置的信息。ORAM技术在软件保护,安全计算,远程存储,云存储系统,密文搜索等方面具有广泛的应用。ORAM技术最早是由Rafail Ostrovsky在1996年提出的,目的是来解决软件逆向工程问题。他提出了Square Root ORAM和Hierarchical ORAM两种方案,但是这两种方案的数据访问开销大,算法复杂,实现比较复杂。随着人们对网络安全性的要求越来越高,ORAM作为一种关键的抗访问模式泄露技术,得到快速发展,出现了Partition ORAM, Tree ORAM, Path ORAM, Ring ORAM等方案,这些ORAM方案更加实用和易于理解,而且数据访问开销较小。近几年还出现了基于同态加密技术的ORAM方案,ORAM技术未来的发展前景和应用前景十分广阔。由于ORAM在保护安全性的同时,效率相对低下,这对于ORAM技术的应用和实现产生一定的制约作用,如何实现高效的ORAM方案将是ORAM技术未来发展的重要方面。本文提出了一个高效的基于二叉树存储结构的ORAM方案。我们的工作主要表现在以下几个方面:(1)无数据溢出。在读操作中,提出了重新分配路径的新方式,保证了数据不会发生溢出;(2)无eviction操作。在写操作中,提出了数据写回的新方式,因此不需要复杂的eviction操作;(3)高性能。由于我们提出了重新分配路径和写回数据的新方式,将每个Bucket容量减小到常量水平,降低了数据访问开销;(4)保证安全性。我们在分析各种ORAM方案的优缺点及性能后,沿用了Tree ORAM的二叉树存储结构,提出了一个更加高效的ORAM方案,使ORAM在各个领域的实际应用更广泛。
ORAM被誉为保护访问模式中最有前途的密码协议之一,其余的保护访问模式也有Private Information Retrieval(PIR)和Oblivious Transfer(OT)两种密码协议等。但ORAM不仅可以保护访问模式,还有更新数据功能,现在还在研究增加和删除数据块的功能,这是其他保护访问模式的密码协议所不具备的。
既然我们说其功能是保护访问模式,那我们首先肯定想知道啥是访问模式呢?在ORAM的发明者Goldreich和Ostrovsky的论文中是这样定义的,将一个访问序列引起的访问行为称为访问模式。接着就是定义ORAM的安全性,便是:两个相同长度的访问序列引起的访问模式是不可区分的,则ORAM协议是安全的。访问模式泄露的危害也有专门的研究者在网络与信息安全的四大顶级会议上发表,如2012年NDSS上的paper,此研究结果表明在可搜索加密中借助访问模式泄露可以导致敌手能推断出近80%的密文关键词对应的明文关键词。
ORAM协议用途非常广泛,可以应用在保护访问模式的诸多应用中,如前面提到的可搜索加密,还有外包的安全云存储,安全处理器的构造,安全多方计算,动态的数据审计协议等场景中。
说完ORAM的功能,定义和安全性之后,下面我们说说ORAM的研究现状。1987年Goldreich,1990年Ostrovsky,以及1996年Goldreich与Ostrovsky合作一起完善了ORAM的定义,并给出了两种ORAM的经典构造,分别是平方根-ORAM和分层结构的ORAM,两种方案都因为最差情况下的bandwidth blowup过大而沉寂了很多年,虽然也有些许优化,但改变不了最差情况下代价过大的硬伤,这会导致周期性的大延迟。他们的工作还证明了ORAM在标准模型下(Server仅仅是个简单的存取设备,无计算能力)的G-O lower bound:O(1) Client Storage条件下至少有O(log N) bandwidth blowup。这里解释下bandwidth blowup指的是Client为了访问(read或write)一个目标数据块,而与Server交互所需要的数据块的数目(这个方向在今年2018年连续出了两篇顶会文章,分别是2018Crypto和2018FOCS,这个方向偏重于纯理论的构造方案,已经距离1996年过去了22年,可见此基础理论突破的难度,而且也仅仅是构造了一个接近此下界的ORAM协议,还有很多需要改进的地方)。
至此之后,bandwidth blowup一直就成为ORAM研究者们尽力优化的目标,很多学者却忽视了bandwidth blowup只是组成Client与Server之间带宽的一部分,却忘了还有一个因素也不容忽视,那就是数据块的大小(in bits),因为bandwidth cost=banwidth blowup*block size。目前client与server之间的带宽代价是主要的瓶颈之一,这是研究们都花大力气在优化bandwidth blowup上的主要原因。
自从2011年AsiaCrypt(三大密码顶会之一)提出了一种优化的基于二叉树的ORAM方案,再接着2013年CCS上提出的Path-ORAM方案作为种子级别的工作点燃了整个ORAM研究者们的热潮,之后每年在网络与信息安全的四大顶会(CCS、S&P、USENIX Security、NDSS)上都有文章而且不少是best paper。这四大顶会上的ORAM方案更加关注于ORAM的实用性能而不是asymptotic cost(可以理解为理论上的代价),有些方案增加少量的client storage来换取bandwidth blowup的降低,有些方案增加server computation来换取bandwidth blowup的降低,还有些方案引入多个servers严重增加Server Storage来换取bandwidth blowup的降低,总之都是朝着降低bandwidth blowup的目标进行优化ORAM的性能的。在这些方案当中有些极端的方案就是将bandwidth blowup降低到O(1),但ORAM的其他代价却高的离谱,比如有些采用同态加密优化ORAM的,但计算代价太大会使得ORAM请求的时间延迟太大,因此脱离了实用;有些增加Client Storage=O(根号N) blocks来降低bandwidth blowup,这种方案不利于采用在主流的智能设备如手机,iPad等终端上;还有些采用简单计算但必须多个Servers同时参与到方案中,每个Server都必须存储一份Server Storage,Server Storage在每个server上本来就较大,如果采用多个servers将导致总的Server Storage太大而使用户花销过高,因此也脱离了实用。
目前来说,最实用ORAM方案依然是2013年ccs上的种子级别的工作Path-ORAM方案以及其后面对其改进的2015年USENIX Security上的Ring ORAM,最实用的ORAM方案一定是ORAM的各种性能代价达到比较均衡的方案。最后期待自己能在这个领域内继续耕耘,早日也能在计算机顶会上发个paper!