徐墨庚,姜曉軼,童心,符昱,王漪
(1.自然資源部海洋信息技術創新中心,天津 300171;2.國家海洋科學數據中心,天津 300171;3.國家海洋信息中心,天津 300171)
近年來,我國科技計劃項目數量迅速增長,產生了大量高價值的科技創新成果和科學研究數據,這些科學數據是國家科技創新和發展的基礎性戰略資源,更是大數據時代最基本、最活躍的科技資源[1]。及時匯交、管理和共享這些數據資源,既是國家科技投入的直接體現,也是促進科學數據更好地收集保存、共享和利用的重要途徑[2]。科學數據匯交作為科學數據獲取的重要渠道,其基礎性和重要性尤為突出。為此,國務院辦公廳、科技部、財政部等相繼發布有關數據匯交工作的指導性文件。2018 年,國務院辦公廳發布《科學數據管理辦法》,明確提出“政府預算資金資助的各級科技計劃(專項、基金等)項目產出的科學數據進行匯交”,強制性要求項目產生的科學數據匯交至相關國家科學數據中心,從而有效促進項目產出科學數據的整合、存儲、管理和積累,推進科學數據資源向社會開放共享,最大程度地發揮科學數據的價值。
目前,我國已經建成了包括國家海洋科學數據中心在內的20 個國家科學數據中心,這些數據中心相繼開展科技計劃項目匯交工作并依托其共享服務平臺建立了在線項目數據匯交系統,該系統大部分采用“中心化”管理模式。“中心化”模式存在諸多問題:一方面,服務器容易遭受黑客惡意攻擊;另一方面,平臺內部管理者擁有高數據操作權限,可能違規修改、刪除數據。這些內外部攻擊使得數據存在易篡改風險,既無法保證匯交過程的透明可信,也無法保證匯交數據在發布共享時與原數據的一致性和完整性,而且一旦發生數據篡改難以追責定責,由此會給數據中心和項目組帶來信任危機。信任問題不僅影響數據中心的公信力,也間接導致項目組不愿意匯交數據或者不愿意匯交全部數據,甚至引發數據權屬爭議,阻礙科技計劃項目科學數據的生命周期進程,使之無法發揮最大價值。項目產生的科學數據凝聚了項目負責人和團隊的智慧與付出,如何使項目組毫無保留地將研究成果匯交至數據中心,打破信任壁壘,保障匯交各方責任權利成為數據匯交領域面臨的關鍵問題。
區塊鏈技術為數據匯交信任問題提供了解決方案。本文利用區塊鏈分布式去中心化、多方共識、不可篡改、全程留痕等特性,構建了覆蓋科技計劃項目數據匯交全流程的區塊鏈匯交存證模型,通過將匯交過程中的關鍵文件上鏈來保證文件的不可篡改性,實現匯交全流程留痕;賦予匯交形成的數據集唯一的Hash 值并上鏈,為開放共享數據的一致性和完整性驗證提供了可信、可追溯、可證明的保障;建立了基于區塊鏈的海洋科學數據匯交存證系統,以期為其他科學數據匯交工作提供借鑒和參考。
區塊鏈技術首次出現在中本聰發表的《比特幣:一種點對點式的電子現金系統》[3]一文中,自此掀起了全球范圍內的電子貨幣及區塊鏈熱潮,進入了區塊鏈1.0比特幣時代;以太坊智能合約的出現使區塊鏈進入了2.0 智能合約時代;如今區塊鏈已經發展到了3.0 時代[4],即區塊鏈治理時代。在3.0 時代中,智能合約[5]擴展了區塊鏈的應用場景,由金融領域延伸到醫療、物聯網、政務等領域。同時,聯盟鏈生態也全面爆發,逐漸成為當下研究熱點并得到產學界的廣泛關注。目前比較流行的聯盟鏈平臺有國外的超級賬本(Hyperledger)和國內的長安鏈、Fisco Bcos、國信公鏈、星火鏈網等。聯盟鏈由多個中心控制,具有交易速度快、數據隱私安全、高兼容性和擴展性、可監管等特點,相比公有鏈和私有鏈,聯盟鏈支持更多的應用需求和場景。目前,美國、日本、英國等相繼開展了多領域、多場景的應用研究。隨著我國將區塊鏈技術作為核心技術自主創新的重要突破口,各地相關政策陸續頒布,大規模區塊鏈應用相繼落地。
國內外聯盟鏈涉及科學數據應用方面的研究主要圍繞數據安全、數據確權和數據共享等開展。數據安全方面,Zikratov 等首次具體使用區塊鏈來實現數據完整性[6]。魏銀珍等采用區塊鏈技術安全地捕獲和驗證了數據產生、存儲、流通,以提高科學數據的質量,防止數據篡改[7]。數據產權方面,王瑞丹等提出區塊鏈、安全多方計算等新技術的應用有助于促進科學數據共享流通過程中的可追溯、可監控,從而減少了知識產權可能遭遇侵害的風險[8]。范亞慧等提出將區塊鏈技術應用到科學數據產權保護領域,以維護科研人員的合法權益[9]。數據共享方面,王顯斌剖析了區塊鏈應用于科學數據共享的優勢和適用性,提出了將區塊鏈元素融合科學數據共享的新模式[10]。張連翀等提出構建依托區塊鏈和云計算等技術的行業數據中心和科學數據中心協同技術保障條件,有利于形成良性運行的數據生態系統[11]。科學數據匯交方面的區塊鏈研究還處在理論探索階段。陶毅等建議在匯交系統的技術支撐方面,可嘗試引入區塊鏈技術,憑借其不可篡改、可追溯的特點,強化科學數據保護能力,提升科研人員共享科研數據的意愿[12]。楊雅萍等提出區塊鏈溯源管理模型可應用到數據匯交工作中,以達到保證數據的真實性和可靠性的目的[13]。張思思等提出人類遺傳資源組學原始數據歸檔庫(Genome Sequence Archive-Human,GSA-Human)系統可借鑒區塊鏈、云計算、流計算等數據安全管理的特性和理念,建立人類遺傳數據共享和使用的新模式[14]。
區塊鏈是比特幣背后的重要技術,采用P2P網絡架構進行價值交換,實現去中心化的網絡環境而無須集中的第三方[15-16]。區塊鏈使用分布式賬本實現系統去中心化,分布式賬本是以有序形式包含交易列表的數據結構,能夠存儲大量數據,并記錄所有區塊鏈節點之間發生的交易,以便回溯任何交易活動。與憑借可信第三方來存儲交易記錄的傳統數據庫不同,區塊鏈工作在分布式集合的節點上,每個單獨的節點都有網絡中正在執行的交易信息。區塊鏈網絡中每完成一個交易,存儲在分布式賬本上的交易信息就被復制到所有區塊鏈節點上。本質上,區塊鏈網絡由一組名為礦工的節點負責在無信任分布式環境中通過共識機制維護所有交易的可信記錄。
哈希算法(HASH),即哈希函數,設計了一組復雜的數據運算和計算規則,它們將隨機長度的輸入消息轉換為固定長度的摘要。哈希函數的以下特性使得它的輸出具有唯一性。
(1)從散列值通過逆向工程重構原始消息幾乎是不可能的。
(2)輸入的一個位變化可以改變哈希中一半以上的位,從而產生完全不同的輸出。
(3)算法有能力將任何冗長的輸入壓縮到固定大小的輸出。
(4)為兩個不同的輸入消息查找相同的散列在計算機上不可行。
共識機制是區塊鏈系統在不可信的環境中達成一致的重要協議,其中,實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT) 共識算法在聯盟鏈中得到了廣泛應用。PBFT 算法考慮了區塊鏈網絡中的拜占庭將軍問題[17]。拜占庭容錯假設節點可能出現網絡故障、停機和其他非人為行為,不斷地尋找網絡中漏洞的節點和故障惡意節點并將其排除在外[18]。因此,PBFT 算法的目標是在節點失效的情況下,減少這些惡意節點的影響,并試圖通過重復投票在網絡上實現全局一致。Lamport等在假設誤差的情況下考察了達成這一協議的概率,證明PBFT共識算法只有在至少三分之二的網絡節點是誠實的情況下才能抵抗拜占庭錯誤。因此,假設n代表整個共識節點數量,f代表所有拜占庭節點數量,那么當n≥3f+ 1 時,就能達成共識。PBFT協議流程(圖1)如下:

