林 凡 ,鐘萬春 , , 成 杰 , 張廣馳 , 崔 苗 , 張秋鎮
(1.廣州杰賽科技股份有限公司,廣東 廣州 510310;2.廣東工業大學 信息工程學院,廣東 廣州 510006)
隨著物聯網技術的發展,智能終端的應用越來越廣泛,但是其中的信息安全[1]問題不容忽視,特別是對于特定人員如公安干警、社區矯正人員等通過攜帶智能終端采集到的信息(如位置信息等)以及他們的個人信息(如姓名、電話等)。傳統的人員信息管理系統一般是將智能終端采集到的信息和個人信息存儲在中心化的設備中,意味著一旦中心化設備被惡意攻擊,將有可能導致大量隱私數據被泄露,或者可以隨意篡改里面的數據,這對于整個信息系統來說是災難性的。因此,構建一個安全可靠的人員信息管理系統十分必要。
本文基于區塊鏈技術提出一種人員信息管理系統,通過準入機制,只有授權認證的用戶才能把智能終端采集到的信息和個人信息存儲在區塊鏈中。系統具有去中心化、去信任、不可篡改、靠各方參與者共同維護的特點,可以真實記錄人員相關信息,有效保障了信息系統安全。
區塊鏈是以比特幣為代表的數字加密貨幣體系的底層核心技術[2],本質上是一種基于對等網絡的分布式數據庫系統。區塊鏈并不是一種單一的技術,而是多種技術綜合的結果。這些技術包括P2P協議、非對稱加密、共識機制、智能合約等,以新的結構融合在一起,形成了一種新的數據記錄、存儲和表達的方式。
區塊鏈由若干個數據塊組成,每個數據塊即為區塊鏈中的一個區塊,根據產生時間的先后順序,區塊被有序地鏈接在一起,形成一個數據鏈條。區塊由區塊頭和區塊體兩部分組成[3]。區塊頭封裝了當前版本號、前一區塊哈希值、Merkle根以及時間戳等信息;區塊體則包括當前區塊創建過程中生成的所有經過驗證的區塊操作記錄。
區塊鏈具有去中心化、去信任、不可篡改和可編程等特點,由眾多節點共同組成一個端到端的網絡,不存在中心化的設備和管理機構。區塊鏈的每次區塊操作都需先由發送者進行數字簽名,經過全網達成共識后,才被記錄到區塊鏈上。區塊一旦寫入,任何人都不可篡改、不可否認。區塊鏈網絡中,單個節點對數據庫的修改無法影響其他節點的數據庫,除非能控制整個網絡中超過51%的節點同時修改[4],但這幾乎是不可能發生的。區塊鏈技術可提供靈活的腳本代碼系統,支持用戶創建高級的智能合約、貨幣或其他去中心化應用。例如,以太坊(Ethereum)平臺即提供了圖靈完備的腳本語言,以供用戶構建任何可以精確定義的智能合約或區塊操作類型。
本文利用區塊鏈技術提出一種人員信息管理系統設計方案,把智能終端采集到的信息以及對應的一些個人信息上傳到區塊鏈中進行存儲[5],實現數據的安全管理。
結合區塊鏈技術和人員信息管理的特點,基于區塊鏈的人員信息管理系統架構如圖1所示。該系統架構分為兩大部分:系統底層模塊和系統網絡節點。

