梁 源
(四平紅嘴經濟技術開發區管理委員會企業服務局 吉林 四平 136000)
基于區塊鏈技術設計的檔案管理系統主要包含區塊鏈數據保護子系統、檔案管理子系統和系統監控平臺。其中,區塊鏈數據保護子系統是通過區塊鏈技術實現對檔案摘要信息的存儲,采用星際文件系統(interPlanetary file system,IFPS)的存儲方式對檔案信息進行驗證、保護及恢復。檔案管理子系統主要包含檔案查閱、檔案驗證、檔案借閱、檔案保護、用戶管理和系統設置等模塊。系統監控平臺主要是實現對檔案數據和主機的監測和告警功能。
檔案管理系統由檔案管理子系統、區塊鏈保護子系統和系統監控平臺組成,檔案管理系統整體架構如圖1所示。

圖1 檔案管理系統整體架構
檔案管理子系統采用MVC5框架搭建,內部由MySQL數據庫組成,主要涵蓋業務操作界面和系統管理界面。其中,業務操作界面包含新增檔案與更新功能、檔案查詢與借閱功能、檔案驗證與保護功能;系統管理界面包含用戶管理功能、權限管理功能和系統設置功能。通過對MySQL數據庫的調用完成對本地數據的存取操作,采用RESTful接口調用建立與受區塊鏈數據保護的子系統檔案驗證和查詢與數據同步操作。在RESTful接口調用環節,采用數字簽名和非對稱加密技術,實現RESTful接口調用的安全使用,提高數據的安全性、保護數據的真實性[1]。
區塊鏈保護子系統主要采用公有區塊鏈和私有區塊鏈技術相結合的方式:通過公有區塊鏈的智能合約對私有鏈區塊摘要信息進行存取,并對私有鏈區塊數據進行驗證和保護;采用私有區塊鏈的智能合約對檔案摘要信息進行存取,并實現對數據真實性的保護。區塊鏈保護子系統主要包含檔案存儲、查看、查詢、驗證、統計及用戶設置模塊,數據層面由區塊鏈數據、私有IPFS集群和MongoDB數據庫構成。數據層面的模塊構成可以實現高效驗證和查詢檔案數據,進行檔案數據恢復。公有和私有區塊鏈智能合約的實現采用了Web3.js庫集合的方式,私有IPFS集群地調用通過React前端框架結合JS+IPFS+API來實現文本數據的流傳[2]。
系統監控平臺的構建采用Zabbix來實現,Zabbix是基于Web界面來提供網絡監視功能和分布式系統監視的系統監控構建方案。Zabbix監控軟件可以在保障服務架構安全運營的基礎上,對網絡參數進行監控,并能夠為檔案管理系統運維人員提供定位故障告警功能。系統監控平臺可以由多種不同的模塊組成,其中服務器監控模塊對服務器各項功能進行監控,應用程序模塊則會針對各項應用以及使用情況進行監控,告警模塊目的是提示工作人員平臺所出現的問題,便于快速維修。
區塊鏈(Blockchain)是分布式數據存儲模式,具有去中心化的特征,是一種具有分布式數據存儲、共識機制、點對點傳輸和加密算法等計算機技術應用模式。區塊鏈最早作為比特幣的底層技術,通過密碼學的方法構建數據塊,單體數據塊中包含比特幣的網絡交易信息,區塊鏈可以實現對信息有效性的驗證,并產生另一個區塊數據[3]。從廣義上來看,區塊鏈技術通過分布式節點共識算法對數據進行生成和更新,采用區塊鏈式的數據結構對數據進行驗證和存儲,利用密碼學的方法確保訪問數據和傳輸數據的安全性,在編程和數據操作方面采用自動化腳本代碼組成的智能合約來實現。從狹義上來看,區塊鏈是依托于密碼學的數據保護方式,以時間順序相鏈接的鏈式數據結構。區塊鏈是由多個單體區塊所組成的,單體區塊中記錄了區塊鏈中的數據記錄,在區塊頭部分記錄上個單體區塊的地址,并形成單向鏈式的結構。單體區塊包含區塊頭、大小、魔法數字、交易和交易數量5個字段,其中,區塊頭是構建區塊鏈的關鍵模塊,是單體區塊中的抽象交易內容;魔法數字是0xD9B4BEF9的固定值;交易區塊中涵蓋交易列表;交易數量區塊中包含交易數量[4]。
單體區塊頭部字段中的默克爾根字段是構建區塊鏈的關鍵,默克爾根即文件源所代表的哈希值,哈希值代表了文件組成的數據塊,默克爾根數值是默克爾樹中所有節點的哈希計算結果,通過對兩筆交易用哈希函數計算,得出一個哈希值,將兩個哈希值進行繼續計算,得出新的哈希值,以此類推進行反復計算,所得出的唯一哈希值就是默克爾根。因此,區塊頭中必須包含有效的默克爾根[5-6]。
2.1.1 共識機制
共識機制是在分布式因特網中判斷區塊數據的所有權和正確性,從而實現各節點之間達成共識的一種算法機制。目前用于區塊鏈中的算法機制包括權益證明POS、工作量證明POW以及權威證明POA。權益證明機制指的是根據各個節點所持有數字貨幣的數量和持有時間,并發放獎勵的機制。工作證明機制由節點計算能力決定,節點對不同隨機數進行嘗試,并找到符合條件的隨機數,該隨機數需要符合難度值大于區塊頭部哈希值,并在其他節點驗證通過后,生成該節點對該區塊的權限以及對該節點的獎勵。權威證明機制是由可信節點依次生成的,可信節點地址和區塊的產生速度可以在創建區塊鏈時進行配置,普通節點只能對區塊數據發起交易或進行讀取,不具有創建區塊的權限[7]。
2.1.2 IPFS(Inter-Planetary File System)
IPFS是基于內容尋址和點對點的超媒體傳輸協議,集合了自證明文件系統、P2P網絡技術、Git版本控制技術以及BitTorrent傳輸等技術,是新一代的通信協議[8]。IPFS有公有IPFS集群和私有IPFS集群兩種模式,公有IPFS集群指的是任何人都具有讀取數據和寫入數據的權限,也可以作為節點參與到分布式IPFS網絡中;私有IPFS集群指的是僅在組織內部使用的網絡,其他節點不具有參與到該網絡中的權限,組織內部的節點通過swarm-key建立共享信任機制。
MVC設計模式由Model模型、View視圖和Controller控制器組成。控制器主要是對用戶的請求和輸入進行處理,并對數據進行權限控制和過濾,調用對應的模型對業務流程進行執行和展示。視圖模塊主要是對應用程序的具體數據進行展示,并實現將用戶輸入信息傳送的功能。模型通過對存儲數據流程和業務處理流程進行封裝,并向接口提供,為控制器調用數據提供支撐[9]。
RESTful架構是一種跨語言和跨平臺輕量級web架構模式。為網絡資源建立唯一的標識符號,屬于無狀態網絡操作模式,用戶的具體操作對標識符號不存在影響,符合REST原則的架構都稱為RESTful架構。
Zabbix網絡監控具有代碼開源的優勢,有活躍的交流社區和詳細的開發文檔。Zabbix監控方案包括Zabbix Proxy代理服務器、Zabbix Agent監控代理、數據存儲、Web平臺和Zabbix Server信息收集服務器。通過安裝Zabbix Agent,以實現對應用程序和本地設備運行狀態的監測[10]。
檔案管理子系統的主要功能是對檔案數據的輸入、修改、驗證和借閱等操作。系統管理人員在對檔案信息進行輸入和修改后,RESTful接口將管理人員所輸入的數據儲存在區塊鏈上,為檔案數據建立保護。另外,檔案管理子系統需要具有檢索和操作檔案的功能需求,主要涵蓋區塊鏈數據保護子系統檢索和本地數據庫檢索2個部分,并對檔案信息進行展示。另外,檔案管理子系統具有權限設置功能,管理人員可根據實際需要對用戶進行權限設置。檔案管理子系統整體構架如圖2所示。

