林 凡 ,鐘萬春 , , 成 杰 , 張廣馳 , 崔 苗 , 張秋鎮(zhèn)
(1.廣州杰賽科技股份有限公司,廣東 廣州 510310;2.廣東工業(yè)大學(xué) 信息工程學(xué)院,廣東 廣州 510006)
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,智能終端的應(yīng)用越來越廣泛,但是其中的信息安全[1]問題不容忽視,特別是對于特定人員如公安干警、社區(qū)矯正人員等通過攜帶智能終端采集到的信息(如位置信息等)以及他們的個人信息(如姓名、電話等)。傳統(tǒng)的人員信息管理系統(tǒng)一般是將智能終端采集到的信息和個人信息存儲在中心化的設(shè)備中,意味著一旦中心化設(shè)備被惡意攻擊,將有可能導(dǎo)致大量隱私數(shù)據(jù)被泄露,或者可以隨意篡改里面的數(shù)據(jù),這對于整個信息系統(tǒng)來說是災(zāi)難性的。因此,構(gòu)建一個安全可靠的人員信息管理系統(tǒng)十分必要。
本文基于區(qū)塊鏈技術(shù)提出一種人員信息管理系統(tǒng),通過準(zhǔn)入機(jī)制,只有授權(quán)認(rèn)證的用戶才能把智能終端采集到的信息和個人信息存儲在區(qū)塊鏈中。系統(tǒng)具有去中心化、去信任、不可篡改、靠各方參與者共同維護(hù)的特點(diǎn),可以真實(shí)記錄人員相關(guān)信息,有效保障了信息系統(tǒng)安全。
區(qū)塊鏈?zhǔn)且员忍貛艦榇淼臄?shù)字加密貨幣體系的底層核心技術(shù)[2],本質(zhì)上是一種基于對等網(wǎng)絡(luò)的分布式數(shù)據(jù)庫系統(tǒng)。區(qū)塊鏈并不是一種單一的技術(shù),而是多種技術(shù)綜合的結(jié)果。這些技術(shù)包括P2P協(xié)議、非對稱加密、共識機(jī)制、智能合約等,以新的結(jié)構(gòu)融合在一起,形成了一種新的數(shù)據(jù)記錄、存儲和表達(dá)的方式。
區(qū)塊鏈由若干個數(shù)據(jù)塊組成,每個數(shù)據(jù)塊即為區(qū)塊鏈中的一個區(qū)塊,根據(jù)產(chǎn)生時間的先后順序,區(qū)塊被有序地鏈接在一起,形成一個數(shù)據(jù)鏈條。區(qū)塊由區(qū)塊頭和區(qū)塊體兩部分組成[3]。區(qū)塊頭封裝了當(dāng)前版本號、前一區(qū)塊哈希值、Merkle根以及時間戳等信息;區(qū)塊體則包括當(dāng)前區(qū)塊創(chuàng)建過程中生成的所有經(jīng)過驗(yàn)證的區(qū)塊操作記錄。
區(qū)塊鏈具有去中心化、去信任、不可篡改和可編程等特點(diǎn),由眾多節(jié)點(diǎn)共同組成一個端到端的網(wǎng)絡(luò),不存在中心化的設(shè)備和管理機(jī)構(gòu)。區(qū)塊鏈的每次區(qū)塊操作都需先由發(fā)送者進(jìn)行數(shù)字簽名,經(jīng)過全網(wǎng)達(dá)成共識后,才被記錄到區(qū)塊鏈上。區(qū)塊一旦寫入,任何人都不可篡改、不可否認(rèn)。區(qū)塊鏈網(wǎng)絡(luò)中,單個節(jié)點(diǎn)對數(shù)據(jù)庫的修改無法影響其他節(jié)點(diǎn)的數(shù)據(jù)庫,除非能控制整個網(wǎng)絡(luò)中超過51%的節(jié)點(diǎn)同時修改[4],但這幾乎是不可能發(fā)生的。區(qū)塊鏈技術(shù)可提供靈活的腳本代碼系統(tǒng),支持用戶創(chuàng)建高級的智能合約、貨幣或其他去中心化應(yīng)用。例如,以太坊(Ethereum)平臺即提供了圖靈完備的腳本語言,以供用戶構(gòu)建任何可以精確定義的智能合約或區(qū)塊操作類型。
本文利用區(qū)塊鏈技術(shù)提出一種人員信息管理系統(tǒng)設(shè)計(jì)方案,把智能終端采集到的信息以及對應(yīng)的一些個人信息上傳到區(qū)塊鏈中進(jìn)行存儲[5],實(shí)現(xiàn)數(shù)據(jù)的安全管理。
結(jié)合區(qū)塊鏈技術(shù)和人員信息管理的特點(diǎn),基于區(qū)塊鏈的人員信息管理系統(tǒng)架構(gòu)如圖1所示。該系統(tǒng)架構(gòu)分為兩大部分:系統(tǒng)底層模塊和系統(tǒng)網(wǎng)絡(luò)節(jié)點(diǎn)。
圖1 基于區(qū)塊鏈的人員信息管理系統(tǒng)架構(gòu)
在系統(tǒng)底層模塊設(shè)計(jì)上,共分為身份管理模塊、共識模塊、智能合約模塊和數(shù)據(jù)庫模塊四個部分。
2.1.1 身份管理模塊
身份管理模塊是直接和客戶端節(jié)點(diǎn)進(jìn)行通信,實(shí)現(xiàn)系統(tǒng)管理員操作客戶端在區(qū)塊鏈網(wǎng)絡(luò)中加入新成員時提供身份認(rèn)證服務(wù)。身份管理模塊會建立一套根信任證書體系,利用PKI(公鑰基礎(chǔ)設(shè)施)對攜帶智能終端人員的身份進(jìn)行認(rèn)證。結(jié)合區(qū)塊鏈網(wǎng)絡(luò)中的證書節(jié)點(diǎn),在客戶端節(jié)點(diǎn)注冊用戶時提供身份證書,并管理人員身份證書,如證書的新增和撤銷。
2.1.2 共識模塊
在分布式的區(qū)塊鏈網(wǎng)絡(luò)中,共識機(jī)制實(shí)現(xiàn)了同一個鏈上不同節(jié)點(diǎn)區(qū)塊的一致性,同時確保了區(qū)塊數(shù)據(jù)的有效和有序。充分考慮到人員信息管理的安全需求,在區(qū)塊鏈網(wǎng)絡(luò)中可能存在部分惡意節(jié)點(diǎn)攻擊系統(tǒng)的情況。本設(shè)計(jì)采用拜占庭容錯共識算法(PBFT)[6],在失效節(jié)點(diǎn)數(shù)量不超過(n-1)/3的情況下,仍能保證系統(tǒng)的安全性和活性,因此可以很好地抵御惡意節(jié)點(diǎn)的攻擊。
2.1.3 智能合約模塊
智能合約是區(qū)塊鏈網(wǎng)絡(luò)中可獨(dú)立運(yùn)行的鏈上代碼,在運(yùn)行時和驗(yàn)證節(jié)點(diǎn)建立網(wǎng)絡(luò)連接。它的主要功能是通過編寫智能合約程序?qū)崿F(xiàn)對人員數(shù)據(jù)的增、刪、改、查,同時可以結(jié)合智能終端的定位功能,編寫人員活動范圍(電子圍欄)智能合約程序,限制人員的活動范圍。當(dāng)超出活動范圍時,可以報警。
2.1.4 數(shù)據(jù)庫模塊
數(shù)據(jù)庫模塊用于存儲區(qū)塊數(shù)據(jù),這些數(shù)據(jù)包括智能終端采集的數(shù)據(jù)和攜帶者的個人信息。所有數(shù)據(jù)以鍵值對的形式存儲在數(shù)據(jù)庫中,供智能合約模塊調(diào)用。例如,某個組合鍵k(k代表用戶的ID)的值可以用一個二元數(shù)組表示(k,val),當(dāng)管理員要查詢某個人的信息時,只需要輸入用戶的ID(k值),便可以查詢到相應(yīng)的人員信息(val值)。
在系統(tǒng)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)上,共分為客戶端節(jié)點(diǎn)、存儲節(jié)點(diǎn)、共識節(jié)點(diǎn)和證書節(jié)點(diǎn)。針對人員信息管理的安全需求,通過證書節(jié)點(diǎn)設(shè)置準(zhǔn)入機(jī)制,在客戶端節(jié)點(diǎn)注冊新用戶時,只有授權(quán)認(rèn)證的用戶才能加入?yún)^(qū)塊鏈網(wǎng)絡(luò),把智能終端采集到的信息和攜帶者的個人信息存儲在區(qū)塊鏈網(wǎng)絡(luò)中。各節(jié)點(diǎn)的具體功能如下。
2.2.1 客戶端節(jié)點(diǎn)
客戶端是安裝在管理員電腦上的應(yīng)用軟件,可以用來注冊用戶、注銷用戶、獲取用戶信息以及其他對用戶數(shù)據(jù)的操作。在注冊用戶時,綁定攜帶者的智能終端。智能終端采集的用戶數(shù)據(jù)可以同步到客戶端中,然后進(jìn)行上鏈處理。同時,它必須連接到某個驗(yàn)證節(jié)點(diǎn)或者共識節(jié)點(diǎn)上,與區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行通信。
2.2.2 存儲節(jié)點(diǎn)
存儲節(jié)點(diǎn)(記錄數(shù)據(jù)區(qū)塊的節(jié)點(diǎn))負(fù)責(zé)記錄從共識節(jié)點(diǎn)發(fā)送過來的數(shù)據(jù)區(qū)塊,維護(hù)數(shù)據(jù)狀態(tài)和賬本的副本。部分存儲節(jié)點(diǎn)會執(zhí)行數(shù)據(jù)處理,并對結(jié)果進(jìn)行簽名驗(yàn)證,充當(dāng)驗(yàn)證節(jié)點(diǎn)的角色。驗(yàn)證節(jié)點(diǎn)是動態(tài)的角色,是與具體的智能合約綁定在一起進(jìn)行交互的。當(dāng)客戶端發(fā)起一個對數(shù)據(jù)操作的請求時,驗(yàn)證節(jié)點(diǎn)通過調(diào)用相應(yīng)的智能合約,返回對數(shù)據(jù)處理的結(jié)果,也只有在客戶端向它發(fā)起數(shù)據(jù)操作請求時才是驗(yàn)證節(jié)點(diǎn),其他時候就是普通的存儲節(jié)點(diǎn)。
存儲節(jié)點(diǎn)還有一種角色是主節(jié)點(diǎn),代表的是和共識節(jié)點(diǎn)通信的節(jié)點(diǎn),負(fù)責(zé)從共識節(jié)點(diǎn)處獲取最新區(qū)塊并在區(qū)塊鏈網(wǎng)絡(luò)內(nèi)部同步??梢詮?qiáng)制設(shè)置某個節(jié)點(diǎn)為主節(jié)點(diǎn),也可以動態(tài)選舉產(chǎn)生。所以,存儲節(jié)點(diǎn)除了有記賬功能外,某個時刻還可以充當(dāng)驗(yàn)證節(jié)點(diǎn)或者主節(jié)點(diǎn)的角色,以節(jié)約系統(tǒng)資源,提高系統(tǒng)工作效率。
2.2.3 共識節(jié)點(diǎn)
共識節(jié)點(diǎn)從客戶端節(jié)點(diǎn)處接收包含驗(yàn)證簽名的數(shù)據(jù),按照共識機(jī)制對數(shù)據(jù)進(jìn)行打包生成區(qū)塊,廣播給主節(jié)點(diǎn)進(jìn)行存儲,然后主節(jié)點(diǎn)再把賬本的副本廣播給其他存儲節(jié)點(diǎn)。
2.2.4 證書節(jié)點(diǎn)
證書節(jié)點(diǎn)是系統(tǒng)中的證書頒發(fā)機(jī)構(gòu),主要是在客戶端注冊用戶時頒發(fā)一個數(shù)字證書,以便獲取合法身份。在人員信息管理系統(tǒng)上的所有操作,都會驗(yàn)證身份的合法性[7]。
基于區(qū)塊鏈的人員信息管理系統(tǒng)主要實(shí)現(xiàn)了對攜帶智能終端的特定人員信息的有效管理,系統(tǒng)運(yùn)行過程如圖2所示。
圖2 人員信息管理系統(tǒng)運(yùn)行過程
步驟1:首先安裝在管理員電腦上的客戶端軟件,可以用來注冊用戶、注銷用戶、獲取用戶智能終端信息以及其他對用戶數(shù)據(jù)進(jìn)行的操作??蛻舳讼蝌?yàn)證節(jié)點(diǎn)發(fā)送一個用戶數(shù)據(jù)操作請求,發(fā)送的請求消息包括一個請求命令字段,定義了對數(shù)據(jù)進(jìn)行增、刪、改、查的操作邏輯。請求消息還包括請求者的簽名信息。
步驟2:驗(yàn)證節(jié)點(diǎn)在收到客戶端發(fā)送的數(shù)據(jù)操作請求后,首先會根據(jù)請求者的簽名信息驗(yàn)證是否是一個有效的請求,驗(yàn)證包括請求者是否有證書節(jié)點(diǎn)頒發(fā)的管理員證書、簽名是否有效、請求者在當(dāng)前網(wǎng)絡(luò)上是否已授權(quán)有讀寫權(quán)限等,還會驗(yàn)證數(shù)據(jù)提交的格式是否正確。例如,要修改某人的信息,首先會驗(yàn)證你填入信息的格式是否正確,驗(yàn)證通過后,驗(yàn)證節(jié)點(diǎn)會根據(jù)當(dāng)前賬本數(shù)據(jù)模擬執(zhí)行請求程序中的操作邏輯(數(shù)據(jù)的增、刪、改、查)并生成讀寫集。在模擬執(zhí)行時數(shù)據(jù)庫不會更新,隨后驗(yàn)證節(jié)點(diǎn)對這些讀寫集進(jìn)行簽名成為請求響應(yīng),返回給客戶端。
步驟3:客戶端接收到所有驗(yàn)證節(jié)點(diǎn)發(fā)送的請求響應(yīng)后,首先對驗(yàn)證節(jié)點(diǎn)簽名進(jìn)行驗(yàn)證。如果請求程序的操作邏輯對賬本進(jìn)行調(diào)用(增、刪、改)操作,并且簽名驗(yàn)證通過后,則將請求響應(yīng)和驗(yàn)證簽名打包生成請求數(shù)據(jù)包發(fā)送給共識節(jié)點(diǎn)。如果請求程序的操作邏輯只是進(jìn)行賬本查詢,客戶端會檢查查詢響應(yīng),從記賬節(jié)點(diǎn)中直接獲取賬本數(shù)據(jù),不會將請求發(fā)送給共識節(jié)點(diǎn)生成新的區(qū)塊。
步驟4:共識節(jié)點(diǎn)接收到網(wǎng)絡(luò)中所有客戶端發(fā)送的請求數(shù)據(jù)包后,驗(yàn)證簽名的合法性,按照共識機(jī)制打包數(shù)據(jù),生成數(shù)據(jù)區(qū)塊。
步驟5:共識節(jié)點(diǎn)生成區(qū)塊后,廣播區(qū)塊給網(wǎng)絡(luò)中的主節(jié)點(diǎn)。
步驟6:主節(jié)點(diǎn)接收到來自共識節(jié)點(diǎn)發(fā)來的數(shù)據(jù)區(qū)塊后,同步給其他存儲節(jié)點(diǎn)更新數(shù)據(jù)庫。
本文結(jié)合區(qū)塊鏈技術(shù),提出了一種基于區(qū)塊鏈的人員信息管理系統(tǒng),把攜帶智能終端的特定人員相關(guān)的信息放在區(qū)塊鏈中進(jìn)行存儲,實(shí)現(xiàn)了數(shù)據(jù)的防攻擊、防篡改,大大提高了其安全性。