圖1 PBFT共識算法流程
(1)共識節點依次擔任主節點,主節點負責創建一個新的候選塊。
(2)主節點將候選塊廣播給其他共識節點。
(3)每個接收到塊的節點都會驗證該記錄,并廣播一個準備消息。
(4)在收到足夠數量的準備消息(消息總數超過整個節點的三分之二)后,計算每個消息的確認消息,并將其廣播給所有節點。
(5)如果收到的確認消息數量超過總數的三分之二,則節點對提議的塊達成一致。
智能合約由尼科薩伯于上個世紀末提出,其思想是將法律條文寫成可執行代碼,是根據協定自動化執行代碼的計算機協議。但由于早期計算條件并未成熟,應用場景相對狹窄,因此智能合約技術一直沒能實現。直到區塊鏈技術的出現才重新定義了智能合約,區塊鏈借助智能合約的可編程特點實現復雜的邏輯功能,智能合約借助區塊鏈的去中心化特點得以真正實現其價值功能。因此區塊鏈成了智能合約應用最有效且最廣泛的場景。
本質上,智能合約是一段運行在區塊鏈上的代碼,由區塊鏈的礦工節點執行,在觸發條件發生時將自動執行并被全網節點共識。智能合約部署后被編譯為二進制代碼,并存儲在區塊鏈的特定地址上,一旦部署到鏈上,任何人都無法不留痕跡地修改智能合約。智能合約的另一個關鍵優勢是,它可以在沒有人工干預的情況下運行,被觸發后可以在每個節點上獨立自動執行一個函數。假設區塊鏈的基本共識算法是安全的,則智能合約可以被認為是一個由可信的全局機器執行的程序,它將忠實地執行每條指令。智能合約執行機制如圖2所示。

