當前位置:
首頁 > 新聞 > 高海強:去中心化存儲中,數據完整性證明是關鍵

高海強:去中心化存儲中,數據完整性證明是關鍵

巴比特加速器推出的全球線上區塊鏈技術深度對話欄目Geekhub Global Online,定期邀請世界各地的資深技術大咖連線對話。同時Geekhub技術社區成員也可以參與直播互動。11月28日-30日每天下午14:00,Geekhub 技術社區將舉行【Geekhub Global Online】技術公開課第三期的活動,主題為「分散式存儲,數字基石」。

11月28日14時,Lambda聯合創始人高海強帶來了題為「你『鏈上』的文件確實被存了嗎」的線上分享。

高海強是Lambda聯合創始人,主要研究方向為P2P網路設計與優化,曾任網路優化公司埃森諾的技術副總裁,2015年聯合創立OneAPM的安全子公司OneASP。OneASP在2015年獲得三行資本領投,經緯、成為、啟明跟投的1500萬人民幣融資。現任Lambda聯合創始人,負責Lambda的整體設計、技術架構、關鍵難題研究。


預備知識

存儲是區塊鏈三大方向中急需解決的問題之一,其難度及意義不亞於賬本信息的不可篡改,而去中心化存儲中數據完整性證明,是較為關鍵的問題。存儲領域的主要技術:

(1)數據完整性證明PDP(Provable Data Possession),並沒有大規模商用,只有雲存儲的公司在用,但是並沒有相關的機制讓用戶能夠證據,證明數據確實按照客戶的要求進行存儲,也不能做到公開的可驗證性。在去中心存儲領域讓該演算法有了用武之地,同時技術發展也非常迅速。

(2)數據可恢復證明POR(Proofs of Retrievability),與PDP類似,增加了容錯的能力。即提供了冗餘備份同時存儲空間並沒有按照副本數量線性增加,同時在一定容錯級別上,當部分數據片段丟失的情況還可以根據其他片段對數據進行恢復。

(3)EC技術,通俗的講,類似於傳統存儲中的硬體RAID技術。

這三個技術是做去中心化存儲的關鍵技術。


以下為公開課文字實錄,由巴比特整理髮布:

大家好,我是Lambda聯合創始人高海強,今天下午要分享的主題是「你『鏈上』的文件確實被存了嗎」。以下是目錄,今天要分享的內容分為五個部分:

1.背景介紹

2.PDP方案及問題

3.基於Bitcoin的持有性證明

4.副本複製,時間證明

5.總結


1.背景介紹

據估計,到2020年時,全球聯網設備的數量將超過200億台,它們將產生海量數據,隨之而來的,是要對這些數據進行管理、存儲和檢索。而當下,全球範圍內的中心化資料庫出現了嚴重的數據泄露。企業對數據的依賴導致海量數據被存儲在易受攻擊的中心化資料庫,構成了前所未見的巨大風險。

去中心化存儲將集合區塊鏈技術的最佳功能,滿足存儲大量數據的實際需求。Lambda項目致力於為區塊鏈和去中心化應用提供一個數據存儲基礎設施,在此基礎設施平台之上,提供去中心化的雲資料庫存儲和訪問能力,並且,Lambda基於水平可擴展性和分片技術,提供了高速的交易能力。

我先說一下Lambda的系統構成,LambdaChain連接了存儲礦工、用戶和檢索礦工,鏈上會有一個去中心化的交易。

基本的流程是:

存儲礦工會註冊到區塊鏈網路中,然後變成真正的存儲礦工。有需求的存儲用戶,也會在鏈上進行登記,通過market達成交易,用戶就能將數據上傳給存儲礦工。LambdaChain將追蹤存儲訂單,包括訂單登記、定期結算等等。

今天要講的重點內容是存儲礦工和LambdaChain之間的Post(證明),這是保證去中心化存儲最核心的技術之一。


2.PDP方案及問題

首先要講的是數據持有性證明(PDP),這個技術早在10年前就被提出了:

在雲存儲平台中,用戶將數據以外包的方式存放在雲存儲系統中。在這種模式下,用戶與雲存儲服務提供商之間的關係,從「伺服器-客戶端」演變成為「商家-顧客」的關係。

從服務方來看,如果沒有相應的檢測和監督機制,出於規避商業或法律法規風險的考慮,雲存儲服務提供商在自身出現問題,導致數據丟失的時候會選擇隱瞞不報,或推卸應付的責任。

從使用方來看,用戶必須隨時知道自己的數據是否仍然有效地保存在雲存儲平台中,以及自己是否可以隨時隨地獲取該數據。只有當存儲服務商對用戶提供數據是否有效存在、能否成功獲取的驗證方法,並不斷提高服務水平,雲存儲才能夠獲得廣泛的應用。

為此,科研人員提出數據持有性證明的問題,研究如何通過高置信度的技術手段,保證存儲服務商按照服務契約,維護數據的可用性和完整性。

