架構設計圖
分析
- 為了保障檔案數據的安全性和隱私性,存儲檔案附件和檔案屬性存儲加密存儲在私有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合約的對應關系。
區塊鏈結構圖
具體的流程圖(區塊鏈+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的數據篡改行為,檔案館自身也可以通過本地數據庫與檔案對象的比對,發現本地的數據篡改行為并進行處理。