圖2 智能合約原型
《科技計劃項目科學數據匯交工作方案(試行)》對科技計劃項目數據匯交流程進行了明確規定。科技計劃項目數據匯交流程分為匯交方案編制、實體數據匯交和數據匯交驗收三個階段(圖3)。在數據匯交方案編制階段,由項目組按照任務書和項目實際執行情況編制《項目基本信息表》《科學數據匯交方案》和元數據表,提交到相應的國家科學數據中心進行專家審核,通過后進入實體數據匯交階段,項目組依據《科學數據匯交方案》準備科學數據實體,編制說明文檔,連同軟件工具一起提交至數據中心進行審核,專家對提交的實體文件的完整性、規范性、一致性和數據質量進行審核。審核通過后進入匯交驗收階段,數據中心依據實際匯交內容和數據量開具數據匯交驗收證明。

圖3 科技計劃項目數據匯交業務流程
基于聯盟鏈的優勢,本文提出一種結合聯盟鏈、智能合約、密碼學技術的數據匯交存證模型,該模型的主體是由數據中心節點和分中心節點構成的多主體聯盟鏈(圖4)。其中,數據中心作為聯盟鏈的主節點,負責聯盟鏈的運行和維護工作,包括節點的準入退出與認證、執行共識算法、設計與部署智能合約、區塊鏈運行監管等,在業務上負責科技計劃項目的數據匯交與管理的總體工作。分節點是數據中心的共建單位,如科研院所、高校和企業,主要協助主節點管理運行聯盟鏈,在業務功能方面,參與數據匯交的收集、整合和處理工作。科技計劃項目數據匯交存證模型以網絡結構為基礎進行數據的存證過程,需要實現數據上鏈、數據一致性驗證、匯交流程歷史追溯等功能,其中數據上鏈是將數據實體存儲到本地數據庫,數據摘要與詳細信息存儲到區塊鏈的過程;數據一致性驗證需要對本地數據庫存儲的數據與區塊鏈上的數字摘要進行對比驗證;匯交流程歷史追溯包括匯交關鍵文件歷史版本的追溯。模型從業務流程設計、底層數據結構、智能合約和安全防護機制四個方面描述,包括匯交存證流程設計、數據存儲結構設計、智能合約設計和安全機制四個主要模塊。

