云 健,王 振,王春霞
(1.大連民族大學 計算機科學與工程學院,遼寧 大連 116650;2,大連民族大學檔案館,遼寧 大連 116650)
隨著第五次科技革命的到來,信息技術正在高速地蓬勃發展,呈現出多元化、網絡化、多媒體化、智能化、虛擬化的趨勢[1]。檔案的存儲方式正由紙質存儲轉變為數字化存儲,且從過去關注檔案實體管理轉向高度重視知識內容管理。但是,在檔案數字化的過程中,新的挑戰也隨之而來,如數字化檔案安全性低、保密性差、有被篡改的可能,數字化檔案移交接收流程較不規范、難以溯源等等。
區塊鏈[2]技術不是單一的信息技術,它是數學、密碼學、計算機科學乃至經濟學、社會學的集成創新,通過“不可篡改”“全程可溯源”“全面一致性”“分布式共享”“合約智能化”“信用塑造”“正向激勵”等特性來創造互聯網中的信任與價值。區塊鏈由一個個存儲數據區塊組成的,每個區塊頭都存儲著各自的哈希值,同時也存儲著前一個區塊的哈希值,哈希值是哈希算法將任意長度的二進制值映射為固定長度的二進制值[3],它是一段數據唯一且極其緊湊的數值表示形式,具有三個安全特性,分別是碰撞阻力、隱秘性、謎題友好[4],這些特性保證了區塊鏈難以被破解。區塊鏈技術極大地拓展了社會協作的廣度和深度,提供了互聯網時代的多主體合作機制和組織形式。目前,區塊鏈技術應用已延伸到多個社會服務領域,全球主要國家都在加快布局區塊鏈技術發展。2019年10月24日,中共中央政治局就區塊鏈技術發展現狀和趨勢進行第十八次集體學習,會議強調要把區塊鏈作為核心技術自主創新重要突破口,要探索利用區塊鏈數據共享模式,實現數據跨部門、跨區域共同維護和利用,促進業務協同辦理。目前,區塊鏈技術已正式上升為國家戰略。
區塊鏈作為新一代信息技術加速突破應用,目前,包括美國、英國、瑞典、西班牙、愛沙尼亞[5-9]等國在內的全球主要國家都在加快布局區塊鏈技術在電子政務領域的應用。具體到數字檔案工作,已經受到中國政府及學界的廣泛關注:一方面,2017年國家檔案局將“區塊鏈技術在電子檔案管理中的應用”納入科技項目的立項選題指南,這標志著區塊鏈技術正式走進中國檔案界的視野;另一方面,主流學界也普遍認為區塊鏈技術本身與數字檔案工作存在契合之處,區塊鏈技術與數字檔案管理的基本要求更是高度吻合[10-11]。與此同時,也確有部分學者認為現階段將區塊鏈技術運用于檔案管理活動不可行[10-12]。究其根本原因,有兩點:一是,目前區塊鏈在檔案管理中的研究,絕大多數都是定性的理論探討或者對“區塊鏈+檔案”特征和愿景的宏觀思辨,而切實立足于“檔案建設”的“區塊鏈+檔案”實際落地應用則鮮有報道;二是,鑒于我國檔案工作一直遵循集中統一管理原則[13-14],以及現實工作中的數字檔案的存儲容量往往是巨大的,現有的區塊鏈技術在絕對“去中心化”和“區塊存儲容量過小(典型應用的區塊大小只有1 MB)”兩個特點上如果不加以改進,確實難以與現實的檔案管理真正對接。
綜合以上,本文認為對現有區塊鏈技術及其存儲模式進行科學選型、整合、改進和突破,進而切實構建起一個“區塊鏈+檔案”的實際落地應用平臺具有重要意義。
(1)容災備份的現實需求
傳統的紙質檔案容災備份需求是顯然的,但是數字檔案容災備份需求卻往往沒有引起足夠重視。事實上,傳統紙質檔案的受災受損過程往往是有時延的,受災受損程度從某種角度說屬于漸進過程量,往往還有救災減損的一定余地;而數字檔案的受災受損一旦發生,比如說存放數字檔案的中心化服務器在受到黑客入侵、計算機病毒植入操作系統、自然災害使中心服務器損毀時,數字檔案往往會瞬間受災受損,甚至造成檔案數據無法修復的災難性后果。綜上所述,盡管我國檔案工作一直遵循集中統一管理原則,但是,這并不意味著數字檔案的存儲要依靠中心化服務器,恰與此相反,數字檔案必須具有極強的健壯性,即在極端環境下數字檔案仍然可以保證其自身的完整性,要想滿足這一需求,數字檔案的存儲就不能依賴于中心化的服務器,而應該采取分布式存儲。
(2)有序共享和權威存證的現實需求
雖然數字檔案本身具有便于共享的特性,但是其不能保證共享的有序性和嚴謹性,究其原因是因為數字檔案作為二進制電子文件在計算機網絡中其內容和形式都是相對獨立的,失去了固定形式,因此安全性降低、保密性變差、被篡改的可能增加、移交接收流程變得不規范且難以溯源。以上現實瓶頸使得數字檔案的原始性和法律憑證性都受到了巨大的沖擊[15]。既要數字檔案帶來的共享便捷,又要數字檔案保持其權威存證特性,這個兩難問題亟需在檔案界引入具有“不可篡改”“全程可溯源”“全面一致性”特征的區塊鏈存證技術作為數字檔案加以解決。區塊鏈技術主流方向有兩類,分別是傳統的公有鏈和新一代聯盟鏈。公有鏈網絡無限制條件,任何想加入網絡的節點都可加入,并且公有鏈中的記錄數據任何加入網絡的節點都可直接獲取,具有絕對“去中心化”特征。聯盟鏈是由指定的多個組織成員參與網絡組成聯盟,成員加入時,需要由證書頒發機構(Certificate Authority,CA)進行身份驗證,只有身份證書和私鑰文件驗證通過的成員才能在網絡中通信,并且聯盟鏈網絡中的數據只有具有了一定權限的成員才能調閱。本文認為需要充分利用新一代聯盟區塊鏈技術對傳統區塊鏈技術的“不可篡改”“全程可溯源”特征進行繼承,對公有鏈技術的絕對“去中心化”傾向加以約束與限制。
(3)數字檔案海量存儲的現實需求
基于磁、光、電等多種載體的數字檔案需要海量存儲,但是經典區塊鏈中的每一個“區塊”存儲容量極其有限,以區塊鏈技術典型應用——比特幣為例,其區塊鏈網絡中的每個區塊大小僅有1 MB,比特幣區塊鏈網絡從2008年誕生至今,完整的比特幣區塊鏈網絡大小才只有400 GB,即一個TB級別的硬盤驅動器就可以覆蓋這些數據。顯然,以經典區塊鏈技術中現有的存儲單位和存儲容量絕無可能滿足數字檔案海量存儲需求。因此,本文認為數字檔案分布式應用平臺要想在有序共享、權威存證和海量存儲之間取得精準平衡,就必須通過技術改進為區塊鏈網絡擴容。
(1)針對數字檔案容災備份和海量存儲的問題,本文設計了一種區塊鏈分布式存儲模型,將分布式存儲技術與聯盟鏈結合,把檔案文件存儲在分布式網絡中,使存儲容量擴大,而把檔案文件的屬性信息存儲在區塊鏈中。與此同時,利用聯盟區塊鏈平臺設計智能合約,使用聯盟鏈引入私有數據存儲方式,使某平臺中的保密檔案可以不必被鏈中所有平臺共享,對不同密級的檔案文件進行分類多賬本存儲,并且各個賬本采用不同的加密方式,對不同級別的用戶開放相應的檔案操作權限,實現檔案存儲的高效性與保密性。
(2)針對目前數字檔案共享無序、不規范、難溯源的問題,本文提出了一種基于分布式技術和聯盟鏈智能合約技術的檔案移交模型,通過生成私網密鑰,隔離其他非聯盟成員,搭建分布式存儲網絡,通過共享密鑰的方式將各個存儲組織節點相互關聯,同時,在數字檔案移交過程中,通過智能合約生成移交密鑰,完成檔案移交權限的限定。將數字檔案多個存儲平臺組成了一個聯盟網絡,使得各個平臺擁有一個或多個區塊鏈節點,在保證安全的同時,可以方便快捷地進行檔案的有序共享工作。
(3)以構建上述兩個模型為基礎,在數字檔案分布式應用平臺的具體構建中,解決了身份控制驗證問題、檔案分類存儲問題、檔案移交認證與調閱溯源等系統實現階段的關鍵問題。
(1)聯盟區塊鏈技術選型。Fabric[16]是Hyper ledger中的區塊鏈平臺,由Digital Asset和IBM提供,是聯盟鏈的代表。Fabric具有多通道通信、分化Peer節點等特點,它通過Blockchain Service將區塊文件存放在不同的節點中,進而降低網絡的安全風險,當一個或幾個節點出現問題或者遭受攻擊時,其他節點不受影響。Fabric中智能合約(Smart Contract)也稱為鏈碼(Chain Code),主要包含打包合約、部署合約、同意合約、檢查合約、提交合約以及查看合約。Fabric只允許鏈中的各個機構間傳遞交易數據,其他非鏈中機構無權訪問,保證了數據的安全與可靠性。綜合以上特點,本平臺采用Fabric2.0聯盟鏈作為檔案存儲與應用的區塊鏈底層網絡,讓多個檔案存儲平臺可以共同通信,方便檔案移交接收,同時,檔案數據的安全性也得到保證。
(2)分布式存儲技術選型。星際文件系統(Inter Planetary File System,IPFS)是基于內容來尋址的、分布式的新型超媒體傳輸系統。IPFS技術誕生于2014年,由Juan Benet創 建[17],Protocol Labs協 議 實驗室發展。IPFS提供了弱冗余、高性能的集群存儲方案,通過分布式哈希表(DHT)、塊交換協議(BitTorrent)和自驗證文件系統(SFS),創建了一個全新的分布式存儲模式,它更加快速、更加安全。IPFS將存儲在其系統中的每個文件都賦予一個唯一的Hash指紋,同時IPFS也會根據文件指紋追蹤其歷史修改記錄,以上特點應用于檔案存儲平臺,對于檔案的追蹤溯源有很大的幫助。同時IPFS中包含著如Muti formats、LibP2P、IPLD等多個功能模塊[18],對于檔案文件的加密水平和資源利用率等有很大的提升。綜合考慮以上特點,本平臺采用IPFS作為檔案存儲與應用的分布式存儲技術。
首先,進行了檔案分類存儲設計,具體包含兩個方面:一是檔案文件類型的分類存儲,二是檔案密級的分類存儲。對于檔案文件類型的分類存儲,首先由用戶自行選擇要上傳的檔案文件類型,之后前端根據用戶所選檔案文件類型限制要上傳的檔案文件格式,上傳之后由后端按照智能合約的相關規則將檔案源文件存儲到相應位置。對于檔案密級(絕密、機密、一般)的分類存儲,采用Fabric中隱私數據(Private Data)根據檔案密級對檔案文件信息進行再加密,同時采用多賬本分類存儲的方式,將不同密級的檔案文件信息存儲在不同的區塊鏈賬本中,保證檔案文件信息的安全性。
其次,通過Fabric中的智能合約來設計聯盟鏈網絡成員共同認可的業務邏輯。智能合約分為用戶智能合約、公共檔案智能合約和私有檔案智能合約三部分,用戶合約主要涉及用戶的登錄、注冊、權限分配及相關索引的構建功能,檔案合約主要涉及檔案數據的上傳、下載、轉移、共享、歷史記錄溯源等功能。在錄入檔案信息時,依據檔案保密級別,控制層會調用相關智能合約,系統會根據智能合約的相關規定,對檔案進行分賬本存儲。
(1)絕密檔案:每個加入Fabric網絡通道中的檔案存儲平臺除了安裝用戶智能合約和公共檔案智能合約外,還會安裝一個特定檔案智能合約,此合約會根據不同的檔案存儲平臺自動生成一個獨立的區塊鏈賬本,用于存儲檔案平臺的絕密檔案數據信息,此賬本對于平臺內的低權限用戶以及其他檔案存儲平臺的用戶來說將無權訪問。
(2)機密檔案:公共智能合約會調用Get Transient()API,使得機密檔案中的保密信息在提交到有關Endorsing Peer節點背書時,會依據智能合約提案(Chain code Proposal Payload)的相關規則,對其中的保密字段隱藏,在提交階段,授權的節點將會檢查策略,自己是否有權限訪問私有數據(Private Data),如果有,檢查transient data store字段,觀察是否在背書階段拿到了私有數據(Private Data)。如果沒有,會從其他節點去拉取。在驗證和提交階段,私有數據(Private Data)將會被存儲到相關組織的私有數據(Private Data)賬本中,同時把transient data store刪除。沒有檔案擁有者的許可,網絡中的其他組織無法查閱其中的保密內容。
(3)一般檔案:該類檔案屬性信息公開,通過公共智能合約調用Put State()API,將檔案數據存入普通賬本中,允許檔案存儲平臺的所有用戶訪問,其他檔案存儲平臺的用戶訪問時也可以通過相關功能進行跨鏈訪問。
為了確保Fabric網絡通道內的各個檔案存儲機構能夠安全地存儲各個分類的檔案數據,本文設計出多賬本共同存儲檔案數據的方案模型,依據檔案的不同分類——絕密、機密、一般,調用指定的智能合約,在區塊鏈中進行分賬本存儲檔案數據,同時將檔案原件存儲到IPFS網絡存儲集群中。具體模型設計流程如圖1所示。

