最新论文笔记(+13):Hardening Distributed and Encrypted Keyword Search via Blockchain / PAC2017
Hardening Distributed and Encrypted Keyword Search via Blockchain(通過區塊鏈進行分布式加密關鍵字搜索)
鑒于前面好幾篇都是可搜索加密與區塊鏈結合相關的論文,可以發現結合的點大致差不多,故從此篇開始,我會精簡論文筆記內容,抓主要部分或可能有用的地方記錄,以便節約閱讀時間和減少工作量。
與前面不同的是,本篇論文提出了一種與分布式網絡中加密搜索無縫結合的協議,來解決分布式場景中實際的威脅設想(如惡意節點破壞搜索結果等),以及增強整個系統的魯棒性。并且,在節點加入網絡開始就對其進行監控管理,它將通過可驗證的搜索查詢得到證明和持續監控,且每個證明的結果通過標準的基于quorum的投票協議確定(重點)。最后,記錄在區塊鏈上作為可信節點的共識視圖。
- 原文鏈接:Hardening Distributed and Encrypted Keyword Search via Blockchain
主要貢獻:
- 1)提出了一種分布式加密搜索協議,該協議保證了在明文分布式關鍵字搜索中數據和查詢的保密性,又保證了vertical partition的效率。
- 2)設計了一種新系統的魯棒性協議,允許新節點從加入系統的那一刻起到被驗證和持續監控。通過謹慎的利用可驗證的加密搜索查詢,它在區塊鏈上維護一個可信節點列表和現成的基于quorum的投票協議。
- 3)最后對該協議進行評估,包括隱私性和魯棒性了,評估展示了加密搜索的效率,并報告了不同規模分布式網絡的區塊鏈開銷。
一、寫作背景
| Hardening Distributed and Encrypted Keyword Search via Blockchain | Chengjun Cai et.al (City University of Hong Kong) | IEEE Symposium on Privacy-Aware Computing | 2017 | 本文提出了一種與分布式網絡結合的加密搜索協議,且能杜絕惡意節點破壞搜索結果、增強系統的魯棒性等優勢。 |
從本文可知,在完全的分布式存儲數據系統中,通過分布式哈希表、可搜索加密和關鍵字搜索集成的協議允許網絡中的節點搜索加密分布式的數據,但是該協議沒有解決實際的威脅設想。例如,惡意節點會破壞搜索結果,他們可能會返回部分或虛假的結果,以節省它們的資源消耗,且隨著網絡的增長很容易滲透到系統中,即使用MAC和可驗證數據結構等原語也很難保證整個系統的魯棒性。另外,一個關鍵字匹配的文件列表可能被分到不同區域的節點,搜索請求將轉發到多個不同的節點,而客戶端可能會進一步參與跟蹤每個關鍵字的分區索引位置,故這些所有的開銷也都可能削弱分布式系統的性能。
因此,作者考慮使用區塊鏈為一組分布式節點提供驗證新節點的能力,并以確定的方式標記鏈上的損壞節點。通過驗證來自客戶端和該節點的搜索令牌、結果和證明,從其他節點收集到的大多數投票決定了該節點的可信度。誠實的節點被記錄在鏈上,此前可以信任的惡意節點將在鏈上標記為無效。(本篇論文并不是將密文數據和索引上鏈,而是用區塊鏈存儲每個節點的可信度或是信譽值等信息)
二、 主要內容
如下圖,作者提出的一種沒有中央控制的存儲平臺,由多個分布式的節點構成。
這些節點通過低成本為用戶提供加密存儲和關鍵字搜索服務,以保證數據的隱私和功能。首先,客戶端建立一個加密文件的索引,將其上傳至網絡。為了之后的節點認證和監控,它與單個關鍵字令牌的搜索結果的承諾也被附加到索引分區,其中加密索引是基于一個標準的分布式哈希表(Distributed Hash Table,DHT)進行分區,該表表示每個節點加密的關鍵字令牌的范圍。然后,客戶端根據查詢關鍵字生成搜索令牌,并通過DHT表轉發到目標節點,目標節點在加密索引分區上處理這個令牌,并返回結果,即匹配文件的id。此過程的節點對關鍵字和文件的內容一無所知。
進一步,通過區塊鏈建立可信節點共識視圖的協議。從節點加入系統開始,它將通過基于quorum的投票協議[1]進行驗證,并通過可驗證的搜索查詢進行持續監控。
[1] 基于quorum的投票協議原理:在分布式系統中,每個節點都有可能保存一份數據副本,并給每個數據副本都賦予一票。假設系統一共有VVV個數據副本,則總票數為VVV。每個讀和寫操作必須要獲得讀票數(完成讀操作所需讀取的最小副本數,read quorum,V(r)V(r)V(r))或寫票數(完成寫操作所需要讀取的最小副本數write quorum,V(w)V(w)V(w))才能對數據進行讀或寫。且票數需要遵循以下規則:
- Vr+Vw>VV_r+V_w > VVr?+Vw?>V
- Vw>V2V_w > \frac V2Vw?>2V?
第一條規則保證了一個數據不會被同時讀和寫。當請求一個寫操作時,它需要得到V(w)V(w)V(w)讀票數,而剩下的票數為V?V(w)<V(r)V-V(w) < V(r)V?V(w)<V(r),因此不再允許讀操作。請求讀操作時也同理;此外保證了強一致性,即寫操作與讀操作之間有重疊,這就保證了至少有一個讀操作可以讀到最新數據。
第二條規則保證了數據的串行化修改,即同一個數據不能同時被兩個寫操作并發修改。
因此,基于quorum的投票協議可以保證數據讀寫的正確性,以及同一時刻一份數據的多份副本只能用于讀或用于寫,而不能同時被超過兩個訪問對象并發讀寫。
引用自https://www.sczyh30.com/posts/Architecture/quorum-based-voting-for-replica-control/
可搜索加密基本原理:加密算法(encryption)、令牌生成算法(token generation)、搜索算法(search)和更新算法(update)。
- 1)加密算法:輸入密鑰KKK和文件集合FFF,輸出密文CCC和加密的搜索索引III。
- 2)令牌生成算法:輸入密鑰KKK和關鍵字,輸出搜索令牌ttt。
- 3)搜索算法:輸入搜索令牌ttt,輸出匹配的加密文件集合RRR。
- 4)更新算法:輸入密鑰KKK和新文件fff,輸出更新令牌 t′t^{'}t′和更新索引 I′I^{'}I′。(若方案有更新算法,則被稱為動態SE方案)
2.1 基本設計
本文提出了一個用于加密和分布式關鍵字搜索的基本協議,該協議對用戶透明,保護文件和查詢關鍵字的Confidentiality。
在分布式系統中,需要跨多個節點進行劃分,一般有兩種分區策略,即水平分區和垂直分區。
- 水平分區:索引是通過文件標識符空間或通過索引中的倒排列表進行平均劃分。這種策略在數據局部性上有好處,但在搜索過程中會引入大量的通信開銷。因為查詢需要發送到所有的節點,會在全球分布式系統中導致長時間的查詢延遲;
- 垂直分區:通過關鍵字空間對索引進行分區,根據關鍵字在DHT中的哈希值,將關鍵字的倒排列表分配給目標節點。該策略使網絡中的節點利用標準DHT路由來最小化給定查詢的通信成本,即O(log(N))O(log(N))O(log(N)),其中N是節點數。
協議:為了使節點能夠向客戶端提供加密關鍵字搜索功能,客戶端必須從文件集中構建一個加密索引,并將索引上傳至網絡進行分區,如算法1所示。
2.2 區塊鏈實現魯棒性和加密搜索
本文提出的協議是基于可驗證的SE和基于quorum的投票機制,它確保在區塊鏈上記錄一個不可變和可跟蹤的可信節點列表,設計目標是使分布式節點能夠共同維護區塊鏈,而區塊鏈主動提供系統中可信節點的共識狀態。
為此,首先對每個倒排列表預先構建承諾,客戶端可以認證某個節點的搜索結果是否正確。之后,包含搜索令牌、結果和承諾的消息被簽名,并從客戶端廣播到網絡。在返回結果和承諾之前,這樣的消息也被簽名并從上述節點廣播到網絡進行認證。為了使節點能夠共同執行認證,系統中的每個節點將會驗證來自客戶端和目標節點的消息,并生成一個發送給礦工節點的投票。根據基于quorum的投票協議原理,該礦工節點可以生成一個表示認證結果的區塊。如果大多數節點確認這個節點是可信的,它將記錄在區塊鏈上,否則,它將被移除。
-
1)區塊的定義:通常,區塊包括投票信息和經過驗證的節點信息,這些信息用于為系統中部署的可信節點提供共識和可跟蹤的視圖。
如下圖,定義了服務中的主體,包括區塊標識符、時間戳、被驗證節點的名稱(即公鑰)、該節點上的操作、指定的DHT范圍、從協議收集的選票,以及該區塊的簽名。
具體而言,JOIN和REMOVE表示該區塊的使用情況,即向系統添加一個新節點或從系統中刪除一個現有節點。同時記錄被認證節點的嚇一跳和DHT中指定的范圍,以便其他節點同步路由表。
如下圖,定義了每次投票的內容,包括時間戳、對被認證節點的相應操作、對認證結果的投票、被認證節點的公鑰、投票節點簽名的投票。(另外,基于區塊鏈的數據庫系統[2]也采用了投票機制,但它用于數據讀寫的一致性,投票不記錄在鏈上。)
[2] The BigchainDB project, “BigchainDB,” Online at https://www.bigchaindb.com/whitepaper/bigchaindb-whitepaper.pdf.
- 2)節點認證:核心思想是利用區塊鏈來維護所有受信任節點的共識狀態。如下圖,給出了詳細的步驟。
如下圖所示,只要系統中的主要節點接受操作(JOIN或REMOVE),該信息就會在區塊鏈中得到確認。節點有動力稱為礦工節點,因為它們可以從服務費中獲得利潤。
- 3)節點加入和移除:基于該協議,可以對新加入的節點進行驗證,同時可以將現有可能受到威脅的節點從網絡中移除。節點加入系統需要進行兩個步驟,即引導和認證。
- 引導:現有節點向新節點發送邀請,新節點從預定義的創世區塊引導并就網絡最新狀態達成共識。同時,該節點為新節點指定一個臨時范圍并更新其本地DHT路由表。
- 認證:該節點將與臨時范圍匹配的令牌轉發給新節點以啟動協議。一旦新節點通過認證,其信息被記錄在區塊鏈上。否則,拒絕,并恢復該節點的本地路由表。在節點移除方面,可以有效檢測并踢出惡意節點。搜索令牌、結果和承諾也可以廣播以證明惡意節點,并從中刪除。
- 4)魯棒性分析:此部分考慮三種惡意攻擊,并表明了如何防御它們。
- 通過添加惡意節點進行攻擊:攻擊者試圖插入大量惡意節點,從而破壞系統中的搜索協議。一方面,因為承諾標簽和返回的結果不匹配,這些節點在協議中會失敗;另一方面,發送到新節點的查詢令牌是通過邀請進行處理,故還未記錄在區塊鏈上,因此不會被網絡中的其他節點知道。
- 通過破壞現有節點進行攻擊:可以通過完整性檢測和證明過程來解決被攻擊者公平的風險,另外可以假設記錄在共識狀態上的大多數節點沒有受到損壞的情況下解決被入侵的節點返回錯誤的結果,或發送虛假投票等問題。
- 冒充攻擊:攻擊者偽裝邀請節點,試圖阻止新節點加入系統。由于新節點在引導程序中,需要從創世區塊驗證區塊鏈,達成共識。因此,該節點額能夠檢測邀請節點是否有效。
- 5)激勵模型:由于搜索服務需要付費,新加入節點需要交押金,這些收益都可分配給誠實執行搜索的節點和認證。(另外,要求用戶平均貢獻挖礦獎勵,這是作者未來考慮的工作,并未實現)
2.3 實驗分析
分別對加密關鍵字搜索的開銷和區塊鏈的開銷進行了分析,這里就不再闡述,可以看原文。
三、總結與思考
本文為加密和分布式存儲平臺提供了一種安全且魯棒性強的關鍵字搜索服務。首先,提出了一種結合SE和基于DHT的關鍵字搜索的基本協議,加密索引被垂直分區,同時保持用戶透明度。為了解決可能故意返回錯誤結果的惡意節點,引入一種協議(一組節點)來證明節點,并通過搜索查詢持續監控他們。此外,區塊鏈拉存儲證明結果,以維護可信節點的共識視圖。
本文發表于2017年,故當時考慮用區塊鏈的是存儲對節點的可信度的一個證明結果(存證),其加密索引和原文件都還是與傳統存儲(分布式存儲)類似。
- 利用區塊鏈能保證這個證明結果是可信的,提高安全性,但是區塊鏈的效率還是值得考慮,作者只驗證了其區塊鏈的開銷。
- 使用區塊鏈后并未與其他方案對比效率、開銷和安全性等,無法判斷是否有優勢?
- 本篇論文是主要考慮節點可信度存證問題,之前的論文是考慮公平支付問題,這有很大區別。
總結
以上是生活随笔為你收集整理的最新论文笔记(+13):Hardening Distributed and Encrypted Keyword Search via Blockchain / PAC2017的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis由浅入深深深深深剖析
- 下一篇: IDEA 2022.01 安装教程