圖4 基于區塊鏈的科技計劃項目數據匯交存證模型
匯交存證模型在傳統的匯交系統基礎上引入區塊鏈技術,具體匯交存證流程如圖5所示。

圖5 基于區塊鏈的科技計劃項目數據匯交流程
(1)用戶上傳科技計劃項目數據匯交所需的關鍵文件/數據集,其中關鍵文件是指項目組提交的《項目基本信息表》和《項目匯交方案》及審核工作組反饋的《審核意見表》和《驗收證明》,數據集是指項目所產生的科學數據集。
(2)生成存證內容摘要。使用哈希算法將隨機長度的輸入消息轉換為固定長度的摘要輸出,首先對消息進行補位處理,使得最終長度是512的倍數,之后以512 為單位將消息分塊為M( 1) ,M( 2 ),…,M(N),最終分解成N個消息模塊,然后按照映射方式進行N次迭代,得到H(N),即256 位消息摘要。哈希算法通過計算數據內容摘要,得到一個固定長度的字符串,相同的數據經過相同的哈希計算能得到相同的摘要,所以可以在只存儲摘要的情況下,驗證原始數據的完整性。同時,在沒有找到碰撞的情況下,哈希計算是一個不可逆的過程,公開和存儲摘要并不會泄露原始數據的內容。
(3)對摘要進行數字簽名。使用用戶私鑰sk對哈希計算后的摘要進行加密計算得到數字簽名DS,作為簽名者對存證數據內容確認的憑證,簽名私鑰由簽名者自己保管,只有自己才能進行加密。
(4)打包區塊并上鏈。簽名后的存證信息以發布交易的形式發送給聯盟鏈網絡的每個節點,礦工接收到之后,通過用戶之前提供的公鑰對交易進行簽名確認,將所有數據打包進區塊,完成數據上鏈存證。
考慮到區塊鏈區塊大小限制及數據量大的特點,如果數據實體上鏈,會導致區塊鏈運行載荷過大,無法保證系統的效率。因此,模型將數據實體存儲在本地數據庫,使用SHA256 算法將輸入的數據實體映射為256 位的固定長度輸出,并生成交易信息,以兩個交易為一組,分別計算出哈希值再合成新的哈希值,以此類推,最終計算出唯一哈希值,存儲到區塊鏈中。這種方式一方面以較低的時間和計算成本將不同類型和大小的數據轉化為256 位的摘要,大大減小了鏈上所占空間;另一方面在降低系統網絡負荷的同時,也能使系統更加安全和高效。區塊鏈可以維護不可篡改的和不斷增長的數據塊,這些數據塊通過密碼技術進行了關聯和驗證。圖6 給出了鏈上區塊的數據結構,區塊包括區塊頭和區塊體兩部分,區塊頭存儲著區塊的頭信息,包括上一個區塊的哈希值、當前區塊的哈希值、時間戳和默克爾樹(Merkle Tree)的根(Merkle Root)等信息。區塊體是一棵存儲交易記錄的默克爾樹,默克爾樹的葉子節點存儲的是交易,交易存儲的是數據摘要和數據信息,并附上了簽名和時間戳,而非葉子節點存儲的是其子節點的散列值,直到在樹的頂部只構建一個根節點,即Merkle Root。整個交易記錄的散列值構成了區塊的主要組成部分,數據的任何變化都會改變它的散列值,從而可以發現數據被篡改,由此保證了數據的可驗證性。

