林雨生 昌 燕 侯麒煜 謝汶廷 王 瑋 陳天肅
(成都信息工程大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,四川 成都 610225)
傳統(tǒng)通信系統(tǒng)中,保證密鑰的安全性是用戶進(jìn)行保密通信的前提。密鑰的安全性問(wèn)題主要分為兩個(gè)方面:(1)密鑰生成時(shí)不是真隨機(jī)的序列,并且在密鑰分發(fā)時(shí),由于計(jì)算能力的提高,密鑰泄露的可能性越來(lái)越大;(2)密鑰管理缺乏可信度,當(dāng)發(fā)生安全事件時(shí),管理員無(wú)法進(jìn)行有效及可信賴的追溯追責(zé)。
量子通信[1-3]利用量子力學(xué)特征,使量子密鑰分發(fā)時(shí)具有無(wú)條件安全性,并且產(chǎn)生的量子密鑰是真隨機(jī)的序列。因此,量子通信能夠有效解決傳統(tǒng)通信系統(tǒng)中密鑰生成與分發(fā)的安全性問(wèn)題。目前,量子通信在保密通信中應(yīng)用越來(lái)越廣泛,賴俊森等[4]分析了量子保密通信的發(fā)展前景,并提出了相應(yīng)的策略;曹原等[5]分析了目前量子通信網(wǎng)絡(luò)的研究進(jìn)展,提出量子通信網(wǎng)絡(luò)體系架構(gòu);鄭煒能[6]將量子通信應(yīng)用于實(shí)現(xiàn)多節(jié)點(diǎn)的路由功能;查振興等[7]則將量子通信應(yīng)用于VPN網(wǎng)絡(luò)中密鑰的傳輸;吳佳楠等[8]將量子密鑰應(yīng)用于文件加密系統(tǒng)中;熊英等[9]將量子通信應(yīng)用于保護(hù)移動(dòng)辦公的安全中。以上研究保證了量子密鑰生成、分發(fā)的安全性,但沒(méi)有解決量子密鑰使用及管理時(shí)存在的安全性問(wèn)題。
聯(lián)盟鏈[10]是區(qū)塊鏈的一種,由多個(gè)私有鏈組成,只有聯(lián)盟內(nèi)部的機(jī)構(gòu)及其用戶才能訪問(wèn)數(shù)據(jù),達(dá)成共識(shí)容易。目前,聯(lián)盟鏈應(yīng)用于保密通信中量子密鑰管理的研究較少,已有的研究中,姚英英等[11]提出使用區(qū)塊鏈應(yīng)用于物聯(lián)網(wǎng)場(chǎng)景下的身份認(rèn)證以及密鑰管理方案;石潤(rùn)華等[12]利用區(qū)塊鏈技術(shù)解決了物聯(lián)網(wǎng)中密鑰分發(fā)困難的問(wèn)題,并且使用量子隨機(jī)數(shù)提高密鑰的安全性。以上研究使用公有鏈進(jìn)行密鑰管理,不能進(jìn)行實(shí)時(shí)更新,并且公有鏈的數(shù)據(jù)隱私性較弱。
針對(duì)目前研究中存在的問(wèn)題,本文結(jié)合區(qū)塊鏈技術(shù)與量子通信技術(shù),提出一個(gè)基于國(guó)密化區(qū)塊鏈平臺(tái)的量子密鑰全生命周期管理系統(tǒng),具有以下特點(diǎn):將量子密鑰應(yīng)用于傳統(tǒng)保密通信中,并使用一次一密的思想,保證量子密鑰生成、分發(fā)、使用時(shí)的安全性;將國(guó)密化算法替換國(guó)際通用密碼算法,構(gòu)建國(guó)密化Fabric聯(lián)盟鏈管理系統(tǒng)用于量子密鑰的全生命周期管理;聯(lián)盟鏈管理員可以對(duì)量子密鑰的全生命周期中發(fā)生的安全事件進(jìn)行追溯追責(zé)。本文提出的系統(tǒng),可以實(shí)現(xiàn)對(duì)量子密鑰的可信、有效監(jiān)管,并能對(duì)保密通信時(shí)發(fā)生的安全事件進(jìn)行追溯追責(zé),解決了經(jīng)典通信系統(tǒng)中密鑰存在的安全性問(wèn)題。
系統(tǒng)的業(yè)務(wù)包括兩個(gè)機(jī)構(gòu)成員間的保密通信、國(guó)密化Fabric聯(lián)盟鏈平臺(tái)搭建與管理、量子密鑰操作日志信息上鏈、聯(lián)盟鏈管理員對(duì)安全事件的追溯追責(zé)。具體開(kāi)發(fā)邏輯如下。
(1)兩個(gè)機(jī)構(gòu)間的保密通信業(yè)務(wù)。根據(jù)兩個(gè)機(jī)構(gòu)間的保密通信需求,構(gòu)建C/S模式的保密通信網(wǎng)絡(luò)。該業(yè)務(wù)包含3個(gè)方面:兩個(gè)機(jī)構(gòu)量子設(shè)備管理員首先通過(guò)量子密鑰分發(fā)產(chǎn)生對(duì)稱密鑰池,然后進(jìn)一步協(xié)商量子密鑰編號(hào)規(guī)則以及選取量子密鑰的長(zhǎng)度;兩個(gè)機(jī)構(gòu)成員向各自管理員申請(qǐng)量子密鑰用于保密通信;在保密通信時(shí)使用CA證書、公鑰體系和對(duì)稱密碼技術(shù)保證安全性。
(2)國(guó)密化Fabric聯(lián)盟鏈開(kāi)發(fā)業(yè)務(wù)。將現(xiàn)有Fabric聯(lián)盟鏈進(jìn)行國(guó)密化改造,建立Fabric平臺(tái)。以兩個(gè)機(jī)構(gòu)中兩個(gè)成員進(jìn)行保密通信為例,配置有兩個(gè)機(jī)構(gòu)的組織,并且在每個(gè)組織的節(jié)點(diǎn)上寫入鏈碼。
(3)量子密鑰操作日志信息上鏈。在兩個(gè)機(jī)構(gòu)成員間進(jìn)行保密通信的整個(gè)過(guò)程中,有關(guān)量子密鑰全生命周期的操作日志文件由兩個(gè)機(jī)構(gòu)的管理員或用戶上傳到Fabric平臺(tái)中,最后由聯(lián)盟鏈管理員進(jìn)行管理。
(4)安全事件的追溯追責(zé)。當(dāng)兩個(gè)機(jī)構(gòu)成員進(jìn)行保密通信時(shí)或保密通信后,若發(fā)生安全事件,則由聯(lián)盟鏈管理員根據(jù)發(fā)生安全事件時(shí)的量子密鑰ID進(jìn)行追溯追責(zé)。
系統(tǒng)的架構(gòu)主要包括國(guó)密化Fabric聯(lián)盟鏈平臺(tái)、基于C/S模式的保密通信網(wǎng)絡(luò)、Web服務(wù)器端的管理與追溯追責(zé),見(jiàn)圖1。
其中客戶端為兩個(gè)機(jī)構(gòu)中的成員及管理員。該客戶端保密通信網(wǎng)絡(luò)采取C/S模式,當(dāng)兩個(gè)機(jī)構(gòu)成員或管理員操作量子密鑰時(shí),實(shí)時(shí)記錄并上傳相關(guān)量子密鑰操作日志文件到聯(lián)盟鏈中。
Web管理端使用Vue框架進(jìn)行編寫,為聯(lián)盟鏈管理員對(duì)安全事件進(jìn)行管理與追溯追責(zé),是系統(tǒng)的核心。當(dāng)聯(lián)盟鏈管理員登錄Web后端后,可以查詢客戶端用戶上傳時(shí)的交易ID,并以量子密鑰的全生命周期過(guò)程進(jìn)行分類,查詢所有交易ID的交易信息進(jìn)行分類展示。若對(duì)安全事件進(jìn)行追溯追責(zé)時(shí),則查詢發(fā)生安全事件的量子密鑰ID,展示該量子密鑰ID對(duì)應(yīng)量子密鑰的全生命周期過(guò)程中的交易信息,再由管理員進(jìn)行逐一排查,最終確定安全事件的責(zé)任方。
國(guó)密化Fabric聯(lián)盟鏈平臺(tái)包括數(shù)據(jù)層、網(wǎng)絡(luò)層等,其功能是對(duì)機(jī)構(gòu)用戶或管理員上傳的量子密鑰操作日志信息進(jìn)行存儲(chǔ)。其中數(shù)據(jù)層是聯(lián)盟鏈的核心部分,能將機(jī)構(gòu)用戶或管理員的量子密鑰日志操作文件上傳到聯(lián)盟鏈中;網(wǎng)絡(luò)層保證了Fabric聯(lián)盟鏈中的信息傳輸,主要有共識(shí)機(jī)制和數(shù)據(jù)驗(yàn)證機(jī)制等;合約層含有Fabric聯(lián)盟鏈的智能合約,也稱為鏈碼,是在Fabric聯(lián)盟鏈上進(jìn)行存儲(chǔ)等操作的一段代碼,并且能與Fabric網(wǎng)絡(luò)進(jìn)行交互;最外層是應(yīng)用層,包含了Fabric SDK模塊,能實(shí)現(xiàn)Fabric聯(lián)盟鏈與后端服務(wù)的連接。
為實(shí)現(xiàn)聯(lián)盟鏈平臺(tái)算法的自主可控,則需用國(guó)密算法替換BCCSP模塊[13]中的哈希算法、對(duì)稱密碼算法以及非對(duì)稱密碼算法。目前,曹琪等[14]已經(jīng)對(duì)如何嵌入國(guó)密化算法到聯(lián)盟鏈平臺(tái)中有一定研究,本文構(gòu)建的國(guó)密化區(qū)塊鏈平臺(tái)則借鑒其思想將國(guó)密SM2、SM3、SM4算法替換 SHA算法、AES算法、RSA算法等,并根據(jù)使用量子密鑰的保密通信機(jī)構(gòu)設(shè)置節(jié)點(diǎn)等信息,以便用于量子密鑰全生命周期的管理與安全事件的追溯。
2.1.1 國(guó)密化聯(lián)盟鏈環(huán)境搭建
系統(tǒng)將聯(lián)盟鏈搭建在Ubuntu環(huán)境下,使用Goland編輯器運(yùn)行代碼,然后安裝聯(lián)盟鏈環(huán)境的依賴程序以及Fabric的系統(tǒng)文件,再運(yùn)行Fabric文件中的bootstrap腳本完成其余文件的配置,隨后將國(guó)密化算法接口嵌入到上層應(yīng)用中,實(shí)現(xiàn)對(duì)國(guó)密算法調(diào)用的支持,最后根據(jù)保密通信中含有的機(jī)構(gòu)數(shù)量創(chuàng)建組織節(jié)點(diǎn),構(gòu)建證書、數(shù)據(jù)文件和通道,同時(shí)打開(kāi)orderer和peer節(jié)點(diǎn),當(dāng)通道創(chuàng)建后,將節(jié)點(diǎn)逐個(gè)加入,則完成國(guó)密化聯(lián)盟鏈環(huán)境部署。本系統(tǒng)創(chuàng)建的兩個(gè)組織的相關(guān)信息見(jiàn)表1。
表1 組織信息
當(dāng)完成通道創(chuàng)建后,添加節(jié)點(diǎn)和對(duì)所構(gòu)建的節(jié)點(diǎn)進(jìn)行測(cè)試見(jiàn)圖2~3。
2.1.2 國(guó)密化聯(lián)盟鏈鏈碼開(kāi)發(fā)
在保密通信過(guò)程中,為實(shí)現(xiàn)兩方機(jī)構(gòu)管理員和用戶的量子密鑰日志文件進(jìn)行實(shí)時(shí)上傳,Fabric聯(lián)盟鏈需要進(jìn)行相應(yīng)鏈碼的開(kāi)發(fā)及封裝,主要方法見(jiàn)表2。
表2 鏈碼方法
本系統(tǒng)以經(jīng)典通信為基礎(chǔ),使用java語(yǔ)言進(jìn)行編程,采取C/S通信模式,將量子密鑰融入到經(jīng)典通信網(wǎng)絡(luò)中,保證通信密鑰的真隨機(jī)性及不可竊取。保密通信網(wǎng)絡(luò)包含:兩個(gè)機(jī)構(gòu)管理員進(jìn)行量子密鑰傳輸及協(xié)商量子密碼本;兩個(gè)機(jī)構(gòu)成員使用量子密鑰進(jìn)行保密通信;兩個(gè)機(jī)構(gòu)管理員及成員上傳量子密鑰日志文件到區(qū)塊鏈中。
2.2.1 協(xié)商量子密碼本
兩個(gè)機(jī)構(gòu)間需要進(jìn)行保密通信時(shí),首先需要兩方機(jī)構(gòu)管理員間使用量子設(shè)備產(chǎn)生對(duì)稱量子密鑰池,借助DH密鑰協(xié)商的思想,兩個(gè)機(jī)構(gòu)管理員利用公私鑰體系保護(hù)協(xié)商內(nèi)容及CA證書進(jìn)行身份認(rèn)證,再確定所取量子密鑰長(zhǎng)度以及每個(gè)量子密鑰的編號(hào)規(guī)則,最終產(chǎn)生對(duì)稱的量子密碼本保存在本地。本系統(tǒng)以兩個(gè)機(jī)構(gòu)管理員協(xié)商的編號(hào)規(guī)則為k+遞增,選取的量子密鑰長(zhǎng)度為128位,則兩方機(jī)構(gòu)管理員最終形成的量子密碼本見(jiàn)圖4。
2.2.2 保密通信
當(dāng)兩個(gè)機(jī)構(gòu)成員需要進(jìn)行保密通信時(shí)需要如下步驟:
(1)各個(gè)機(jī)構(gòu)成員需向各自管理員申請(qǐng)量子密鑰,由管理員使用公私鑰體系將量子密鑰進(jìn)行內(nèi)網(wǎng)傳輸?shù)街付ǔ蓡T,并記錄此次操作保包含的日志信息,以便后續(xù)上傳至區(qū)塊鏈中,其管理員分發(fā)量子密鑰后展示界面見(jiàn)圖5。
(2)機(jī)構(gòu)成員接收到量子密鑰后首先存儲(chǔ)在本地密碼本中,并在成員界面展示密鑰相關(guān)信息,然后將其作為AES-128算法的密鑰種子產(chǎn)生一級(jí)密鑰,再將該一級(jí)密鑰加密隨機(jī)數(shù)R產(chǎn)生會(huì)話密鑰,最后用于加密通信內(nèi)容,并使用公私鑰體系將加密通信內(nèi)容、量子密鑰ID、隨機(jī)數(shù)R等發(fā)送至另一機(jī)構(gòu)接收方,同時(shí)記錄此次量子密鑰相關(guān)日志信息,其發(fā)送方用戶界面展示見(jiàn)圖6。
(3)接收方利用公私鑰體系進(jìn)行解密數(shù)據(jù)包,首先查詢是否含有量子密鑰ID對(duì)應(yīng)的量子密鑰,若沒(méi)有則與步驟(2)申請(qǐng)量子密鑰操作一致,然后還原出會(huì)話密鑰解密通信內(nèi)容,并記錄此次量子密鑰相關(guān)日志信息。以上步驟則稱為完成兩個(gè)機(jī)構(gòu)間的保密通信。
2.2.3 上傳量子密鑰日志文件
為實(shí)現(xiàn)對(duì)量子密鑰全生命周期的管理與發(fā)生安全事件時(shí)的追溯追責(zé),兩方機(jī)構(gòu)管理員與成員在對(duì)量子密鑰進(jìn)行相關(guān)操作時(shí),都需要將量子密鑰日志文件以json格式實(shí)時(shí)上傳至區(qū)塊鏈中。在量子密鑰全生命周期中,兩方機(jī)構(gòu)管理員或用戶對(duì)量子密鑰的操作信息見(jiàn)表3。
表3 量子密鑰日志信息字段
當(dāng)兩方機(jī)構(gòu)管理員或用戶操作量子密鑰并形成日志文件時(shí),管理員或用戶只需使用GRPC遠(yuǎn)程調(diào)用區(qū)塊鏈封裝的方法即可,其主要的調(diào)用方法見(jiàn)表4。
表4 上鏈調(diào)用方法
當(dāng)保密通信過(guò)程中或通信后發(fā)生安全事件時(shí),區(qū)塊鏈管理員可登錄管理后臺(tái),查詢相關(guān)量子密鑰ID全生命周期過(guò)程中所記錄的日志信息,并根據(jù)量子密鑰全生命周期的不同階段逐步追溯安全事件的責(zé)任人以及時(shí)間段。其中量子密鑰管理及追溯平臺(tái)采用Vue框架,并與區(qū)塊鏈平臺(tái)進(jìn)行實(shí)時(shí)查詢交易信息并展示。
2.3.1 量子密鑰全生命周期管理
量子密鑰的全生命周期包括密鑰生成、分發(fā)、使用、銷毀階段,根據(jù)保密通信過(guò)程中兩方機(jī)構(gòu)管理員或用戶上傳的量子密鑰日志信息進(jìn)行分類,使得區(qū)塊鏈管理員可以實(shí)時(shí)查看每個(gè)階段的量子密鑰相關(guān)信息,以便及時(shí)發(fā)現(xiàn)安全事件。以量子密鑰生成階段為例,區(qū)塊鏈管理員查看的信息展示見(jiàn)圖7。
2.3.2 安全事件追溯追責(zé)
當(dāng)區(qū)塊鏈管理員或保密通信用戶發(fā)現(xiàn)安全事件時(shí),則由區(qū)塊鏈管理員首先排查安全事件發(fā)生的階段以及責(zé)任方。區(qū)塊鏈管理員根據(jù)發(fā)生安全事件時(shí)使用的量子密鑰ID查詢其所有的日志信息,并以量子密鑰全生命周期不同階段進(jìn)行展示;然后由管理員對(duì)比每個(gè)階段參與者的日志信息是否不一致,若發(fā)現(xiàn)有問(wèn)題的階段則點(diǎn)擊錯(cuò)誤按鈕,再進(jìn)入下一個(gè)階段,直到判別完該量子密鑰的全生命周期所有階段的日志信息則結(jié)束;最后則完成追溯,并展示出錯(cuò)的階段以及該階段的參與者,隨后再聯(lián)合相關(guān)參與者判定此次安全事件的責(zé)任人。安全事件追溯及追溯結(jié)果展示見(jiàn)圖8、圖9。
本文針對(duì)經(jīng)典保密通信中存在的密鑰易泄露、密鑰不真隨機(jī)等問(wèn)題,將量子密鑰用于經(jīng)典保密通信中,并構(gòu)建國(guó)密化區(qū)塊鏈平臺(tái)對(duì)量子密鑰的全生命周期進(jìn)行管理與追溯,實(shí)現(xiàn)量子通信與區(qū)塊鏈的結(jié)合應(yīng)用。當(dāng)發(fā)生安全事件時(shí),由于區(qū)塊鏈具有去中心化、數(shù)據(jù)不可篡改等特點(diǎn),區(qū)塊鏈管理員可以對(duì)安全事件進(jìn)行可靠、可信的追溯追責(zé),保證了保密通信過(guò)程中量子密鑰全生命周期的安全性,并能對(duì)量子密鑰使用者進(jìn)行一定程度上的威懾,使之不能隨意進(jìn)行破壞。
致謝:感謝成都市科技項(xiàng)目(2019-YF05-02028-GX)對(duì)本文的資助