張學旺,殷梓杰,馮家琦,葉財金,付 康
(1.重慶郵電大學軟件工程學院,重慶 400065;2.重慶大學微電子與通信工程學院,重慶 400044)
隨著大數據相關技術高速發展,大數據[1]相關產業對數據的需求越來越大,但數據往往被少部分人掌握,許多擁有能釋放數據價值的人往往拿不到想要的數據。面對這類問題,數據交易的出現可以打破數據孤島問題,數據的流通能夠匯聚高價值數據,滿足各類企業、高校團體等對數據的需求,提高數據價值的利用。數據交易對各類大數據產業的創新發展有著深遠的意義,大數據的價值可以通過數據交易得以釋放[2]。
但由于數據本身的特性——數據的可復制性,加上數據的價值本身就是信息,數據的信息價值可能在數據被“閱讀”時便被獲取[3],這些特性導致數據交易困難。數據拷貝成本低、維權難,企業并不愿意分享重要數據,且國內數據交易的發展現在正處于初級階段,交易模式也尚在探索之中,目前還沒有一致的標準和規范,數據交易方案需要完善,數據交易缺乏可信、可行的實施方案導致交易無法安全地進行。
目前,主流的數據交易模式為應用程序接口(Application Programming Interface,API)交易[3]和數據包交易,如表1 所示。第一種方式解決了數據交易領域中的一部分問題,例如使數據可脫敏以及在一定程度上防止數據被竊取倒賣,但這種模式只能提供部分數據,無法使用完整的數據集,不方便用戶對數據進行處理和分析;而第二種數據包交易的模式在實際交易中由于數據的特性導致數據確權難、數據資產容易流失,所以具有較大的爭議。
這些交易模式或多或少都存在著一些缺點,無法滿足現在數據供應與需求兩方之間對數據交易的要求。區塊鏈技術采用一系列密碼學算法在非信任節點之間建立信任關系,而不是依賴中心機構的信用背書,這種特殊的安全模型使得區塊鏈隱私保護不同于傳統的隱私保護。區塊鏈憑借不可篡改性以及可追溯性,使得其在數據資產交易領域能夠有所應用,區塊鏈可以構建數據資產交易的索引、幫助數據溯源以及確權。

表1 數據交易方式對比Tab.1 Comparison of data trading methods
本文以區塊鏈與可信計算為基礎,非對稱加密技術為輔,針對當前數據交易面對的困難,防止數據交易過程中造成的數據二次轉讓問題以及數據隱私問題,提出一種有效可行的數據交易方案。本文方案主要目的如下:
1)數據供應方上傳數據索引信息,通過區塊鏈存儲數據交易索引信息;
2)數據需求方購買數據,通過區塊鏈記錄數據交易過程與數據使用記錄;
3)基于可信計算技術,保證數據使用環境安全、數據不會被泄露;
4)基于可信計算技術,保證數據使用結果無法被竊取。
區塊鏈技術在中本聰的比特幣[4]熱潮下,引起了眾多研究領域的廣泛關注。區塊鏈[5-6]技術在沒有任何可信機構的維持下,使互不認識、互不信任的人之間可以進行交易。以太坊(Ethereum)區塊鏈平臺[7]的提出,首次引入智能合約,為區塊鏈提供了更多數字貨幣以外的應用場景。而隨著Linux 基金會發布Hyperledger 開源區塊鏈項目,其中Hyperledger Fabric 針對企業級商用區塊鏈進行應用設計,引入成員管理服務,為區塊鏈應用提供了良好的解決方案。
區塊鏈發展過程中也誕生了許多與數據交易相關的研究。2016 年Christidis 等[8]研究了區塊鏈與物聯網的特性,描述了區塊鏈與物聯網結合發展的前景,提出了在區塊鏈上轉移數字資產的方法以及如何利用智能合約轉移數字資產。物聯網發展的同時也會帶來海量數據,區塊鏈與物聯網有效結合可以提供更好的隱私保護[9-10]。2017 年劉敖迪等[11]從區塊鏈的基本框架、技術特征和應用領域多個方面闡述了區塊鏈基本理論和模型,總結了區塊鏈在認證技術、訪問控制技術和數據保護技術方面的研究進展。祝烈煌等[12]分析了區塊鏈技術在隱私保護方面存在的優勢與不足,描述了現有研究中針對區塊鏈隱私的攻擊方法,詳細介紹了針對區塊鏈網絡層、交易層和應用層的隱私保護機制。
2018 年盛念祖等[13]提出使用區塊鏈來解決物聯網系統中數據資產價值轉移無法高效完成等問題,通過智能合約技術保障數據的防篡改性,為物聯網設備提供全生命周期的設備數據資產化方案,消除數據交易過程中的信任問題。張弛[14]提出構建一種新型的數據資產交易體系,引入區塊鏈技術解決數據資產交易平臺緩存、復制、留存交易數據的問題,保護數據的隱私性和安全性,保障數據資產交易者的權益不被數據資產交易平臺侵占,實現所有權認證、數據保密等機制,體現數據確權可追溯等特點,但仍無法有效解決數據交易后的拷貝泄露問題。
總的來說,在數據交易中利用區塊鏈的特性,能夠為交易提供安全與隱私保證,智能合約引入可以支持更多的業務邏輯。但由于智能合約作為區塊鏈的一部分,需要覆蓋全部節點,這也決定了智能合約體量不易過大,邏輯不能過分復雜以免出現漏洞。這就意味著需要更好的鏈下協同解決方案來保證業務邏輯實現。
隨著互聯網時代的飛速發展以及移動互聯網的普及,各類計算平臺[15]以及云平臺安全問題也隨之增長,各類惡意攻擊威脅著信息安全,也導致許多企業、個人遭受著隱私與財產被侵害的危險。單純通過使用軟件的形式難以解決這些問題,而以硬件安全芯片為信任根的可信計算[16-18]環境為此提供了一種新的解決思路。
2015 年,可信計算組織(Trusted Computing Group,TCG)發布了可信平臺模塊(Trusted Platform Module,TPM)2.0[19]規范,成為ISO/IEC 標準;以CPU 作為信任根,建立從信任根到應用程序的信用鏈。目前我國可信計算技術走在世界前沿,已經進入了可信3.0[20]發展階段,其核心思想是建立一套主動免疫的計算機安全體系。
隨著云計算、5G、物聯網、區塊鏈、人工智能等新技術與應用場景的出現[21],也為可信計算提供了許多融合發展的“溫床”,當前可信計算主要的融合創新包括移動可信計算、抗量子可信計算、可信物聯網、可信區塊鏈[21]等應用場景。其中可信區塊鏈中有許多成功的案例,例如阿里云旗下的螞蟻區塊鏈的可信計算服務,以自研虛擬機內嵌可信執行環境(Trusted Execution Environment,TEE)為基礎,實現了通用鏈下智能合約為數據提供保密服務,為解決區塊鏈鏈上鏈下數據協同問題提供了一種解決方法。
可信計算的主要方法是以一個可信根為基礎,建立一條可信鏈,然后自底向上,從底層硬件一直擴展到應用,通過對硬件、軟件的全面把控,增強整個計算系統的安全性。信任根可以由TPM/TCM/TPCM 的形式實現,其安全假設不完全適用于實際網絡環境,但可以設計為協同工作的模塊化組件,負責獨立地實現業務功能。

圖1 TCM基本結構Fig.1 Basic structure of TCM
為了防止數據信息被篡改,區塊鏈是以區塊為最小單位的鏈式存儲結構。區塊的組成結構通常分為區塊頭與區塊體兩部分。在該交易方案區塊鏈結構設計中,區塊頭負責存放當前區塊Hash 值(CurHash)、上一個區塊的Hash 值(PreHash)、時間戳(Timestamp)、區塊體中包含的數據記錄數(DataRecord),詳見表2。

表2 區塊頭結構Tab.2 Block header structure
區塊體中記錄數據索引信息,包括記錄編號、主體數據描述、數據內容的Hash 值、數據提供方公鑰、數據記錄時間、數據標價、數據交易記錄以及數據使用記錄。
區塊鏈的數據結構是一種基于哈希指針的有序單向鏈表結構,通過哈希指針的方式確保區塊鏈的不可篡改性和可追溯性。不可篡改性是通過哈希指針來實現的,區塊鏈的初始化生成一個創世區塊;由創世區塊開始,每個區塊打包時都會在區塊頭生成一個CurHash 和一個PreHash,新生成的區塊PreHash 值會指向前一個區塊的CurHash,這種鏈式結構確保區塊鏈信息難以被更改;當攻擊者對某個區塊進行修改時,該區塊的后一個區塊PreHash 值就不再正確,當攻擊者對后一個區塊進行修改時,繼續往后的區塊也會不再正確。鏈式結構維護了區塊鏈的穩定,確保區塊鏈無法被篡改。具體結構如圖2所示。