圖6 區塊存儲結構
基于提出的匯交存證模型,本節給出了匯交存證過程中的三個智能合約結構和作用,包括匯交流程管理合約(Handover Contract,HC)、數據存證合約(Store Contract,SC)和數據校驗合約(Verify Contract,VC)。
匯交流程管理合約作為聯盟鏈中的全局合約,由存證方事前約定,存儲存證的生成條件包括合法的用戶地址、匯交終止時間及匯交詳細內容信息,合約用于控制匯交的流程并管理匯交數據存證的生成,匯交的時間節點由智能合約控制,保證每個階段的操作都按合約執行,沒有人為干預,以此來保障數據匯交流程的規范性。
HC偽代碼如下所示。
算法1:

數據存證合約由數據存證管理合約生成,實現匯交流程中文件、數據集和驗收證明三種文件的上鏈,存儲內容包含存證id,type,Hash 值和簽名等字段,每次存證均需生成一個合約。
SC偽代碼如下所示。
算法2:
數據校驗合約用于驗證鏈上鏈下數據的一致性,輸入文件驗證的請求,獲取待核驗數據的鏈上地址,查詢出鏈上存儲的信息。比對存證系統中的數據和鏈上獲取得到數據是否一致,并輸出文件驗證結果。
VC偽代碼如下所示。
算法3:

