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!