閱讀《一種基於區塊鏈的去中心化數據溯源方法》總結


張國英,毛燕琴.一種基於區塊鏈的去中心化數據溯源方法[J].南京郵電大學學報(自然科學版),2019,39(02):91-98.


摘要

為了避免數據欺詐(如數據被篡改)等情況發生,必須保持數據創建、修改和轉移的歷史記錄,即溯源。傳統的數據溯源系統大多采用中心化的存儲模式,存在易遭受內部、外部攻擊,且有單點故障等弊端。區塊鏈是一種隨着比特幣系統發展起來的,基於互聯網的去中心化信任管理機制, 其難以被篡改、可追溯等特性為安全的數據溯源提供了新的解決途徑。文中提出了一種基於區塊鏈的去中心化數據溯源方法,其中包括建立PROV溯源數據模型描述溯源數據;設計了一套溯源數據管理的合約,通過智能合約將溯源數據存儲到區塊鏈上,確保用戶獲得的溯源數據真實可靠;搭建了一個以太坊的私有區塊鏈網絡,通過設計一個基於React的JavaScript Web應用程序,仿真實現和測試了所提出的方法,測試結果證明所提出方案的正確性和可行性。
關鍵詞: 區塊鏈;數據溯源;智能合約

0 相關研究

  • Blockchain:the solution for transparency in product supply chains[EB/OL].[2019-01-05].https://www.provenance.org/whitepaper.
  • TIAN Feng.A supply chain traceability system for food safety based on HACCP.blockchain&Internet of Things [c]//International Conference on Service Systems and Service Management(ICSSSM).2017:l一6.
  • MCCONAGHY T,MARQUES R,MOLLER A,et a1.BigchainDB:a scalable blockehain database(DRAFT) [EB/OL].[2019-01-05].http://www.blockchain.jetzt/wp-content/uploads/2016/02/bigchaindb-whitepaper.pdf.
  • LIANG X,SHETrY s,TOSH D,et a1.ProvChain:a block· chain-based data provenance architecture in cloud environment with enhanced privacy and availability[c]//17th IEEE/ACM International Symposium on Cluster,Cloud and Grid Computing(CCGRID).2017:468—477.
    上述利用區塊鏈技術進行溯源的系統大多是針對特定應用場景,采用自己搭建的區塊鏈來存儲產品的溯源數據,安全性弱。

1 相關技術


1.1 數據溯源技術

  • 現有的溯源系統大多采用中心化存儲方式,數據庫中存儲、維護的是數據的當前狀態,數據的歷史信息和處理過程通常存儲在數據庫日志中,用於故障恢復,並不直接提供查詢服務。
  • 問題:溯源數據造假、單點故障、存儲在數據庫日志難以實現追溯。基於分布式架構的溯源系統信息分散,容易信息造假,追溯效率低。

1.2 區塊鏈技術

  • 按照訪問和管理權限,區塊鏈目前從實現角度分為公有鏈私有鏈聯盟鏈。私有鏈和聯盟鏈都屬於專用的區塊鏈,即專有鏈。公有鏈和專 有鏈的區別在於讀寫權限以及去中心化的程度。一般而言,去中心化的程度越高,可信度越高
  • 考慮到聯盟鏈和私有鏈去中心化、開放程度低,而以太坊除了具備可信存儲、可信驗證等特性,還提供了靈活通用的智能合約,能夠建立各種去中心化的服務,且便於部署和二次開發,因此本文基於以太坊平台實現數據溯源。
    以前寫的智能合約相關

1.3 數據溯源模型

  • 本文基於PROV 數據模型建立了溯源數據模型來進行溯源數據的描述。 【另開一篇寫溯源數據模型】
  • 在PROV-DM中,溯源數據被定義為一條記錄, 描述了3個核心要素即Entity(實體)、Activity(活動)和Agent(代理)及它們之間的關系。
    - 實體是對要記錄溯源信息的事物的描述。
    - 活動是發生或作用於實體的某種形式的操作,描述實體如何成為目前的狀態以及實體的屬性如何變化。活動可能會產生新的實體。
    - 代理為一個實體的存在、一個活動的發生或另一個代理的活動承擔的某種形式的責任,可以是人、 軟件或其他可以賦予責任的角色的實體。
  • 溯源信息的表示主要是通過溯源元數據來體現,本文將溯源數據模型表示為一個元組,即溯源記錄可以表示為(數據實體,對數據所做的操作,用戶名)。

2 基於區塊鏈的數據溯源方法


