許宗蓮,王崇宇,朱曉明,朱宇坤,陳瑞東
(1.電子科技大學,四川 成都 611731;2.中國電子科技集團公司第五十四研究所,河北 石家莊 050081)
區塊鏈技術[1]經過十多年的發展,在應用場景與實現功能上都得到了極大的擴展與完善,其去中心化的信任機制挑戰了傳統的第三方中心機構在網絡系統中的地位,為用戶提供了一種新的網絡安全保障方案。分布式存儲是區塊鏈的本質特征,區塊鏈系統內全部節點都存儲和維護同一份完全相同的賬本數據,這一點導致了大量的數據存儲冗余和計算冗余,造成不必要的資源浪費和成本開銷,影響了區塊鏈在大規模數據業務環境下的應用擴展。此外,區塊鏈數據混合式存儲也面臨數據機密性、數據完整性等方面的安全挑戰。區塊鏈節點都存儲著完整的鏈上數據副本,若不對鏈上數據進行加密處理,其余用戶可輕易獲取他人數據,嚴重危害用戶的個人隱私。此外,將數據存儲到鏈下,存儲安全性、數據的可獲得性、完整性、機密性都應是重點關注的問題,以避免數據的泄露、篡改與缺失。
針對上述問題,近年來研究人員將加密技術應用到區塊鏈外包存儲架構中,針對外包數據驗證[2-3]、數據訪問控制[4-6]、加密方案安全性[7]以及用戶隱私保護[8]等問題,研究基于區塊鏈的加密數據搜索方案與數據的訪問控制策略,減小不可靠的外包服務器可能帶來的安全威脅。
目前的研究成果各有側重,單一特點的加密技術應用不足以解決區塊鏈外包存儲所面臨的安全威脅。本文提出了一種面向大規模數據業務的區塊鏈安全存儲技術,結合多種加密技術,同時解決區塊鏈外包存儲技術面臨的安全問題,實現數據的加密存儲、加密搜索與訪問控制。
區塊鏈技術的設計理念打破了傳統網絡結構中必須依賴中心機構節點的觀念,為對等參與者實現業務平等溝通,也為保障數據可信可靠共享提供了新的解決方案。
顧名思義,區塊鏈的數據結構是以區塊為數據基本存儲單位并依次按順序鏈接構成,內部節點身份對等,根據共識機制設定的規則產生并發送新區塊,使區塊鏈具有不可篡改、共同維護、點對點通信的特點。因此區塊鏈的早期應用是作為完全同步的分布式數據庫,為加密貨幣系統記錄重要的交易數據。隨著區塊鏈技術的發展與演變,智能合約被引入該系統中,成為用戶擴展區塊鏈功能的關鍵技術。
在區塊鏈平臺上編譯執行的程序被稱為智能合約,具有自動執行、不可修改的特點。合約程序一旦上傳至鏈上,程序代碼便不能再修改,只能按照預先編寫設計的程序流程運行計算,只要區塊鏈系統中各個節點的輸入狀態相同,執行程序一致,運行結果就能保持不變,體現了各個節點的一致性與同步性。以太坊[9]是目前最受歡迎的區塊鏈平臺,智能合約運行在以太坊虛擬機(Ethereum Virtual Machine,EVM)上,極大地避免了程序運行錯誤、崩潰等意外情況對系統造成的不利影響。
通過智能合約實現數據檢索方案,存儲數據與執行程序一經上傳不可篡改,能夠有效避免用戶、檢索節點與外包節點等參與方的欺騙行為,確保數據存儲及檢索過程的安全可靠。如Li等人[10]提出一種基于區塊鏈的SSE方案,能夠自動檢查搜索結果的正確性,維護數據檢索方與數據提供方的公平性;Huang等人[11]提出了一種基于區塊鏈的數據共享方案,鼓勵用戶共享數據,并提供用戶自定義功能,定義可訪問屬性策略。Guo等人[8]采用前向安全的加密方案,利用區塊鏈存儲外包數據信息,驗證加密檢索結果的正確性。因此,本文通過智能合約實現加密方案,使區塊鏈作為數據共享平臺,確保參與各方的公平信任。
區塊鏈上任意節點都能夠獲取完整的區塊鏈數據,明文存儲的方式無法保證數據的機密性,泄露用戶隱私。因此,研究者引入訪問控制與數據加密技術保護數據安全,防止無授權的數據訪問,避免隱私信息泄露。
利用可搜索加密技術實現鏈上數據加密及密文搜索是當前常見的一種解決方案。可搜索加密搜索的對象是加密密文,因此需要事先選擇搜索關鍵詞,加密生成查詢目標密文。常見的可搜索加密方案包括對稱可搜索加密(Symmetric Searchable Encryption,SSE)[12]與公鑰可搜索加密(Public Key Encryption with Keywords Search,PEKS)[13]等。在構建鏈上可搜索加密方案時,研究人員將關注點放在加密搜索安全性及性能上的提升,區塊鏈僅僅作為方案實現的平臺,提供可信的數據存儲及檢索功能。如,杜瑞忠等人[7]提出一種基于區塊鏈的公鑰可搜索加密方案,該方案通過智能合約檢索數據內容,防止關鍵詞猜測攻擊,限制數據發送時的惡意行為;牛淑芬等人[3]研究了適用于區塊鏈的支持多關鍵詞檢索的可搜索加密方案,將加密索引與數據以交易的形式存儲到區塊鏈上,解決了服務器不誠實檢索的問題;李涵[14]在區塊鏈P2P存儲系統上,使用改進的對稱可搜索加密實現對存儲數據索引的加密搜索,在提供搜索數據動態更新功能的同時,保證了搜索方案的前向安全性。此類方案采用一般的加密搜索方案,不能對檢索用戶進行分類與識別,擁有檢索令牌的用戶可獲得該令牌能夠檢索的所有結果,缺乏對用戶身份的訪問控制,不利于數據的安全共享。
屬性加密方案(Attribute-based Encryption,ABE)被用于實現鏈上數據的訪問控制與隱私保護。屬性加密方案中,只有當用戶私鑰與密文關聯的屬性與訪問結構符合時,才能夠解密密文。由于加密策略不同,屬性加密具有兩種類型,分別是密鑰策略屬性加密方案(Key-Policy ABE,KP-ABE)[15]和密文策略屬性加密方案(ciphertext-policy ABE,CP-ABE)[16]。前者密文與屬性關聯,私鑰與訪問結構關聯;后者密文與訪問結構關聯,私鑰與屬性關聯。不論哪種加密策略,都可以實現對數據的訪問控制。如,劉彥松等人[5]在構建區塊鏈的鏈上數據安全共享體系時,采用屬性加密與同態加密計算技術,保障了數據共享過程中的數據安全與用戶隱私。汪金苗等人[6]則關注到屬性加密方案中單一授權中心的權限集中問題,基于區塊鏈系統分布式節點身份對等的特點,提出了基于多屬性權威屬性加密的區塊鏈隱私保護與訪問控制方法,將多授權屬性中心分散到區塊鏈共識節點上,解密條件需要從節點中獲取完整的私鑰構件才能得到解密私鑰,增強了方案的抗共謀攻擊能力。此外,屬性加密方案也被用于密文搜索。康晉華[4]提出了一個具有關鍵詞搜索性質的CP-ABE方案,屬性符合訪問結構之后,再進行關鍵詞檢索。分析上述研究成果,考慮到屬性加密所需的計算開銷較大,在加密檢索過程中使用屬性加密將帶來較大的負擔,因此,為了增加訪問控制功能,只將屬性加密技術應用于檢索結果的加密中,并不對檢索令牌進行屬性加密,盡量避免增加檢索開銷。
本文提出一種基于區塊鏈的鏈上鏈下混合式存儲架構,鏈下存儲原始數據,減小鏈上存儲數據規模,降低區塊鏈節點的資源浪費和存儲需求。混合式存儲架構如圖1所示,可分為用戶層、應用層、區塊鏈層和外包存儲層。
用戶層主要包括數據擁有者、數據使用者和密鑰生成中心。
應用層為用戶提供數據服務、密鑰服務、身份認證服務,用戶向密鑰生成中心請求密鑰,通過身份認證體系生成可驗證的用戶身份,用戶在應用層實現數據加解密及驗證功能,并進行鏈上的鏈下數據存儲與數據查詢功能。
區塊鏈層包括API接口、分布式賬本、智能合約引擎與共識算法等組成部分,分布式賬本存儲加密索引數據,智能合約引擎用于編譯、執行智能合約,共識算法保持和維護區塊鏈數據的一致性。
外包存儲層用于存儲大規模數據,可以是數據庫、星際文件系統(InterPlanetary File System,IPFS)和云存儲服務器等。