我們現在使用的雲存儲服務,大多數都是以其品牌做背書,比如阿里雲。如果要做去中心化存儲,那就意味著沒有中心化機構,也就是說,存儲礦工是個不被信任的實體。LambdaChain連接的就是大量不被信任的礦工,然後為用戶提供可靠的服務。

去中心化存儲的核心是數據的完整性證明。其實,數據完整性驗證機制根據是否對數據文件採用了容錯預處理分為數據持有性證明PDP機制(Provable Data Posesion,PDP)和數據可恢復證明POR機制(Proofs of Retrievability,POR)。

數據持有性證明就是驗證不可信的存儲伺服器是否正確地持有(保存)數據,避免存儲服務提供者刪除或篡改數據。目前的研究工作主要集中在可證明數據持有(Provable Data Posesion,PDP)方案和可恢復方案(Proofs of Retrievability,POR)。

PDP和POR方案的主要區別在於:

PDP方案可檢測到存儲數據是否完整,但無法確保數據可恢復性;POR方案保證了存儲數據的可恢復性。事實上,大部分的PDP方案只要加入糾刪/錯編碼就可以成為一個POR方案。

今天主要講PDP機制,然後我們來看數據持有性證明模型

「挑戰-應答」:

將數據託管給雲存儲伺服器後,任何時候都可以向伺服器發起挑戰,詢問文件是否還完好地存放在伺服器上。用戶可以只詢問部分數據塊的完整性,以一種抽查的方式提高效率。

伺服器不能通過返回整個目標文件或返回被抽查的所有數據塊來證明其完整性,伺服器必須根據用戶的挑戰,通過GenProof返回一個簡短的數據持有證明。用戶接收到這個證明後,通過CheckProof來檢驗該證明的正確性,從而確信數據是完好保存於伺服器的。

數據持有性證明方案分類:

基於BLS簽名的PDP方案實例:

如果把PDP方案引入到去中心化存儲中,系統會面臨什麼樣的實際問題呢?主要有以下六個問題:

(1)Challenge隨機挑戰信息的生成依賴於TPA(Third Party Auditor,第三方審計人),這個隨機挑戰值是否安全。

(2)為了更高的檢測率,對多塊數據生成隨機挑戰,大大增加了發起挑戰的通信複雜度。

(3)互動式的挑戰要求必須為強同步網路,交互次數過多造成系統的網路負載增加。

(4)存儲礦工保存大量訂單,如果每次挑戰針對一個文件,挑戰數量會嚴重影響系統的負載。

(5)如果一份數據以多副本方式保存,如何解決女巫攻擊和多副本的虛假保存。

(6)PDP可以證明當前時刻保存了文件,如何保證在兩個檢測周期之間是否存儲了文件。


3.基於Bitcoin的數據持有性證明

我們來看一下一些公鏈在存儲領域有哪些突破。

比如第一個,基於Bitcoin的數據持有性證明。這個公鏈將存儲、證明、生成加入到Bitcoin尋找隨機數nounce的過程。

基於存儲證明(Proof of storage)的Permacoin是一個微軟研究院和美國馬里蘭大學聯合提出的與比特幣競爭的幣種,把存儲證明的過程變成挖礦的過程,然後變成有用的挖礦。

其特點主要在於,它的挖礦行為並非注釋純粹的工作量證明,除此之外必須加入一種有意義的擔保,即對挖礦礦工的資格進行了某種限定。這正如很多大型企業招聘明確要求必須是985本科以上學歷是一樣的。

在區塊鏈中,大部分的共識演算法,無論是 POW、POS,或是由他們衍生出來的 DPOS,都需要選出一堆或者一個節點來參與共識或者打包區塊,這個過程雖然會有持幣情況、設備配置、信譽等各種因素影響,但必須是隨機的、無法被預測的。這時候就可能會用到隨機演算法。

很多新型的共識演算法都用到了VRF(可驗證隨機函數),都是為了找到隨機而又安全地抽取出塊節點。

VRF 的目的就是要生成一個真正隨機而且無法被預測的值。在區塊鏈選出塊節點的過程中,為了保證安全,隨機是一個基本要求。不過,區塊鏈選節點不單純是隨機就 OK 的,還要考慮到攻擊成本等,所以共識機制往往加入算力和持幣權益等影響因素,以增加攻擊者的攻擊成本。如果單純使用隨機演算法,就很容易受到女巫攻擊,攻擊者可以廉價找大量的傀儡機(肉雞)來增加自己抽中的概率。

理解VRF之前,需要先理解帶秘鑰的哈希函數,和傳統的哈希函數不同,帶秘鑰的哈希函數在計算HASH數值的時候引入了一個不公開的秘鑰,這樣為從明文到HASH數值計算之間添加了一定的難度,這個難度就是由秘鑰引入的。我們簡單的定義一個帶秘鑰的HASH函數為如下的形式:

