基於區塊鏈的電子政務數據共享設計研究

谷寧靜.基於區塊鏈的電子政務數據共享設計研究[J].信息安全與通信保密, 2020(04):91-97.

區塊鏈技術提供了鏈上數據不可篡改、共享可查的鏈上記錄等能力,提供了多方信任和數據共享機制。因此,區塊鏈技術可以實現各個政府部門之間的數據共享訪問驗證。為此,針對“一網通辦”電子政務數據共享的需求,深入的對區塊鏈技術進行研究,將電子政務數據存儲在區塊鏈上,採用主鏈和子鏈的分層架構來增強了權限管理、安全控制等機制,基於 Hyperledger Fabric1.4來設計的,並對智能合約和區塊鏈的存儲的核心模塊的開發進行闡述。

0 引 言

為進一步推動構建一體化的網上政務“一網通辦”服務體系,實現各政府部門業務協同,上海市人力資源和社會保障局提供了統一的數據交換平臺,設計基於社保、居住證積分、職稱職業資格等統一政務信息資源庫模型。

然而,在實踐中由於各委辦的應用系統架構和網絡架構、硬件服務器性能差異較大等問題,該統一數據交換平臺採用了數據實時交換接口、ftp、數據庫文件交互等不同交互模式,導致仍然存在信息共享範圍不廣、數據交換實時性不高、數據生命週期管理困難、數據正確性和安全性管理困難、數據信息洩露等諸多問題。

區塊鏈提供了鏈上數據不可篡改、共享可查的鏈上記錄等能力,提供了多方信任和數據共享機制。區塊鏈技術利用共享記錄賬本可以實現數據生命週期的追溯管理,還可以對數據共享授權實現精細化的管理。

區塊鏈具有的可溯源,不可篡改,去中心化、高度安全等特點,能有效解決當前政務信息資源共享中存在的上述問題。為此,本文構建了基於區塊鏈技術的電子政務數據信息資源共享系統,針對“一網通辦”電子政務數據共享的需求,將政務數據存儲在區塊鏈中,同時設計了主鏈和子鏈模式增強了權限管理、安全控制等能力。

1 基於區塊鏈的政務信息共享架構體系

本文依託區塊鏈底層技術,針對電子政務數據共享的需求,通過數字證書身份驗證加入數據共享網絡中,數據提供方僅將數據的摘要值或者加密後的密文發佈到區塊鏈中。數據需求方從區塊鏈獲取數據提供方發佈的數據信息,發佈數據權限請求到區塊鏈。數據提供方根據區塊鏈上的信息獲取數據需求方發佈的數據權限請求,權限驗證通過後,將結果發佈到區塊鏈上。數據需求方則可以訪問該共享數據,基於區塊鏈的電子政務數據共享設計模型如圖1所示。

基於區塊鏈的電子政務數據共享設計研究

圖1 基於區塊鏈的電子政務數據共享設計模型

Hyperledger Fabric網絡中的節點必須經過授權認證後才能加入,避免了採用PoW共識算法的資源開銷,大幅提高了交易處理效率。Hyperledger Fabric採用模塊用了高度模塊化設計,將權限認證模塊 (MSP)、區塊提交模塊 (committing peers) 等進行分離部署,實現了模塊的插件式管理 (plug-in/plug-out),適合企業聯盟鏈應用場景。

因此,基於區塊鏈的電子政務數據共享系統是基於Hyperledger Fabric1.4來設計的。按照業務類型或者參與方對數據的訪問需求,將區塊鏈劃分為若干通道,每個通道即是一條物理區塊鏈,與其他通道的數據隔離存儲和傳輸,數據只能被此通道的參與方訪問。在單個通道中,可以使用“私有數據集”特性管理數據的可訪問範圍。通過在智能合約代碼中定義規則,只允許特定的角色有權限訪問數據。

每個委辦通過通道channel來實現跟其他委辦數據共享,每個通道上均對應著一個賬本,該賬本是該通道上的成員共享的,該賬本和KV數據庫都是完整的副本,通過任意節點可以快速查詢到區塊鏈中的政務數據信息。

委辦提交一個向區塊鏈新增數據信息的交易,會首先在節點上驗證身份,身份驗證通過再驗證數據交易信息,數據交易信息驗證將該數據信息加密存儲到區塊鏈中,通過後order節點交易共識到其他節點,最後會在kv數據庫中增加數據賬本。本文設計了一個主鏈和子鏈雙鏈結構,主鏈管理子鏈,主鏈和子鏈通過智能合約通信。

基於區塊鏈的電子政務信息共享系統關鍵模塊機制主要包括主鏈子鏈雙鏈機制設計實現、智能合約開發設計、區塊鏈數據存儲機制實現、還有身份認證和權限管理機制。

2 基於區塊鏈的政務信息共享關鍵機制

2.1 雙鏈機制設計

本文設計了一個雙鏈結構,這種結構具有兩個獨特屬性:1)主鏈結構和子鏈結構, 2) 不可變主鏈和彈性子鏈。彈性子鏈解決區塊鏈的可伸縮性、吞吐量和延遲問題。主鏈存儲賬本和資產信息,如狀態、交易以及智能合約。主鏈適合存儲少量信息,因為它是不可變的。主鏈負責管理整體交易和子鏈。子鏈通過智能合約與主鏈通信。

存儲每個小塊的元信息和哈希存儲在子鏈中,稱為文件狀態。主鏈對應多個子鏈,跟主鏈共享交易賬本,根據賬本信息檢索到區塊信息,然後獲取所需的政務共享數據信息。

2.2 智能合約

在區塊鏈網絡中,智能合約在每個節點的一個獨立空間運行,智能合約負責區塊鏈網絡的權限控制,對區塊鏈數據的存儲,以及對數據的訪問,只有滿足智能合約的條款才能對數據進行操作。

另外,智能合約也是區塊鏈網絡與外界交互的接口,一般提供有區塊鏈內部訪問 SDK等,便於用戶獲取鏈上數據。通過智能合約和訪問控制策略來限制訪問數據的角色和用戶,通過智能合約的方式提供了更靈活的訪問權限控制,可以針對節點、針對組織、針對角色、針對用戶制定不同的策略。

Hyperledger Fabric( 後面簡稱 HLF)的智能合約應用就是部署在區塊鏈網絡中的無狀態的、事件驅動的、支持圖靈完備的自動執行代碼,直接與賬本進行交互,實現了邏輯與數據的分離,跟底層賬本是相互分開的,如果升級智能合約的時候並不用往新的智能合約當中同步遷移賬本數據。故本系統採用HLF智能合約框架。本模型涉及的區塊鏈賬本操作均通過智能合約完成。智能合約原理圖如圖2所示。

基於區塊鏈的電子政務數據共享設計研究

圖2 智能合約原理

本文設計單獨的應用服務器,主要完成通過fabric-node-sdk來調用智能合約,還在前端界面進行結果反饋,前端界面採用zookeeper+dubbo的設計框架。流程設計如圖3所示。

基於區塊鏈的電子政務數據共享設計研究

圖3 智能合約設計流程

本文就對居住證積分數據共享平臺的智能合約設計進行闡述。功能描述:該智能合約實現了一個簡單的上海市居住證積分信息共享管理的案例。背景為:對已經辦理上海市居住證的人員,符合一定條件的人才可以申請上海市居住證積分,享受教育、醫療、購房等市民待遇, 一年一申請。

對於在上海市人力資源和社保保障局審批通過的有居住證積分信息,必須提供給教委、醫保、房管局等部門可以隨時共享查驗。該智能合約中三種角色如下:上海人社局、個人、需要居住證積分認證的機構。上海人社局可以根據相關信息在區塊鏈上為某個人授予居住證積分信息,相關機構可以查詢某人的積分信息,由於使用私鑰簽名,確保了信息的真實有效。

另居住證被註銷或者違法,上海人社可以修改或者註銷其相應的積分信息。賬戶私鑰應該由安裝在本地的客戶端生成。智能合約中通過結構體生成個人居住證積分數據模型,如表1積分數據模型設計表所示。

表1 積分數據模型設計表

基於區塊鏈的電子政務數據共享設計研究

fabric賬本中數據如果要進行修改,則必須通過鏈碼 (chaincode) 來實現;fabric-sdk-node 是封裝好的nodeSDK,通過它調用部署在fabric上的智能合約,實現設定的業務邏輯,首先調用install.js,實現把智能合約安裝到 fabric上,然後調用instantiate.js,實現實例化智能合約,這兩個js文件都是按照node.js語法設計,通過export方式進行導出。智能合約中的函數模型設計如表2所示。

表2 智能合約中的函數模型設計表

基於區塊鏈的電子政務數據共享設計研究


2.3 區塊鏈數據存儲機制

針對電子政務數據共享需求,本文對區塊鏈的存儲結構進行了相應的簡化,減少了工作量證明等字段,本文中區塊鏈上的賬本數據包括區塊鏈數據和狀態數據,都使用塊鏈式的存儲模型,區塊鏈由包含N個隨時間排序的塊串聯起來而組成。每個區塊由區塊頭和區塊體兩部分組成,每個區塊頭中包含區塊元信息,還包含一個指向前一個區塊頭哈希值的指針,該指針就是用來防止區塊鏈被篡改的關鍵因素。

所有數據記錄都存在區塊裡,每一區塊包含了前一區塊所有數據記錄的Hash值。按照這個方式,最新的區塊總是間接包含了所有之前的區塊的數據交易信息。如果更改區塊鏈中任何一個數據信息,會讓所有之後的區塊的Hash值發生變化,這樣就驗證無法通過。因此,只要驗證最後一個區塊的Hash值就相當於驗證了整個賬本,這樣的區塊鏈構成了一個易驗證、不可篡改的總賬本。

針對居住證積分信息的區塊頭信息的設計如表3所示,其中業務數據就是指的居住證積分詳細信息的jason字符串。區塊鏈式存儲結構如圖4所示。

表3 區塊頭結構

基於區塊鏈的電子政務數據共享設計研究

基於區塊鏈的電子政務數據共享設計研究

