門 瑞,姚云霞
(1 隴東學(xué)院 甘肅 慶陽 745000)
(2 西安理工大學(xué) 陜西 西安 710000)
隨著網(wǎng)絡(luò)信息技術(shù)的快速發(fā)展,檔案管理已全面進(jìn)入信息化時(shí)代。然而目前電子化的檔案管理中仍然存在諸多問題[1],其中,最突出的問題是當(dāng)前的集中管理方式將檔案存儲(chǔ)在中心服務(wù)器中,會(huì)導(dǎo)致以下安全問題:(1)不法分子對(duì)服務(wù)器發(fā)出DDoS 等各種攻擊,造成服務(wù)器無法為用戶提供正常的服務(wù)。(2)中心服務(wù)器宕機(jī)或損壞,造成數(shù)據(jù)的丟失,無法恢復(fù)。(3)中心服務(wù)器被黑客攻擊,篡改檔案信息。(4)中心服務(wù)器的管理人員利用身份便利篡改檔案數(shù)據(jù)。另外,目前對(duì)檔案數(shù)據(jù)的使用情況沒有很好的記錄方式,基本以服務(wù)器中的日志文件為主,訪問門檻低,可信度不高。區(qū)塊鏈?zhǔn)且环N分布式的數(shù)據(jù)庫技術(shù)[2],通過節(jié)點(diǎn)間的共識(shí)機(jī)制實(shí)現(xiàn)每個(gè)節(jié)點(diǎn)保留一份完整的一致的數(shù)據(jù)庫備份,即使部分節(jié)點(diǎn)由于各種原因造成數(shù)據(jù)的丟失或損壞,也不會(huì)影響整體數(shù)據(jù)的完整性,同樣即使部分節(jié)點(diǎn)遭到攻擊而造成數(shù)據(jù)被篡改,也會(huì)由于錯(cuò)誤的數(shù)據(jù)不能通過其他節(jié)點(diǎn)的哈希驗(yàn)證而被排除,因此區(qū)塊鏈技術(shù)可以用來解決檔案管理中存在的問題。然而,由于公共區(qū)塊鏈節(jié)點(diǎn)數(shù)目較多,節(jié)點(diǎn)中的數(shù)據(jù)只增不減,導(dǎo)致系統(tǒng)吞吐量低,共識(shí)過程緩慢,賬本數(shù)據(jù)量大,且公共區(qū)塊鏈中的交易對(duì)所有用戶可見,可能會(huì)泄露用戶隱私,不適用于檔案管理系統(tǒng)的使用。另外,檔案數(shù)據(jù)一般為文檔類型,不適宜直接存儲(chǔ)在區(qū)塊鏈中。
綜上所述,本文設(shè)計(jì)了基于IPFS 和聯(lián)盟區(qū)塊鏈的檔案數(shù)據(jù)管理方案,通過IPFS 存儲(chǔ)檔案數(shù)據(jù)的原始材料,將其哈希值存儲(chǔ)于聯(lián)盟鏈的優(yōu)秀實(shí)現(xiàn)案例——Hyperledger Fabric 中,同時(shí),將檔案數(shù)據(jù)的訪問記錄存儲(chǔ)在Fabric 中,以便檔案管理人員能夠準(zhǔn)確掌握檔案的使用情況,營造安全的檔案使用環(huán)境。
IPFS 是由Juan Benet 于2015 年[3]設(shè)計(jì)出來的一個(gè)分布式存儲(chǔ)和點(diǎn)對(duì)點(diǎn)共享文件的網(wǎng)絡(luò)傳輸協(xié)議,能將所有具有相同文件系統(tǒng)的計(jì)算設(shè)備連接起來共同維護(hù)信息,但用戶不能準(zhǔn)確地定位文件具體存儲(chǔ)在哪個(gè)特定的節(jié)點(diǎn)上。IPFS 有以下特點(diǎn):(1)以分布式哈希表的形式實(shí)現(xiàn)文件永久的、去中心化的保存和共享。(2)使用P2P 網(wǎng)絡(luò)傳輸技術(shù),加快文件的傳輸速度,當(dāng)需要讀取數(shù)據(jù)時(shí),所有的存儲(chǔ)節(jié)點(diǎn)會(huì)同時(shí)發(fā)送保存的小塊數(shù)據(jù)。(3)基于內(nèi)容尋址的,即通過將原始文件的內(nèi)容生成對(duì)應(yīng)哈希值來標(biāo)識(shí)文件,通過文件的哈希值即可找到文件。(4)去除重復(fù),對(duì)相同的文件內(nèi)容只存儲(chǔ)一份。(5)對(duì)于頻繁訪問的數(shù)據(jù),會(huì)沿著數(shù)據(jù)的訪問路徑建立數(shù)據(jù)備份,以支持高性能的并發(fā)訪問。(6)采用版本控制系統(tǒng)Git 和子認(rèn)證文件系統(tǒng)SFS 實(shí)現(xiàn)可追溯的文件修改歷史[4]。
在檔案管理系統(tǒng)中,若使用公共區(qū)塊鏈,則所有人無需任何身份認(rèn)證就能讀取檔案信息的使用記錄,容易引起系統(tǒng)的性能問題及隱私泄露問題,因此本文選用聯(lián)盟區(qū)塊鏈平臺(tái)Hyperledger Fabric 來實(shí)現(xiàn)檔案的管理。聯(lián)盟區(qū)塊鏈?zhǔn)且环N許可鏈,即擁有權(quán)限的用戶才能訪問系統(tǒng)中的交易數(shù)據(jù),參與系統(tǒng)的共識(shí)過程,聯(lián)盟區(qū)塊鏈一般選用的共識(shí)算法如PBFT 或PoS 等相比于公共區(qū)塊鏈中的PoW共識(shí)算法,節(jié)省算力資源,且收斂速度快。Hyperledger Fabric 是首個(gè)面向企業(yè)應(yīng)用的開源的、分布式的聯(lián)盟區(qū)塊鏈的實(shí)現(xiàn)版本,由IBM 等30 多家企業(yè)共同設(shè)計(jì)完成。Hyperledger Fabric 中的注冊(cè)用戶必須通過成員服務(wù)提供商(MSP)審核之后才能參與系統(tǒng),且提供了創(chuàng)建通道的功能,同一個(gè)通道的一組用戶可以維護(hù)一個(gè)單獨(dú)的共同的賬本,本文為檔案系統(tǒng)的不同權(quán)限的用戶提供不同的通道,實(shí)現(xiàn)以個(gè)性化的訪問設(shè)置。智能合約是區(qū)塊鏈網(wǎng)絡(luò)與用戶交互的接口,區(qū)塊鏈網(wǎng)絡(luò)內(nèi)部模塊由智能合約的執(zhí)行串聯(lián)到一起。在Hyperledger Fabric 中,智能合約以鏈碼的方式實(shí)現(xiàn),它是所有交易執(zhí)行的基礎(chǔ),可以通過設(shè)計(jì)鏈碼邏輯來制定訪問控制策略,用戶使用Go、Java、Nodejs等語言編寫鏈碼,通過gprc 與peer 節(jié)點(diǎn)交互。
區(qū)塊鏈系統(tǒng)中的每個(gè)節(jié)點(diǎn)都需要保存一份完整的系統(tǒng)賬本信息,利用數(shù)據(jù)冗余的方式使篡改賬本的代價(jià)過大從而阻止非法用戶篡改賬本,檔案信息一般是以電子文檔、圖片、音頻或視頻的形式存在,文件數(shù)量大,且每個(gè)文件所占存儲(chǔ)空間大,因此,不適宜將賬本數(shù)據(jù)直接存儲(chǔ)在區(qū)塊鏈網(wǎng)絡(luò)中[5]。為了在保證賬本存儲(chǔ)訪問安全的前提下,提高系統(tǒng)的可擴(kuò)展性,本文將檔案信息加密后存儲(chǔ)在IPFS 中。由于IPFS 上的文件均存儲(chǔ)在IPFS 對(duì)象中,每個(gè)對(duì)象最多可以存儲(chǔ)256 KB 的數(shù)據(jù),而單個(gè)檔案信息一般都超過256 kB,因此,IPFS 會(huì)將檔案信息文件分割成很多IPFS 對(duì)象,存儲(chǔ)在世界各地不同的節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)不知道自己存儲(chǔ)的信息片段的具體含義,保證了檔案信息的分布式存儲(chǔ)和隱蔽存儲(chǔ)。IPFS 使用內(nèi)容尋址,一旦某個(gè)文件加入網(wǎng)絡(luò),就不能更改了,因此可以避免檔案信息被篡改。另外,IPFS 支持保存文件的多個(gè)版本,如果檔案信息確需修改,會(huì)將歷史版本和修改版本均保留下來,方便檔案管理人員查詢檔案的修改歷程。
IPFS 網(wǎng)絡(luò)中每個(gè)文件都有一個(gè)稱之為指紋信息的獨(dú)特的哈希值,文件內(nèi)容不同,哈希值不同,相反,若哈希值相同,則說明文件內(nèi)容相同。將檔案信息存儲(chǔ)在IPFS 后,會(huì)自動(dòng)生成該文件的指紋信息。檔案信息除了檔案內(nèi)容還包括檔案的屬性,如密級(jí)、允許執(zhí)行的操作、允許訪問的時(shí)間、允許訪問的地點(diǎn)、訪問所需的審批機(jī)構(gòu)等。在本文的設(shè)計(jì)中,將檔案的指紋信息和屬性作為節(jié)點(diǎn)存儲(chǔ)在Hyperledger Fabric 中,在本文中將這類節(jié)點(diǎn)稱為資源節(jié)點(diǎn)。
當(dāng)用戶申請(qǐng)?jiān)L問檔案信息時(shí),首先提交注冊(cè)申請(qǐng)信息至Hyperledger Fabric 中的MSP,MSP 根據(jù)用戶申請(qǐng)的角色不同,對(duì)用戶申請(qǐng)中的相關(guān)信息進(jìn)行審核,如用戶姓名、身份證號(hào)、所在單位、申請(qǐng)加入的Hyperledger Fabric中的通道等,審核通過后,該通道的證書管理機(jī)構(gòu)(CA)將為用戶頒發(fā)身份證書。獲取身份證書后,通過系統(tǒng)鏈碼中制定的訪問控制策略,自動(dòng)審核用戶是否有權(quán)限訪問相關(guān)檔案信息,若審核通過,用戶即可執(zhí)行相關(guān)操作,如檔案的上傳、修改或?yàn)g覽,將該檔案的指紋信息發(fā)送給用戶,用戶即可通過指紋信息在IPFS 中查找檔案,獲取瀏覽權(quán)限。系統(tǒng)中的用戶節(jié)點(diǎn)和資源節(jié)點(diǎn)之間的操作均以交易的形式存儲(chǔ)在所有節(jié)點(diǎn)的賬本中。系統(tǒng)組織結(jié)構(gòu)圖見圖1。
從系統(tǒng)的組織結(jié)構(gòu)圖中可以看到,每個(gè)通道中的所有節(jié)點(diǎn)都保存該通道的一致的賬本信息L、世界狀態(tài)S 和證書管理規(guī)則CA,P1 是Channel1 的用戶,擁有Channel1中已配置的權(quán)限,如瀏覽檔案信息;節(jié)點(diǎn)P2 是Channel2的用戶,擁有Channel2中已配置的權(quán)限,如修改檔案信息;節(jié)點(diǎn)P3 既是Channel1 的用戶,又是 Channel2 的用戶,即擁有Channel1 和Channel2 中已配置的權(quán)限,如瀏覽和修改檔案信息,但同時(shí)也需保存Channel1 和 Channel2 各自的賬本信息、世界狀態(tài)和證書管理規(guī)則。在檔案管理系統(tǒng)的實(shí)現(xiàn)過程中,需提前配置通道的權(quán)限,用戶根據(jù)自己的身份信息申請(qǐng)加入不同的通道,并保存通道的相應(yīng)信息。
在該系統(tǒng)中,采用基于屬性的訪問控制(ABAC)方法來管理檔案的訪問權(quán)限。ABAC 是一種靈活的授權(quán)模型,它通過實(shí)體的屬性、操作類型、相關(guān)的環(huán)境來控制操作對(duì)象的權(quán)限[6]。判斷一個(gè)用戶能否訪問某個(gè)檔案信息,需對(duì)其屬性進(jìn)行計(jì)算,當(dāng)用戶發(fā)出訪問申請(qǐng)時(shí),部署在鏈碼中的訪問控制機(jī)制開始運(yùn)作,該機(jī)制首先調(diào)取資源節(jié)點(diǎn)中檔案的屬性信息,然后計(jì)算用戶所屬的通道是否有權(quán)限訪問該資源節(jié)點(diǎn)[7],規(guī)則計(jì)算過程見圖2。
從兩個(gè)方面分析系統(tǒng)的安全性,一是訪問控制的安全,二是敏感信息存儲(chǔ)的安全。對(duì)于訪問控制的安全,本文采用細(xì)粒度的訪問控制方法ABAC,這種控制方法可擴(kuò)展性強(qiáng),能夠?qū)崿F(xiàn)靈活的個(gè)性化的權(quán)限控制,適合用戶數(shù)量多,用戶權(quán)限動(dòng)態(tài)變化,且授權(quán)策略復(fù)雜的應(yīng)用場景。本文將訪問控制策略以鏈碼的形式部署在區(qū)塊鏈系統(tǒng)中,當(dāng)用戶申請(qǐng)?jiān)L問檔案信息時(shí),即激活鏈碼程序,自動(dòng)驗(yàn)證用戶是否有足夠的權(quán)限訪問相應(yīng)的檔案信息,驗(yàn)證過程公開透明,當(dāng)用戶通過權(quán)限驗(yàn)證訪問到相應(yīng)的檔案信息后,其訪問信息會(huì)被記錄在區(qū)塊鏈的交易中,可追溯,不可篡改,不可抵賴,營造了安全的使用環(huán)境。另外,聯(lián)盟區(qū)塊鏈Hyperledger Fabric 中的通道技術(shù)使不同權(quán)限的用戶屬于不同的通道,通道之間完全隔離,保證了訪問控制技術(shù)的有效性。對(duì)于敏感檔案信息的存儲(chǔ)安全,由于本文將檔案信息加密后存儲(chǔ)在IPFS 中,IPFS 將文件分成小塊,分散存儲(chǔ),每個(gè)節(jié)點(diǎn)并不知道所存儲(chǔ)片段的具體內(nèi)容[8],這就保證了存儲(chǔ)節(jié)點(diǎn)無法竊取和篡改檔案信息。另外,IPFS系統(tǒng)是基于內(nèi)容尋址的,不知道內(nèi)容的用戶無法從IPFS系統(tǒng)中獲取檔案信息,而檔案信息的內(nèi)容哈希存儲(chǔ)在區(qū)塊鏈系統(tǒng)中,只有有權(quán)限的用戶才可以獲取,保證了信息存儲(chǔ)的安全性。
本文采用鏈下存儲(chǔ)的方式,將原始檔案信息存儲(chǔ)在IPFS 文獻(xiàn)系統(tǒng)中,將IPFS 中的指紋信息存儲(chǔ)在聯(lián)盟區(qū)塊鏈系統(tǒng),大大減少了區(qū)塊鏈賬本的長度。假設(shè)每個(gè)檔案的大小平均為1 MB,由于IPFS 中每個(gè)對(duì)象最多可以存儲(chǔ)256 kB 的數(shù)據(jù),每個(gè)檔案需4 個(gè)IPFS 對(duì)象,由文獻(xiàn)[9-10]可知,每個(gè)數(shù)據(jù)對(duì)象產(chǎn)生的哈希值為46 B,由此計(jì)算可知,鏈上數(shù)據(jù)約減少為原來的1/5 000。區(qū)塊鏈賬本數(shù)據(jù)的減少,一方面加快檔案減少速率,另一方面也降低了區(qū)塊鏈節(jié)點(diǎn)的準(zhǔn)入門檻,節(jié)點(diǎn)數(shù)的增多,使惡意節(jié)點(diǎn)修改賬本的難度增加,提高了系統(tǒng)的安全性。而檔案信息存儲(chǔ)在IPFS 中,當(dāng)用戶檢索時(shí),IPFS 系統(tǒng)以P2P 的方式傳輸檔案文件,用戶周邊保存了該檔案信息的節(jié)點(diǎn)同時(shí)向用戶傳輸該檔案文件,加快了檔案檢索效率。
本文針對(duì)集中式數(shù)字檔案管理系統(tǒng)中存在的訪問效率低、安全性較差的問題,提出了一種基于IPFS 和聯(lián)盟區(qū)塊鏈技術(shù)的分布式檔案管理方案,其中,原始的檔案信息存儲(chǔ)在IPFS 中,產(chǎn)生的檔案指紋信息及檔案的訪問屬性存儲(chǔ)在聯(lián)盟區(qū)塊鏈Hyperledger Fabric 中;采用ABAC 的訪問控制方法來管理檔案的訪問權(quán)限,一旦用戶發(fā)出檔案訪問申請(qǐng),即觸發(fā)鏈碼程序,通過鏈碼自動(dòng)匹配用戶權(quán)限和檔案密級(jí);將用戶的訪問記錄以交易的形式存儲(chǔ)在區(qū)塊中,可用于事后追溯。本系統(tǒng)的設(shè)計(jì)結(jié)合了IPFS 系統(tǒng)的和Hyperledger Fabric 的優(yōu)點(diǎn),實(shí)現(xiàn)了檔案數(shù)據(jù)的安全、高效存儲(chǔ)和訪問,為數(shù)字檔案的進(jìn)一步發(fā)展探索了方向。