溫婉琳,李 寧,鄭小博
(北京信息科技大學(xué) 計算機(jī)學(xué)院,北京 100101)
隨著信息技術(shù)的進(jìn)步,傳統(tǒng)的加密方式逐漸不能保證即時通信中大量信息的內(nèi)容安全,網(wǎng)絡(luò)通信的安全問題日益突顯[1]。近年來,量子信息技術(shù)在全球范圍內(nèi)加速發(fā)展,量子計算的優(yōu)越性得到驗證,量子密鑰加密以其天然的安全性成為目前最可靠的加密方式之一,基于量子加密的應(yīng)用未來可期[2]。
本文嘗試將量子保密通信與即時通信結(jié)合,使即時通信達(dá)到盡可能高的安全性。針對兩者結(jié)合面臨的網(wǎng)絡(luò)質(zhì)量、密鑰協(xié)商速率以及加密方法選擇依據(jù)等問題,提出了一套動態(tài)的面向即時消息傳輸?shù)拿荑€加密方法,用戶可以根據(jù)各種條件參數(shù),動態(tài)輸出加密方式。
即時通訊的加密主要可分為傳統(tǒng)密鑰和量子密鑰2種方式。傳統(tǒng)加密算法可以歸類為對稱加密和非對稱加密2種類型。對稱加密因密鑰長度較短且受限,所以安全性低。以RSA 算法(Rivest-Shamir-Adleman)為代表的非對稱加密不需要進(jìn)行密鑰協(xié)商分發(fā),安全性大大提高,但其速度相對對稱加密來說會慢上幾倍甚至幾百倍,比較消耗系統(tǒng)資源,在存在大量端到端交互的即時通信應(yīng)用場景中,其效率通常是無法接受的。因此,在實際應(yīng)用中,AES算法(advanced encryption standard)常與RSA共同完成數(shù)據(jù)加密[3]。由于RSA算法是基于大數(shù)分解,無法抵抗窮舉攻擊,未來量子計算的發(fā)展將會對其構(gòu)成較大的威脅。因此需要一種不會被破解的安全的加密方式。
量子密鑰分發(fā)技術(shù)被數(shù)學(xué)證明是無條件安全的,無論攻擊者擁有多強(qiáng)大的計算資源,都無法將其破解。量子保密通信利用BB84協(xié)議協(xié)商密鑰,運用“一次一密”[4]的加密方式,即將明文與一串隨機(jī)的比特序列進(jìn)行XOR運算且密鑰只使用一次。量子密鑰分發(fā)可以分為離散變量密鑰分發(fā)和連續(xù)變量密鑰分發(fā)。目前發(fā)展較為成熟且應(yīng)用廣泛的協(xié)議有BB84協(xié)議[5]和基于BB84 協(xié)議改造的誘騙態(tài)BB84協(xié)議[6]。雖然量子保密通信的應(yīng)用近年來呈現(xiàn)加速發(fā)展的趨勢,但目前為止,商用系統(tǒng)光纖中的密鑰生成速率約為數(shù)十kbit/s量級,在很多應(yīng)用場景中難以采用一次一密的加密方式。因此目前對于大型數(shù)據(jù)的加密,通常與傳統(tǒng)對稱加密算法相結(jié)合,由量子密鑰分發(fā)為其提供對稱加密密鑰,整個加密的算法仍為AES等對稱加密。
在即時通信中,考慮到更高的安全性,在數(shù)據(jù)量較小文件的加密傳輸過程中,盡可能地使用一次一密。對于數(shù)據(jù)量較大的文件,為保證消息的即時性,可使用量子密鑰用于傳統(tǒng)加密方法。相對于傳統(tǒng)對稱加密體系而言,能夠帶來通信安全性的提升:一方面,量子加密密鑰在分發(fā)過程中的防竊聽能力更強(qiáng);另一方面,量子密鑰分發(fā)能夠提升對稱加密體系中的密鑰更新速率,從而降低密鑰和加密數(shù)據(jù)被計算破解的風(fēng)險。
即時通信加密的時間消耗主要與文件的大小和上傳下載速率相關(guān),另外還需要考慮密鑰生成速率和加解密耗時等。本文提出的加密策略是:當(dāng)一次一密實際耗時小于期望耗時或AES加密耗時時,使用一次一密加密;否則使用AES加密。加密方法的選擇策略如圖1所示。
為計算加解密耗時,本文通過2組模擬實驗來分別獲得一次一密以及AES加解密的單位耗時,即在加解密每兆字節(jié)文件時其耗時情況。實驗環(huán)境為:Corei7-7700HQ、16G內(nèi)存、64位Win10系統(tǒng),代碼采用Pycharm編寫。實驗使用2種加密方式,分別測試10組不同大小的文件的耗時。再通過最小二乘法對10組數(shù)據(jù)分別進(jìn)行線性回歸[7]處理,最終獲得2種方式的單位耗時。本實驗中加密耗時影響參數(shù)的數(shù)據(jù)來源如表1所示。
表1 耗時影響參數(shù)
2.2.1 AES加解密單位耗時
為了確定AES加解密單位耗時,本文對10組不同大小的數(shù)據(jù)進(jìn)行AES加解密,耗時如表2所示。
表2 AES加解密耗時
從表2可以看出,以上數(shù)據(jù)大致呈現(xiàn)線性關(guān)系,如圖2所示。
以加解密數(shù)據(jù)大小為x1,加解密耗時為y1,對以上數(shù)據(jù)利用最小二乘擬合進(jìn)行線性回歸,結(jié)果為
y1=0.034 97x1+0.023 56
(1)
此時就可獲得使用AES加解密時,文件大小和耗時之間的關(guān)系,即可以獲得AES加解密的單位耗時T1。設(shè)x1=1,得出T1=y1=0.058 5,即使用AES加解密1M文件,耗時約為0.058 5 s。
2.2.2 一次一密單位耗時
為了確定一次一密加解密單位耗時,本文對10組不同大小的數(shù)據(jù)進(jìn)行一次一密加解密耗時實測,結(jié)果如表3所示。
表3 一次一密加解密耗時
從表3可以看出,以上數(shù)據(jù)大致呈現(xiàn)線性關(guān)系,如圖3所示。
以加解密數(shù)據(jù)大小為x2,加解密耗時為y2,對以上數(shù)據(jù)利用最小二乘擬合進(jìn)行線性回歸,結(jié)果為
y2=0.000 488 32x2-0.000 117 91
(2)
此時就可獲得使用一次一密加解密時,文件大小和耗時之間的關(guān)系,即可以獲得一次一密加解密的單位耗時T2。設(shè)x2=1,得出T2=y2=0.000 370 41,即使用一次一密加解密1M文件,耗時約為0.000 37 s。
2.2.3 實際耗時
實際耗時指的是從發(fā)送方加密數(shù)據(jù)并發(fā)送到接收方,接收方接收數(shù)據(jù)并解密的總時長,即一個完整會話的耗時。因此,總耗時為發(fā)送方上傳耗時、收件方下載耗時以及加解密耗時之和。
通信雙方都提前緩存有一定的量子密鑰,發(fā)送方在確認(rèn)發(fā)送數(shù)據(jù)時,優(yōu)先判斷密鑰池中緩存的量子密鑰是否能夠滿足對該大小文件進(jìn)行一次一密,若滿足,則加解密耗時為
(3)
當(dāng)密鑰池緩存的量子密鑰不能滿足發(fā)送方確認(rèn)發(fā)送的數(shù)據(jù)大小時,一次一密的耗時除了要考慮上傳下載時間以及加密時間之外,還需要考慮所需剩余量子密鑰協(xié)商生成的時間,其耗時為
(4)
AES加密策略的耗時僅需考慮數(shù)據(jù)上傳時間、下載時間以及AES加解密時間,其耗時為
(5)
為了直觀說明參數(shù)調(diào)節(jié)方法并展示加密方案,本模型設(shè)計了flash動畫來實現(xiàn)動態(tài)調(diào)節(jié),其界面簡化如圖4所示,圖中展現(xiàn)了某一種狀態(tài)的情況。該模型可以通過滑桿對6個影響即時通信時效的自定義參數(shù)進(jìn)行調(diào)節(jié),模型會根據(jù)采集到的數(shù)據(jù),輸出適合的加密方案。
為了動態(tài)說明模型的運行情況,表4列出了通過模型展現(xiàn)的其他12種狀態(tài)。從表中可以看出,當(dāng)一次一密的耗時小于AES加密耗時時,會選擇一次一密方式;當(dāng)一次一密耗時大于AES加密耗時和期望耗時時,采用AES加密。總之,模擬器會優(yōu)先建議采用更加安全的一次一密的加密方式。
為驗證模型的可行性,本文設(shè)計了融合量子密鑰的即時通信系統(tǒng),并將加密策略選擇模塊應(yīng)用在其中,系統(tǒng)架構(gòu)如圖5所示。
表4 不同參數(shù)下得到的加密方式
身份驗證服務(wù)器用于通信雙方在登錄前驗證身份,文件服務(wù)器用于密鑰申請、讀取數(shù)據(jù)傳輸相關(guān)信息以及數(shù)據(jù)加密、解密、發(fā)送和接收。量子密鑰分發(fā)設(shè)備和量子信道組成了量子密鑰分發(fā)網(wǎng)絡(luò),用于量子密鑰的協(xié)商分發(fā),量子密鑰分發(fā)設(shè)備中還包括量子密鑰管理服務(wù)器,對預(yù)先生成的量子密鑰進(jìn)行存儲。加密策略選擇模塊將在發(fā)送方確認(rèn)發(fā)送內(nèi)容之后,選擇加密方式。通信流程如圖6所示。
2.4.1 密鑰管理模塊設(shè)計
本方案使用REDIS數(shù)據(jù)庫來存儲量子密鑰,REDIS是一個基于內(nèi)存的高性能KEY-VALUE數(shù)據(jù)庫,并且使用多路復(fù)用技術(shù),可以處理并發(fā)的連接,有利于密鑰的高并發(fā)存取。
通過QKD協(xié)商的密鑰將同時存入發(fā)送方和接收方的密鑰管理服務(wù)器中,REDIS數(shù)據(jù)庫與量子密鑰分發(fā)設(shè)備相連,用于存放協(xié)商的密鑰。為了方便管理,密鑰號通過對密鑰進(jìn)行哈希計算獲得,可將任意長度的數(shù)據(jù)映射成定長的數(shù)據(jù)。密鑰存儲方案如圖7所示。
量子密鑰的處理過程如下:①協(xié)商得到量子密鑰;②使用哈希函數(shù)將密鑰映射為16位的HASH字符串;③將得到的16進(jìn)制字符串轉(zhuǎn)換為二進(jìn)制,作為密鑰號SEQ存儲,二進(jìn)制密鑰作為KEY存儲,長度為64bit。另外,雖然哈希出現(xiàn)碰撞的概率極小,一旦出現(xiàn)重復(fù)的SEQ,密鑰號使用(SEQ+1)存儲。
在實際使用中,為了數(shù)據(jù)的高效傳輸,通信雙方提前協(xié)商一段密鑰存儲在緩沖池中,如圖8所示,動態(tài)加密策略選擇模型將根據(jù)當(dāng)前緩存密鑰以及數(shù)據(jù)大小等因素,輸出加密方式。如果采用一次一密,且密鑰池的緩存數(shù)量小于數(shù)據(jù)大小,則繼續(xù)進(jìn)行密鑰的協(xié)商。
2.4.2 文件管理模塊及通信流程設(shè)計
文件服務(wù)器的功能如圖9所示。
發(fā)件方確認(rèn)發(fā)送后,數(shù)據(jù)交給文件服務(wù)器處理,步驟如下:①根據(jù)加密選擇模塊給出的加密方式向量子分發(fā)設(shè)備索取密鑰,一次一密需要索取與文件等長密鑰,AES加密需要索取512位密鑰,密鑰存放在密鑰管理服務(wù)器中;②使用密鑰對用戶數(shù)據(jù)進(jìn)行加密,使之變?yōu)槊芪臄?shù)據(jù);③對密文進(jìn)行哈希處理,輸出的16位16進(jìn)制字符串轉(zhuǎn)為二進(jìn)制用于完整性檢測,長度為64 bit;④完整性檢測值、密鑰號、加密方式以及數(shù)據(jù)格式分別存放在數(shù)據(jù)庫中,完整性檢測值作為字段INTACT存儲,加密方式的字段為MODE,MODE=1表示一次一密,MODE=0表示AES,數(shù)據(jù)種類的字段為TYPE,TYPE=1表示文件,TYPE=0表示對話文本;⑤將表中所存的4個參數(shù)依次存入密文數(shù)據(jù)頭部,用于完成消息記錄和數(shù)據(jù)加解密功能,完整性檢測值、密鑰號長度均為26bit,加密方式占1 bit,數(shù)據(jù)格式占1 bit;⑥將數(shù)據(jù)包交由應(yīng)用層發(fā)出。
數(shù)據(jù)通過TCP進(jìn)行傳輸,經(jīng)由接收方的傳輸層交付接收方的應(yīng)用層,密文交由接收方的文件服務(wù)器處理。處理過程如下:①接收方將密文數(shù)據(jù)前26bit的數(shù)據(jù)取出作為完整性檢測值,存入數(shù)據(jù)庫中INTACT字段;②將(26+1)至27bit數(shù)據(jù)作為密鑰號存入SEQ字段;③將第(27+1)bit數(shù)據(jù)作為加密方式存入MODE字段;④將第(27+2)bit數(shù)據(jù)作為加密方式存入TYPE字段;⑤對(27+2)bit之外的數(shù)據(jù)進(jìn)行哈希處理,轉(zhuǎn)為二進(jìn)制后與INTACT字段對比,若一致進(jìn)行下面的步驟,不一致說明數(shù)據(jù)不完整,這時接收方的文件服務(wù)器向發(fā)送方前端返回“數(shù)據(jù)傳輸錯誤”提示,發(fā)送方重新發(fā)送;⑥接收方使用SEQ在密鑰管理服務(wù)器的數(shù)據(jù)庫中取出密鑰,根據(jù)加密方式以及數(shù)據(jù)格式對密文解密。
針對即時通信中加密方式的選擇問題,本文提出了融合量子密鑰的即時通信加密策略動態(tài)選擇模型,旨在根據(jù)不同的傳輸條件選擇安全性較高的加密方法;通過加密策略選擇模擬器直觀地展現(xiàn)出控制的效果,并通過構(gòu)建實際的即時消息通信系統(tǒng),驗證了算法的可行性和正確性。
本文模型將量子加密應(yīng)用于即時通信,提高了通信的可靠性,并能夠適應(yīng)于多種硬件條件和網(wǎng)絡(luò)環(huán)境,與傳統(tǒng)單一的加密策略相比較,具有更高的安全性和適應(yīng)性。
本文目前給出的加密方案是二選一的模式,在今后的研究中,會將兩種加密方式進(jìn)行融合使用,即在密鑰量不足的情況下,將現(xiàn)有密鑰用于文本數(shù)據(jù)的一次一密,對于多媒體數(shù)據(jù)采用一次一密與AES加密交替進(jìn)行,更進(jìn)一步提高即時通信的安全性。