倪奕,陳 雷,胡 鑫
(中國電子科技集團公司第三十研究所,四川 成都 610041)
在量子密鑰系統中,使用諸如BB84 協議[1]之類的量子密鑰分配(Quantum Key Distribution,QKD)協議,需要QKD 設備之間經典通信信道的支持才能產生量子密鑰并完成量子密鑰的分發。因此,整個QKD 系統的安全威脅,不僅來自量子領域,即量子相關攻擊,還可能來自經典網絡,即傳統的網絡攻擊。因此QKD 系統的經典部分,即QKD 后處理協議的安全性,會影響整個QKD系統的安全性,所以有必要對QKD 后處理協議進行安全脆弱性分析,并據此提出相應安全防護機制,提升量子QKD系統的整體安全性。
基于量子力學的基本原理[2],量子密鑰分配能為配對的兩個QKD 設備之間提供一種能夠產生安全密鑰的方式,其過程包含量子信息傳輸和后處理兩個階段。量子信息傳輸主要完成兩個QKD 設備之間量子態的分發、傳遞以及測量過程。后處理[2]主要包括篩選、參數估計、糾錯、保密增強等幾個過程,具體的工作流程如圖1 所示。

圖1 QKD 后處理過程
(1)篩選:即基矢比對過程,指的是QKD 設備之間通過經典信道比對雙方在操作光子時所使用的基矢。當雙方選用不同的基矢時會得到不同的信息,這些信息需要進行丟棄。當兩個設備選用一致的基矢時會得到一致的信息,通過該信息產生密鑰,即篩后密鑰(sifted key)。
(2)參數估計:通過經典信道公開比對一部分sifted key 來統計其誤碼率,可以初步判斷sifted key 是否應丟棄或者可以作進一步處理。參數估計可以算是糾錯的前置動作,糾錯過程中也會進一步統計sifted key 的誤碼率,因此糾錯流程中一般也會包含參數估計。
(3)糾錯:由于QKD 設備之間得到的sifted key 可能不完全相同,為使雙方的密鑰相同,需要使用相應糾錯碼對密鑰進行糾錯,得到相同的密鑰。
(4)保密增強:為清除攻擊者所竊取的信息而對sifted key 進行壓縮的過程。通信雙方根據估算的信息泄露量上限,選擇適合的Hash 函數對糾錯后的密鑰進行壓縮,得到安全的最終密鑰。
以下內容主要從信息安全[3]要素出發對QKD后處理協議的安全脆弱性進行分析研究。
QKD 后處理的機密性指QKD 后處理協議數據除通信雙方外,不泄露給其他非授權設備。通過分析,QKD 后處理協議可能存在以下脆弱性。
2.1.1 非授權用戶截取協議幀
由于QKD后處理協議規范中并沒有明確提及,在通信雙方Alice 和Bob 開始通信之前,對對方進行身份認證授權的過程中,Alice 在收到QKD 后處理命令或者應答幀時,無法確認該幀是否真的是由Bob 所發送,以及Bob 在收到發送端傳送的數據幀時也無法確認該幀來源的合法性。QKD 后處理協議標準的開放性,也為攻擊者偽造數據包提供了便利,攻擊者可以冒充某個合法QKD設備的地址進行欺騙攻擊。
2.1.2 缺乏協議數據加密措施
QKD 后處理協議標準由于在協議數據幀中沒有交互密鑰數據信息,沒有充分考慮協議數據幀信息泄露的問題,因此并沒有對數據幀單元進行加密,并且由于經典信道的開放性,QKD 協議數據泄露的可能性急劇增加。攻擊者只要在QKD 系統中某條通信鏈路或某個QKD 設備上進行通信監聽、數據截取,就可以獲得在QKD 網絡中傳輸的信息。因為QKD 后處理協議數據沒有進行加密,攻擊者能輕易對獲取的協議數據進行各種分析、篡改等惡意處理,可能對量子密鑰分發業務造成不利影響。
QKD 后處理的完整性指后處理協議數據的安全、正確與有效,即未被未授權的第三方修改。通過分析,QKD 后處理協議規范在信息完整性校驗以及報文會話模式等方面可能存在脆弱性。
2.2.1 沒有可靠的信息完整性校驗手段
由于沒有強制要求使用的校驗和算法,QKD后處理數據幀校驗和一般采用比較簡單的校驗和算法,對數據幀的幀長度和交互數據字段進行校驗。這樣處理雖然能夠確保QKD 協議數據的正確性,但不能確保其不會被攻擊者所篡改。而且QKD 后處理協議數據幀中沒有對協議字段進行加密,攻擊者可輕易實現對協議字段數據的篡改,并重新計算校驗和并完成協議幀的封裝,這樣合法QKD 設備就難以發現后處理協議數據幀被篡改,而對其進行正常處理,從而可能對設備造成損害。
2.2.2 協議幀格式簡單、模式易分析
QKD 后處理協議在設計的時候就已經確定了在運行過程中需要完成的各個階段,每個階段需要實現的各項功能,以及每項功能涉及哪些交互數據幀。總體來說,QKD 后處理協議報文數據幀格式簡單、構造模式易分析,具有統一的通用結構,不同類型數據幀的變化主要來自“交互數據”部分的“消息體”域的不同。攻擊者在對QKD 系統進行了解,并對QKD 后處理協議標準進行分析的基礎上,便能較為容易地掌握其協議交互過程以及協議數據命令幀/響應幀的幀結構,為構造并封裝具有惡意目的的后處理協議幀打下基礎。
QKD 后處理的可用性就是指QKD 后處理相關服務或數據可被正常訪問、使用以及在異常情況下能完成故障恢復的能力。
由于QKD 后處理協議沒有規定對通信雙方身份的認證以及對協議數據的加密,攻擊者可以通過中間人攻擊方式,監聽、竊取并偽造后處理協議幀或者停止轉發協議交互數據等方式破壞QKD 設備之間的通信過程。或者對QKD 設備進行端口掃描,在獲取后處理服務端口后進行拒絕服務攻擊,從而使得QKD失敗,甚至造成QKD 設備癱瘓等后果,從而破壞QKD系統信息和數據交互,以及服務或設備的可用性。
可認證性是指通信雙方在進行通信之前相互確認對方身份,只有雙方身份確認之后,才開始正式的通信過程。
在實際的QKD 系統中,兩個QKD 設備在進行后處理之前,沒有強制要求對對方身份進行認證,可能造成非法用戶冒充合法用戶的情況出現。另外,在實際QKD 系統中,除量子信道還有經典信道,量子信道可由量子基本原理保證其安全性,而經典信道可由身份認證機制來保證其安全性。當前身份認證主要使用Hash 函數實現,并利用QKD 設備之間共享的初始密鑰產生認證碼來完成。然而,Hash函數存在被破解的風險,而且QKD 設備之間共享的初始認證密鑰也可能隨著系統的運行而耗盡,從而整個QKD 的安全性就難以保證。
本部分基于上一節從信息安全要素出發,在對QKD 后處理協議的安全威脅分析研究的基礎上,分析QKD 后處理協議的安全驗證方法。本文分析主要參考中間人攻擊[4],如圖2 所示。所謂QKD 后處理中間人攻擊是指攻擊者可以竊聽QKD 設備之間傳輸的信息,并分別冒充正常通信的QKD 設備與對端設備進行通信。