圖2 檔案管理系統整體架構
RESTful接口參數處理操作設計如下:

檔案查詢操作程序設計如下:

檔案保存操作程序設計如下:

檔案驗證操作程序設計如下:

通過將檔案屬性信息和檔案附件進行加密處理并存儲到IPFS,并在區塊鏈中存儲檔案摘要信息,實現對檔案數據的保護。在驗證檔案數據的過程中,包含私有區塊鏈驗證IPFS存儲檔案對象、公有區塊鏈對私有區塊鏈的驗證,以及檔案管理數據庫中的檔案數據驗證。歷史追溯主要是對管理人員所進行的檔案數據輸入和修改日志進行追溯。檔案恢復是指在驗證數據異常后,對檔案數據進行恢復的過程,包括IPFS檔案數據恢復、私有區塊鏈數據恢復以及檔案管理系統數據恢復。
區塊鏈技術實現對檔案管理子系統的保護,需要通過RESTful接口對外提供調用服務,因此需要對通過RESTful接口傳輸的檔案數據進行數字簽名和加密處理。采用高安全性的https協議進行傳輸數據,保障檔案數據信息的安全性。
區塊鏈數據保護子系統依托于Express框架和Node.js語言進行設計開發,將檔案存儲、查詢、驗證、設計及用戶設置等業務操作流程封裝,并將用戶的請求數據轉化為系統調用數據驅動層。區塊鏈數據保護子系統的數據存儲模塊,主要包含數據庫、IPFS和區塊鏈。數據庫用于對檔案數據的模糊查詢,僅存儲最新的檔案信息;在IPFS中實現對檔案屬性信息和歷史版本附件的保存;在區塊鏈上實現對檔案數據歷史版本的IPFS地址和數字指紋進行存儲。區塊鏈數據保護子系統整體構架如圖3所示。