圖1 檔案分布式存儲模型流程圖
檔案的移交和接收,不僅僅是檔案源文件的轉移,更重要的是檔案存儲管理的主要責任主體的變更,針對傳統數字檔案存儲平臺在各個檔案機構間轉移檔案數據時難統一、難溯源、不方便等問題,提出一種新的數字檔案移交模型的設計方案,當存儲平臺的某個檔案源文件或者某類檔案源文件需要移交給區塊鏈網絡中其他的數字檔案存儲平臺時,檔案管理員只需執行相應的操作步驟,就能保證移交接收過程責權明確,杜絕安全隱患,從源頭上保證數字檔案的可靠與可信。具體設計流程如下:
(1)移交方生成移交密鑰:通過智能合約確定移交方用戶身份,判斷當前用戶是否具有權限進行檔案移交操作,如果沒有權限則駁回,如果有權限,則智能合約會將檔案管理員傳入檔案移交服務的檔案ID、檔案Hash、檔案源文件IPFS CID以及接收方MSP組合成一個新的結構體Transfer Agreement,通過Create Composite Key()算法將結構體進行加密處理并生成transfer Agree Key,存入移交方的區塊鏈網絡的私有數據集合(Private Data Collection)中,同時將要移交檔案的信息傳遞給接收方。
(2)接收方選擇是否同意移交:由接收方根據移交方提供的待移交檔案的相關信息,確認是否可接收檔案源文件。若同意移交,則智能合約會產生相同的移交密鑰并存入接收方的區塊鏈網絡的私有數據集合中,移交方可進行下一步的移交操作;若不同意移交,則移交方可將移交密鑰刪除并選擇其他檔案平臺接收方。
(3)移交方進行檔案移交:移交方在移交檔案文件時,由前端輸入接收方MSP的名稱代碼,由智能合約存入暫態數據集合“archive_receiver”中,之后智能合約通過verify Agreement()算法調用Fabric的Get Private Data Hash()API,通過對私有數據的Hash比對,判定接收方是否已同意接收檔案文件。在判定結果為真時,會解密存儲在區塊鏈賬本中的移交密鑰,獲取接收方名稱代碼,將檔案文件的所有者更改為接收方的名稱代碼,同時,也會保留其原所有者的歷史記錄,方便檔案溯源。
(4)移交方刪除檔案信息:在檔案移交完成之后,智能合約會自動將移交方私有數據集中的相關檔案信息和移交密鑰刪除。
圖2給出了數字檔案移交模型時序圖。