圖4 區塊鏈的塊鏈式存儲結構

區塊頭哈希值:通過對前塊哈希、時間戳和Merkle根進行兩次SHA3-256計算得。Merkle根節點就是區塊中所有業務數據構成的默克爾樹根的哈希值,構造原理圖如圖5所示。以上的哈希值生成算法主要使用SHA3-256(Keccak256)散列算法,實現將任意長度的輸入轉換成固定長度的輸出,是一個單向函數,難以或不可能反推,該算法是目前業界的認可的最為安全的散列算法。

基於區塊鏈的電子政務數據共享設計研究

圖 5 Merkle 樹根節點構造

2.4 數據寫入和檢索流程

HLF的存儲系統是由普通的文件和kv的數據庫 (levelDB/couchDB)組成。每個通道對應了一個賬本,賬本目錄由一個個64MBytes的文件所組成中由以blockfile_000000、blockfile_000001 為命名的格式的文件名所組成。為了能快速檢索到區塊數據,每個文件的都是64MBytes。

每個區塊的數據都會序列成二進制字節碼的形式 (本文使用jason)寫入到blockfile文件中。在序列化的過程中,程序以append方式打開blockfile文件,然後將區塊大小和和區塊數據寫入至blockfile文件中。在序列化的過程中,如果檢測到當前寫入文件尺寸加上區塊尺寸大於64MBytes,則會重新生成一個dat文件。

以下是區塊數據寫入的具體流程設計:

(1)區塊頭數據寫入,包括區塊高度(該區塊到區塊鏈上區塊頭的區塊數量)、交易哈希值和前一個區塊的哈希值等信息;

(2)寫入交易數據,依次寫入的數據為區塊包含交易總量和每筆交易詳細數據;

為了便於HLF的快速查詢,區塊和交易在blockfile文件中的索引信息會保存在kv數據庫中,該索引由在kv數據庫中存儲的最終的 LevelKey 值有前綴標誌和區塊hash組成,LevelKey值由channel_name,chaincode_name和chaincode中的key值組合而成,而LevelValue的值由區塊高度,區塊hash,本地文件信息(文件名,文件偏移等信息),每個交易在文件中的偏移列表。

2.5 身份認證和權限管理機制

本系統使用數字證書CA作為身份認證的憑證。數字證書CA包含了該證書擁有者的身份信息和公鑰信息,以及數字簽名。公開密鑰基礎設施PKI採用CA證書來管理公鑰,通過CA證書,用來實現通信的雙方的身份認證和通信安全。Membership Service Provider,聯盟鏈成員的證書管理,它定義了哪些RCA以及ICA在鏈裡是可信任的,包括定義了channel上的合作者。

HLF強化了隱私保護能力,HLF支持在同一套企業網絡上建立多個不同的通道channel,一個通道等同於一個子鏈,每一個通道都有自己的區塊鏈和訪問控制,彼此互不影響。每個通道都是和具體的某一個賬本相關聯的,通道是用來限制數據信息傳播的範圍。

每個交易都是和唯一的通道關聯的,可以明確地限定哪些節點能夠獲知這個交易信息。這有利於複用基礎設施,如人社和公安部門可以建立一個通道來分享居住證辦理信息,而房管局和稅務建立另一個通道來分享稅務數據。每個通道上都有N個成員,他們就是一個區塊鏈網絡的子鏈。

通道權限限制策略主要包括獲取通道的交易、區塊等數據的讀操作和向通道發起交易的寫 操作、還有加入通道、修改通道的配置信息的管理操作等。這些策略靠修改策略 (mod_policy)來進行管理。操作者的簽名組合需要滿足相應的身份規則策略,才能夠被允許執行相應的操 作,會對簽名數據按照進行規則校驗。符合則說明滿足了該策略;不符合的不允許後續操作執行。策略相關的數據結構主要包括Policy、SignaturePolicyEnvelope(內嵌SignaturePolicy結構)和ImplicitMetaPolicy三種數據結構,均在protos/ common/policies.proto文件中定義。

3 結 語

本文通過對區塊鏈技術深入研究,針對電子政務數據信息共享需求,應用了區塊鏈技術中數據防篡改等功能,又增強了權限管理、安全控制等能力。本文使用了目前較為成熟的Hyperledger Fabric智能合約框架,詳細地闡述了數據共享中區塊鏈數據的存儲寫入和讀取流程,使用數字證書CA作為網絡通信雙方用於身份認證及安全通信的保障,並採用了雲鏈結合技術以政務云為依託,為各政府委辦提供金融安全級區塊鏈基礎設施服務,通過區塊鏈雲上的服務,為行業提供安全、可靠、靈活的解決方案。區塊鏈技術發展目前還處於早期階段,尤其是在電子政務數據共享方面,應用還不廣,在以後的發展中,針對數據安全和管理的標準還有待更進一步完善和加強。

作者簡介 >>>

谷寧靜 (1980—),女,碩士, 高級工程師,主要研究方向為軟件工程和電子政務。

選自《信息安全與通信保密》2020年第四期 (為便於排版,已省去原文參考文獻)


分享到:


相關文章: