張飛揚(yáng),胡順仿,朱林全,李揚(yáng),邢鑌,4
(1.四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065;2.重慶工業(yè)大數(shù)據(jù)創(chuàng)新中心有限公司,重慶400707;3.西南通信研究所保密通信重點(diǎn)實(shí)驗(yàn)室,成都610041;4.工業(yè)大數(shù)據(jù)應(yīng)用技術(shù)國家工程實(shí)驗(yàn)室,北京100043)
多方群組通信是現(xiàn)在互聯(lián)網(wǎng)中尤為重要的一種網(wǎng)絡(luò)應(yīng)用,例如遠(yuǎn)程視頻會(huì)議、多人在線聊天、大型的網(wǎng)絡(luò)游戲,等等,這類組應(yīng)用與一般的應(yīng)用相比,具有數(shù)據(jù)量大、時(shí)間要求高、通信時(shí)間長、成員通常具有很強(qiáng)的動(dòng)態(tài)性和自由度等特點(diǎn)[1],因此保障安全的群組通信顯得尤為重要,而信息加密是最有效的辦法。
傳統(tǒng)的信息加密方法分為兩種:對(duì)稱加密和非對(duì)稱加密。所謂對(duì)稱加密,指的是對(duì)數(shù)據(jù)的加密和解密用的是同樣的密鑰,它是最快速、最簡單的一種加密方式。而非對(duì)稱加密,又稱為公私鑰系統(tǒng),指的是利用不同的公鑰私鑰,對(duì)數(shù)據(jù)在兩端進(jìn)行不同的操作。在典型的加密系統(tǒng)中,消息發(fā)送方通常稱為Alice,消息接收方通常稱為Bob,如果使用對(duì)稱加密算法,Alice 和Bob 會(huì)事先通過某種途徑共享一個(gè)相同的密鑰K,當(dāng)Alice 要給Bob 發(fā)送信息時(shí),先利用密鑰K 通過加密算法對(duì)原始信息M(又稱明文)進(jìn)行加密,得到加密后的信息(又稱密文)MK=Enc(K),之后將MK通過經(jīng)典信道發(fā)送給Bob,Bob 拿到MK后同樣利用密鑰K 通過解密算法獲取明文M=Dec(K)。
顯然對(duì)稱加密算法的關(guān)鍵在于事先怎樣將對(duì)稱密鑰K 安全的分發(fā)給使用設(shè)備,而非對(duì)稱密鑰算法的安全性是依靠數(shù)學(xué)問題的復(fù)雜性。在量子算法和量子計(jì)算機(jī)出現(xiàn)以后,天然的缺陷導(dǎo)致傳統(tǒng)的加密算法在可預(yù)測(cè)的時(shí)間范圍內(nèi)存在嚴(yán)重的安全隱患,因此量子密鑰分發(fā)(以下簡稱QKD)技術(shù)借助物理層面的基本原理,保證了攻擊者(通常稱為Eve)無法竊取、無法破解密鑰,密鑰可以無條件安全的分發(fā)給使用密鑰的雙方。
另外,在得到組密鑰后,如何將組密鑰安全有效地下發(fā)給QKD 設(shè)備下的多用戶節(jié)點(diǎn)也是亟待解決的問題。
量子密鑰分發(fā)是利用量子力學(xué)的物理特性,來保證通信雙方快速地得到一個(gè)安全的、隨機(jī)的、相同的密鑰。量子密鑰的安全保障基于量子力學(xué)兩個(gè)最基本的原理:海森堡不確定性原理(Uncertainty principle)和量子不可克隆定理(No-Cloing Theorem),前者保證了攻擊者無法通過測(cè)定量子態(tài)來確定密鑰,后者保證了攻擊者無法通過克隆量子態(tài)來獲取密鑰。目前常用的量子密鑰分發(fā)協(xié)議為1984 年,物理學(xué)家Bennett 和密碼學(xué)家Brassard 共同提出的BB84 協(xié)議[2],該協(xié)議通過光子在兩種基矢下的4 種偏振態(tài)來進(jìn)行編碼,分別稱為Z 基和X 基,發(fā)送方和接收方事先通過公共信道約定每種偏振態(tài)的光子對(duì)應(yīng)的編碼,之后通過發(fā)送一系列不同偏振態(tài)的光子與接收方進(jìn)行協(xié)調(diào),共同商定出一組量子密鑰,詳細(xì)的工作原理如表1 所示。
表1
①Alice 首先隨機(jī)產(chǎn)生兩列長度均為N 的二進(jìn)制序列P 和Q(目前可以由量子隨機(jī)數(shù)發(fā)生器來進(jìn)行這項(xiàng)工作),即P=p1p2…pN,Q=q1q2…qN,隨后Alice 根據(jù)這兩序列做如下量子態(tài)制備:
然后Alice 將這N 個(gè)量子態(tài)通過量子信道發(fā)送給Bob。
②Bob 同樣在本地產(chǎn)生一組長度為N 的隨機(jī)序列R,即R=r1r2…rN,隨后Bob 根據(jù)序列R 進(jìn)行如下的測(cè)量基選擇:
③Bob 利用選擇出來的測(cè)量基對(duì)Alice 傳遞過來的量子態(tài)進(jìn)行測(cè)量,得到Bob 端的測(cè)量結(jié)果。
④Alice 在公共信道中公布隨機(jī)序列P,Bob 同樣在公共信道中公布隨機(jī)序列R,然后雙方同時(shí)對(duì)照P和R,保留兩列序列中相同的位置信息,丟棄其余的信息。也就是說Alice 和Bob 分別公布自己的制備基和測(cè)量基,并沒有透露發(fā)送態(tài)的信息,最終雙方會(huì)保留相同二進(jìn)制序列。
⑤在實(shí)際應(yīng)用中,常常存在各種類型的噪聲干擾,甚至有敵手的竊聽,因此收發(fā)雙方需要對(duì)量子比特進(jìn)行進(jìn)一步的后處理,包括密鑰篩選、錯(cuò)誤估計(jì)、錯(cuò)誤糾正、密性放大,等等,保證量子比特的有效性,如圖1所示。
圖1
⑥最終所得的二進(jìn)制序列即為雙方通信的量子密鑰。
本文所有的密鑰協(xié)商方案將在BB84 協(xié)議的基礎(chǔ)上進(jìn)行設(shè)計(jì)。
在討論量子組密鑰協(xié)商協(xié)議之前,我們需要先定義網(wǎng)絡(luò)的分層模型,以確定協(xié)議中各個(gè)模塊工作的網(wǎng)絡(luò)層級(jí)。本文定義的量子密鑰分發(fā)網(wǎng)絡(luò)模型借鑒了軟件定義網(wǎng)絡(luò)(SDN)的思想。SDN 起源于2006 年斯坦福大學(xué)的Clean State 研究課題,2009 年,Mckeown 教授正式提出了SDN 概念[3]。軟件定義網(wǎng)絡(luò)的思想是通過控制與轉(zhuǎn)發(fā)分離(如圖2 所示),將網(wǎng)絡(luò)中交換設(shè)備的控制邏輯集中到一個(gè)計(jì)算設(shè)備上,為提升網(wǎng)絡(luò)管理配置能力帶來新的思路。SDN 的本質(zhì)特點(diǎn)是控制平面和數(shù)據(jù)平面的分離以及開放可編程性。通過分離控制平面和數(shù)據(jù)平面以及開放的通信協(xié)議,SDN 打破了傳統(tǒng)網(wǎng)絡(luò)設(shè)備的封閉性。此外,南北向和東西向的開放接口及可編程性,也使得網(wǎng)絡(luò)管理變得更加簡單、動(dòng)態(tài)和靈活[4]。
借助于SDN 的設(shè)計(jì)思想,本文定義了一種量子密鑰分發(fā)四層網(wǎng)絡(luò)模型,如圖3 所示。
圖2
圖3
設(shè)備層:該層為量子密鑰分發(fā)設(shè)備所在的層級(jí),主要作用是量子密鑰分發(fā)設(shè)備之間通過BB84 等協(xié)議完成量子密鑰的協(xié)商,并通過密鑰池等存儲(chǔ)結(jié)構(gòu)保存量子密鑰;
轉(zhuǎn)發(fā)層:路由設(shè)備在該層工作,所有的路由策略都在這一層完成,每個(gè)路由設(shè)備都保存著當(dāng)前網(wǎng)絡(luò)的一份完整拓?fù)鋱D并動(dòng)態(tài)更新,當(dāng)量子密鑰分發(fā)設(shè)備有密鑰路由的需求時(shí),路由設(shè)備會(huì)根據(jù)一定的算法(路徑最短、密鑰材料消耗最少、服務(wù)質(zhì)量最好等)找到最好的一條路由路徑,將量子密鑰安全的通過可信中繼進(jìn)行傳遞;
控制層:這一層負(fù)責(zé)對(duì)整個(gè)QKD 網(wǎng)絡(luò)的運(yùn)行數(shù)據(jù)進(jìn)行監(jiān)控,一般情況下我們會(huì)在這層設(shè)置一個(gè)控制中心,保證QKD 網(wǎng)絡(luò)平穩(wěn)高效的運(yùn)行,主要作用包括:網(wǎng)絡(luò)管理、設(shè)備管理、故障修復(fù)、安全保護(hù),等等。為了解決各QKD 設(shè)備節(jié)點(diǎn)的認(rèn)證問題,本文在該層另設(shè)置了一個(gè)認(rèn)證中心,不同于控制中心,認(rèn)證中心的主要作用是分發(fā)身份信息并驗(yàn)證身份信息,保證在組密鑰協(xié)商過程以及量子密鑰路由過程中,鏈路上的節(jié)點(diǎn)是可信的,轉(zhuǎn)發(fā)層和量子密鑰設(shè)備層可以利用認(rèn)證中心更新自己的網(wǎng)絡(luò)拓?fù)洌?/p>
應(yīng)用層:該層是量子密鑰分發(fā)網(wǎng)絡(luò)的最上層,本質(zhì)上這一層的功能為“處理”和“展示”:對(duì)下層手機(jī)的數(shù)據(jù)進(jìn)行處理,提供可視化的界面展示。
本文基于SDN 定義的四層量子密鑰分發(fā)網(wǎng)絡(luò)模型,提出了一種子網(wǎng)劃分認(rèn)證量子組密鑰協(xié)商協(xié)議(SAP-QGK-AP),該協(xié)議分為三個(gè)步驟:認(rèn)證、協(xié)商、下發(fā)。
(1)認(rèn)證
在初始階段,每個(gè)QKD 設(shè)備在入網(wǎng)時(shí)需要向認(rèn)證中心發(fā)起認(rèn)證入網(wǎng)請(qǐng)求,這一過程可在傳統(tǒng)信道中進(jìn)行,采用ECC 加密算法,詳細(xì)的注冊(cè)過程如圖4 所示。
圖4
其中,Ep(a,b)為橢圓曲線,n 為橢圓曲線的階數(shù),encode()為編碼函數(shù)。
過程結(jié)束后,認(rèn)證中心會(huì)以每個(gè)設(shè)備IP 為主鍵,保存一個(gè)四元組<IP,Ep,D,K>;每個(gè)注冊(cè)成功的QKD設(shè)備會(huì)保存一份由認(rèn)證中心生成的安全證書,內(nèi)容包括設(shè)備IP、認(rèn)證中心ID、認(rèn)證時(shí)間、證書有效期等,用來保證身份的有效性。
(2)協(xié)商
在協(xié)商階段,若干個(gè)QKD 設(shè)備以子網(wǎng)掩碼為依據(jù),組成多個(gè)子網(wǎng),每個(gè)QKD 設(shè)備下面掛有若干個(gè)用戶機(jī),每個(gè)子網(wǎng)間通過邊緣QKD 設(shè)備相連,如圖5 所示。
圖5
密鑰協(xié)商分為組內(nèi)協(xié)商和組外協(xié)商。首先,參與組密鑰協(xié)商的成員會(huì)向認(rèn)證中心發(fā)送自己持有的安全證書,認(rèn)證中心通過計(jì)算證書中附加的身份信息核對(duì)組成員身份的有效性。當(dāng)組密鑰協(xié)商是在子網(wǎng)內(nèi)部進(jìn)行時(shí),認(rèn)證中心只需要向當(dāng)前子網(wǎng)廣播身份驗(yàn)證結(jié)果,每個(gè)QKD 設(shè)備在收到結(jié)果時(shí),首先核對(duì)認(rèn)證中心的可信信息,之后根據(jù)驗(yàn)證結(jié)果更新自己的網(wǎng)絡(luò)拓?fù)鋱D,刪去不可信的QKD 設(shè)備節(jié)點(diǎn),在剩下的QKD 設(shè)備中進(jìn)行組密鑰的協(xié)商;當(dāng)組密鑰協(xié)商涉及多個(gè)子網(wǎng)時(shí),認(rèn)證中心需要向參與協(xié)商的多個(gè)子網(wǎng)廣播身份驗(yàn)證結(jié)果,每個(gè)子網(wǎng)內(nèi)的QKD 設(shè)備進(jìn)行上述同樣的操作。這樣在密鑰協(xié)商過程中,保證了參與協(xié)商的設(shè)備節(jié)點(diǎn)都是可信的,保證了量子可信中繼的條件。
由于量子密鑰分發(fā)協(xié)議的特性,每個(gè)QKD 設(shè)備都有一個(gè)密鑰池用來管理自己和其他節(jié)點(diǎn)的對(duì)稱密鑰,
也就是說量子密鑰是成對(duì)出現(xiàn)的,如圖6 所示。
利用這一特征,本文提出的SAP-QGK-AP 首先在子網(wǎng)內(nèi)部進(jìn)行密鑰協(xié)商,以圖6 所示網(wǎng)絡(luò)為例。
(1)QKD 節(jié)點(diǎn)1、2、3、4 在同一子網(wǎng)內(nèi),當(dāng)某個(gè)節(jié)點(diǎn)發(fā)出組密鑰協(xié)商請(qǐng)求時(shí),同意參與組密鑰協(xié)商過程的節(jié)點(diǎn)首先向認(rèn)證中心發(fā)送自己的身份信息,隨后認(rèn)證中心向該子網(wǎng)廣播身份認(rèn)證結(jié)果,各節(jié)點(diǎn)根據(jù)結(jié)果更新自己的網(wǎng)絡(luò)拓?fù)鋱D。
(2)假設(shè)節(jié)點(diǎn)1 是SAP-QGK-AP 的發(fā)起者,節(jié)點(diǎn)1利用深度優(yōu)先搜索找到一條涵蓋所有參與節(jié)點(diǎn)的通路,若沒有找到,記錄通路中斷的節(jié)點(diǎn)信息,向子網(wǎng)內(nèi)廣播該信息,并結(jié)束此次密鑰協(xié)商。
圖6
(3)如果通路搜索成功,對(duì)于節(jié)點(diǎn)1 來說,做如下運(yùn)算:
即在連通圖中,每一個(gè)節(jié)點(diǎn)都可以通過類似運(yùn)算和信息交換得到組成員之間的密鑰信息,然后利用這些密鑰生成共同的組內(nèi)密鑰。
組間協(xié)商時(shí),每個(gè)子網(wǎng)內(nèi)都有一個(gè)邊緣QKD 設(shè)備與其他子網(wǎng)的邊緣設(shè)備相連,由于邊緣設(shè)備的密碼池中保存有當(dāng)前子網(wǎng)的組密鑰,及與其他邊緣設(shè)備的對(duì)稱密鑰,因此宏觀上各個(gè)子網(wǎng)可以看做單獨(dú)的QKD 設(shè)備,在多個(gè)子網(wǎng)間進(jìn)行步驟(3)的計(jì)算操作,從而可以得到所有子網(wǎng)共同的組密鑰。
(3)下發(fā)
當(dāng)QKD 設(shè)備之間通過SAP-QGK-AP 協(xié)商出組密鑰后,需要將密鑰安全地下發(fā)給連接的用戶機(jī)。本文利用公私鑰方案進(jìn)行密鑰的安全下發(fā)。
每個(gè)用戶節(jié)點(diǎn)利用ECC 算法生成一對(duì)公鑰和私鑰,隨后將公鑰及IP 信息通過傳統(tǒng)信道發(fā)送給連接的QKD 設(shè)備,QKD 設(shè)備使用公鑰對(duì)組密鑰加密,并發(fā)送給對(duì)應(yīng)IP 的用戶機(jī),用戶機(jī)利用自己的私鑰對(duì)信息解密,從而得到組密鑰KG。
本節(jié)討論根據(jù)連通圖的類型討論組密鑰的計(jì)算輪次。根據(jù)網(wǎng)絡(luò)中各節(jié)點(diǎn)擁有不同密鑰的數(shù)量,分為三種典型QKD 網(wǎng)絡(luò)拓?fù)洌鐖D7 所示。
圖7
(a)該網(wǎng)絡(luò)拓?fù)涔泊嬖? 份不同的密鑰,組密鑰KG=K12⊕K23⊕K34⊕K41,計(jì)算輪次為9 次。
(b)該網(wǎng)絡(luò)拓?fù)涔泊嬖? 份不同的密鑰,組密鑰KG=K12⊕K23⊕K34,計(jì)算輪次為8 次。
(c)該網(wǎng)絡(luò)拓?fù)涔泊嬖? 份不同的密鑰,組密鑰KG=K12⊕K13⊕K14⊕K23⊕K24⊕K34,計(jì)算輪次為11 次。
當(dāng)子網(wǎng)內(nèi)部計(jì)算完畢,每個(gè)子網(wǎng)作為整體與其他子網(wǎng)進(jìn)行計(jì)算時(shí),由于子網(wǎng)間的協(xié)商只涉及邊緣節(jié)點(diǎn),并且僅涉及位計(jì)算,因此可以大大節(jié)省計(jì)算輪次,提升組密鑰的協(xié)商效率。
本文首先借助軟件定義網(wǎng)絡(luò)(SDN)的概念,提出了四層量子密鑰分發(fā)網(wǎng)絡(luò)模型。在該模型上,本文提出了一種子網(wǎng)劃分認(rèn)證量子組密鑰協(xié)商協(xié)議(SAPQGK-AP),該協(xié)議與常見組密鑰協(xié)商方案相比,具有更小的協(xié)商輪次,更高的安全性。在SAP-QGK-AP 的基礎(chǔ)上,未來將繼續(xù)研究量子密鑰分發(fā)網(wǎng)絡(luò)中的密鑰樹構(gòu)建及廣播方案的設(shè)計(jì),以更好地提升協(xié)商過程中的安全性,以及協(xié)商的效率。