圖2 交易索引鏈結構Fig.2 Trading index chain structure
區塊體主要作為數據主體信息的記錄,主要目的是實現數據可追溯、數據主體可驗證和數據交易可追溯。數據可追溯主要體現為:數據主體可以在更迭中產生更新,可以將新的數據信息索引進行上鏈,后續產生的數據索引信息可以指向上一個版本的數據內容Hash 值;數據主體可驗證主要體現為:為了保證數據安全,數據主體不存放在任何第三方設備而由數據提供者保存,只有在交易完成后的使用階段才傳輸數據進入可信計算環境,通過數據內容Hash 可以對數據主體進行驗證;數據交易可追溯主要體現為:對數據的交易操作存儲在區塊鏈中,由于區塊鏈本身具有不可篡改的特性,可以保證數據交易記錄的可追溯性,可信計算環境也可通過交易記錄來驗證交易雙方身份。
引入可信計算環境,主要解決下列兩個問題:
1)使鏈上鏈下進行協同,在保證數據隱私安全的前提下對鏈上業務進行擴展。鏈上數據主要記錄數據主體信息同時保證數據、交易的可追溯性,而可信計算則為方案中所涉及到的業務需求提供一個可信執行環境。
2)數據流轉中會涉及到隱私保護需求,需要在不暴露用戶數據的情況下對數據進行計算分析,并對結果進行加密傳輸,解決數據的隱私泄露問題。
在現有的數據交易模式中,通常需要中間平臺來集結數據供應方和數據,然后以接口的形式提供數據;或者是直接交易數據集。這些方式都容易造成數據泄露,難以防范數據被拷貝和二次銷售。基于區塊鏈與可信計算技術,本文設計了一種數據交易模型,如圖3 所示。根據數據交易的需求將交易雙方抽象成兩個對象:
數據供應方——擁有數據這一生產資料,希望將數據資產變現,但又擔心數據資產可復制性導致交易出去的數據可能被二次轉讓,使自己會失去數據的主導權。例如工業物聯網中產生的工業數據。
數據需求方——擁有轉換、加工數據這一生產資料的能力,但缺乏數據,需要從其他擁有數據的數據供應方手中購買數據來挖掘數據的潛在價值,但又擔心泄露技術機密。
完整的交易流程包括:
數據供應方上傳數據索引信息,系統通過各節點共識后將數據索引信息上傳到數據索引區塊鏈中;數據需求方購買數據后,將交易流程記錄到區塊鏈中,數據需求方獲得數據的使用權,無法下載數據,或查看完整數據,斷絕數據的二次轉讓。
當數據需求方需要使用數據時,將算法代碼輸出描述以及算法代碼Hash 值上傳,發送數據調用請求;可信計算環境生成一個公私鑰對,將公鑰發送給數據供應方和數據需求方,數據供應方與需求方加密數據與算法、用個人私鑰簽名后上傳至可信計算環境;可信計算環境獲取數據與算法后,用可信私鑰解鎖后驗證數據主體與算法的Hash 值是否正確,在確定數據與算法的Hash值無誤后進行運算。
運算完成后,可信計算環境將運算結果用數據需求方的公鑰進行加密、用可信計算環境的私鑰進行簽名后,將加密后算法結果返回給數據需求方;同時銷毀可信計算環境內數據、算法以及算法結果。

圖3 數據交易模型Fig.3 Model of data trading
基于可信芯片為核心、結合可信硬件構建可信鏈,構建可信操作系統內核提供可信核心服務,內核啟動后由可信應用處理業務服務。本文提出一種可信計算框架,如圖4 所示,根據功能結構自底向上分為物理層、中間層和應用層。