圖2 檔案移交時序圖
數字檔案閱檔與溯源功能主要涉及的是平臺中的用戶對存入區塊鏈網絡中的檔案屬性數據進行檔案查閱和檔案溯源。由于本平臺采用了區塊鏈網絡作為底層通信網絡,當用戶選擇檔案歷史溯源后,檔案溯源服務會從前端獲取到要查詢的檔案ID(主鍵),直接通過GetHistoryForKey()接口從區塊鏈賬本中獲取檔案的歷史數據,并通過Iterator迭代器將所有檔案數據全部取出,存入HistoryQueryResult結構體中,通過緒論與反序列化處理將檔案歷史數據返回給前端。具體的檔案閱檔溯源時序如圖3所示。

圖3 數字檔案閱檔與溯源時序圖
區塊鏈中的賬本數據與傳統的數據庫存儲方式有很大差別,傳統數據庫一般只會保存最新的數據記錄,而區塊鏈賬本會存儲數據所有歷史記錄,區塊鏈賬本會將傳入區塊鏈的每一條數據記錄都以區塊的形式存儲,并且區塊高度與區塊Hash一旦生成便無法改變,它也因此具有了有序和防篡改的特征。本文所使用的Fabric中的區塊鏈賬本由兩部分組成,分別是世界狀態(World State)和區塊鏈(Blockchain)。在World State中所存儲的數據的結構是以鍵值key-value的形式存儲的,所存儲的數據記錄是最新的。世界狀態中還存在著一個關鍵屬性版本號——Version,它的作用就是記錄數據的版本號,每當記錄被更改,版本號就會遞增。Blockchain由一個個區塊有序排列并Hash加密組成,主要用于記錄數據的歷史信息,由于Hash鏈是很難被破壞的,因此區塊鏈具有防篡改的特性。依據本文設計的分布式存儲模型,進一步將區塊鏈網絡賬本設計為私有賬本(Private Ledger)與公共賬本(Public Ledger)兩種結構共同存儲檔案數據的模式,如圖4所示。

