1. 程式人生 > 實用技巧 >目前基於區塊鏈的檔案防篡改系統的設計如何實現防篡改

目前基於區塊鏈的檔案防篡改系統的設計如何實現防篡改

架構設計圖

分析

  • 為了保障檔案資料的安全性和隱私性,儲存檔案附件和檔案屬性儲存加密儲存在私有IPFS叢集,檔案的IPFS地址和數字指紋儲存在私有區塊鏈上。公有區塊鏈定期儲存和檢查私有區塊鏈最新不可逆區塊的高度和雜湊值,以保障私有區塊鏈上資料的真實性。(私有鏈上的資料準確無誤之後,才會將區塊的雜湊資訊定期儲存到公有鏈上,雖然引入了公有鏈保障了資料的安全性和可靠性,但是往公有鏈上記錄資料需要花費手續費,因此可改用聯盟鏈,但是聯盟鏈的安全性相對於公有鏈很差,是一個半中心化的平臺,需要進一步優化)
  • MongoDB則用於儲存區塊鏈資料管理平臺中的使用者資訊、檔案統計資訊和檔案屬性的最新資訊,用於檔案的模糊查詢。

智慧合約架構設計

分析

  • 區塊鏈保護子系統中的智慧合約架構如上圖所示,私有鏈保護合約(PfivNeChain Protection Contract,PCPC)是執行在公有鏈上的智慧合約,用於儲存私有鏈區塊的高度和雜湊值等資訊,實現私有區塊鏈的保護。
  • 檔案保護控制合約(Archive Protection Controller Contract,APCC)、自我保護合約(Self ProtectionContract,SPC)、工廠類合約(Factory ClassContract,FCC)是執行在私有鏈上的全域性合約,其中SPC合約用於記錄智慧合約寫入資料的次數,並定期與公有區塊鏈進行錨定;FCC合約會在新增檔案時,為每個檔案建立對應的檔案資訊儲存合約(AISC
    ),AISC合約儲存了檔案的所有歷史版本的摘要資訊,包括檔案物件雜湊值和IPFS地址等;APCC合約儲存了檔案編號和AISC合約的對應關係。

區塊鏈結構圖

BlockChain 與Ethereum 介紹| 王子亭的部落格

具體的流程圖(區塊鏈+IPFS)

如何防篡改

  • 該系統是信任數字檔案管理子系統的許可權控制和發出的RESTful呼叫請求操作的,並且通過儲存檔案多個歷史版本的方式,實現了檔案修改歷史的追溯和檔案資訊的恢復。
  • 數字據檔案管理系統具有自己的許可權管理機制,只有具備相應許可權的管理員才能執行新增或修改電子檔案的操作,並通過RESTful介面呼叫的方式更新區塊鏈和智慧合約中的內容。
  • 即使檔案管理系統的管理員賬戶和密碼被黑客獲取,以該管理員的身份更新本地資料庫和區塊鏈中檔案資訊。IPFS中儲存了數字檔案每個更新後的版本的完整資訊,區塊鏈中儲存了每個版本檔案的IPFS地址,通過RESTful介面依然可以查詢到該檔案的修改歷史,並且恢復到某個歷史狀態。RESTful介面的設計非常關注資料傳輸的安全性和可靠性,在使用https協議的基礎上,還對檔案資訊進行了AES加密傳輸,並通過時間戳、隨機數、數字簽名引數
    解決了重放攻擊和資料篡改的問題。
  • 即使https被黑客攻擊,只要沒有獲得區塊鏈資料保護子系統的私有金鑰就不能解密得到檔案的原始資訊,並且只要沒有獲得檔案館的私有金鑰就不能重新計算數字簽名,也就不能篡改加密後的檔案資料、時間戳和隨機數引數,不能對RESTful介面發起重放攻擊。
  • IPFS是基於內容儲存的檔案系統,它以內容的雜湊值作為地址,取出內容時還會驗證雜湊值是否與地址一致,因此使用IPFS儲存檔案資料具有很強的防篡改性。此外,智慧合約在儲存了檔案IPFS地址的同時,也儲存了檔案的雜湊值,在從IPFS取出資料之後,還能夠再次驗證檔案資料的真實性。智慧合約的資料儲存在區塊上,而區塊一旦生成內容就不能夠被篡改,只能通過“分叉”的方式來替換已有區塊的內容,並且生成越早的區塊,被替換的難度就越大。以太坊公有鏈主要使用PoW共識機制,因此存在51%攻擊的可能性,它是指如果某個節點擁有了全網51%的計算能力之後,就能夠比其他節點更快的生成區塊,使現有區塊鏈的主鏈分叉,形成更長的一條區塊鏈並最終被其他所有節點接受,成為新的主鏈。但由於整個以太坊區塊鏈的計算能力是非常巨大的,某個個體或組織很難擁有全網51%的計算能力,因此可以被認為是安全的。本地的私有鏈環境則使用了PoA共識機制,它兼具了區塊鏈的不可篡改性和本地環境的可管理性,即區塊只能由授權節點產生而與節點的計算能力無關,因此能夠免51%攻擊的問題。並且私有鏈區塊的高度和雜湊值也會一定頻率儲存到公有鏈上進行保護,如果私有鏈出現了分叉的情況,必然會導致已生成區塊雜湊值的變化,通過與公有鏈儲存的區塊高度和雜湊值的對比也能夠及時發現。該方案基於區塊鏈和IPFS技術實現了一種鏈式保護機制,即通過公有鏈智慧合約儲存私有鏈區塊摘要資訊的方式實現對私有鏈上資料的保護與驗證,通過私有鏈智慧合約儲存檔案物件IPFS地址和雜湊值的方式實現對IPFS中檔案物件的保護與驗證,通過IPFS中的檔案物件實現了對本地資料庫中的檔案資訊的保護與驗證。每次檔案館通過RESTful介面獲取檔案時,RESTful伺服器都會在後臺對資料的真實性進行驗證,能夠及時地發現並定位私有區塊鏈、IPFS的資料篡改行為,檔案館自身也可以通過本地資料庫與檔案物件的比對,發現本地的資料篡改行為並進行處理。