圖3 區塊鏈數據保護子系統整體構架
檔案更新操作設計如下。

系統監控平臺的主要功能是對應用程序、服務器主機、檔案管理子系統,以及區塊鏈數據保護子系統進行監測和告警。Zabbix的監控范圍主要包含MySQL數據庫、檔案管理子系統、IIS服務器、RESTful接口服務器等。Zabbix Agent可以實現對應用程序的運行情況和服務器主機性能參數的監測,并將監測數據傳送到監控數據收集分析模塊,在監測數據上傳后,Zabbix Server會將其存儲于MySQL數據庫之中,并對達到監測閾值的異常數據進行告警。系統監控平臺整體構架如圖4所示。

圖4 系統監控平臺整體構架
區塊鏈防護子系統是在IPFS和區塊鏈技術基礎上進行搭建的,go-ipfs構建私有IPFS集群環境,Geth構建私有以太坊區塊鏈環境,web3.js調用區塊鏈接口,jsipfs-api調用IPFS集群。檔案管理子系統是以微軟公司開發的MVC5架構為基礎,進行管理系統開發。系統監控平臺是以開放源碼監測框架Zabbix為基礎,實現對服務器主機的監測。
區塊鏈和IPFS技術的應用主要針對系統中檔案信息安全的保護。系統存儲歷史檔案,通過發出RESTFul調用請求和檔案管理子系統信任權限控制。RESTFul接口的調用可以更新智能合約和區塊鏈內的內容。區塊鏈中存儲檔案IPFS,IPFS則存儲檔案完整信息,包含修改檔案歷史記錄。RESTful接口聚焦于數據傳輸的安全性,使用了https協議和AES加密處理,采用數字簽名和隨機數的方式解決了數據被篡改的問題。IPFS用于內容儲存,以內容的哈希值為地址,在讀取內容時會將地址和哈希值進行比對和驗證,具有防篡改性。智能合約內儲存了檔案內容的哈希值和IPFS地址,使用智能合約能夠在IPFS驗證數據的基礎上進行二次驗證。本地私有鏈和以太坊公有鏈均使用了POW共識機制,私有鏈區塊的產生只能由節點授權,可以通過與公有鏈哈希值的對比,發現數據是否被篡改。
總的來說,區塊鏈和IPFS技術對檔案管理系統形成了鏈式保護機制,對私有鏈內數據的保護和驗證采用了將私有鏈區塊摘要信息和公有鏈智能合約存儲的方式。系統操作人員在調取檔案時,RESTful服務器會對數據進行驗證,并查看IPFS和區塊鏈上是否有篡改數據,系統操作人員也可以將檔案信息與本地數據庫進行比對,實現對檔案管理系統的多重保護與驗證。
基于區塊鏈技術設計的檔案管理系統具有較高的數據安全性和數據真實性,是滿足現階段檔案安全管理需求的適用性技術,需要在實踐中不斷探索區塊鏈技術在檔案管理系統中的應用,充分發揮區塊鏈的技術優勢,以提高檔案管理工作的效率和質量。