圖4 區塊鏈網絡賬本結構設計
兩種結構的區塊鏈賬本都包含World State與Blockchain,但其中的World State所包含數據集合是完全不同的,私有賬本(Private Ledger)中只包含私有數據集合(Private Data Collection),用于存儲檔案密級為“絕密”的檔案相關屬性。公共賬本(Public Ledger)中包含私有數據集合(Private Data Collection)和公有數據集合(Public State)兩部分,分別用于存儲密級為“機密”和“一般”的檔案相關屬性。兩個區塊鏈賬本都會將所存儲的檔案數據打包成區塊,存入區塊鏈網絡中,便于對檔案數據進行溯源。
身份控制驗證是區塊鏈數字檔案存儲平臺開發的一個重要環節,本文通過Fabric搭建聯盟鏈,之后,通過IPFS搭建存儲集群形成雙網絡環境,其加入的組織成員身份必須得到驗證才能參與網絡通信,以確保區塊鏈網絡中檔案數據的安全可靠。在Fabric搭建的聯盟鏈網絡中,由cryptogen工具和FabricCA兩個組件生成各個MSP的X.509身份證書和密鑰文件,實現對網絡中的各個檔案存儲平臺身份的注冊與驗證,在IPFS網絡存儲集群中,將采用共享同一密鑰的方式確保各個組織成員的安全通信。不同組織的用戶在具有一定權限后,可以訪問其他檔案存儲節點的檔案源文件信息,需要搭建一個IPFS私有網絡存儲集群,方便聯盟鏈網絡內的組織訪問檔案數據,同時,阻斷與外部IPFS網絡的聯系,保證檔案數據的安全可靠。并且,備份功能對于也是至關重要的。因此IPFS網絡結構中包含兩類節點,分別是存儲節點(Store Peer)和備份節點(Backup Peer),存儲 節點(Store Peer)用于存儲檔案源文件信息以及向私有網絡中共享檔案數據,備份節點(Backup Peer)則用于對檔案源文件的備份,具體的IPFS網絡結構如圖5所示。

圖5 IPFS網絡存儲集群設計
根據“高內聚,低耦合”的軟件工程原則,本文對平臺總體功能進行了合理構建,所構建的數字檔案分布式應用平臺總體架構如圖6所示,共分為四個部分,分別是前端界面、服務模塊、區塊鏈網絡模塊和IPFS網絡存儲集群模塊。用戶通過前端操作界面(Vue和Bootstrap搭建)對檔案文件進行相應的操作,將檔案文件數據信息傳給后端業務處理層(Gin框架搭建),業務處理層將數據進行類別轉換并作出相應處理,再傳入區塊鏈網絡數據存儲層,將數據進行相應的存取或修改,實現完整的檔案數據操作流程。

圖6 平臺總體架構
如圖7所示,數字檔案分布式應用平臺包括了四個功能模塊,分別是檔案管理模塊、檔案存儲模塊、檔案移交模塊、系統管理模塊。

圖7 平臺功能模塊劃分
檔案管理模塊:包括信息上傳、文件下載、查閱溯源和容災備份等子模塊。信息上傳主要指將檔案數據的相關屬性以及檔案源文件存入到區塊鏈網絡數據存儲賬本中;文件下載主要指為檔案文件提供源文件下載的功能;查閱溯源主要指對檔案文件的查閱查詢以及文件溯源的功能;容災備份主要指提供對檔案數據的備份還原功能。
檔案存儲模塊:包括哈希計算、加密上鏈和分布存儲三個子模塊。哈希計算主要指對上傳的檔案原文件通過SHA-256的加密方式對其進行哈希計算,產生唯一的一個Hash值,用于文件驗證;加密上鏈主要指平臺通過智能合約對檔案屬性數據以區塊的形式進行加密,并存入區塊鏈賬本中;分布存儲主要指對不同密級的檔案屬性數據進行分賬本存儲,同時將檔案原文件存入到IPFS網絡存儲集群中。
檔案移交模塊:包括移交申請、密鑰生成和數據轉移三個子模塊。移交申請主要指如果平臺節點A想要把某個檔案的相關數據移交給平臺節點B時,需要向平臺B進行移交申請;密鑰生成主要指當平臺B同意平臺A的移交申請后,智能合約將為平臺A自動生成一個移交密鑰,用于移交驗證;數據轉移主要指平臺A向平臺B進行移交檔案時的數據處理流程。
系統管理模塊:包括權限分配和記錄查詢兩個子模塊。權限分配主要指系統管理員對平臺中的其他兩類用戶的權限分配;記錄查詢主要指系統對用戶的相關操作記錄以及系統區塊鏈網絡的運行狀態進行綜合監控。
區塊鏈網絡的功能實現核心是智能合約算法。在本平臺中主要采用fabric-contract-api-go Go語言類庫API對智能合約進行算法的設計與實現,本文以偽代碼的形式對生成移交密鑰、檔案移交算法等平臺核心功能的智能合約算法實現方法進行說明。
檔案區塊記錄結構:
ArchiveDetails struct{
Hash string‘json:"hash"‘
DataHash string‘json:"data_hash"‘
BlockNumber string‘json:"block_number"‘
PreviousHash string‘json:"previous_hash"‘
TxID string‘json:"tx_id"‘
}
機密檔案加密結構:
ArchivePrivateDetails struct{
ObjectType string‘json:"objectType"‘//archivesInfo_private
ID string‘json:"id"‘
Hash string‘json:"hash"‘
IpfsHash string‘json:"ipfs_hash"‘
IpfsBackup string‘json:"ipfs_backup"‘
}
檔案移交密鑰結構:
TransferAgreement struct{
ObjectType string‘json:"objectType"‘//transferAgreement
ArchiveID string‘json:"archive_id"‘
Hash string‘json:"hash"‘
ReceiverMSP string‘json:"receiver_msp"‘
}
檔案移交生成密鑰算法:
1:procedure Procedure ParseLog
2:IDclient←submittingClientIdentity(ctx)
3:transientMap←ctx.GetStub().GetTransient()
4:PrivateDetailsarchive←Json←transientMap(archive agreement)
5:Objarchive←GetArchive(PrivateDetailsarchive.hash)
6:verifyClientOrgMatchesPeerOrg(ctx)
7:KeytransferAgree←CreateCompositeKey(ObjtransferAgreement)
8:end procedure
檔案移交算法:
1:procedure Procedure ParseLog
2:transientMap←ctx.GetStub().GetTransient()
3:TransferInputarchive←Json←transientMap(archive receiver)
4:verifyClientOrgMatchesPeerOrg(ctx)
5:verifyAgreement(ctx,Hash,archive.Owner,archive.ReceiverMSP)
6:Agreementtransfer←GetTransferAgreement()
7:Ownerarchive←ReceiverMSPtransferAgreement
8:end procedure
檔案移交生成密鑰算法與檔案移交算法共同組成了檔案移交智能合約,通過移交密鑰確定移交權限,移交方檔案管理員在移交檔案時,通過智能合約的算法約束,將檔案的所有者更改為接收者。
為了方便用戶在IPFS網絡存儲集群中快速高效地進行檔案源文件地上傳、下載和備份等操作,本平臺使用了go-ipfs-api類庫來搭建IPFS網絡存儲集群的后臺存儲服務,主要包括連接網絡、顯示節點、檔案上傳、檔案下載和獲取檔案文件狀態等功能,具體使用的函數結構為:
type IpfsApi interface{
GetIPFS()*shell.IdOutput
SwarmPeers()*shell.SwarmConnInfos
UploadIPFS(file[]byte)(string,error)
CatIPFS(CID string)([]byte,error)
GetArchiveStat(CIDstring)(*shell.ObjectStats,error)
}
對所開發的基于IPFS和Fabric的數字檔案分布式應用平臺進行了全方位測試,囿于篇幅,本文選取檔案上鏈存儲、檔案移交接收、檔案修改溯源進行測試說明及測試成功頁面展示。
采用如表1所示的環境進行系統測試。

表1 系統測試配置與環境
(1)檔案上鏈存儲測試
檔案上鏈存儲功能將只能由檔案管理員操作,表2為檔案上鏈存儲的測試內容以及結果。圖8為檔案上鏈存儲成功后的檔案列表界面。從系統界面以及測試結果中可以看出,本平臺成功地將檔案屬性數據上傳到了區塊鏈網絡中,并且每一條檔案屬性數據都有對應的唯一區塊高度、數據哈希以及上傳時的事務ID信息,同時,每一條檔案信息都可以進行溯源,利用區塊鏈的不可篡改性確保了檔案信息的安全。平臺將檔案源文件存儲在了IPFS網絡存儲集群中,相比于只采用區塊鏈存儲檔案源文件,大大增加了數字檔案源文件的分布式存儲能力。

圖8 上傳成功后檔案列表界面

表2 檔案上鏈存儲測試用例
(2)檔案移交接收測試
檔案的移交接收功能將只能由檔案管理員操作。檔案管理員可以從檔案列表里選擇要移交的檔案,進行移交申請,待移交申請由接收方審核通過后,進行正式移交,由系統將檔案所有者更改為接收方,同時刪除移交方中的對應檔案信息,不需要將檔案文件進行下載后再移交,方便快捷,同時由于IPFS私有網絡集群中的文件格式都轉換為了字節類型,網絡中的各個組織對移交后的檔案文件的格式處理也極為方便。表3為檔案移交接收的測試內容以及結果。

表3 檔案移交接收測試用例
(3)檔案修改溯源測試
檔案的修改與溯源功能將只能由檔案管理員操作。檔案管理員可以從檔案列表里選擇要修改或溯源的檔案,檔案被修改后將存儲到新的區塊中,通過智能合約中的GetHistoryForKey()接口,檔案管理員可以對當前檔案進行溯源,查看修改記錄以及文件信息。表4為檔案修改溯源測試內容以及結果,圖9為檔案溯源界面。

表4 檔案溯源測試用例

圖9 檔案溯源界面
我國數字檔案建設正在快速推進,但是,以目前已投入使用的數字檔案存儲或管理系統來共享、處理大數據時代背景下的海量數字檔案文件,在存儲容量、分布式備份、有序共享及可溯源、保安全等方面已有明顯短板。本文提出并開發構建的基于Fabric聯盟鏈和IPFS技術的數字檔案分布式應用平臺為數字檔案的海量分布式存儲及容災備份、有序共享及可溯源提供了新的、可靠的技術保障。參考文獻
[1]李芳,彭嘉琳.電子信息技術發展中的問題及發展趨勢分析[J].科學中國人,2016(8X):203-204.
[2]袁勇,王飛躍.區塊鏈技術發展現狀與展望[J].自動化學報,2016(42):481-494.
[3]BASHIR I.Mastering blockchain[M].Packt Publishing,2017.
[4]NARAYANAN A,BONNEAU J,FELTEN E,et al.Bitcoin and cryptocurrency technologies:a comprehensive introduction[M].Princeton University Press,2016.
[5]劉衛鎧,楊智勇.區塊鏈在電子政務服務中的應用研究[J].檔案與建設,2021(5):20-26.
[6]石菲.世界各國政府誰最愛區塊鏈[J].中國信息化,2018(8):16-23.
[7]唐文劍,呂雯,林松祥,等.區塊鏈將如何重新定義世界[M].北京:機械工業出版社,2016.
[8]韓璇,袁勇,王飛躍.區塊鏈安全問題:研究現狀與展望[J].自動化學報,2019(1):206-225.
[9]Bitnation與愛莎尼亞在 區塊鏈上開展政務管轄[EB/OL].(2016-10-28).http://www.bitecoin.com/online/2015/11/16308.html.
[10]于歡歡,程慧平.區塊鏈技術在國內電子檔案管理中的應用研究述評[J].檔案與建設,2021(5):27-33.
[11]王子鵬,李璐璐.基于區塊鏈技術的電子文件管理模式研究[J].浙江檔案,2018(2):18-20.
[12]李高峰,馬國勝,胡國強.現階段區塊鏈技術在檔案管理中不可行分析[J].檔案管理,2018(5):30-32.
[13]王國才.檔案工作應用區塊鏈技術的探索與實踐——“‘互聯網+政務服務’背景下區塊鏈技術在‘廣域數字檔案館體系’中的應用”課題思考[J].中國檔案,2020(12):32-33.
[14]李曲直,韓麗.“區塊鏈+人事檔案”管理應用初探[J].中國檔案,2020(7):73-75.
[15]付艷.試論電子檔案的利弊及電子檔案的管理[J].經濟研究導刊,2014(23):289-290.
[16]馮翔.Hyperledger Fabric關鍵技術與案例分析[M].北京:機械工業出版社,2018.
[17]BENET J.IPFS-content addressed,versioned,P2P file system[J].arXiv preprint arXiv:1407.3561.
[18]CONFAIS B,LEBRE A,PARREIN B.An object store service for a fog/edge computing infrastructure based on IPFS and a scale-out NAS[C]//2017 IEEE 1st International Conference on Fog and Edge Computing(ICFEC),2017:41-50.