圖2 中間人攻擊
3.1.1 信息監聽
如果兩臺QKD 設備之間進行后處理過程時,沒有對協議幀進行加密,那么使用常見的通信監聽工具即可輕易竊取QKD 后處理協議數據。QKD 后處理協議是公開的協議,攻擊者能夠輕易查找并獲取其協議規范,從而了解其交互流程以及協議幀結構。而且在實際QKD 系統中,后處理協議幀數據未進行加密傳輸,這也為攻擊者分析協議幀數據創造了條件,即攻擊者可以使用經典網絡抓包程序抓取QKD 設備之間傳輸的后處理協議幀數據,并展開數據分析,從而獲取其感興趣、可利用的信息。
3.1.2 欺騙攻擊
QKD 后處理協議標準采用命令/響應式規約,一個命令幀對應一個響應幀,通信主動權在發送端。在兩個QKD 設備之間建立后處理通信信道后,攻擊者作為中間人接收到發端設備傳輸的后處理協議幀后,不直接轉發,而是按攻擊者意圖偽造一個新的后處理協議幀發送給接收端,干擾或者破壞接收端的正常業務處理,達到攻擊者欺騙攻擊的目的。
通過前述完整性安全分析,QKD 后處理協議存在協議數據幀模式易分析以及信息完整性校驗弱等安全脆弱性問題。攻擊者在偵聽、竊取QKD 設備通信數據之后,根據QKD 后處理協議的先驗知識,對其協議數據幀進行分析,就能確定協議數據幀是屬于QKD 后處理過程的某個階段、某個命令或響應幀,從而獲取攻擊者可以利用的協議數據。并且可以偽造和篡改特定后處理協議數據幀達到干擾、攻擊正常的協議處理過程的目的。攻擊者之所以能夠偽造或篡改,是因為QKD 后處理協議數據幀的完整性校驗和算法實現較為簡單,可以較為容易地破解其算法,從而可以對內容篡改后的后處理數據幀重新計算校驗和,使得接收方不能僅僅通過后處理協議報文的格式檢查,發現攻擊者的篡改行為。
3.3.1 中斷會話
在QKD 后處理過程中,攻擊者可以通過以下方式來中斷Alice 和Bob 已經建立起的會話連接。這些攻擊方式的前提均是攻擊者完成中間人攻擊步驟,以“透明代理”的方式插入到了Alice 和Bob的通信之中,即假冒接收方與發送方進行通信,假冒發送方與接收方進行通信,而通信雙方均不知曉攻擊者Eve 的存在。
(1)偽造響應攻擊:作為“中間人”的攻擊者在截取后處理協議幀后,可以冒充接收設備偽造后處理協議響應幀作為對發端設備命令幀的應答,這樣接收設備就始終處于無響應幀接收的狀態,則可能造成接收端設備后處理協議處理狀態機錯亂,從而干擾破壞正常QKD 設備之間的通信過程。
(2)截取重發攻擊:攻擊者作為“中間人”在截取報文之后,可以對被截取報文字段進行篡改,修改特定字段數值后再重新發送給接收方,接收方解析被篡改報文后,認為對端業務處理異常,從而主動中斷與發送方之間的會話連接。
在截取重發攻擊中,以QKD 后處理過程基矢比對階段為例,Bob 端需要統計錯誤率,即Bob 端根據Alice 端發送過來的數據對系統的錯誤率進行評估,并將評估結果發送至Alice 端,如果攻擊者截取該幀,并對其中的探測評估結果進行篡改,使其始終高于QKD 后處理協議所規定的正常閾值,則通信雙方就可能認為通信過程存在問題,中斷本次通信會話,從而造成業務終止。
3.3.2 拒絕服務攻擊
拒絕服務的目的就是使被攻擊者不能提供正常的服務。針對實現QKD 后處理協議的QKD 設備來說,攻擊者可以采取多種手段達到這個目的。
(1)服務端口占用。QKD 設備之間進行處理過程處理的前提是先建立設備之間的通信連接,這就需要每個設備都要在某個端口啟用后處理服務,以監聽對端設備的后處理連接請求。攻擊者可以通過端口掃描等方法獲取QKD 設備的后處理服務端口,由此展開拒絕服務攻擊。攻擊者通過向QKD設備后處理服務端口發起海量的后處理服務連接請求,占用QKD 設備處理資源,消耗QKD 設備之間的網絡帶寬資源和QKD 設備的處理能力,從而達到QKD 設備因資源耗盡而拒絕服務的目的。
(2)緩沖區溢出。緩沖區溢出攻擊是常見攻擊方法,可以導致程序崩潰、設備死機等后果,其主要是利用軟件在代碼實現過程中不規范嚴謹所導致的緩沖區溢出漏洞而進行的攻擊行為。
QKD 后數據處理協議幀中包含“交互數據”數據域,該數據域根據不同的幀類型有不同的數據長度,攻擊者在獲取QKD 后數據處理協議幀結構的基礎上,可以構造各類附帶惡意代碼二進制數據的異常的“交互數據”,造成QKD 設備的后處理協議處理程序在處理該異常“交互數據”時緩沖區溢出,進而執行惡意代碼,最終造成QKD 設備程序崩潰或者設備死機等后果。
QKD 系統的安全依賴量子力學的正確性[5],但量子力學正確性并不能完全保證QKD 系統的安全。因此,QKD 系統的安全還應該依賴QKD 設備自身的安全性,以及進行QKD 的設備之間的網絡通信信道的安全性,即進行量子密鑰分發之前通信雙方要通過身份認證,雙方建立的通信鏈路也要通過安全認證。安全認證主要通過密碼學中的Hash函數來完成,然而當前攻擊者能較為容易地找到Hash 函數的碰撞,從而實現對安全認證機制的破解。針對Hash 函數的攻擊手段主要包括兩類,一種是窮舉攻擊,比如“生日攻擊”;另一種是密碼分析攻擊,典型的是中間相遇、差分分析等,其中差分分析[6]是當前的研究重點之一。在QKD 設備進行量子密鑰分發過程中,攻擊者可以在所有碰撞中選出與原消息認證碼漢明距離最小的一個對接收端的探測結果進行替換,并利用隨后的糾錯過程掩蓋自己的攻擊行為[5]。這種攻擊方法具有較強的通用性。
在QKD 系統中,對后處理各個階段的協議幀交互都要進行數據認證,以保證協議幀數據的完整性,防止被非法篡改。主要認證內容包括:(1)基矢比對交互數據認證;(2)糾錯結果一致性比對數據認證;(3)保密增強共享隨機數數據認證;(4)量子密鑰一致性比對數據認證。
消息認證可使用哈希運算消息認證碼(Hashbased Message Authentication Code,HMAC)雜湊算法實現帶密鑰哈希。例如在基矢比對數據認證中,將QKD 設備兩端后處理協議幀交互數據與128b 密鑰一起經HMAC 算法運算得到256b 雜湊值,兩端通過比對雜湊值的一致性來保證協議幀未被篡改。參與HMAC 運算的密鑰需定期更換。
認證過程中需要在兩個QKD 設備之間同時使用對稱密鑰,這些密鑰可以是預置的,也可以是從分發的量子密鑰中截取的,其實現流程說明如下。
4.1.1 基矢比對交互數據認證
BB84 協議的基矢比對功能實現QKD 設備兩端通過經典信道比對各自采用的基矢,保留基矢相同部分的信息。通信兩端交互數據通過HMAC 進行數據認證。
基矢比對過程中的數據認證分為接收數據認證和發送數據認證兩部分,當兩部分數據認證均成功時表示本次基矢比對過程中經典數據交互過程可靠。HMAC 中使用的key 更新頻率為每一次基矢比對過程即更新一次,每次使用的密鑰量為128 bit。
4.1.2 糾錯結果一致性比對數據認證
由于兩個QKD 設備之間進行量子密鑰協商過程時會產生量子比特誤碼,為保證糾錯后糾錯結果在通信雙方的輸出一致性,在糾錯后會對對的糾錯結果使用數據認證的方式進行一致性比對。該比對過程采用HMAC 算法實現。當數據認證成功并且比對結果一致時表明糾錯成功,通信雙方糾錯后密鑰一致。
4.1.3 保密增強隨機數共享數據認證
為了確保量子密鑰分發系統所產生密鑰的絕對安全性,對整個QKD 后處理過程產生的信息泄露量進行評估,并依據該評估值確定一個壓縮因子對糾錯后的密鑰進行壓縮,完成生成密鑰的保密增強,從而產生絕對安全的最終密鑰。
目前實現保密增強[7]可采用基于QKD 設備之間共享的真隨機數構造Toeplitz 矩陣,并進行Hash運算的保密增強算法實現。矩陣構造使用的隨機數由Alice 端產生,并使用諸如HMAC_SM3 之類的算法進行完整性認證后,通過經典網絡信道給Bob 端。
4.1.4 量子密鑰一致性比對數據認證
量子密鑰在經過保密增強模塊運算輸出后,需要對結果進行一致性比對。比對采用HMAC 方式對量子密鑰進行數據認證。
流程中使用的認證密鑰均只在本次QKD 流程中有效,當系統正常停止或因某些異常問題停止時,保持的認證密鑰均需要進行清除處理,在下一次正常工作啟動前繼續由預置密鑰提供認證密鑰。
QKD 協議不能抵抗中間人攻擊,因此后處理過程中需要利用身份認證技術確保通信雙方的合法性。量子身份認證主要有共享信息類型[8-9]和共享糾纏態類型[10]兩種。前者通信雙方通過預先共享的比特串來證明合法實體的身份,后者通過通信雙方共享糾纏態粒子達到身份認證的目的。
4.2.1 共享信息類型認證方案
通信雙方(Alice 和Bob)預先共享一串比特串作為共享認證密鑰,并利用共享認證密鑰來證明Alice 和Bob 的身份。此共享認證密鑰由兩部分密鑰構成,一部分為Alice 向Bob 證明自己的密鑰,另一部分為Bob 向Alice 證明自己的密鑰。
該方案實現步驟如圖3 所示。通過該方案可以驗證Alice 的身份,同理也可以驗證Bob 的身份。待通信雙方身份都完成驗證之后,Alice 和Bob 按照密鑰分發協議分發新的身份認證密鑰,即每次身份認證完畢后都更新認證密鑰,確保認證密鑰只使用一次,以保證認證的絕對安全性。