圖1 基于區塊鏈的人員信息管理系統架構
在系統底層模塊設計上,共分為身份管理模塊、共識模塊、智能合約模塊和數據庫模塊四個部分。
2.1.1 身份管理模塊
身份管理模塊是直接和客戶端節點進行通信,實現系統管理員操作客戶端在區塊鏈網絡中加入新成員時提供身份認證服務。身份管理模塊會建立一套根信任證書體系,利用PKI(公鑰基礎設施)對攜帶智能終端人員的身份進行認證。結合區塊鏈網絡中的證書節點,在客戶端節點注冊用戶時提供身份證書,并管理人員身份證書,如證書的新增和撤銷。
2.1.2 共識模塊
在分布式的區塊鏈網絡中,共識機制實現了同一個鏈上不同節點區塊的一致性,同時確保了區塊數據的有效和有序。充分考慮到人員信息管理的安全需求,在區塊鏈網絡中可能存在部分惡意節點攻擊系統的情況。本設計采用拜占庭容錯共識算法(PBFT)[6],在失效節點數量不超過(n-1)/3的情況下,仍能保證系統的安全性和活性,因此可以很好地抵御惡意節點的攻擊。
2.1.3 智能合約模塊
智能合約是區塊鏈網絡中可獨立運行的鏈上代碼,在運行時和驗證節點建立網絡連接。它的主要功能是通過編寫智能合約程序實現對人員數據的增、刪、改、查,同時可以結合智能終端的定位功能,編寫人員活動范圍(電子圍欄)智能合約程序,限制人員的活動范圍。當超出活動范圍時,可以報警。
2.1.4 數據庫模塊
數據庫模塊用于存儲區塊數據,這些數據包括智能終端采集的數據和攜帶者的個人信息。所有數據以鍵值對的形式存儲在數據庫中,供智能合約模塊調用。例如,某個組合鍵k(k代表用戶的ID)的值可以用一個二元數組表示(k,val),當管理員要查詢某個人的信息時,只需要輸入用戶的ID(k值),便可以查詢到相應的人員信息(val值)。
在系統網絡節點設計上,共分為客戶端節點、存儲節點、共識節點和證書節點。針對人員信息管理的安全需求,通過證書節點設置準入機制,在客戶端節點注冊新用戶時,只有授權認證的用戶才能加入區塊鏈網絡,把智能終端采集到的信息和攜帶者的個人信息存儲在區塊鏈網絡中。各節點的具體功能如下。
2.2.1 客戶端節點
客戶端是安裝在管理員電腦上的應用軟件,可以用來注冊用戶、注銷用戶、獲取用戶信息以及其他對用戶數據的操作。在注冊用戶時,綁定攜帶者的智能終端。智能終端采集的用戶數據可以同步到客戶端中,然后進行上鏈處理。同時,它必須連接到某個驗證節點或者共識節點上,與區塊鏈網絡進行通信。
2.2.2 存儲節點
存儲節點(記錄數據區塊的節點)負責記錄從共識節點發送過來的數據區塊,維護數據狀態和賬本的副本。部分存儲節點會執行數據處理,并對結果進行簽名驗證,充當驗證節點的角色。驗證節點是動態的角色,是與具體的智能合約綁定在一起進行交互的。當客戶端發起一個對數據操作的請求時,驗證節點通過調用相應的智能合約,返回對數據處理的結果,也只有在客戶端向它發起數據操作請求時才是驗證節點,其他時候就是普通的存儲節點。
存儲節點還有一種角色是主節點,代表的是和共識節點通信的節點,負責從共識節點處獲取最新區塊并在區塊鏈網絡內部同步。可以強制設置某個節點為主節點,也可以動態選舉產生。所以,存儲節點除了有記賬功能外,某個時刻還可以充當驗證節點或者主節點的角色,以節約系統資源,提高系統工作效率。
2.2.3 共識節點
共識節點從客戶端節點處接收包含驗證簽名的數據,按照共識機制對數據進行打包生成區塊,廣播給主節點進行存儲,然后主節點再把賬本的副本廣播給其他存儲節點。
2.2.4 證書節點
證書節點是系統中的證書頒發機構,主要是在客戶端注冊用戶時頒發一個數字證書,以便獲取合法身份。在人員信息管理系統上的所有操作,都會驗證身份的合法性[7]。
基于區塊鏈的人員信息管理系統主要實現了對攜帶智能終端的特定人員信息的有效管理,系統運行過程如圖2所示。

圖2 人員信息管理系統運行過程
步驟1:首先安裝在管理員電腦上的客戶端軟件,可以用來注冊用戶、注銷用戶、獲取用戶智能終端信息以及其他對用戶數據進行的操作。客戶端向驗證節點發送一個用戶數據操作請求,發送的請求消息包括一個請求命令字段,定義了對數據進行增、刪、改、查的操作邏輯。請求消息還包括請求者的簽名信息。
步驟2:驗證節點在收到客戶端發送的數據操作請求后,首先會根據請求者的簽名信息驗證是否是一個有效的請求,驗證包括請求者是否有證書節點頒發的管理員證書、簽名是否有效、請求者在當前網絡上是否已授權有讀寫權限等,還會驗證數據提交的格式是否正確。例如,要修改某人的信息,首先會驗證你填入信息的格式是否正確,驗證通過后,驗證節點會根據當前賬本數據模擬執行請求程序中的操作邏輯(數據的增、刪、改、查)并生成讀寫集。在模擬執行時數據庫不會更新,隨后驗證節點對這些讀寫集進行簽名成為請求響應,返回給客戶端。
步驟3:客戶端接收到所有驗證節點發送的請求響應后,首先對驗證節點簽名進行驗證。如果請求程序的操作邏輯對賬本進行調用(增、刪、改)操作,并且簽名驗證通過后,則將請求響應和驗證簽名打包生成請求數據包發送給共識節點。如果請求程序的操作邏輯只是進行賬本查詢,客戶端會檢查查詢響應,從記賬節點中直接獲取賬本數據,不會將請求發送給共識節點生成新的區塊。
步驟4:共識節點接收到網絡中所有客戶端發送的請求數據包后,驗證簽名的合法性,按照共識機制打包數據,生成數據區塊。
步驟5:共識節點生成區塊后,廣播區塊給網絡中的主節點。
步驟6:主節點接收到來自共識節點發來的數據區塊后,同步給其他存儲節點更新數據庫。
本文結合區塊鏈技術,提出了一種基于區塊鏈的人員信息管理系統,把攜帶智能終端的特定人員相關的信息放在區塊鏈中進行存儲,實現了數據的防攻擊、防篡改,大大提高了其安全性。