梁 源
(四平紅嘴經(jīng)濟(jì)技術(shù)開發(fā)區(qū)管理委員會(huì)企業(yè)服務(wù)局 吉林 四平 136000)
基于區(qū)塊鏈技術(shù)設(shè)計(jì)的檔案管理系統(tǒng)主要包含區(qū)塊鏈數(shù)據(jù)保護(hù)子系統(tǒng)、檔案管理子系統(tǒng)和系統(tǒng)監(jiān)控平臺(tái)。其中,區(qū)塊鏈數(shù)據(jù)保護(hù)子系統(tǒng)是通過區(qū)塊鏈技術(shù)實(shí)現(xiàn)對(duì)檔案摘要信息的存儲(chǔ),采用星際文件系統(tǒng)(interPlanetary file system,IFPS)的存儲(chǔ)方式對(duì)檔案信息進(jìn)行驗(yàn)證、保護(hù)及恢復(fù)。檔案管理子系統(tǒng)主要包含檔案查閱、檔案驗(yàn)證、檔案借閱、檔案保護(hù)、用戶管理和系統(tǒng)設(shè)置等模塊。系統(tǒng)監(jiān)控平臺(tái)主要是實(shí)現(xiàn)對(duì)檔案數(shù)據(jù)和主機(jī)的監(jiān)測(cè)和告警功能。
檔案管理系統(tǒng)由檔案管理子系統(tǒng)、區(qū)塊鏈保護(hù)子系統(tǒng)和系統(tǒng)監(jiān)控平臺(tái)組成,檔案管理系統(tǒng)整體架構(gòu)如圖1所示。
圖1 檔案管理系統(tǒng)整體架構(gòu)
檔案管理子系統(tǒng)采用MVC5框架搭建,內(nèi)部由MySQL數(shù)據(jù)庫(kù)組成,主要涵蓋業(yè)務(wù)操作界面和系統(tǒng)管理界面。其中,業(yè)務(wù)操作界面包含新增檔案與更新功能、檔案查詢與借閱功能、檔案驗(yàn)證與保護(hù)功能;系統(tǒng)管理界面包含用戶管理功能、權(quán)限管理功能和系統(tǒng)設(shè)置功能。通過對(duì)MySQL數(shù)據(jù)庫(kù)的調(diào)用完成對(duì)本地?cái)?shù)據(jù)的存取操作,采用RESTful接口調(diào)用建立與受區(qū)塊鏈數(shù)據(jù)保護(hù)的子系統(tǒng)檔案驗(yàn)證和查詢與數(shù)據(jù)同步操作。在RESTful接口調(diào)用環(huán)節(jié),采用數(shù)字簽名和非對(duì)稱加密技術(shù),實(shí)現(xiàn)RESTful接口調(diào)用的安全使用,提高數(shù)據(jù)的安全性、保護(hù)數(shù)據(jù)的真實(shí)性[1]。
區(qū)塊鏈保護(hù)子系統(tǒng)主要采用公有區(qū)塊鏈和私有區(qū)塊鏈技術(shù)相結(jié)合的方式:通過公有區(qū)塊鏈的智能合約對(duì)私有鏈區(qū)塊摘要信息進(jìn)行存取,并對(duì)私有鏈區(qū)塊數(shù)據(jù)進(jìn)行驗(yàn)證和保護(hù);采用私有區(qū)塊鏈的智能合約對(duì)檔案摘要信息進(jìn)行存取,并實(shí)現(xiàn)對(duì)數(shù)據(jù)真實(shí)性的保護(hù)。區(qū)塊鏈保護(hù)子系統(tǒng)主要包含檔案存儲(chǔ)、查看、查詢、驗(yàn)證、統(tǒng)計(jì)及用戶設(shè)置模塊,數(shù)據(jù)層面由區(qū)塊鏈數(shù)據(jù)、私有IPFS集群和MongoDB數(shù)據(jù)庫(kù)構(gòu)成。數(shù)據(jù)層面的模塊構(gòu)成可以實(shí)現(xiàn)高效驗(yàn)證和查詢檔案數(shù)據(jù),進(jìn)行檔案數(shù)據(jù)恢復(fù)。公有和私有區(qū)塊鏈智能合約的實(shí)現(xiàn)采用了Web3.js庫(kù)集合的方式,私有IPFS集群地調(diào)用通過React前端框架結(jié)合JS+IPFS+API來實(shí)現(xiàn)文本數(shù)據(jù)的流傳[2]。
系統(tǒng)監(jiān)控平臺(tái)的構(gòu)建采用Zabbix來實(shí)現(xiàn),Zabbix是基于Web界面來提供網(wǎng)絡(luò)監(jiān)視功能和分布式系統(tǒng)監(jiān)視的系統(tǒng)監(jiān)控構(gòu)建方案。Zabbix監(jiān)控軟件可以在保障服務(wù)架構(gòu)安全運(yùn)營(yíng)的基礎(chǔ)上,對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行監(jiān)控,并能夠?yàn)闄n案管理系統(tǒng)運(yùn)維人員提供定位故障告警功能。系統(tǒng)監(jiān)控平臺(tái)可以由多種不同的模塊組成,其中服務(wù)器監(jiān)控模塊對(duì)服務(wù)器各項(xiàng)功能進(jìn)行監(jiān)控,應(yīng)用程序模塊則會(huì)針對(duì)各項(xiàng)應(yīng)用以及使用情況進(jìn)行監(jiān)控,告警模塊目的是提示工作人員平臺(tái)所出現(xiàn)的問題,便于快速維修。
區(qū)塊鏈(Blockchain)是分布式數(shù)據(jù)存儲(chǔ)模式,具有去中心化的特征,是一種具有分布式數(shù)據(jù)存儲(chǔ)、共識(shí)機(jī)制、點(diǎn)對(duì)點(diǎn)傳輸和加密算法等計(jì)算機(jī)技術(shù)應(yīng)用模式。區(qū)塊鏈最早作為比特幣的底層技術(shù),通過密碼學(xué)的方法構(gòu)建數(shù)據(jù)塊,單體數(shù)據(jù)塊中包含比特幣的網(wǎng)絡(luò)交易信息,區(qū)塊鏈可以實(shí)現(xiàn)對(duì)信息有效性的驗(yàn)證,并產(chǎn)生另一個(gè)區(qū)塊數(shù)據(jù)[3]。從廣義上來看,區(qū)塊鏈技術(shù)通過分布式節(jié)點(diǎn)共識(shí)算法對(duì)數(shù)據(jù)進(jìn)行生成和更新,采用區(qū)塊鏈?zhǔn)降臄?shù)據(jù)結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證和存儲(chǔ),利用密碼學(xué)的方法確保訪問數(shù)據(jù)和傳輸數(shù)據(jù)的安全性,在編程和數(shù)據(jù)操作方面采用自動(dòng)化腳本代碼組成的智能合約來實(shí)現(xiàn)。從狹義上來看,區(qū)塊鏈?zhǔn)且劳杏诿艽a學(xué)的數(shù)據(jù)保護(hù)方式,以時(shí)間順序相鏈接的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)。區(qū)塊鏈?zhǔn)怯啥鄠€(gè)單體區(qū)塊所組成的,單體區(qū)塊中記錄了區(qū)塊鏈中的數(shù)據(jù)記錄,在區(qū)塊頭部分記錄上個(gè)單體區(qū)塊的地址,并形成單向鏈?zhǔn)降慕Y(jié)構(gòu)。單體區(qū)塊包含區(qū)塊頭、大小、魔法數(shù)字、交易和交易數(shù)量5個(gè)字段,其中,區(qū)塊頭是構(gòu)建區(qū)塊鏈的關(guān)鍵模塊,是單體區(qū)塊中的抽象交易內(nèi)容;魔法數(shù)字是0xD9B4BEF9的固定值;交易區(qū)塊中涵蓋交易列表;交易數(shù)量區(qū)塊中包含交易數(shù)量[4]。
單體區(qū)塊頭部字段中的默克爾根字段是構(gòu)建區(qū)塊鏈的關(guān)鍵,默克爾根即文件源所代表的哈希值,哈希值代表了文件組成的數(shù)據(jù)塊,默克爾根數(shù)值是默克爾樹中所有節(jié)點(diǎn)的哈希計(jì)算結(jié)果,通過對(duì)兩筆交易用哈希函數(shù)計(jì)算,得出一個(gè)哈希值,將兩個(gè)哈希值進(jìn)行繼續(xù)計(jì)算,得出新的哈希值,以此類推進(jìn)行反復(fù)計(jì)算,所得出的唯一哈希值就是默克爾根。因此,區(qū)塊頭中必須包含有效的默克爾根[5-6]。
2.1.1 共識(shí)機(jī)制
共識(shí)機(jī)制是在分布式因特網(wǎng)中判斷區(qū)塊數(shù)據(jù)的所有權(quán)和正確性,從而實(shí)現(xiàn)各節(jié)點(diǎn)之間達(dá)成共識(shí)的一種算法機(jī)制。目前用于區(qū)塊鏈中的算法機(jī)制包括權(quán)益證明POS、工作量證明POW以及權(quán)威證明POA。權(quán)益證明機(jī)制指的是根據(jù)各個(gè)節(jié)點(diǎn)所持有數(shù)字貨幣的數(shù)量和持有時(shí)間,并發(fā)放獎(jiǎng)勵(lì)的機(jī)制。工作證明機(jī)制由節(jié)點(diǎn)計(jì)算能力決定,節(jié)點(diǎn)對(duì)不同隨機(jī)數(shù)進(jìn)行嘗試,并找到符合條件的隨機(jī)數(shù),該隨機(jī)數(shù)需要符合難度值大于區(qū)塊頭部哈希值,并在其他節(jié)點(diǎn)驗(yàn)證通過后,生成該節(jié)點(diǎn)對(duì)該區(qū)塊的權(quán)限以及對(duì)該節(jié)點(diǎn)的獎(jiǎng)勵(lì)。權(quán)威證明機(jī)制是由可信節(jié)點(diǎn)依次生成的,可信節(jié)點(diǎn)地址和區(qū)塊的產(chǎn)生速度可以在創(chuàng)建區(qū)塊鏈時(shí)進(jìn)行配置,普通節(jié)點(diǎn)只能對(duì)區(qū)塊數(shù)據(jù)發(fā)起交易或進(jìn)行讀取,不具有創(chuàng)建區(qū)塊的權(quán)限[7]。
2.1.2 IPFS(Inter-Planetary File System)
IPFS是基于內(nèi)容尋址和點(diǎn)對(duì)點(diǎn)的超媒體傳輸協(xié)議,集合了自證明文件系統(tǒng)、P2P網(wǎng)絡(luò)技術(shù)、Git版本控制技術(shù)以及BitTorrent傳輸?shù)燃夹g(shù),是新一代的通信協(xié)議[8]。IPFS有公有IPFS集群和私有IPFS集群兩種模式,公有IPFS集群指的是任何人都具有讀取數(shù)據(jù)和寫入數(shù)據(jù)的權(quán)限,也可以作為節(jié)點(diǎn)參與到分布式IPFS網(wǎng)絡(luò)中;私有IPFS集群指的是僅在組織內(nèi)部使用的網(wǎng)絡(luò),其他節(jié)點(diǎn)不具有參與到該網(wǎng)絡(luò)中的權(quán)限,組織內(nèi)部的節(jié)點(diǎn)通過swarm-key建立共享信任機(jī)制。
MVC設(shè)計(jì)模式由Model模型、View視圖和Controller控制器組成??刂破髦饕菍?duì)用戶的請(qǐng)求和輸入進(jìn)行處理,并對(duì)數(shù)據(jù)進(jìn)行權(quán)限控制和過濾,調(diào)用對(duì)應(yīng)的模型對(duì)業(yè)務(wù)流程進(jìn)行執(zhí)行和展示。視圖模塊主要是對(duì)應(yīng)用程序的具體數(shù)據(jù)進(jìn)行展示,并實(shí)現(xiàn)將用戶輸入信息傳送的功能。模型通過對(duì)存儲(chǔ)數(shù)據(jù)流程和業(yè)務(wù)處理流程進(jìn)行封裝,并向接口提供,為控制器調(diào)用數(shù)據(jù)提供支撐[9]。
RESTful架構(gòu)是一種跨語(yǔ)言和跨平臺(tái)輕量級(jí)web架構(gòu)模式。為網(wǎng)絡(luò)資源建立唯一的標(biāo)識(shí)符號(hào),屬于無狀態(tài)網(wǎng)絡(luò)操作模式,用戶的具體操作對(duì)標(biāo)識(shí)符號(hào)不存在影響,符合REST原則的架構(gòu)都稱為RESTful架構(gòu)。
Zabbix網(wǎng)絡(luò)監(jiān)控具有代碼開源的優(yōu)勢(shì),有活躍的交流社區(qū)和詳細(xì)的開發(fā)文檔。Zabbix監(jiān)控方案包括Zabbix Proxy代理服務(wù)器、Zabbix Agent監(jiān)控代理、數(shù)據(jù)存儲(chǔ)、Web平臺(tái)和Zabbix Server信息收集服務(wù)器。通過安裝Zabbix Agent,以實(shí)現(xiàn)對(duì)應(yīng)用程序和本地設(shè)備運(yùn)行狀態(tài)的監(jiān)測(cè)[10]。
檔案管理子系統(tǒng)的主要功能是對(duì)檔案數(shù)據(jù)的輸入、修改、驗(yàn)證和借閱等操作。系統(tǒng)管理人員在對(duì)檔案信息進(jìn)行輸入和修改后,RESTful接口將管理人員所輸入的數(shù)據(jù)儲(chǔ)存在區(qū)塊鏈上,為檔案數(shù)據(jù)建立保護(hù)。另外,檔案管理子系統(tǒng)需要具有檢索和操作檔案的功能需求,主要涵蓋區(qū)塊鏈數(shù)據(jù)保護(hù)子系統(tǒng)檢索和本地?cái)?shù)據(jù)庫(kù)檢索2個(gè)部分,并對(duì)檔案信息進(jìn)行展示。另外,檔案管理子系統(tǒng)具有權(quán)限設(shè)置功能,管理人員可根據(jù)實(shí)際需要對(duì)用戶進(jìn)行權(quán)限設(shè)置。檔案管理子系統(tǒng)整體構(gòu)架如圖2所示。
圖2 檔案管理系統(tǒng)整體架構(gòu)
RESTful接口參數(shù)處理操作設(shè)計(jì)如下:
檔案查詢操作程序設(shè)計(jì)如下:
檔案保存操作程序設(shè)計(jì)如下:
檔案驗(yàn)證操作程序設(shè)計(jì)如下:
通過將檔案屬性信息和檔案附件進(jìn)行加密處理并存儲(chǔ)到IPFS,并在區(qū)塊鏈中存儲(chǔ)檔案摘要信息,實(shí)現(xiàn)對(duì)檔案數(shù)據(jù)的保護(hù)。在驗(yàn)證檔案數(shù)據(jù)的過程中,包含私有區(qū)塊鏈驗(yàn)證IPFS存儲(chǔ)檔案對(duì)象、公有區(qū)塊鏈對(duì)私有區(qū)塊鏈的驗(yàn)證,以及檔案管理數(shù)據(jù)庫(kù)中的檔案數(shù)據(jù)驗(yàn)證。歷史追溯主要是對(duì)管理人員所進(jìn)行的檔案數(shù)據(jù)輸入和修改日志進(jìn)行追溯。檔案恢復(fù)是指在驗(yàn)證數(shù)據(jù)異常后,對(duì)檔案數(shù)據(jù)進(jìn)行恢復(fù)的過程,包括IPFS檔案數(shù)據(jù)恢復(fù)、私有區(qū)塊鏈數(shù)據(jù)恢復(fù)以及檔案管理系統(tǒng)數(shù)據(jù)恢復(fù)。
區(qū)塊鏈技術(shù)實(shí)現(xiàn)對(duì)檔案管理子系統(tǒng)的保護(hù),需要通過RESTful接口對(duì)外提供調(diào)用服務(wù),因此需要對(duì)通過RESTful接口傳輸?shù)臋n案數(shù)據(jù)進(jìn)行數(shù)字簽名和加密處理。采用高安全性的https協(xié)議進(jìn)行傳輸數(shù)據(jù),保障檔案數(shù)據(jù)信息的安全性。
區(qū)塊鏈數(shù)據(jù)保護(hù)子系統(tǒng)依托于Express框架和Node.js語(yǔ)言進(jìn)行設(shè)計(jì)開發(fā),將檔案存儲(chǔ)、查詢、驗(yàn)證、設(shè)計(jì)及用戶設(shè)置等業(yè)務(wù)操作流程封裝,并將用戶的請(qǐng)求數(shù)據(jù)轉(zhuǎn)化為系統(tǒng)調(diào)用數(shù)據(jù)驅(qū)動(dòng)層。區(qū)塊鏈數(shù)據(jù)保護(hù)子系統(tǒng)的數(shù)據(jù)存儲(chǔ)模塊,主要包含數(shù)據(jù)庫(kù)、IPFS和區(qū)塊鏈。數(shù)據(jù)庫(kù)用于對(duì)檔案數(shù)據(jù)的模糊查詢,僅存儲(chǔ)最新的檔案信息;在IPFS中實(shí)現(xiàn)對(duì)檔案屬性信息和歷史版本附件的保存;在區(qū)塊鏈上實(shí)現(xiàn)對(duì)檔案數(shù)據(jù)歷史版本的IPFS地址和數(shù)字指紋進(jìn)行存儲(chǔ)。區(qū)塊鏈數(shù)據(jù)保護(hù)子系統(tǒng)整體構(gòu)架如圖3所示。
圖3 區(qū)塊鏈數(shù)據(jù)保護(hù)子系統(tǒng)整體構(gòu)架
檔案更新操作設(shè)計(jì)如下。
系統(tǒng)監(jiān)控平臺(tái)的主要功能是對(duì)應(yīng)用程序、服務(wù)器主機(jī)、檔案管理子系統(tǒng),以及區(qū)塊鏈數(shù)據(jù)保護(hù)子系統(tǒng)進(jìn)行監(jiān)測(cè)和告警。Zabbix的監(jiān)控范圍主要包含MySQL數(shù)據(jù)庫(kù)、檔案管理子系統(tǒng)、IIS服務(wù)器、RESTful接口服務(wù)器等。Zabbix Agent可以實(shí)現(xiàn)對(duì)應(yīng)用程序的運(yùn)行情況和服務(wù)器主機(jī)性能參數(shù)的監(jiān)測(cè),并將監(jiān)測(cè)數(shù)據(jù)傳送到監(jiān)控?cái)?shù)據(jù)收集分析模塊,在監(jiān)測(cè)數(shù)據(jù)上傳后,Zabbix Server會(huì)將其存儲(chǔ)于MySQL數(shù)據(jù)庫(kù)之中,并對(duì)達(dá)到監(jiān)測(cè)閾值的異常數(shù)據(jù)進(jìn)行告警。系統(tǒng)監(jiān)控平臺(tái)整體構(gòu)架如圖4所示。
圖4 系統(tǒng)監(jiān)控平臺(tái)整體構(gòu)架
區(qū)塊鏈防護(hù)子系統(tǒng)是在IPFS和區(qū)塊鏈技術(shù)基礎(chǔ)上進(jìn)行搭建的,go-ipfs構(gòu)建私有IPFS集群環(huán)境,Geth構(gòu)建私有以太坊區(qū)塊鏈環(huán)境,web3.js調(diào)用區(qū)塊鏈接口,jsipfs-api調(diào)用IPFS集群。檔案管理子系統(tǒng)是以微軟公司開發(fā)的MVC5架構(gòu)為基礎(chǔ),進(jìn)行管理系統(tǒng)開發(fā)。系統(tǒng)監(jiān)控平臺(tái)是以開放源碼監(jiān)測(cè)框架Zabbix為基礎(chǔ),實(shí)現(xiàn)對(duì)服務(wù)器主機(jī)的監(jiān)測(cè)。
區(qū)塊鏈和IPFS技術(shù)的應(yīng)用主要針對(duì)系統(tǒng)中檔案信息安全的保護(hù)。系統(tǒng)存儲(chǔ)歷史檔案,通過發(fā)出RESTFul調(diào)用請(qǐng)求和檔案管理子系統(tǒng)信任權(quán)限控制。RESTFul接口的調(diào)用可以更新智能合約和區(qū)塊鏈內(nèi)的內(nèi)容。區(qū)塊鏈中存儲(chǔ)檔案IPFS,IPFS則存儲(chǔ)檔案完整信息,包含修改檔案歷史記錄。RESTful接口聚焦于數(shù)據(jù)傳輸?shù)陌踩裕褂昧薶ttps協(xié)議和AES加密處理,采用數(shù)字簽名和隨機(jī)數(shù)的方式解決了數(shù)據(jù)被篡改的問題。IPFS用于內(nèi)容儲(chǔ)存,以內(nèi)容的哈希值為地址,在讀取內(nèi)容時(shí)會(huì)將地址和哈希值進(jìn)行比對(duì)和驗(yàn)證,具有防篡改性。智能合約內(nèi)儲(chǔ)存了檔案內(nèi)容的哈希值和IPFS地址,使用智能合約能夠在IPFS驗(yàn)證數(shù)據(jù)的基礎(chǔ)上進(jìn)行二次驗(yàn)證。本地私有鏈和以太坊公有鏈均使用了POW共識(shí)機(jī)制,私有鏈區(qū)塊的產(chǎn)生只能由節(jié)點(diǎn)授權(quán),可以通過與公有鏈哈希值的對(duì)比,發(fā)現(xiàn)數(shù)據(jù)是否被篡改。
總的來說,區(qū)塊鏈和IPFS技術(shù)對(duì)檔案管理系統(tǒng)形成了鏈?zhǔn)奖Wo(hù)機(jī)制,對(duì)私有鏈內(nèi)數(shù)據(jù)的保護(hù)和驗(yàn)證采用了將私有鏈區(qū)塊摘要信息和公有鏈智能合約存儲(chǔ)的方式。系統(tǒng)操作人員在調(diào)取檔案時(shí),RESTful服務(wù)器會(huì)對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,并查看IPFS和區(qū)塊鏈上是否有篡改數(shù)據(jù),系統(tǒng)操作人員也可以將檔案信息與本地?cái)?shù)據(jù)庫(kù)進(jìn)行比對(duì),實(shí)現(xiàn)對(duì)檔案管理系統(tǒng)的多重保護(hù)與驗(yàn)證。
基于區(qū)塊鏈技術(shù)設(shè)計(jì)的檔案管理系統(tǒng)具有較高的數(shù)據(jù)安全性和數(shù)據(jù)真實(shí)性,是滿足現(xiàn)階段檔案安全管理需求的適用性技術(shù),需要在實(shí)踐中不斷探索區(qū)塊鏈技術(shù)在檔案管理系統(tǒng)中的應(yīng)用,充分發(fā)揮區(qū)塊鏈的技術(shù)優(yōu)勢(shì),以提高檔案管理工作的效率和質(zhì)量。