圖3 共享信息類型認證流程
4.2.2 共享糾纏態類型認證方案
共享糾纏態類型認證方案利用糾纏態性質實現QKD 設備之間的身份認證。由于量子態不可克隆定理的存在,該認證方案生成的量子密鑰不會被攻擊者克隆和分發。而糾纏態性質包含隱形傳態和糾纏交換等,利用量子隱形傳態可以實現無差錯的量子信道,利用糾纏交換和測量塌縮現象可以極大減少傳輸的經典信息量。攻擊者對糾纏態的測量必然會引起糾纏態的塌縮,從而對QKD 設備的正常測量造成影響,最終導致攻擊者的竊聽行為被發現。共享糾纏態的實現需要先完成糾纏態粒子的安全分發,這通常由可信第三方來完成。
加密可實現數據安全和隱私防護,防止敏感關鍵信息泄露。由于QKD 后處理協議中沒有明確進行協議幀數據加密的規定,QKD 設備廠商的后處理協議實現通常就沒有對協議幀數據進行加密,從而造成攻擊者對QKD 設備通信過程進行監聽時,可以很容易實現對后處理協議幀數據的竊取、分析和處理,破壞協議數據的機密性。
由于QKD 設備之間是端到端通信,因此可以采用端到端加密保護后處理協議幀數據的隱私和安全。端對端數據加密保證數據以密文形式從發送端發送到接收端的傳遞過程中,不再做加解密處理,接收端接收密文之后再進行解密。
針對QKD 后處理協議數據幀,可以對表1 中幀長度+交互數據以及幀校驗字段進行加密,協議幀接收方根據幀頭、幀尾判定該協議報文為QKD后處理協議數據幀,并根據通信雙方預制/協商的密鑰對加密字段進行解密,從而獲取QKD 后處理協議數據幀信息。

表1 QKD 后處理協議數據幀加密示例
通過對QKD 后處理協議規范、QKD 后處理流程等各方面的安全分析,可以發現QKD 系統,特別是其經典部分,存在一定的安全風險。本文從信息安全要素出發,提出了針對QKD 后處理的安全解決方案,即通過對QKD 后處理協議原理及實現方面的脆弱性分析,提出了相應的攻擊驗證方法,并通過設計和實現彌補脆弱的安全機制來增強協議的安全性,從而解決實際系統中QKD 后處理協議面臨的安全威脅,最終實現QKD 系統的安全。