區塊鏈網絡中數據篡改可能發生在數據傳輸以及賬本存儲兩個階段。在數據傳輸過程中數據包由數據明文+數字簽名形式組成,節點接收到數據包后可根據數字簽名對數據明文進行驗證,以達到防篡改功能。
在傳統系統中,數據庫攻擊/泄露是攻擊者主要的攻擊方式,攻擊者通過修改數據庫數據達到攻擊目的。在本系統中,需要保證區塊鏈賬本存儲數據完整性及真實性,惡意節點會通過修改本地賬本數據進行數據篡改,本系統采用PBFT共識機制,假如節點總數為n,故障節點數為f,當n>3f時才能達成拜占庭協定,即算法在失效節點數量f 基于區塊鏈的科學數據匯交存證系統架構如圖7 所示,聯盟鏈作為底層基礎設施,通過接口層及智能合約與現有科學數據中心匯交業務系統進行連接,為用戶層提供業務服務。 圖7 基于區塊鏈的科學數據匯交存證系統架構 (1)用戶層 用戶層主要涉及四類用戶角色:科技計劃項目數據匯交組、審核專家、普通用戶和系統管理員角色,用戶角色定義如下。 科技計劃項目數據匯交組是匯交業務的關鍵主體,進行材料撰寫、上傳、修改和數據上傳等操作,可以通過查看鏈上匯交流程關鍵文件存證信息追溯匯交全流程,通過對比鏈上數據集Hash值驗證數據的完整性和一致性。 審核專家負責根據數據中心的工作分配進行材料和數據盲審,并將審核結果上鏈。 普通用戶是科學數據的申請者和使用者,通過對比鏈上數據集Hash 值驗證共享得到的數據的完整性和一致性。 系統管理員對匯交全過程進行流程控制,負責數據的上鏈操作、區塊鏈系統的運行、管理和維護。 (2)應用層 匯交存證系統融合了存證系統和原有的匯交平臺,包括用戶界面及特定的匯交業務功能,也包括與底層區塊鏈基礎平臺相關的數據上鏈、查詢、驗證等功能。業務系統通過觸發接口層的智能合約調用,與區塊鏈基礎平臺交互。 (3)區塊鏈層 區塊鏈基礎平臺是該架構的核心組件,由多個節點的P2P 網絡組成,提供共識機制、分布式存儲、智能合約、加密體系、節點管理、運維監控等網絡管理服務。區塊鏈服務層中,基于共識機制,各節點按照嚴格的PBFT 算法規則更新區塊信息,以區塊為單位按時間順序將匯交信息及數據資源以交易的形式進行鏈式存儲,每條交易都包含時間戳、交易內容和數字簽名,支持實時驗證與追溯,從而達成信息共享、多方決策一致,保證了數據的可信性和節點的一致性。區塊鏈服務層可以將區塊鏈服務封裝成一系列數據接口,接收到調用命令后,平臺將采用虛擬化技術啟動、運行合約代碼,響應數據上鏈和區塊記錄查詢功能。 匯交存證平臺鏈接系統各模塊與底層區塊鏈網絡及數據庫,存證服務是功能核心,包括數據上鏈、數據查詢、數據驗證的實現,該功能需要對接FISCO BCOS區塊鏈網絡及節點,利用智能合約服務實現數據數字摘要存證、分布式存儲以及查詢與驗證。 (1)數據上鏈 數據上鏈功能是用戶將匯交流程產生的信息存儲至區塊鏈網絡,具體流程如圖8 所示。用戶在登錄系統后,上傳待存證的匯交數據、文件與項目信息,系統調用SHA256 算法計算數據數字摘要,之后對摘要進行簽名,調用區塊鏈的交易處理接口,進行存證合約的調用,實現存證數據哈希上鏈。最后,將鏈上信息和合約地址返回給用戶。 圖8 數據上鏈流程圖 (2)數據驗證 數據一致性驗證用于在上傳匯交數據后,提供該數據的存證信息,同時證明該數據的真實性和完整性。一致性驗證流程如圖9 所示,用戶登錄系統后選擇要進行一致性驗證的數據,獲取其上鏈地址,根據合約地址調用查詢交易發送接口,查詢出鏈上存儲的上鏈信息,對比本地數據庫中的數據摘要與鏈上獲取到的數據摘要是否一致,如一致,即驗證通過,否則,則表明本地數據被篡改,驗證失敗。 圖9 數據驗證流程圖 基于區塊鏈的海洋科學數據匯交平臺已在國家海洋科學數據中心部署并對外服務。平臺采用微服務架構、模塊化技術封裝研發,可獨立或作為集成插件運行。如圖10 所示,基于該平臺,海洋科學數據中心已部署4 個節點,完成15 個科技計劃項目236 個數據集的上鏈,通過驗證31 次,每個完成匯交的項目都有唯一的鏈上驗收證明Hash 值,可以用來驗證驗收證明的合法性,若驗證不一致,則證明驗收證明信息被篡改或該項目并沒有完成驗收。 圖10 基于區塊鏈的海洋科學數據匯交平臺頁面 科技計劃項目的每個數據集都有唯一的鏈上Hash值,圖11為數據集的鏈上存證詳情信息,該交易記錄了項目的基本信息、數據集的Hash 值和交易時間。交易一旦上鏈就不會發生改變,項目的基本信息確定了該數據集的生產者,避免了權屬爭議問題;數據集的Hash 值用來驗證本地數據集是否被篡改,時間戳則記錄了該數據集的上鏈時間。 圖11 鏈上存證信息詳情 隨著科技計劃項目數據匯交工作的不斷推進,相關科技成果和科學數據的服務管理愈發重要。本文利用區塊鏈技術,設計了一個適用于海洋科學數據的匯交存證模型,基于Fisco bcos 框架研發了區塊鏈匯交存證服務平臺,實現了涉海科技計劃項目匯交數據上鏈、數據一致性校驗及匯交流程追溯等功能,不僅有效地解決了項目組與數據中心之間的信任問題,而且加強了傳統匯交平臺的安全性,為科學數據的開放共享服務提供了更加可信的數據,為解決科技計劃項目數據匯交過程中的數據確權、版本管理、可信共享和溯源驗證等問題提供了區塊鏈服務新模式。 本文構建的海洋科學數據匯交存證平臺是區塊鏈技術應用于科學數據的初步探索,科學數據開放共享是數據匯交的最終目的和結果,目前數據孤島的存在嚴重制約海洋信息化發展及“智慧海洋”工程建設,后續將繼續開展海洋數據安全可信共享服務研究。隨著數據成為五大生產要素之一,必須要解決數據自身的確權、流通、隱私保護問題,區塊鏈技術作為多主體協同治理的技術突破路徑,適于解決數據共享與流通、數據交易中的互信、隱私數據保護、產權確認等問題,因此,區塊鏈相關技術背景下的多主體海洋數據共享、數據交易將是后續的研究重點。4 匯交存證系統設計
4.1 架構設計

4.2 系統功能設計


5 應用實例


6 總結與展望