hash_value=HASH(pri_key, message)

那麼當我們擁有了計算出來的hash_value和數據message,我們需要知道pri_key才可以驗證hash_value是否由message通過HASH函數生成。一般我們知道秘鑰pri_key對於我們信息安全的重要性。

因此現在引出來如下的問題:

·對外只暴露pri_key對應的pub_key

·在不暴露pri_key的情況下,驗證hash_value和message之間是匹配的。

為了實現上面的目的,於是就有了可驗證隨機函數VRF,現在我們一步一步看其實如何工作的:

step 1 : 生成一對公私鑰,分別為pri_key和pub_key

step 2 :計算hash_value=VRF_HASH(pri_key, message)

step 3 :計算proof_value=VRF_PROOF(pri_key, message)

step 4 : 現在將hash_value和proof_value提供給驗證者

step 5 : 驗證者拿到hash_value和proof_value計算hash_value=VRF_P2H(proof_value)

step 6 : 如果step5成功,則驗證者計算VRF_VERIFY(pub_key, message, proof)

step 7 : 如果step6返回true則表示驗證通過,否則驗證失敗

梳理一下,我們可以這樣理解,首先驗證proof是否是由message生成的,然後驗證proof是否可以就散出hash_value,這樣我們就可以推理出hash_value是否由message生成,並且能找到過程中proof是否出現問題。

4.副本複製,時間證明

扇區是指存儲礦工特定的存儲空間,用來衡量有效存儲以及提交存儲證明的單位空間,當存儲礦工存滿(可能沒存滿也可以密封,但是應該會浪費部分的存儲空間)一個扇區的數據後才運行扇區密封,密封后提交複製證明,這樣才會形成有效存儲。

「女巫攻擊」的名字由Brian Zill建議,來源是70年代的一部叫做《Sybil》的美國電影。片中的女主角人格混亂,扮演著16個角色。

女巫攻擊,即在對等網路中,單一節點具有多個身份標識,通過控制系統的大部分節點來削弱冗餘備份的作用。

解決方案是:PoRep(Proof-of-Replication,複製證明)

上面是filecoin白皮書的內容,和Lambda基本一致。,PoRep:新的 PoS(Proof-of-Storage),PoRep可以保證每份數據的存儲都是獨立的。PoRep必須能夠防範以下三種常見的攻擊方式:女巫攻擊,外源攻擊和生成攻擊,他們的共同特點是攻擊礦工實際存儲的數據大小要比聲稱存儲的數據小,這樣攻擊礦工就能獲得本不該他獲得的報酬。

外部數據源攻擊(Outsourcing Attack):當攻擊者礦工收到檢驗者要求提供數據D的證明的時候,攻擊者礦工從別的礦工那裡生成證明,證明自己一直存儲了數據D,而實際上沒有存儲,攻擊成功

生成攻擊(Generation Attack):攻擊者A可以使用某種方式生成數據D,當檢驗者驗證的時候,攻擊者A就可以重新生成數據D來完成存儲證明,攻擊成功。

PDP是按周期來檢測的,如果是在周期之間,該如何保證其安全呢?

時空證明(Proof-of-Spacetime,PoSt):時空證明,礦工證明自己花費了spacetime資源,即:一定時間內的存儲空間的使用,PoSt是基於PoReps實現的。

時空證明提出了證明鏈的數據結構,證明鏈把一些的提問和證明鏈接起來形成。在證明鏈的基礎上添加上時間段,這樣就得到了一段時間內的礦工存儲數據的證明,這就是時空證明,可以證明在該段時間內礦工存儲了特定的數據,並且利用時間戳錨定這些證明鏈,這樣即使驗證者不在線,也能夠在將來去驗證礦工在該段時間內生成了證明鏈。

我覺得我們需要引入VDF(可驗證延遲函數)演算法。VDF是一些需要一定量的連續計算來進行求值的函數,但是一旦找到了解決方案,任何人都可以很容易地驗證該方案的正確性。

我們可以將VDF看成對偽隨機數生成器的輸出進行時間延遲,這種延遲可以阻止惡意行為對偽隨機數生成器的輸出造成影響,因為在任何人完成對VDF的計算之前,所有的輸入都將確定下來。

在選出領導者方面,VDF可以在很大程度上對可驗證隨機函數(verifiable random functions)加以改善。基於VDF只需通過任何一個誠實的參與者便可以選出領導者,而無需要求大多數參與者都是誠實的。

這一方案還將提高系統的魯棒性,因為即使再多的並行計算(parallelism)也無法對VDF計算進行加速,並且任何非惡意參與者都可以輕易地驗證其他人的VDF輸出的正確性。

5.總結


海報總覽:


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 巴比特資訊 的精彩文章:

昨日ETH流入交易所數較前日減少63.25%
韓國金融監管機構或將調查區塊鏈公司的ICO活動

TAG:巴比特資訊 |