張 亮,劉百祥
(1.復旦大學計算機科學技術學院上海市智能信息處理重點實驗室,上海 200433;2.海南大學 網絡空間安全學院(密碼學院),海口 570228;3.上海區塊鏈工程技術研究中心,上海 200433;4.復旦大學義烏研究院,浙江 義烏 322000)
區塊鏈以經濟金融學、密碼學、博弈論和計算機科學為支撐[1],近年來受到科技界和金融界的廣泛關注,我國也將區塊鏈列為一項互聯網新型基礎建設設施。早期的區塊鏈系統僅采用密碼學中的簽名驗簽技術、哈希算法和一定的經濟激勵實現去中心化的數字貨幣功能。本質上,區塊鏈是一個分布式的賬本,即由多人共同對數據進行維護,保證數據在分布式場景下的一致性和正確性。早在1982 年,LAMPOR 等[2]就提出了分布式系統的共識問題,即拜占庭容錯(Byzantine Fault Tolerance,BFT)協議。與最早的區塊鏈(比特幣[3])不同,從技術角度,拜占庭容錯協議沒有考慮經濟刺激因素;從功能角度,拜占庭容錯協議沒有考慮交易的往來,因此沒有形成一套類似比特幣的數字貨幣系統;從規模角度,公有區塊鏈允許參與者自由進出,而拜占庭容錯協議具有準入門檻限制;從系統參與者角度,區塊鏈和拜占庭容錯協議均是多方協同合作,在無第三方權威和允許一定量惡意節點的前提下實現誠實參與者間的共識。
區塊鏈的發展使得更多學者發現了區塊鏈與拜占庭容錯系統的相同點,使得兩者的相關研究井噴式發展。秘密分享(Secret Sharing,SS)技術[4]在拜占庭容錯系統的發展史上占據重要地位。秘密分享是指分發者將秘密拆分成多個份額并分別發送給分布式場景下的多個份額接收者(即份額持有者),當且僅當超過一定數量的份額持有者合作才能恢復出分發者的秘密。此后,可驗證秘密分享(Verifiable SS,VSS)[5]和公開可驗證秘密分享(Publicly VSS,PVSS)[6]技術相繼被提出。
秘密分享技術的分布式和容錯性特點使其在數據可用性和數據隱私領域得到廣泛引用,而可驗證性進一步使得數據能夠不被篡改,從而保證了數據完整性。因此,可驗證秘密分享技術的研究是數據安全領域的核心之一。通過合理的設計和應用,秘密分享技術可以實現無中心的多方協作與多方計算。秘密分享技術涵蓋了信息安全的三要素——數據機密性、數據完整性和數據可用性,即C.I.A.。
區塊鏈也是一種安全多方計算(Secure Multi-Party Computation,SMPC)系統。區塊鏈與秘密分享技術的結合,使得許多基于密碼學的應用能夠快速得以實施。區塊鏈在共識的達成、數據的存儲和智能合約中均可以與秘密分享技術相結合,從而在提升區塊鏈穩定性和效率的同時,豐富區塊鏈的功能,使得更多基于密碼學的產品落地。這兩者的結合能使一些經典的應用場景得到更高效和便利的實現,如電子投票[7]、密鑰管理[8]、數據恢復[9]等。
本文介紹秘密分享與區塊鏈的融合研究,從共識層、合約層和存儲層角度,結合秘密分享技術進行綜述。雖然區塊鏈近年來得到了迅速發展,但其在擴容性、共識速度、應用范圍和存儲冗余度等性能指標上仍存在不足。本文通過介紹秘密分享技術在區塊鏈領域中的應用和融合,為區塊鏈的優化和發展提供新的視角和思路。
在秘密分享協議中,n表示參與者個數,t表示門限值,0 秘密分享(SS)協議要求分發者誠實可信??沈炞C秘密分享協議在份額分發算法中添加承諾值,使得份額持有者可以根據份額和承諾值判定分發者的誠實性。相對于秘密分享,可驗證秘密分享使得份額持有者可以發現秘密分發者是否向其發送了偽造的份額值。 在可驗證秘密分享(VSS)協議中,份額是高度隱私信息,因此需要使用安全信道傳輸份額。為了能夠在公開信道上傳輸份額,并且同時能被任何第三方驗證,公開可驗證秘密分享(Public VSS,PVSS)協議被提出和實現。在PVSS 協議中,份額使用份額持有者的公鑰加密保護得到。通過添加非交互的零知識(Non-Interactive Zero-Knowledge,NIZK)證明,加密后的份額能在公開環境中被任何人驗證其正確性。 圖1 概括了秘密分享和可驗證秘密分享在數據安全領域所具備的功能特性[10]。這些功能特性使得秘密分享技術成為構建安全多方計算協議的重要基礎原語,也使得秘密分享與區塊鏈的結合成為可能。 圖1 (可驗證)秘密分享在數據安全領域的功能特性Fig.1 Function characteristics of(verifiable)secret sharing in the field of data security 從技術棧角度,區塊鏈系統的構建可以劃分為存儲層、網絡層、共識層、智能合約層、應用層等5 個層級[1]:存儲層采用合適的數據結構或數據庫對交易、事務和區塊進行高效的存儲管理;網絡層采用點對點網絡通信協議實現節點間的數據傳輸,其中允許出現拜占庭節點的惡意行為;共識層采用分布式共識算法和激勵機制,實現拜占庭容錯能力并解決分布式一致性問題;智能合約層基于分布式共識下的合約運行環境,提供高級語言編譯和運行接口以及相關的程序編譯、執行環境;應用層提供用戶可編程接口,使得技術人員能夠簡便自主地實現智能合約代碼。 拜占庭容錯(BFT)是指分布式系統具有容錯性的特點,其起源于分布式系統中一個著名難題——拜占庭將軍問題。構建拜占庭容錯系統的難點在于,在存在惡意參與者的情況下,形成正確的共識困難度較高,并且需要同時滿足安全性和活性:安全性是指所有誠實的參與者在所有決策中總是得到一致的共識結果;活性是指共識最終總是能達成,不會被惡意參與者中斷。 安全多方計算(SMPC)[11]是指在無可信第三方的情況下,如何安全地將不同參與者手中的數值作為輸入,計算一個函數值的問題。區塊鏈常被看作是一種安全多方計算協議或系統,而秘密分享通常作為安全多方計算的一種密碼原語。秘密分享協議可以歸納為一組密碼原語算法,協議中的秘密持有者通過網絡分發份額,最后份額持有者通過網絡協商達成份額是否分發成功的共識。區塊鏈是一種遵循特定協議,具備存儲、計算和可編程能力并且還在持續發展的系統。區塊鏈系統中對等節點通過構建并廣播消息,然后對歷史數據在全網達成一致性的共識。 秘密分享協議和區塊鏈系統都具有多方性、容錯性、分布式存儲,以及借助網絡協商達成共識的特性。結合文獻[12]對安全多方計算和區塊鏈技術的對比,本文進一步對比了(公開)(可驗證)秘密分享((P)(V)SS)協議、安全多方計算和區塊鏈技術,如表1 所示,從中可以看出,秘密分享技術在安全多方計算和區塊鏈中均具有重要作用。 表1 秘密分享、安全多方計算與區塊鏈的對比Table 1 Comparison among(P)(V)SS,SMPC and blockchain 比特幣[3]使用工作量證明(Proof of Power,PoW)共識算法,一次性解決了區塊鏈的多個問題:1)PoW算法解決了礦工節點和獎勵對象的問題,只有一個成功完成工作量證明的節點才能具備合法打包權和接受系統的獎勵;2)礦工的唯一性能夠有效地解決“雙花”問題,使金融系統無差錯運行;3)根據最長鏈原則,要想對區塊鏈系統進行控制,需要對歷史上所有的交易進行重新打包和重新挖礦,而這被認為在經濟上是不可行的;4)PoW 系統中的任意節點可以任意加入和退出,并且對系統中的其他節點不產生影響。 文獻[13-14]通過將PoW 共識算法提供的無爭議性和安全性與拜占庭容錯協議相關聯,從而證明區塊鏈也是一種具備拜占庭容錯性的狀態機副本模型系統。在PoW 共識算法中,當礦工節點宣布對最新區塊ak←b 的打包權時,其不僅是對最新區塊b 的聲明,也是對歷史區塊{a1,a2,…,ak?1}的再次確認。由于多個礦工在某一段時間內可能都成功地找到了PoW 要求的工作量證明,根據最長鏈原則,唯一的礦工的工作在全網形成共識,從而體現安全性。由于所有的礦工都是獨立工作的,根據PoW 算法的要求和復雜度系數調整,誠實參與者完成工作量證明并公之于眾,同時得到所有誠實節點的確認和認可,即保證活性。 區塊鏈中的PoW 算法與經典拜占庭容錯(BFT)協議有緊密聯系。表2 總結了PoW 算法和BFT 協議在實現區塊鏈共識算法時的差異。 表2 PoW 算法與BFT 協議的對比Table 2 Comparison between PoW algorithm and BFT protocol 文獻[15]指出,對拜占庭容錯共識算法的擴容研究方案包含并行處理事務、使用可信硬件、設置代理委員會、選取密碼學原語和優化通信網絡拓撲結構。近年來,越來越多的研究使用秘密分享技術優化具備拜占庭容錯性的共識算法。隨著區塊鏈的持續發展,研究者提出了非對稱拜占庭容錯共識算法[16]。非對稱拜占庭容錯共識算法起源于非對稱信任,即在分布式系統中,每個參與者根據自己已獲得的信息判斷其他參與者是否誠實可信??尚烹S機數是解決拜占庭容錯共識算法中公平問題的基礎,在此方面,文獻[16-17]使用秘密分享技術構建可信隨機源,保證了隨機數的可獲得性。 秘密分享協議和拜占庭容錯協議均具有容錯性。通常,一次秘密分享協議的運行只有單一的分發者,而拜占庭容錯協議往往要求所有節點對等。因此,秘密分享協議常作為構建拜占庭容錯協議的子步驟或子環節。許多具備拜占庭容錯特性的協議,如可驗證隨機數信標(Beacon)協議[18-19]和分布式密鑰生成DKG 協議[20],通過讓每個參與者在每個輪次中分別調用一次秘密分享協議,從而達到去中心化的目的。不同的通信信道和敵手模型對拜占庭容錯協議的效率和安全性有巨大影響,拜占庭容錯協議通常使用VSS 或PVSS 協議來驗證消息發送者的誠實性,并提升消息在協議中的恢復能力。 拜占庭容錯協議通常直接達成對某一明文的共識,而明文不能有效地保護數據的隱私。鑒于此,文獻[21]提出VSSR(VSS Recovery)協議應用到拜占庭容錯協議中,從而構建了一個私有的基于鍵值對的PBFT協議[22]。 不僅秘密分享技術可以改善具有拜占庭容錯能力的協議,具備拜占庭容錯能力的協議也可以促進秘密分享協議的研究。在秘密的份額被分享之后,隨著時間推移,多個份額被惡意節點持有的概率將增大。在惡意節點結合超過門限值的份額前,秘密持有者需要定時更新份額,只要攻擊者訪問少于設定的閾值,系統就會保持安全,使得攻擊者只有較少的時間來破壞秘密分享體制。 主動式秘密分享(Proactive Secret Sharing,PSS)[23]是對秘密分享的一種擴展,被用于加強秘密分享者秘密的安全性。在PSS 協議中,秘密份額的更新過程由份額持有者發起,每個份額持有者各自構造一個隨機的多項式,并執行秘密分享的分發過程,最后每個份額持有者更新手中的份額值。用此方法可避免攻擊者通過收集足夠的舊的份額值來恢復秘密。相對于同步情況下的PSS 協議,APSS(Asynchronous PSS)協議[24]更能抵抗DoS 攻擊和動態敵手攻擊,異步情況下的PSS 更實用和貼近真實網絡情況。雖然網絡模型更切實,但是APSS 協議[24]借助互聯網實現通信并達到網絡節點中的共識,其通信量復雜度達到了指數級別。 PoW 共識需要消耗大量電力,在此背景下,引申出了權益證明(Proof of Stake,PoS)共識算法[25]。PoS 設計思想不是通過做工作量證明,而是通過抵押權益體現對區塊鏈系統的忠誠,最后從共識算法中分得紅利。由于區塊鏈的所有規則都是公開透明的,因此如何有效地制定激勵機制顯得尤為重要。其中,為了體現公平原則,可信賴的隨機數至關重要。因為在透明機制下不能按照已知的信息來分配挖出的礦,否則所有參與者都將對系統發起攻擊,最大化自己從系統中獲取的利潤。比特幣系統通過PoW 算法和最長鏈原則解決了該問題。PoS 共識算法則是為解決耗能耗電的PoW 算法而被提出。 區塊鏈中的PoS 共識算法與Beacon 協議是一對孿生問題[25-26]。事實上,PoW 共識算法根據哈希值的隨機性來選取最終的礦工,擁有算力高的節點成為礦工的概率更高。文獻[25]指出PoS 共識算法的一個重大挑戰是設計好的方法在分布式系統中實現領導節點的公平和隨機選取。Beacon 的研究是為了防范惡意節點通過概率分析和協議模擬影響協議的公平性和隨機性,甚至破壞系統的可用性。為了實現區塊鏈系統中PoS 相關的共識,PVSS 技術得到廣泛研究和應用。 由于PVSS 技術的多方協同性和公開可驗證性,因此其經常被用于構建Beacon 協議,進而實現PoS 共識算法的核心思想。Ouroboros[25]、SCRAPE[27]、RandShare[28]、Hydrand[26]等系統均依托點對點網絡模型,使用PVSS 作為底層密碼原語技術實現Beacon 協議,這些協議均可進一步用于實現權益證明共識算法。圖2 描述了基于PVSS 協議生成Beacon 協議的一般流程,其中,每個輪次后n個參與者都會得到一個共同的公開可驗證隨機數。 圖2 基于PVSS 實現Beacon 協議的一般流程Fig.2 General procedure of Beacon protocol implementation based on PVSS 通過使用不同的(P)VSS 協議和假設不同的網絡通信模型,Ouroboros[25]、SCRAPE[27]、RandShare[28]、Hydrand[26]和Dfinity[9]實現的Beacon 協議也具有不同的性質和復雜度。對上述方法實現的Beacon 協議進行對比,如表3 所示。其中:n是系統中的節點個數;c是對系統分組后的組成員節點個數;Hydrand[26]通過在每一個輪次中選取一個領導節點,模仿同步條件下的拜占庭容錯協議過程實現Beacon 協議。通過對比可知,Hydrand[26]通信、計算和驗證復雜度較高,并且具備良好的活性/隨機性,但是,該系統假設的是同步的網絡通信模型。 表3 不同Beacon 協議的對比Table 3 Comparison among different Beacon protocols 智能合約是一段代碼,與傳統的程序代碼不同,為了體現區塊鏈的不可篡改、可追溯以及公開透明性,智能合約的代碼和數據通常是公開的。智能合約代碼運行和數據沉淀(即寫入區塊鏈)都是在區塊鏈共識之上的。從比特幣的腳本到圖靈完備執行環境,智能合約使得任意可以計算的問題都能夠得以解決??傮w而言,在無須可信第三方存在的情況下,區塊鏈的智能合約提供了兩大功能,即公開透明的存儲和計算。本節將從區塊鏈合約層和秘密分享體制中找到結合點:一方面,分析區塊鏈智能合約如何為秘密分享體制的實現帶來便捷;另一方面,發掘基于區塊鏈智能合約和秘密分享技術的應用場景。 區塊鏈的智能合約由一組代碼組成,這段代碼具有公開透明性。采用零知識證明方法可以保護合約參與者的身份信息和敏感隱私數據。 原始的秘密分享技術需要借助隱蔽安全的信道將秘密持有者生成的份額傳遞給其他人。PVSS 等技術通過對份額進行加密處理,使其可以在公開的信道上傳遞和存儲,同時保證份額在傳遞過程中的機密性。PVSS 使用了非交互的零知識證明技術用于證明被加密份額的正確性。在零知識證明中,驗證者可以將加密后的份額上傳到區塊鏈,從而使得區塊鏈能自動判斷加密后份額的正確性。智能合約提供了公開透明的存儲和計算能力,將其與PVSS 相結合,可以有效提高系統性能。 區塊鏈智能合約除了能實現PVSS 協議之外,還可以為支持公開驗證的秘密分享協議提供服務。文獻[29]使用智能合約技術實現了一種無中心的分層秘密分享(Hierarchical Secret Sharing,HSS)體制。通常份額持有者具有層級的關系,因此通過多次運行秘密分享體制,可以使秘密能夠實現多層級的管理。在HSS 體制中:一方面,智能合約承擔著可信驗證者的角色;另一方面,通過智能合約,協議能夠使用抵押來要求參與者正確地遵守協議。文獻[29]基于以太坊測試網絡驗證了其方案的可行性,并給出了以太坊Gas 消耗和算法執行時間消耗。相較于非基于區塊鏈智能合約的HSS 協議,該文協議僅需1 輪通信,同時具備可驗證性和公平性且無須可信第三方。 圖3 顯示了基于智能合約構造秘密分享協議的流程。其中:分發者在分發過程中通過智能合約實現份額的分發和驗證;份額持有者在秘密恢復過程中通過智能合約實現秘密的重建;智能合約可以提供公開驗證計算、可信存儲、激勵機制等服務。 圖3 基于智能合約實現秘密分享協議的過程Fig.3 Procedure of secret sharing protocol implementation based on smart contract 目前,區塊鏈技術已經從加密貨幣發展成為一項可編程的分布式基礎設施,區塊鏈上的程序也被稱為智能合約。秘密分享協議可以結合一些應用場景,在智能合約之中實現并應用。 傳統的電子投票系統需要依賴中心化的服務器來保證系統的完整性和安全性,然而中心化的服務器本身容易帶來很多其他的問題,如單節點故障、信息泄露、賄選問題等。文獻[30-31]均結合應用了秘密分享、同態加密和區塊鏈智能合約實現電子投票系統。HSIAO 通過初始化5 臺計票服務器,每一個投票者將投票信息分成5 份,其中任意3 份可以恢復出對應的原始值,從而避免了單節點故障問題。區塊鏈智能合約提供了公開透明的存儲和計算,使得參與者能夠對計票過程進行審計,提升了投票過程的公平性。 區塊鏈智能合約在數據保護方面存在不足,為提升智能合約的安全性和隱私性,文獻[32]開發了基于安全多方計算的智能合約平臺。該平臺包括3 個層級:合約層,計算層和群組通信層。在合約層,提供了智能合約的框架描述,包含實現流程、語言結構和語法;在計算層,通用的線性秘密分享技術被用來保護參與者的輸入和保證計算的正確性;在群組通信層,非阻塞的廣播協議基于非阻塞的消息傳遞接口和拜占庭容錯協議實現,具備異步的具有節點故障容錯的網絡通信服務。在該文研究中,秘密分享技術被用于構建安全多方計算協議,實現了群組合作中的信息隱私保護。 在醫療領域,結合使用區塊鏈智能合約和秘密分享協議的研究也廣泛流行。文獻[33]提出一種使用區塊鏈存儲和智能合約驗證計算的醫療數據共享解決方案。由于醫療數據具有極高的隱私性要求,而區塊鏈提供的是公開透明的存儲,為克服數據被竊取和監聽的困難,該方案在系統中增加了用戶和群組進行秘密分享的軟件層。 一項具體的分布式應用的實施,可以證明基于區塊鏈的智能合約技術具有可行性。然而,智能合約還可以進一步抽象成為一種無中心、可交互、可執行程序的對象。將智能合約和秘密分享相結合,對網絡安全或密碼學領域將有進一步的貢獻。 文獻[34]基于區塊鏈的智能合約提出CHURP協議,并實現了主動式的秘密分享技術,其使用非對稱二元多項式得到份額更新過程中的門限值,并使用高效的多項式承諾協議防止初始化失敗,同時表明鏈上通信、計算的高成本性,引入基于點對點網絡的鏈下通信,從而降低協議成本,提高可用性。該文附錄指出,所提協議可用于智能合約認證,即通過構建共享密鑰,使得基于智能合約即可生成門限簽名,從而提供授權服務。 文獻[35]使用基于區塊鏈智能合約的秘密分享技術實現具備“時間意識”的秘密管理方案。由于門限秘密分享和區塊鏈都具有去中心化的特性,因此該方案中“時間”不會被某一個或幾個操控而導致秘密提前泄露。區塊鏈智能合約一方面提供了高效的計算能力和公共的數據存放平臺,另一方面基于以太坊區塊鏈的代幣獎勵誠實行為和懲罰惡意行為,從而提高了系統的安全性。 文獻[36]使用區塊鏈實現公共通告欄和公開驗證者,基于DH 交換加密和VSS 協議實現分布式密鑰生成ETHDKG 協議。在ETHDKG 中,份額密文信息、爭議信息、密鑰恢復信息均通過智能合約傳遞,并且這些信息的正確性要經過智能合約的驗證。值得注意的是,ETHDKG 采用的DH 交換加密和VSS 協議并沒有構成非交互的PVSS 協議,因為該方案中加密后的份額并不能由任何第三方來檢驗,而需要等份額持有者解密后來判斷。如果份額持有者解密后發現份額有誤,可構造非交互的零知識證明來“抱怨”秘密分發者,而不泄露自己的份額值。 由于共識效率低下,對于分布式節點,獲得具備一致性、可用性的數據是困難的,因此研究者提出公共通告欄[37]的概念。公共通告欄具有活性和持久性的特點:活性是指任意惡意的用戶無法阻止誠實的用戶獲取通告欄上的信息;持久性是指公共通告欄上的信息和數據不能被惡意篡改。許多基于秘密分享的多方協議[27,38]和分布式應用[39]基于公共通告欄進行實現。通過假設公共通告欄,分布式協議可以規避共識協議的討論,并獲得較低的通信復雜度。 文獻[40]指出,在現實世界中,由于人為因素,可能出現計算不公開透明的問題,從而導致不公平現象。該文基于可信硬件和公共通告欄的技術實現安全的多方計算解決方案,其在可信硬件內執行秘密分享協議,實現了見證者解密。 在區塊鏈技術落地之前,公共通告欄通常作為一種假設。隨著近來區塊鏈的持續發展,尤其是支持通用數據存儲的區塊鏈系統,如比特幣、以太坊、IPFS(Interplanetary File System)等,使得公共通告欄技術得以實現。以比特幣為例,該區塊鏈系統即是基于點對點通信、多數節點誠實性、數字簽名技術、隨機預言機等假設實現公共通告欄。 區塊鏈又稱為分布式記賬技術。分布式存儲系統的顯著特征是將所有的數據以副本的形式分布式地存儲在不同的服務器中。因此,分布式存儲是分布式記賬的應有之意,也是共識的必要條件,更是區塊鏈數據公開透明的基石。區塊鏈中保存所有數據的節點稱為全節點。比特幣的發明者考慮到普通的個人電腦、手持設備計算能力和存儲能力有限,為這些輕量級設備設計了可以使用的客戶端,又稱為輕節點,提出了簡易支付驗證(Simple Payment Verification,SPV)技術。由于區塊鏈系統采用Merkle 樹的數據結構對交易進行管理,因此降低了交易正確性的驗證成本并提升了查詢速度,使得輕節點雖不能參與共識(即不能進行挖礦),但能夠參與交易的發起和查詢,以及交易準確性的驗證。 隨著越來越多區塊鏈事務和交易的生成,區塊鏈系統數據存儲量與日俱增。為減少區塊鏈數據的存儲量,除SPV 技術外,基于編碼技術[41-42]、分布式文件存儲系統[43]和多項式承諾技術[44]等許多相關研究被提出。本節介紹采用秘密分享技術的門限特性來降低存儲數據冗余度的研究。 文獻[45]提出了分布式存儲區塊鏈(Distributed Storage Blockchain,DSB)技術。在DSB 中,每個節點僅存儲所有數據的一部分,顯著降低了區塊鏈單節點的數據存儲量。在該方案中,區塊鏈的節點被劃分為不同的區域,每一個區域有一組對應的公私鑰對(PK,SK)。每個區域的區塊數據均用PK 加密保護,SK在區域內用秘密分享協議,由區域內的每個節點保管其中的一個份額。加密后的區塊數據使用信息分發算法(Information Dispersal Algorithm,IDA)同樣分布式地存儲在區域內的節點中。在之后的工作中,文獻[46]進一步提高了數據的完整性,同時分析了存儲消耗和數據丟失率的關系,以及數據恢復消耗和安全性的關系。為解決DSB 技術中當節點發起DoS 攻擊時會引起巨大網絡通信開銷的問題,文獻[47]提出了局部秘密分享(Local Secret Sharing,LSS)的概念。LSS 是一種層次化的秘密分享技術,圖4 體現了其中的層級關系。LSS 包含一個全局秘密和多個局部子秘密,并且由部分子秘密能夠恢復出全局秘密。LSS與HSS類似,但HSS 強調的是全局秘密的分層管理,而LSS 中局部秘密需要用于恢復子秘密。 圖4 LSS 協議的層級關系Fig.4 Hierachical relationship in LSS protocol 在文獻[45]提出的DSB 協議中,全局秘密和局部子秘密采用不同的秘密分享多項式,存儲開銷較大,而文獻[47]提出的LSS 協議僅需維護一套多項式,能夠使得密鑰存儲開銷減半,同時也優化了密鑰恢復的網絡通信開銷。LSS 是基于局部可修復碼(Locally Recoverable Code,LRC)技術實現的。在編碼理論中,通常通過添加修復碼位來校正錯誤位。在全局秘密管理中,文獻[47]使用Shamir 秘密分享協議,將份額分發給所有的參與者節點。在局部子秘密的管理中,LSS 協議對每一個區域利用LRC 技術的編碼多項式應對一個節點故障的情況。 雖然文獻[46-47]均使用秘密分享技術降低了區塊鏈存儲冗余度,但是區塊鏈中的區塊可能由數千筆交易構成,從而導致區塊也非常大,往往遠大于一個大整數。當一個區塊被切分成多個切片再進行秘密分享時,會導致需要存儲大量的中間信息。鑒于此,文獻[37]提出了使用多值秘密分享(Multi-Secret Sharing,MSS)的區塊鏈存儲優化方案。該方案先將原始的區塊鏈切片,然后采用遞歸調用Shamir 秘密分享協議的方式,重復利用秘密分享產生的中間結果,從而減少了所需的中間輔助變量,最終優化了存儲效率。 表4 對比了傳統區塊鏈[3]以及文獻[46-47]方案的單節點存儲消耗、恢復區塊時通信量和系統容錯能力。假設區塊占用空間大小不超過η,區塊頭占用空間大小不超過q(η和q均用整數表示),ρ是訪問其他子區域的額外開銷,n是總節點數,t是分區的節點數或門限值。雖然通過文獻[46-47]方案能夠對區塊鏈系統存儲帶來優化,但往往只適用于節點相對固定的區塊鏈系統,即聯盟鏈。 表4 存儲開銷、恢復區塊時通信量和容錯性的對比Table 4 Comparison of storage cost,communication traffic in block recovery and fault tolerance 將區塊鏈的分布式容錯存儲和秘密分享技術相結合,能夠提供許多信息安全所需的服務。這些服務對密碼體制的功能、云計算、物聯網等應用的效率和可用性均具有重要作用。 除了在區塊鏈本身的存儲解決方案上進行優化,區塊鏈本身也是一個分布式的存儲數據庫。一些其他區塊鏈項目,如StoreJ[48],使用區塊鏈來存放加密后的隱私數據信息,用于防止個人信息丟失,從而保護個人隱私。由于區塊鏈的透明性,StoreJ 中的節點可能通過收集和整合數據對加密的隱私數據發起密文攻擊,從而降低隱私數據的安全性。文獻[49]提出一種使用秘密分享和區塊鏈的點對點網絡在線存儲的方案,而不使用區塊鏈直接存放加密數據。該方案使用秘密分享技術,通過將秘密拆分成份額,利用點對點網絡分布式地儲存在網絡內存中,而利用區塊鏈保存那些擁有份額的節點列表。由于點對點網絡本身的異構性和變動性,區塊鏈中的列表數據會通過共識算法使得每個人的隱私數據保留在網絡中。在這樣的點對點網絡中,個人通過其ID 和密碼授權獲得個人私有數據的權限,通過區塊鏈中的節點列表得知應該向點對點網絡中的哪些節點獲取數據。 IPFS 是另一個存儲類的區塊鏈項目,主要提供解決大文件大數據的存儲方案。IPFS 同樣僅提供透明的存儲。為了保護數據的機密性和用戶的隱私,文獻[10]使用秘密分享技術、IPFS 存儲和以太坊實現了一種透明傳輸、可確權、可訪問控制的文件共享方案。在該方案中,文件所有者首先將文件上傳至IPFS 中,然后得到IPFS 返回的文件哈希值。文件所有者用智能合約記錄IPFS 中對其文件存儲的所有節點,并使用秘密分享技術將哈希值分散到上述節點中,最后將加密后的秘密份額上傳至區塊鏈中。 在云數據管理方面,文獻[50]借助區塊鏈去中心化存儲和計算的特性,將云數據的訪問控制能力部署在智能合約中,從而構建了無中心的云數據管理模式。同時,為了從云服務器上將加密云數據的密鑰和云數據分離開來,該文使用了秘密分享技術分布式地管理密鑰。但是,該方案需要加入一種新的區塊鏈節點——“主節點”來進行存儲秘密分享的密鑰。在物聯網領域,文獻[51]為了解決智慧城市中個人管理海量隱私數據的問題,提出通過區塊鏈存儲和管理云服務商的訪問權限,并使用秘密分享技術分布式地管理用戶個人隱私信息。 中心化系統由于單點共識,因而具備高吞吐率和高響應率,而去中心化系統能夠解決對等協作方之間的不信任問題并提高容錯能力。在計算機硬件條件和網絡環境均不斷優化的背景下,中心化系統的性能和效率快速增長,而去中心化系統的吞吐率由于低效的共識卻提升甚微。秘密分享協議通常是為了構建具有容錯性或者去中心化的系統,秘密分享和區塊鏈兩者獨立或關聯的研究還有諸多可以推進的探索方向。一方面,隨著秘密分享技術及其對應安全多方計算應用的介入,區塊鏈有了新的探索方向,包括基于拜占庭容錯協議的區塊鏈、基于權益證明的區塊鏈、區塊鏈存儲優化、基于區塊鏈的安全多方計算等;另一方面,由于對區塊鏈的理論支撐或應用場景的需要,秘密分享協議相關的技術有著更為細分的發展方向,包括VSS、PVSS、PSS、APSS、VSSR、LSS、MSS 等。表5 對比了秘密分享相關協議的特點和用途。 表5 秘密分享相關協議對比Table 5 Comparison of related secret sharing protocols 制約分布式或去中心化系統共識的重要原因在于協議的高復雜度,尤其在分布式節點數量快速增長的情況下。未來可從以下方面入手進行更深入的研究: 1)在分布式場景下,為了達成共識,需要考量每個節點或所有節點需要執行的計算量,即計算復雜度。由于在分布式場景中,通常還考慮了可能存在未知的惡意節點或損壞節點,因此協議的設計還包括了必要的驗證計算,驗證所花費的計算量也屬于計算復雜度。基于拜占庭容錯或PoS 的協議和共識算法通常會在每一輪共識中選取一個“領導”(leader)推進協議,leader 對各參與者傳輸值的計算復雜度及其網絡傳輸時延最終決定了平均的共識進度。此外,當傳輸值還需要進行隱私保護時,通常需要結合SS 協議,尤其是PVSS 協議。此時,由于PVSS 協議采用了NIZK 證明,因此參與者節點還需要對證明進行驗證,從而可能增加計算復雜度。 2)在分布式場景中為了達成共識,需要考量整個網絡的通信量,即通信復雜度。網絡通信內容既可以是正常的協議所需的數據,也可以是惡意節點為破壞信息系統而偽造的數據。在區塊鏈系統中,數據和塊通常是經過簽名認證過的,從而避免了DDoS 攻擊。在基于拜占庭容錯或PoS 共識的系統中,通常每個參與者節點都需要發出各自的信息以對最后的共識做出貢獻,從而使得網絡通信復雜度至少達到O(n2),并且不誠實的節點可能故意偏離協議規定,從而引起較高的網絡通信復雜度。上文討論的公共通告欄能夠在一定程度上降低協議的通信復雜度,但是高效構建公共通告欄也是一項值得繼續探究的問題。 3)為了達成某種協議的共識,節點間需要進行足夠的通信協商輪次。由于網絡有延時性,因此低輪次的網絡通信對于達成共識更具備現實價值。相對于VSS 協議,PVSS 協議數據可以采取公共通信信道并可以接受任何人的驗證,因此,PVSS 往往只需要一次性分發份額,而不需要參與解決份額相關的爭議。在基于(P)VSS 實現的DKG 協議和Beacon 協議中,通信輪次都是重要指標,而不同的DKG 協議和Beacon 協議的設計可以產生不同的區塊鏈模型和共識算法。通過對比不同的拜占庭容錯共識協議,可以看出通信輪次和網絡通信量之間通常存在權衡和折中。 4)網絡模型包括同步模型、半同步模型和異步模型,不同的通信模型假設會決定協議可能存在不同的漏洞和受到不同類型的攻擊,因此,協議也需要有相對應的處理方式。同步模型是一種較強的假設,優點是協議設計者可以借助一些其他工具(如公共通告欄),缺點是可能受到一些由于攻擊者利用網絡時延差而發起的網絡攻擊。異步或者半同步通信模型能夠更好地模擬真實的互聯網環境,但通常對應的協議需要更高的網絡通信復雜度或更多的通信輪次,甚至犧牲一部分活性或安全性。 5)可重配置性是指分布式系統中節點是否可以自由進出。比特幣系統的工作量證明不需要依賴其他節點的信息和數據,可以由節點根據歷史區塊鏈數據獨立完成,因此節點自由度高,可以自由進出?;诎菡纪ト蒎e或PoS 共識的協議通常假設固定節點數量和一定比例之內的惡意節點數量,節點間需要通過協作確定最終的共識,惡意節點加入或誠實節點離開可能使得誠實和惡意節點比例失衡,最終使得系統為惡意節點所控制,并且節點的進出本身就需要達成共識,即何種節點可以進出,何時可以進出,因此,基于拜占庭容錯或PoS 共識的協議往往缺乏可重配置性?;谥鲃邮矫孛芊窒淼膮f議致力于解決份額變化或參與節點變化,具有解決可重配置性問題的潛力。此外,Dfinity 團隊提出的公開可驗證可重新分發的秘密分享協議(Public Verifiable Resharing Scheme,PVRS)[53]也使解決可重配置性問題獲得了突破性進展。因此,PVRS 的研究也有待進一步深入,同時PSS 和PVRS 的聯系及區別也有待發掘。 6)容錯能力是指分布式系統中可以容忍的損壞和惡意節點比例以及發掘惡意行為的能力。容錯比例越高、發掘惡意行為能力越強說明容錯能力越強。由于通常會假設惡意節點具有共謀性,因此為了避免惡意節點占據壓倒性優勢,需要假定誠實節點數多于惡意節點數,可推斷出惡意節點比例通常小于1/2。SS 協議中分發者可以是惡意的,因此VSS 被提出用于解決分發者的信任問題,提升容錯能力。PVSS 協議更是允許任何人均可以驗證分發者的誠實性,使得分布式系統具備更好的公開性和透明性。 7)區塊鏈存儲優化,即基于區塊鏈信息存儲冗余度高的客觀現實,在保證安全的情況下,降低區塊鏈全網的存儲能力。本文第4 節介紹了研究人員在相關領域做出的貢獻,然而這些研究成果還沒有被應用到主流的區塊鏈系統中。存儲優化(單節點的存儲量減少)可能影響節點校驗區塊的能力和用戶訪問區塊鏈數據的便捷性。因此,如何設計兼顧存儲優化和功能完整性的區塊鏈,也是具有研究價值的課題。 8)區塊鏈共識算法[54]決定了區塊鏈應用的公信力、吞吐率、擴容能力等,而優良的共識算法應著重考慮協議復雜度、可重配置性、容錯能力、存儲優化等指標。為了獲得更優的區塊鏈共識算法,應繼續深入研究秘密分享相關協議。此外,通過使用秘密分享實現分片技術[55],對節點進行分組管理也可以提升共識效率。 區塊鏈是一種基于經濟學和密碼學的去中心化系統。區塊鏈的透明計算和存儲特性降低了信任成本,去中心化特點提升了容錯能力。而秘密分享是構建分布式系統和去中心化協議的基礎技術,融合應用秘密分享技術可使區塊鏈得到進一步發展。本文從信息安全三要素角度,指出區塊鏈系統和秘密分享技術存在高度契合,分別闡述區塊鏈、秘密分享及安全多方計算等基礎理論知識,并進一步介紹秘密分享技術與區塊鏈共識層、合約層和存儲層相結合的研究成果。在未來,許多基于秘密分享的多方協作協議均能通過區塊鏈以較低成本實現。同樣,秘密分享也能為區塊鏈技術發展帶來重要的探索方向——更多基于秘密分享的區塊鏈共識、智能合約及存儲的研究將被提出和實現。
1.2 區塊鏈系統
1.3 拜占庭容錯
1.4 安全多方計算

2 秘密分享與區塊鏈共識的融合研究
2.1 共識算法的拜占庭容錯性特點

2.2 秘密分享與拜占庭容錯協議
2.3 秘密分享對PoS 共識的貢獻


3 秘密分享與智能合約的融合研究
3.1 基于智能合約的秘密分享體制

3.2 智能合約和秘密分享結合的應用
4 秘密分享與區塊鏈存儲的融合研究
4.1 公共通告欄
4.2 區塊鏈系統存儲優化


4.3 基于區塊鏈存儲和秘密分享的服務
5 未來展望

6 結束語