王偉闖
摘要:對稱加解密是保障傳輸數(shù)據(jù)安全的重要機制。對稱加密技術(shù)具有高速、計算復(fù)雜度低的優(yōu)點,但是安全性低于非對稱加密機制。因此,在現(xiàn)代的數(shù)據(jù)安全傳輸過程中,一般使用非對稱加解密與對稱加解密相結(jié)合的來實現(xiàn)效率與安全性的均衡。但是,同時使用兩種加密機制會帶來密鑰生成、分發(fā)與管理方面的問題。對此,文章提出一種基于SRv6協(xié)議實現(xiàn)的對稱密鑰生成和分發(fā)機制,該機制利用SRv6的路由機制來實現(xiàn)消息路由節(jié)點共同協(xié)商生成密鑰,由此可以實現(xiàn)一次性對稱加密密鑰協(xié)商生成、分發(fā)與身份認證功能。相對于現(xiàn)有的機制,文章所提方案在安全性、便捷性方面具有突出優(yōu)點。
關(guān)鍵詞:SRv6;對稱密鑰;數(shù)據(jù)加解密;身份認證
中圖分類號:TP399文獻標志碼:A
0 引言
數(shù)據(jù)的安全傳輸一直是信息安全的基本保障。數(shù)據(jù)安全傳輸?shù)慕鉀Q方案不外乎是使用加解密技術(shù)來實現(xiàn)?,F(xiàn)有的數(shù)據(jù)加解密技術(shù)總體上可以分成兩類:對稱加密技術(shù)與非對稱加密技術(shù)[1-2]。非對稱加密技術(shù)計算復(fù)雜度高,效率低但是安全性高。相對而言,對稱加密技術(shù)的計算復(fù)雜低,效率高但是安全性比較低。所以目前數(shù)據(jù)安全傳輸在傳輸過程中,主要使用對稱加密技術(shù)。但是采用一次一密的方式,即在每次數(shù)據(jù)傳輸前,使用非對稱加密技術(shù)實現(xiàn)對稱加密密鑰的協(xié)商生成,再使用新生成的對稱密鑰實現(xiàn)本次的數(shù)據(jù)傳輸加解密。
1 數(shù)據(jù)安全傳輸方式存在的問題
一次一密的數(shù)據(jù)安全傳輸方式存在以下問題。
(1)服務(wù)器端計算壓力比較大:服務(wù)器端對外開放服務(wù),具有高并發(fā)的特點。因此在協(xié)商生成對稱加密密鑰時,服務(wù)器使用非對稱加密技術(shù)與并發(fā)的客戶端協(xié)商,對于服務(wù)器造成一定的計算壓力,也限制了服務(wù)器的并發(fā)服務(wù)能力。
(2)服務(wù)器端存儲壓力比較大:在高并發(fā)的情況下,服務(wù)器要存儲不同客戶端的臨時加密密鑰,同時監(jiān)控這些密鑰的時效,對于服務(wù)器的內(nèi)存與計算資源造成壓力。
(3)協(xié)商過程復(fù)雜:如前所述,數(shù)據(jù)安全傳輸需要經(jīng)過兩輪加密協(xié)商,協(xié)商過程比較復(fù)雜。上述的過程還不涉及身份認證,如果再增加數(shù)據(jù)傳輸雙方的身份認證,其過程就會更加的復(fù)雜。
由此,本文提出一種基于SRv6協(xié)議實現(xiàn)的對稱密鑰生成協(xié)商機制,同時該機制也包含有身份認證的功能。該機制主要使用了SRv6路由協(xié)議來實現(xiàn),客戶端向服務(wù)端發(fā)出請求,在請求轉(zhuǎn)發(fā)的路徑中,各路由節(jié)點對數(shù)據(jù)包中五元組進行隨機映射生成一個隨機數(shù),并壓到SRv6頭部同時記錄下轉(zhuǎn)發(fā)的路徑。經(jīng)過多步路由之后,到達服務(wù)器。服務(wù)器將收到的多個SRv6路由節(jié)點生成的隨機數(shù)作為對稱加密密鑰,并發(fā)回到客戶端,同時完成身份的驗證。
本文所提的機制優(yōu)點在于盡量減少非對稱加密運算,而且密鑰的生成與分發(fā)一次性完成,不需要通過兩輪加密協(xié)商,對稱加密密鑰的協(xié)商過程較現(xiàn)有的方式更為簡化,對服務(wù)器端的計算、存儲壓力也相對較輕,從而能進一步提高服務(wù)器的服務(wù)能力。
2 SRv6可編程網(wǎng)絡(luò)綜述
基于IPv6的段路由(Segment Routing IPv6,SRv6)是一種新型的IP承載協(xié)議,其基于IPv6數(shù)據(jù)平面,在對IPv6數(shù)據(jù)包結(jié)構(gòu)進行擴展,并支持可編程能力可定義各種路由指令與擴展操作。SRv6協(xié)議并沒有破壞IPv6報頭的結(jié)構(gòu),只是擴展。所以,SRv6數(shù)據(jù)包可以在普通的IPv6網(wǎng)絡(luò)中傳輸,一旦SRv6數(shù)據(jù)包進到SRv6域中,則可以通過數(shù)據(jù)包中定義的路由擴展頭SRH(Segment Routing Header,段路由頭部)進行路由轉(zhuǎn)發(fā)。一個SRv6數(shù)據(jù)包可以壓入多個SRH,指示數(shù)據(jù)包的轉(zhuǎn)發(fā)方式,從而在SRv6網(wǎng)絡(luò)域中實現(xiàn)類似于MPLS的轉(zhuǎn)發(fā)過程。
從圖1所示的SRv6數(shù)據(jù)報的頭部結(jié)構(gòu)可以看出,SRH使用了IPv6協(xié)議中定義的可選internet層信息,存儲在IPv6擴展頭(Extension Header)中。SRH可以由多個SRv6 Segment組成,構(gòu)成了轉(zhuǎn)發(fā)的路由。SRv6 Segment又稱為SRv6 SID或SID,為了兼容數(shù)據(jù)包在IPv6路由層轉(zhuǎn)發(fā),SID也同樣定義為一個128 bits的IPv6地址。
在SRv6路由過程中,每經(jīng)過一個SRv6路由節(jié)點,該節(jié)點將讀取SRH中的信息,執(zhí)行相關(guān)的SID指令,將當(dāng)前的Segment List拷貝到標準頭中的目的地址,同時將SL(SID計數(shù))字段減1,同時更新相關(guān)的指針,最后進行IPv6轉(zhuǎn)發(fā)。
SRv6的擴展能力主要來自SRH,從圖2可以看出,SID由Locator和Function兩部分組成,F(xiàn)unction部分還可以包含參數(shù)段(可選)。因此,SID可以由三元組來表示:
其中:Locator是實現(xiàn)SRv6路由功能的字段,其在SRv6域內(nèi)是唯一的,SRv6網(wǎng)絡(luò)里其他節(jié)點通過Locator網(wǎng)段路由來尋址和定位SRv6的路由節(jié)點。而Function則代表SRv6的指令,這也是SRv6可編程網(wǎng)絡(luò)的來由,SRv6中預(yù)定義了各種指令,如:End.DX6 SID等,主要是用于指示SRv6的節(jié)點進行相應(yīng)的數(shù)據(jù)操作。SRv6協(xié)議中定義的指令集很豐富也很靈活,包括:插入新的SID、連續(xù)彈出或復(fù)制SID指令等。因此,SRv6之所以稱為可編程網(wǎng)絡(luò),也是因為通過定義SID序列,可以實現(xiàn)網(wǎng)絡(luò)路由節(jié)點對數(shù)據(jù)包的不同操作與路由變化。這也是本文所提對稱密鑰生成機制與身份認證的基礎(chǔ)。
3 基于SRv6的對稱密鑰協(xié)商機制
3.1 基本的應(yīng)用場景定義
在提出本文的密鑰協(xié)商機制之前,首先給出本文密鑰協(xié)商機制的應(yīng)用場景,如圖3所示。
從圖3中可以看出,假設(shè)A為請求客戶端,而B為服務(wù)器端,則本文的密鑰協(xié)商機制假定客戶端與服務(wù)端需要同處于一個SRv6域中。SRv6域與IPv6路由網(wǎng)絡(luò)相對的概念,因為SRv6本身是兼容IPv6,既可以在SRv6域中使用Segment來轉(zhuǎn)發(fā)數(shù)據(jù)包,也可以直接使用IPv6路由協(xié)議來轉(zhuǎn)發(fā)數(shù)據(jù)包。SRv6域指的是使用SID路由機制的一個網(wǎng)絡(luò)段,這個段中所有的SID都從同一SID Space中分配,具有相同的前綴。
SRv6域包括3種類型的節(jié)點:第一種是源節(jié)點,是指接收數(shù)據(jù)包進到SRv6域的路由節(jié)點;第二種是中轉(zhuǎn)節(jié)點,是根據(jù)SRv6協(xié)議轉(zhuǎn)發(fā)數(shù)據(jù)的路由節(jié)點;第三種是端節(jié)點,最后接收數(shù)據(jù)包,或者將數(shù)據(jù)包從SRv6路由轉(zhuǎn)換成標準IPv6路由,發(fā)送至IPv6網(wǎng)絡(luò)的節(jié)點。因此,源節(jié)點和端節(jié)點可以看到SRv6域的邊緣路由節(jié)點,數(shù)據(jù)包從這兩類節(jié)點進入或發(fā)出。
為了簡化本文機制考慮的范圍,假定本文機制的應(yīng)用場景限定于同一個SRv6域中,在該域中只使用SID路由,客戶端與服務(wù)器端分別直接連接SRv6域的源節(jié)點或端節(jié)點,不考慮IPv6路由存在的情況下,經(jīng)過多步SID路由后達到對方。
3.2 對稱密鑰協(xié)商機制
本文所提的對稱密鑰協(xié)商機制執(zhí)行步驟如表1所示。
在上述的密鑰生成機制中,
在客戶端獲取本次會話生成會話密鑰之后,即使用SSKEY對雙方傳輸?shù)臄?shù)據(jù)進行對稱加密后沿請求路徑轉(zhuǎn)發(fā)至服務(wù)器端。而該經(jīng)由一個SRv6中轉(zhuǎn)節(jié)點轉(zhuǎn)發(fā)時,該節(jié)點將在SHR頭中先獲取本次會話的nonce,從節(jié)點映射表中,取出nonce對應(yīng)的rand,再壓到SHR頭部中,逐級轉(zhuǎn)發(fā)到服務(wù)器端。
服務(wù)器在收到加密的消息后,取出SHR頭中SID序列和nonce,獲得本地映射表中存儲的nonce對應(yīng)rand,再一次生成會話密鑰SSKEY,對接收的加密消息解密。而服務(wù)器回復(fù)時,同樣使用SSKEY對消息進行加密,再沿原請求路徑發(fā)回,在回復(fù)路徑上的各SRv6節(jié)點按路由直接轉(zhuǎn)發(fā)即可。
4 基于SRv6的對稱密鑰協(xié)商機制的安全性驗證
本文所述的對稱密鑰協(xié)商機制,可以從以下步驟來驗證其安全性。
在對稱密鑰協(xié)商請求消息轉(zhuǎn)發(fā)路徑中,除服務(wù)器之外,不存在任一節(jié)點能掌握rand0, …, randN序列,也即最終協(xié)商生成的會話密鑰對于請求消息轉(zhuǎn)發(fā)路徑中的任一節(jié)點都是不可知的。
最終生成的對稱密鑰協(xié)商回復(fù)消息路徑中,不存在任何一節(jié)點與請求消息轉(zhuǎn)發(fā)的節(jié)點重復(fù)。也即,回復(fù)消息路徑中不存在任一節(jié)點掌握nonce。因此,對于<
本機制在形成對稱會話密鑰的同時,也完成了客戶端與服務(wù)器端的雙向身份驗證,客戶端可以從兩個方面來確認會話密鑰生成回復(fù)消息來自服務(wù)器端。
(1)接收到會話密鑰生成消息時執(zhí)行的驗證操作,已經(jīng)證明回復(fù)的消息是來自于服務(wù)器端;
(2)由于回復(fù)路徑與請求路徑中不存在重復(fù)的中轉(zhuǎn)節(jié)點,因此不可能有節(jié)點掌握其他節(jié)點作為中間人發(fā)動攻擊,回復(fù)虛假的生成消息;
同時,服務(wù)器端也可以在后繼的會話請求中對客戶端的身份做驗證,原因同樣在于回復(fù)路徑中不存在節(jié)點掌握nonce,那么最終收到并解密出SSKEY的只可能是發(fā)送nonce的客戶端。
綜上所述,本文所提的基于SRv6的對稱密鑰協(xié)商機制的安全性是可以保障的。
5 SRv6的意義
SRv6網(wǎng)絡(luò)編程草案至今,已經(jīng)有多個商用實現(xiàn)和商用部署,發(fā)展迅速。在推動SRv6標準過程中,結(jié)合互聯(lián)網(wǎng)發(fā)展歷史的經(jīng)驗教訓(xùn),對SRv6的價值和意義也有了更深層次的認知。
IPv4技術(shù)可擴展性是一個重要教訓(xùn),設(shè)計之初并未想到會有如此多的設(shè)備接入IP網(wǎng)絡(luò),因此觸發(fā)IPv6技術(shù)發(fā)展。而IPv6技術(shù)發(fā)展可兼容性又是一個教訓(xùn)。當(dāng)時設(shè)想32比特的地址空間不夠就把它擴展成128比特,但是128比特IPv6地址與32比特的IPV4地址無法兼容,因此需要全網(wǎng)升級支持IPv6,導(dǎo)致部署應(yīng)用困難。SRv6可以兼容IPv6路由轉(zhuǎn)發(fā),通過Function ID兼顧了MPLS轉(zhuǎn)發(fā),保證SRv6可以從IPv6網(wǎng)絡(luò)推進。
過去十多年IP技術(shù)取得了巨大進步,統(tǒng)一了網(wǎng)絡(luò)承載,其中MPLS扮演了非常重要的地位。基于MPLS承載技術(shù)用于IP Core承載,再到城域承載、移動承載,替代了幀中繼、ATM、TDM等多種網(wǎng)絡(luò)技術(shù),實現(xiàn)了網(wǎng)絡(luò)承載技術(shù)統(tǒng)一。MPLS成功依賴3個重要特性:TE,VPN,F(xiàn)RR,因此SRv6技術(shù)發(fā)展要把這3個特性優(yōu)勢繼承下來,這個目標已基本達成。
All IP 1.0成功的同時也帶來了以下3個方面的挑戰(zhàn)。
(1)IP承載網(wǎng)絡(luò)的孤島問題。雖然MPLS統(tǒng)一了承載網(wǎng),但是IP Core承載網(wǎng)、移動承載網(wǎng)、城域承載網(wǎng)之間是分離的,導(dǎo)致端到端業(yè)務(wù)部署困難。
(2)MPLS與IPv4封裝的可編程空間有限。新業(yè)務(wù)的產(chǎn)生需要在轉(zhuǎn)發(fā)面加入封裝,而IETF已經(jīng)停止為IPv4制定更進一步的標準,并且MPLS標簽的字段采用固定長度,標簽棧提供的網(wǎng)絡(luò)編程能力也相對受限,導(dǎo)致無法滿足未來業(yè)務(wù)的網(wǎng)絡(luò)編程需求。
(3)應(yīng)用與網(wǎng)絡(luò)承載的解耦,導(dǎo)致網(wǎng)絡(luò)自身難以優(yōu)化且難以提升價值。目前運營商面臨被管道化,無法從增值應(yīng)用中獲得收益。應(yīng)用信息的缺失導(dǎo)致網(wǎng)絡(luò)調(diào)度和優(yōu)化無法精細化,造成資源的浪費。例如,ATM到桌面技術(shù)。MPLS曾經(jīng)試圖能夠入云但未成功,反而是VXLAN成為了事實標準。
SRv6技術(shù)的出現(xiàn),實際承擔(dān)了解決這些關(guān)鍵問題的使命:(1)SRv6兼容IPv6路由轉(zhuǎn)發(fā),基于IP可達性實現(xiàn)不同網(wǎng)絡(luò)域間的連接,不需要像MPLS那樣必須引入額外信令。(2)基于SRH能夠支持多種類的封裝,更好地滿足新業(yè)務(wù)多樣化需求。(3)SRv6對于IPv6的親和性使得它能夠?qū)P承載網(wǎng)絡(luò)與支持IPv6應(yīng)用無縫融合,通過網(wǎng)絡(luò)感知應(yīng)用為運營商帶來更多收益。
IPv6的發(fā)展里程證明,僅依靠地址空間的需求不足以支撐其規(guī)模化部署,SRv6技術(shù)可以更好地促進IPv6發(fā)展應(yīng)用。
6 實驗與討論
SRv6作為新一代的路由協(xié)議,雖然目前已經(jīng)有不少產(chǎn)品實現(xiàn)了SRv6路由功能,但是本文機制需要對SRv6的指令進行擴展,引入會話密鑰生成指令,因此,為了實驗驗證上述提出的會話密鑰機制,在本文中采用的P4語言與虛擬化容器技術(shù)來對上述機制搭建了如上圖3的實驗環(huán)境進行測試[3]。
如圖3所示的網(wǎng)絡(luò)拓撲結(jié)構(gòu),本文采用了6臺SRv6路由節(jié)點,其中兩臺分別部署在客戶端與服務(wù)器端,客戶端的路由節(jié)點與圖中的SRv6域的源節(jié)點對接,而部署在服務(wù)器上的路由節(jié)點,與SRv6域的端節(jié)點對接,其他4臺作為SRv6域的中轉(zhuǎn)節(jié)點。
路由節(jié)點使用P4實現(xiàn)編程,部署到Simple Switch來實現(xiàn)。
客戶端、服務(wù)器分別使用Docker容器[4],運行部署Go語言實現(xiàn)的測試代碼來仿真基于Linux Veth構(gòu)建虛擬網(wǎng)卡[5],一共構(gòu)建了8對虛擬網(wǎng)卡,分別部署到客戶端,服務(wù)器端以及源節(jié)點、端節(jié)點和各中轉(zhuǎn)節(jié)點。
在完成上述虛擬網(wǎng)絡(luò)搭建后,最核心的是使用P4對Simple Switch進行拓展,編寫P4代碼來支持本文所述的對稱密鑰請求消息與回復(fù)消息的路由轉(zhuǎn)發(fā)。本文的實驗代碼是基于已有的SRv6 P4代碼的實現(xiàn)來完成的,主要包括:
(1)在Simple Switch中定義寄存器陣列,使用布隆過濾器來映射存儲nonce對應(yīng)本節(jié)點生成的隨機數(shù)值;
(2)對SRv6的SHR進行擴展,引入新的Action動作,來表述在SRv6節(jié)點收到對稱密鑰請求消息后執(zhí)行的生成隨機數(shù),壓入新的SID動作;
(3)在會話消息傳發(fā)過程中,根據(jù)nonce值,來查找對應(yīng)寄存器中的隨機數(shù),然后按上文所述的步驟,組織新的SID壓入SHR再轉(zhuǎn)發(fā)。
通過上述的網(wǎng)絡(luò)實驗環(huán)境的搭建,以及SRv6 P4代碼的擴展,本文完成了上述客戶端服務(wù)器對稱會話密鑰的生成與回復(fù)以及使用會話密鑰開展雙方會話的過程,驗證了本文所提及方案的可行性。
作為新一代的IPv6路由協(xié)議,SRv6通過對IPv6的包頭擴展與基于段的轉(zhuǎn)發(fā)方式給新型網(wǎng)絡(luò)構(gòu)建帶來各種可能,特別是可編程的概念引發(fā)了“算網(wǎng)融合”等新的網(wǎng)絡(luò)發(fā)展趨勢,這也為本文所提新的會話密鑰協(xié)商機制的基礎(chǔ)。整體而言,本文所提的方案以SRv6的路由節(jié)點提供的標簽路由與計算能力,在保證會話數(shù)據(jù)傳輸安全性的同時,還具有會議協(xié)商過程簡化,能有效降低服務(wù)器在提供加密會話數(shù)據(jù)傳輸過程中的計算與內(nèi)存壓力的優(yōu)點。
參考文獻
[1]劉中兵Java研究室.Java高手真經(jīng)(應(yīng)用框架卷):Java Web核心框架[M].北京:電子工業(yè)出版社,2009.
[2]MARTY H,LARRY B.JSP核心編程[M].2版.北京:清華大學(xué)出版社,2004.
[3]郭永俏,關(guān)治洪.基于JSP技術(shù)的應(yīng)用[J].情報雜志,2003(44):1-41.
[4]盧湘江,李向榮,晏子.MySQL高級配置和管理[M].北京:清華大學(xué)出版社,2011.
[5]邱加永,孫連偉.JSP基礎(chǔ)與案例開發(fā)詳解[M].北京:清華大學(xué)出版社,2014.
(編輯 傅金睿)