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