2.1 參與方的身份真實性驗證

  • 可信的身份真實性驗證是安全數據溯源的第一道屏障。數據溯源涉及眾多參與主體,包括數據源、 數據傳遞方、數據審核方、數據使用方,他們共同參與、維護區塊鏈。
  • 各方首先注冊為區塊鏈中的用戶,注冊后每個用戶會生成一個公鑰/私鑰對。公鑰用於標識系統內用戶的身份,私鑰用於數字簽名,確保用戶身份的真實性,允許數據的接收者用以確認數據的來源,防止被人偽造。
  • 該實現基於secp256kl 橢圓曲線數學的數字簽名算法(ECDSA)。公鑰通過私鑰計算得出,但由公鑰不能推導出私鑰。
  • 數據是否被篡改的問題利用keccak 256哈希算法解決。

2.2 溯源數據的可信存儲

  • 本文基於PROV數據模型(PROV-DM)建立了溯源數據模型來描述溯源記錄,以便跟蹤數據的變化並識別導致變化的實體,通過智能合約將溯源數據存儲到區塊鏈上
  • 根據PROV-DM的定義
    • 我們想要溯源的數據對象即為實體,需要計算數據的哈希值H(M);
    • 用戶A是數據M的所有者或創建者,定義為代理,之后需要對數據進行數字簽名操作;
    • 由於A並未對數據做進一步處理,活動指數據源獲取數據的時間。
      因此,溯源記錄(Provenance Record,PR)至少包含:要溯源的數據的哈希 H(M),時間戳timestamp,所有者簽名sig。即PR= (H(M),timestamp,sig)。
  • 數據溯源的其他參與方(如用戶B)還可以對數據進行編輯等操作,但必須將對數據所做的操作記錄在鏈上以供將來驗證,則溯源記錄需包含:之前版本的數據哈希值H(M)、時間戳和簽名的哈希值, 當前版本(對數據做修改后)的數據哈希值日(M’),所做的操作activity,操作者簽名sigk,即PR= (H(M’),H(H(M),sig,timestamp),activity,sigk)。

2.3 智能合約

  • 基於PROV數據模型建立的溯源數據模型可以 描述溯源信息,然而,未涉及如何以可靠和永久的方式記錄必要的元數據和數據以進行日后的驗證。本文基於以太坊平台,通過智能合約將溯源記錄存儲在區塊鏈上,合約可以看作區塊鏈中的自治代理,在滿足預設條件時自動執行,減少了人工干預,從而實現溯源記錄的可信存儲和可信驗證。
  • 參與方讀取和寫入溯源數據的邏輯分別為:Object.sol,Agent.sol,Event.sol和對應的ProvObject.sol,ProvAgent.sol和ProvEvent.sol。

  • 合約通過P2P的方式在網絡中傳播,每個節點 都會收到一份。區塊鏈中的驗證節點會對合約進行驗證,驗證的內容主要是合約參與者的私鑰簽名是否與賬戶匹配,驗證通過的合約才會最終被寫入區塊鏈中。

3 基於區塊鏈的數據溯源的實現


3.1 功能架構

  • 主要實現了2個功能:溯源數據的存儲功能和溯源數據的驗證功能。另外,本文還進行了可視化模塊的設計,便於溯源數據的查看。

  • 功能模塊圖

  • 基於上述功能模塊的划分,設計了基於區塊鏈的數據溯源的功能實現架構。

    • 區塊鏈網絡由區塊鏈節點共同搭建(Geth(Go.ethereum)客戶端)。
    • 智能合約部分,通過Solidity語言可以靈活編寫適用於應用的、全網節點都需要嚴格執行的智能合約腳本(實現溯源數據存儲和驗證的邏輯)。
    • 前端頁面展示部分,在區塊鏈網絡正常運行,合約部署成功的基礎上,參與方可以基於前端頁面實現溯源數據的存儲和溯源記錄驗證功能。

3.2 仿真實現

實驗的運行系統是Ubunml6.04,采用目前比較流行的Truffle開發框架來進行智能合約的編譯、部署和測試。智能合約必須要部署到鏈上進行測試,Truffle官方推薦Ganache客戶端來進行智能合約的測試,待測試成功后將合約部署到Geth客戶端上,應用前端基於React框架開發,通過與合約進行交互來實現溯源數據的存儲和查詢。
(實驗分析過程略)


總結:通過這篇論文大致了解了如果使用區塊鏈進行溯源的過程。需要多加了解溯源模型。這個過程的實現,需要加強對於智能合約編寫的學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM