




摘 要:在Linux環境下使用Hyperledger Fabric官方提供的軟件開發工具包設計實現了高校學生檔案管理系統。首先在Fabric網絡中創建通道,搭建相關人員組成的系統結構,然后編寫智能合約,通過業務層調用智能合約實現客戶端的功能,最后設計Web界面,實現了學生檔案信息的錄入、查詢、修改功能。本系統為高校學生檔案提供了分布式的管理方案,避免了集中式管理帶來的安全問題,且通過區塊鏈中的各類密碼學方法,保證了數據的存儲安全和訪問安全,且能永久保存學生檔案信息的修改記錄,營造了安全的使用環境。
關鍵詞:聯盟鏈;區塊鏈;檔案管理
中圖分類號:TP315
基金項目:甘肅省高等學校創新基金項目“基于區塊鏈的高校數字檔案訪問控制方法研究”(2020A-117)。
1 引言
高校學生檔案信息作為學生在校期間學習生活的證明材料,記錄了學生選修的課程及成績、參加的社團、受到的獎勵懲罰情況、參與的各類社會實踐活動、校外培訓經歷及考取的各類證書等[1]。隨著高校學生人數的不斷增多,學生的檔案管理也面臨諸多問題,如學生檔案的添加和查詢過程繁瑣,數字檔案管理系統用戶的使用權限分配方式不能適應動態的需求,檔案數據的集中管理造成服務器負載過重,且集中式的管理面臨單點故障,一旦服務器被惡意節點攻擊,進而刪除或篡改了檔案信息,就會造成無法挽回的損失[2]。為了解決集中式檔案管理帶來的各種安全隱患,檔案的分布式存儲和管理成為了人們研究的熱點[3-4]。近年來興起的區塊鏈技術正是一種分布式的數據管理模式。區塊鏈是一個分布式的數據庫,數據存儲在區塊中,區塊和區塊之間通過指針鏈接,后一個區塊中記錄前一個區塊的地址和哈希值。區塊鏈系統中的每個節點都存儲完整的賬本,惡意節點如果要篡改某個節點中的賬本數據,會使該節點的賬本與其余節點不一致,在這種情況下,該節點會重新將系統中被大部分節點認可的賬本同步到本地,進而阻止篡改行為的實施;對于賬本數據的修改也會被當成交易記錄存儲在下一區塊中[5]。區塊鏈的這些特點使其具有防篡改、可追溯、公開透明等特點,能夠很好解決集中式檔案管理系統存在的諸多問題。然而,比特幣中的區塊鏈技術是一種公共區塊鏈技術,即任意節點均可加入該區塊鏈系統,而無須經過許可。這會造成區塊鏈系統節點過多,可擴展性差,如比特幣系統龐大的賬本數據,阻礙了存儲資源受限的用戶加入比特幣系統,另外,所有的交易記錄均透明地存儲在區塊鏈中,所有用戶均可查詢,存在用戶隱私泄露的風險。而高校學生檔案管理系統的用戶有相對固定的分類,如:學生用戶、高校檔案管理人員、招聘企業、政府管理機構工作人員等,各類用戶必須經過身份驗證,才可對系統中的數據進行查詢和修改。因此,公共區塊鏈不適用于高校學生檔案管理系統。在公共區塊鏈系統中增加了用戶權限管理的區塊鏈系統稱為許可鏈,即參與到區塊鏈系統中的每個節點都是經過授權的,不允許未經許可的節點接入系統。許可鏈通過限制用戶身份,一方面保障了系統的性能,另一方面提高了用戶的隱私保護級別。許可鏈可分為私有鏈和聯盟鏈,高校學生檔案系統的用戶類別不同,因此,選用聯盟鏈的形式更符合實際需求。由IBM公司開發的聯盟區塊鏈框架Hyperledger Fabric,是目前最優秀的企業級的聯盟鏈實現架構之一,因此,文章設計開發了基于Hyperledger Fabric的高校學生檔案管理系統,以期能為高校學生檔案管理提供更多的便利。
2 Hyperledger Fabric技術
Hyperledger Fabric是區塊鏈技術的一個具體實現,用戶可以在其上通過多種語言(Nodejs、go、Java)編寫自己的智能合約,實現不同的區塊鏈應用[6]。Hyperledger Fabric中共有4類不同的節點,介紹如下:
(1)用戶節點(Client)。Client節點的作用是向區塊鏈系統提交交易提案。首先將提案提交給所有的背書節點,背書接收到提案請求后會對提案進行驗證,驗證通過后向Client節點發送確認背書消息,當Client節點收集到足夠的背書消息后,即可向排序節點發送交易提案。
(2)對等節點(Peer)。所有Peer都會行使記賬功能,即驗證交易,保存賬本,這是區塊鏈系統中節點最基本的功能。部分Peer節點擁有背書的功能,即對Client節點提交的交易背書,具體哪些Peer可以背書,是由鏈碼確定的。每個組織中還有一個Peer充當代表,與其他組織進行信息交互,代表身份的確定是由配置文件制定。
(3)排序節點(Orderer)。Orderer節點接收經過背書的提案,并對所有提案進行排序,將排序結果發送給Peer節點。
(4)證書管理中心(CA)。CA接收用戶的注冊申請,驗證用戶身份,并為驗證通過的用戶頒發證書。
通過以上角色分析可知,Hyperledger Fabric中的共識過程包括3步,即背書、排序和驗證。系統中所有用戶各司其職,共同管理一筆交易,實現了交易數據的公開透明存儲。為了實現不同的用戶權限管理,在Hyperledger Fabric中,允許用戶建立不同的通道,數據只在通道內部公開,通道外部的用戶無法獲取通道內部的數據,保證了用戶的隱私安全。
Hyperledger Fabric目前支持兩種狀態數據庫:即LevelDB和CouchDB,LevelDB 是嵌入在 Peer 中的默認鍵值對狀態數據庫。CouchDB 是一種可選的替代 levelDB 的狀態數據庫,它不僅可以根據 key 值進行相應的查詢,還可以根據應用場景的需求實現復雜的查詢功能。因此,選用CouchDB數據庫,來實現高校學生檔案管理系統中各類查詢請求。
3 系統的設計
3.1 用戶分類
根據高校學生檔案管理的實際情況,結合已有文獻資料[7],可將系統的用戶分為以下幾類:
(1)學生用戶:即檔案所有者,注冊通過后可以根據本人的身份證號或姓名查詢檔案信息,但不能修改信息,可以向系統管理員提交修改申請,申請通過后,由系統管理員負責修改。
(2)系統管理員:一般是高校指定的檔案管理人員,擁有最高的權限,通過各種方式查詢檔案信息,審核用戶的注冊請求,進行檔案信息的添加、修改,但需提交教育管理部門審核后才可完成。
(3)教育管理部門:查詢檔案信息,對檔案的添加和修改請求進行審核,但不能添加和修改檔案信息。
(4)培訓單位:注冊通過后可以向系統管理員提交申請添加學生培訓經歷的請求,系統管理員通過審核后即可將數據添加至賬本數據庫。
(5)企業用戶:可以查詢學生的學歷學位信息和獎懲信息,為企業初步篩選人才,提高招聘效率。
3.2 系統的功能
基于聯盟區塊鏈的高校學生檔案管理系統的業務流程包括用戶注冊登錄、檔案錄入、檔案修改、檔案查詢等操作,具體介紹如下。
(1)注冊登錄功能。
1)有權限的用戶才能登錄系統進行相應操作,首次使用系統的用戶注冊后方可獲得用戶名和密碼;
2)用戶填寫相關信息,即用戶名和密碼,通過驗證后進入系統。
(2)檔案錄入。若用戶擁有管理員權限,則其索引界面有增加學生檔案的按鍵,點擊后需按要求輸入信息,系統將檔案信息寫入后臺數據庫,此時產生新的交易記錄。添加檔案信息的流程如下:
1)管理員用戶點擊添加檔案信息進入添加頁面;
2)按要求輸入學生相關信息;
3)點擊提交按鈕后,若所有輸入均通過正則表達式的驗證,系統將信息寫入數據庫,不符合規范,則提示管理員重新輸入。
(3)檔案修改。同檔案錄入一樣,管理員擁有修改權限。修改檔案信息的流程如下:
1)管理員用戶點擊進入學生信息修改頁面;
2)對已有信息進行修改,編輯完成后點擊提交修改按鈕;
3)若所有輸入均通過正則表達式的驗證,系統將在數據庫中用新的信息覆蓋舊信息,但是會同時將修改記錄存儲在區塊鏈中。
(4)查詢功能。所有用戶均可查詢信息,不同的用戶可瀏覽的信息不同。系統根據用戶的查詢關鍵字(如按身份證號、專業查詢)在數據庫中查找,若找到則根據用戶身份類別返回相對應信息,若未找到則提示用戶查詢失敗。
3.3 檔案信息數據表的設計
本設計中檔案信息表主要有學生姓名、性別、學號、身份證號、出生日期、所學專業、成績、畢業論文等級、教師評語、獎懲信息、培訓經歷、考取的證書等,字段名稱及類型見表1。
3.4 聯盟鏈的業務流程設計
首先需要搭建Hyperledger Fabric網絡,然后通過使用鏈碼相關的應用程序接口(API)編寫鏈碼,定義需要的查找方式,完成增加、修改、用戶身份驗證、通道的設計等相關功能。在鏈碼主文件編寫完成之后,使用Fabric-SDK-Go提供的API對鏈碼進行安裝并實例化。業務層的設計,包括接收前端頁面采集到用戶交互信息和用戶輸入的檔案信息,并提交到相應的數據處理模塊,數據處理模塊通過調用鏈碼來實現對應操作。本系統選用Golang語言提供的Web服務器來設計實現系統的前端交互頁面,實現用戶友好的人機界面。
4 系統的實現
4.1 實驗環境
本系統選用目前較為穩定的Hyperledger Fabric 1.2版本,Docker的版本是docker-ce-18.09,所用的系統其他配置環境及軟件版本見表2。
基于聯盟區塊鏈的系統流程描述如下:
(1)初始化Fabric SDK并對其進行實例化;
(2)創建通道;
(3)將指定的Peers加入通道中并實例化組織的MSP客戶端;
(4)配置鏈碼文件的位置,安裝并實例化鏈碼程序;
(5)根據通道配置文件,創建通道的客戶端。
4.2 系統模塊設置
在Hypeledger Fabric中,系統功能主要通過編寫鏈碼層的代碼來實現,鏈碼層是檔案管理系統各類用戶和聯盟區塊鏈系統的接口。首先需要導入Fabric提供的系統功能包,然后編寫鏈碼程序,完成之后將鏈碼程序打包放入文件夾內,該文件夾內的程序能通過調用Fabric-SDK-Go來實現對數據庫的操作,具體的文件信息見表3。
業務層通過相關API調用鏈碼的方法,來實現對數據庫的各種操作,業務層主要包含兩個文件,分別是domain.go和eduService.go,其中domain.go用來實現鏈碼端和業務層的交互,注冊并調用業務事件,eduService.go用來通過Fabric SDK來定義CouchDB數據庫操作,包括保存信息(SaveEdu),查詢信息(FindEdu)等模塊,其中,查詢模塊實現了通過身份證號碼、學號和姓名查詢的方式,供用戶調用。
4.3 系統功能的實現
本系統采用Golang語言提供的Web服務器來實現系統的前端交互。學生和檔案系統管理員均可進行檔案信息的添加操作,添加用戶檔案信息的界面截圖如圖1所示。
在本系統中,CouchDB中的數據以Json文檔的形式存儲。該數據庫的底層是一個B-tree的存儲結構,確保了其易用性和并發性。
當客戶端進行信息查詢操作時,后端會收到鏈碼注冊事件,若事件成功執行,則會將該事件的相關信息保存到數據庫中,即用戶查詢學生檔案信息的記錄會被保存下來。每個鏈碼事件都有唯一的事件編號,該事件會以區塊鏈數據記錄的形式存儲在區塊鏈賬本中,保證了數據查詢記錄的可追溯性,提高了系統的安全級別。
用戶對檔案信息進行修改時,在CouchDB數據庫中用最新的信息覆蓋舊信息,產生唯一的鏈碼事件編碼,并且修改記錄也會被保存下來,以區塊鏈數據記錄的形式存儲在區塊鏈賬本中。
為了進一步保證數據使用情況的可追溯性,增加檔案數據的安全性,本系統以表格的形式顯示信息的修改記錄,見表4,該頁面展示了某同學的檔案信息從開始添加到最新版本的修改歷程。
5 小結
文章介紹了基于Hyperledger Fabric的高校學生檔案管理系統,該系統利用區塊鏈的透明、可追溯、不可篡改的特性實現了檔案的分布式管理,解決了高校學生檔案管理中面臨的各類安全問題,經過測試,系統能滿足不同用戶的功能和性能需求,為學生檔案的管理和保存提供了新的解決方法和思路。
參考文獻:
[1]" 郭惠芳,王照平,劉寒冰. 基于區塊鏈的可信高校學生成績記錄系統設計[J]. 現代計算機,2020(11):92-97.
[2]" 朱蓉. 信息化時代高校學生檔案規范化管理研究[J]. 蘭臺世界,2021(3):85-88.
[3]" 周小韻. 區塊鏈技術在學生檔案管理中的應用模式探究[J].南京理工大學學報(社會科學版),2019,32(6):52-57.
[4]" 朱林,劉躍. 基于區塊鏈技術的高校學生日常行為管理系統研究[J]. 西南民族大學學報(自然科學版),2019,45(3):290-295.
[5]" Minoli D, Occhiogrosso B. Blockchain mechanisms for IoT security[J]. Internet of Things,2018,1:1-13.
[6]" 余璨璨,戚湧,趙學龍,等. 基于Fabric的停車管理區塊鏈系統[J]. 計算機應用,2019,39(S1):192-197.
[7]" 陳香,劉晉偉. 數字轉型背景下的文件分類探討:基于高校檔案工作視角[J]. 檔案學研究,2020(2):107-111.