圖4 可信計算框架Fig.4 Framework of trusted computing
物理層由可信硬件與可信芯片組成,負責可信計算環境的安全控制與運算功能,本質上是由存儲器、輸入/輸出(Input/Output,I/O)、密碼處理引擎、隨機數生成器與執行控制引擎組成。可信平臺模塊(TPM)由可信計算組織(Trusted Computing Group,TCG)提出,使用哈希消息認證碼(Hashbased Message Authentication Code,HMAC)引擎提供Hash 驗證,運用密鑰生成器與密鑰協處理器提供密鑰生成檢驗功能,執行引擎負責執行程序代碼;可信密碼模塊(Trusted Cryptography Module,TCM)是由我國自主研發的基于國密算法的安全芯片,該芯片以TPM 1.2框架為基礎、國密算法為核心,更加符合我國安全管理策略要求;可信平臺控制模塊(Trusted Platform Control Module,TPCM)則是以可信密碼模塊為基礎,新增主動控制模塊。
中間層以底層可信硬件為基礎為應用層提供服務,是應用層調用底層功能的接口,主要負責密鑰與證書管理、事件管理器、文件系統以及虛擬化容器管理。
應用層為主要業務功能實現,分為可信密鑰模塊、可信驗證模塊和可信計算模塊。可信密鑰模塊使用非對稱加密算法生成可信的公私鑰對,可信私鑰存于可信存儲環境,用于驗證。可信公鑰則發送給用戶用于加密數據與算法,保證數據傳輸安全;可信驗證模塊通過哈希算法與非對稱加密算法,對加密數據進行解密,并結合鏈上信息驗證鏈下數據、算法以及用戶簽名,保證鏈上信息與鏈下數據能夠對應;可信計算模塊采用虛擬化容器技術,為計算提供可信的執行環境,數據與算法在通過驗證模塊后,轉入可信計算模塊中進行運算,最后將運算結果返回給數據需求方,將交易過程記錄到鏈上后,銷毀內部數據。
交易完成后,在請求數據使用時,本文方案使用哈希算法、非對稱加密算法與可信計算來保證機密性與完整性。為了保證數據傳輸過程安全可靠,基于可信計算環境生成的公私鑰對,建立如圖5所示的加密傳輸。以圖5所示的數據需求方數據加密流程為例,具體步驟描述如下:
步驟1 數據需求方發出數據使用請求后,可信計算環境生成公私鑰對(PK可信,SK可信),并將PK可信發送給數據供應方與數據需求方。
步驟2 收到PK可信后,使用PK可信對原始數據Data 進行加密,encry=encrypt(Data,PK可信),然后使用自身私鑰進行簽名,sigEncry=sign(SK提供方,encry)。
步驟3 可信計算環境收到加密數據sigEncry 后,使用鏈上的數據提供方公鑰驗證簽名并用可信私鑰進行解密,decrData=decrypt(sigEncry,PK提供方,SK可信)。
步驟4 計算解密后的數據decrData 的Hash 值,與鏈上數據主體Hash 值進行對比,valid=verify(Hash(decrData),Hash提供者),檢驗數據完整性,驗證成功后進行計算。
步驟5 計算完成后,對計算結果result 進行加密,res=encrypt(result,PK提供者),將加密后的res返回給數據需求方。

圖5 可信計算環境支撐的加密傳輸Fig.5 Encryption process supported by trusted computing environment
數據交易驗證的主要功能是保證可信計算環境接收到的數據與算法代碼與交易時協商的一致。在請求數據使用前,數據使用的申請會被記錄在交易索引鏈中,包括算法的Hash值、算法的使用描述以及算法的輸出描述,保證計算結果不牽涉數據隱私。
在數據使用過程中,可信計算環境對解密后的數據以及算法進行驗證,與鏈上信息進行比對,確認數據一致性;并且將計算結果使用數據需求方公鑰進行加密留存,將數據使用結果Hash 值記錄在區塊鏈中,以便于出現數據使用糾紛時為數據使用過程提供證明。數據交易驗證過程如圖6 所示,具體步驟如下:
步驟1 數據需求方發出數據使用請求時,上傳算法代碼相關信息,驗證信息包括:Hash算法、算法描述desc算法、算法結果描述desc結果。
步驟2 可信計算環境對數據和算法進行驗證,保證數據與算法Hash值與鏈上一致。
步驟3 將計算結果result 采用需求方公鑰PK需求方進行加密,encry=encrypt(result,PK需求方),并在可信計算存儲留存。
步驟4 將計算結果Hash 上傳至交易索引鏈,記錄交易流程。

圖6 數據交易驗證過程Fig.6 Data trading verification process
鑒于現有數據交易方案中存在的問題,提出一種數據交易方案,引入區塊鏈與可信計算技術結合業務需求,構建了一種新的數據交易渠道。相較于傳統的數據交易模式,通過區塊鏈和可信計算環境的構建,能夠有效保證數據傳輸安全。在不暴露用戶數據的情況下,將交易數據的使用權提供給數據需求方來進行計算和分析,以保證數據的隱私性和安全性。
本文方案具有以下特點:
1)采用非中心化的模式,對數據索引信息、交易過程以及數據使用記錄進行存儲。鏈上數據主要作為交易索引與鏈下數據協同,將鏈上無法實現的復雜業務邏輯轉移到鏈下可信計算環境進行,在保證數據隱私安全的前提下對鏈上業務進行擴展。同時可采用聯盟鏈的形式,提供準入機制,對節點成員進行把控。
2)與現有的數據交易方式相比,本文方案中數據主體不在任何一方留存,數據提供方在保證數據所有權不被危害的前提下交易“數據中所包含的信息”,且不會泄露數據隱私。攻擊者如果在傳輸過程截獲數據,必須計算出對應私鑰或者攻擊可信計算環境來獲得私鑰。相較于傳統的數據交易方式,本文方案所交易的數據無法被竊取或者泄露。