圖1 區塊鏈混合式存儲架構Fig.1 Blockchain hybrid storage architecture
基于上述存儲架構,本文選擇云服務器作為外包存儲方式,采用對稱加密、PEKS以及CPABE三種加密方案分別對原始數據、搜索關鍵詞以及原始數據索引進行加密,構建了一個基于區塊鏈的數據安全存儲方案,確保數據外包存儲與鏈上存儲的安全性與機密性。該方案包括5個實體:數據擁有者(Data Owner ,DO)、數據使用者(Data User, DU)、區塊鏈(blockchain,BC)、云服務提供商(Cloud Service Provider,CSP)以及密鑰生成中心(Key Generation Center,KGC)。
本方案中,搜索關鍵詞與原始數據索引分開加密,比只使用可搜索加密方式的方案增加了訪問控制的能力,比只使用屬性加密的方式降低了屬性加密的開銷。采用PEKS避免密鑰泄露給第三方,降低密文猜測攻擊的風險;采用CPABE數據擁有者可根據個人需求設計訪問結構,更加靈活方便。對原始文件進行簽名,可用于驗證云服務器等外包存儲設備返回的文件是否一致,避免偽造、修改等行為。

圖2 區塊鏈安全存儲方案Fig.2 Blockchain secure storage solution
密鑰生成中心是一個可靠安全的第三方平臺,為數據擁有者提供屬性加密與公鑰可搜索加密的密鑰參數。在存儲數據之前,DO首先向密鑰生成中心請求PEKS的公鑰PKSE和私鑰SKSE,CPABE的公開參數PK和主密鑰MK。數據加密存儲的方案如下所示:
① DO生成對稱加密密鑰key,使用對稱加密算法DES加密原始數據file,得到密文CTfile←EncryptDES(file,key);
② DO將密文CTfile上傳至CSP,CSP返回密文存儲位置location;
③ DO根據獲得的主密鑰MK構造訪問結構A,使用CPABE加密密文存儲位置location與密鑰key,得到文件索引密文CTindex←EncryptABE(PK,A,key,location);
④ DO從原始數據中選擇若干個搜索關鍵詞組W={w1,…,wn},其中n為關鍵詞個數,采用PEKS加密關鍵詞組,得到關鍵詞密文CTkeyword←EncryptPEKS(PKSE,W);
DU在檢索和解密之前,需要從密鑰生成中心獲得PEKS的私鑰SKSE,以及CPABE分配給DU的屬性解密私鑰SKABEDU。數據檢索下載的方案如下所示:
① DU生成關鍵詞組W′={w′1,…,w′m,使用解密私鑰計算陷門T′W←Trapdroor(SKSE,W′),并發送至區塊鏈;
② 區塊鏈查詢鏈上存儲的關鍵詞密文,通過Test(PKSE,CTkeyword,T′W)判斷是否檢索成功,將檢索到的關鍵詞密文CTkeyword對應的文件索引密文CTindex與文件簽名sigDO(file)返回給DU;
③ DU使用私鑰SKABE驗證是否符合文件索引密文CTindex的訪問結構,符合條件則解密得到原始數據密文的密鑰與存儲位置DecryptABE(SKABEDU,CTindex)→key,location;
④ 根據location向CSP請求原始數據密文CTfile′,然后解密得到原始數據文件file′=DecryptDES(key,CTfile′),再計算解密文件的簽名與鏈上存儲的文件簽名是否一致,如果相等則說明獲得的文件就是目標文件。
在本方案中,結合DES、PEKS、CPABE等多種加密技術與數字簽名技術,實現了區塊鏈大規模數據的安全存儲,其安全性保障體現在以下幾點。
(1) 數據機密性
鏈上鏈下存儲的數據都是加密或處理過的密文數據,如原始文件密文、關鍵詞密文、數據索引密文與文件簽名等。普通用戶即使獲取到密文數據,在沒有密鑰的情況下,仍然不能讀出相應的明文信息。在加密搜索過程中,查詢者將使用私鑰加密的關鍵詞與驗證使用的公鑰發送給區塊鏈節點,節點也不能知道關鍵詞明文信息。因此,保護了數據機密性。
分離立交橋梁工程是高速公路重要組成部分,由于其規模性、復雜性常常要面臨許多難以預測的安全風險[1],這通常會導致施工期間人身傷亡事故的發生.因此,對分離立交橋梁工程施工風險進行分析就顯得十分重要[2].
(2) 數據完整性
在本方案中,數據完整性體現在兩方面:其一是區塊鏈的數據完整性,由區塊鏈共識機制實現,惡意用戶不能隨意修改鏈上存儲的數據;其二是原始數據完整性校驗,依托鏈上數據進行。云服務器等外包存儲服務并不是完全可靠的,可能將錯誤文件或者修改過的文件返回給用戶,用戶可通過鏈上存儲的文件簽名驗證返回文件的完整性。
(3) 訪問控制
CPABE的訪問策略由數據擁有者決定。將訪問策略與生成的密文關聯,密文存儲上鏈后,查詢者首先要通過可搜索加密查詢得到該密文,再驗證個人屬性是否符合密文的訪問結構,屬性由可信的第三方平臺密鑰生成中心分配,或者由數據擁有者分配,符合訪問結構時密文才能夠解密成功。
本文在操作系統為Ubuntu 18.04.3 LTS,硬件環境為Intel(R) Xeon(R) Gold 5115 CPU@2.40 GHz,內存16 GB的實驗環境上進行實驗。使用python語言,基于Crypto、PBC函數庫與CPABE,構建加密函數方案,測試方案性能。
本文提出設計方案的特點在于結合多種加密方案,分別實現加密搜索、訪問控制與隱私保護的功能,其加密的主要開銷也體現在3次加密過程中。因此在本文的性能測試方案以測試3種加密方案性能為主,總的加解密開銷僅需要對3種時間進行線性疊加即可。本文分別使用DES加密原始文件、PEKS加密搜索關鍵詞、CPABE加密原始文件密文索引及密鑰。其中,DES加密性能由原始文件大小決定,文件越大加密時間越長。因此在測試過程中,以10 Mbit為步長,從10~50 Mbit選擇5個文件作為加密文件參與測試;PEKS加密搜索性能與關鍵詞數量有關,關鍵詞個數越多所需時間越長,以10個為步長,從10~100選擇關鍵詞個數用于測試;CPABE加密內容,格式確定長度有限,不會影響到加密所需時間,但是加密選取訪問結構與解密所用的屬性個數對性能影響較大,同樣以10個為步長,從10~50,確定5個屬性個數。加密時間通過多次測量求平均值的方式得到。
圖3~圖5分別是對上述3種加密方案的性能測試結果,分別測試了文件大小、關鍵詞個數以及屬性個數對加密方案的影響。可以看出,加密方案性能與上述3個條件成正相關關系。其中,對加密方案性能影響較大的是原始文件大小。

圖3 DES加密和解密時間Fig.3 Encryption and decryption time of DES

圖4 PEKS加密與陷門生成時間Fig.4 Encryption and trapdoor generation time of PEKS

圖5 CPABE加密與解密時間Fig.5 Encryption and decryption time of CPABE
在本次實驗中,盡管DES加密方式計算開銷相對較小,但是所需加密文件大小遠遠大于PEKS與CPABE加密方案,因此DES加解密所需時間顯著超過PEKS與CPABE加密方案所需的時間,這一特殊設計在于模擬實際應用場景下,外包數據較大不便于存儲到區塊鏈上的情況,其索引大小與關鍵詞大小遠小于原始數據。在PEKS和CPABE的測試結果中,雖然隨著關鍵詞和屬性個數增加,所需時間增加,但是在數據量較小的情況下,時間開銷是可接受的。上述測試結果說明,該加密方案是可行的。
本文提出了一種面向大規模數據業務的區塊鏈安全存儲架構及相應的加密方案,使用云存儲服務器拓展區塊鏈的存儲能力,設計并提出了鏈上鏈下混合式存儲的基本架構及其工作流程;針對鏈上數據信息泄露及外包服務器不可信任的問題,結合對稱加密、可搜索加密、屬性加密技術,構造了一個區塊鏈的安全存儲技術的實現方案,實現鏈上數據加密檢索、訪問控制、數據驗證、隱私保護等多種功能。本方案是一個相對通用的加密框架,內部相應的加密模塊優化改進后同樣適用。因此,其安全性及性能完全依賴于采用的對稱加密、可搜索加密、屬性加密等加密模塊的安全性與性能,其在前后向隱私、加密檢索效率與功能等方面,仍有很大的提升空間。