王偉闖



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