??? 摘 要: 基于SSL協(xié)議的VPN系統(tǒng),具有簡(jiǎn)便、輕量級(jí)、基于部署等優(yōu)點(diǎn),可以提供安全的遠(yuǎn)程接入和端到網(wǎng)絡(luò)邊緣的加密通道,具有廣闊的應(yīng)用前景。對(duì)SSL協(xié)議的記錄層協(xié)議" title="記錄層協(xié)議">記錄層協(xié)議和基于虛擬設(shè)備的SSL VPN的數(shù)據(jù)封裝和傳輸機(jī)制進(jìn)行了分析,提出了一種可以更好地支持端到端" title="端到端">端到端多媒體通信" title="多媒體通信">多媒體通信等應(yīng)用的記錄層協(xié)議及數(shù)據(jù)傳輸機(jī)制的改進(jìn)方案。
??? 關(guān)鍵詞: SSL VPN? 多媒體通信? 記錄層協(xié)議
?
??? 安全套接層協(xié)議[1]SSL,常用于建立安全的Web或電子郵件連接。隨著SSL協(xié)議的完善和網(wǎng)絡(luò)應(yīng)用的發(fā)展,SSL協(xié)議得到了更廣泛的應(yīng)用。SSL VPN就是SSL協(xié)議最常見的擴(kuò)展應(yīng)用。
??? SSL VPN和傳統(tǒng)的Web、EMAIL等SSL協(xié)議應(yīng)用有所不同,SSL不再用來(lái)建立專用的端到端的安全通道,而是建立通用的、端到網(wǎng)絡(luò)邊緣的安全隧道,即客戶端" title="客戶端">客戶端到SSL網(wǎng)關(guān)之間的VPN連接。這種基于SSL協(xié)議的VPN技術(shù)具有靈活、簡(jiǎn)便、兼容現(xiàn)有網(wǎng)絡(luò)架構(gòu)等優(yōu)點(diǎn),因此得到了越來(lái)越廣泛的應(yīng)用。本文對(duì)SSL協(xié)議在VPN應(yīng)用下的紀(jì)錄層協(xié)議進(jìn)行分析,并提出一種改進(jìn)方法,使之可以對(duì)不同的應(yīng)用實(shí)施不同的安全策略,增強(qiáng)端到端的多媒體通信,如對(duì)VoIP應(yīng)用的支持。
1 SSL VPN技術(shù)分析
??? 首先對(duì)SSL協(xié)議的結(jié)構(gòu)特別是記錄層協(xié)議的結(jié)構(gòu)進(jìn)行分析,并對(duì)SSL VPN的應(yīng)用架構(gòu)和數(shù)據(jù)傳輸流程進(jìn)行分析,進(jìn)而闡明SSL VPN技術(shù)的應(yīng)用優(yōu)勢(shì)和缺陷。
1.1 SSL協(xié)議體系結(jié)構(gòu)
??? SSL協(xié)議結(jié)構(gòu)可分為以下幾個(gè)主要部分:SSL握手協(xié)議、SSL改變密碼規(guī)范協(xié)議、SSL告警協(xié)議和SSL記錄層協(xié)議等[2]。其中,SSL握手協(xié)議負(fù)責(zé)身份認(rèn)證、建立連接;SSL改變密碼規(guī)范協(xié)議負(fù)責(zé)數(shù)據(jù)傳輸中的協(xié)商密碼算法規(guī)范;SSL告警協(xié)議負(fù)責(zé)相關(guān)狀態(tài)的警告等;SSL記錄層協(xié)議則負(fù)責(zé)數(shù)據(jù)傳輸過程中的數(shù)據(jù)封裝和信息標(biāo)識(shí)。
??? SSL記錄層協(xié)議規(guī)定完整的SSL數(shù)據(jù)包具有三部分:記錄頭(record header)、數(shù)據(jù)載荷(加密過的)和數(shù)據(jù)校驗(yàn)(MAC)。記錄頭是SSL記錄協(xié)議中最重要部分,負(fù)責(zé)對(duì)SSL協(xié)議版本、數(shù)據(jù)類型等信息進(jìn)行標(biāo)識(shí),其結(jié)構(gòu)如下[1]:
??? Struct{
????? ContentType type;? ??//內(nèi)容信息結(jié)構(gòu)
????????? ProtocolVersion version;? //協(xié)議版本號(hào)信息
????????? Uint16 length;?? ??//數(shù)據(jù)長(zhǎng)度信息
??? }RecordHeader;??? ???//記錄頭結(jié)構(gòu)定義
??? 記錄頭對(duì)SSL協(xié)議版本、負(fù)載數(shù)據(jù)類型等信息進(jìn)行說明,使得通信雙方可以對(duì)數(shù)據(jù)進(jìn)行不同的處理。SSL記錄頭在傳統(tǒng)的SSL應(yīng)用中非常重要,然而在VPN應(yīng)用中,由于和SSL VPN應(yīng)用的架構(gòu)特點(diǎn)有關(guān),記錄頭的作用被弱化了。
1.2 基于虛擬設(shè)備的SSL VPN應(yīng)用架構(gòu)
??? 目前常見的SSL VPN應(yīng)用大多采用虛擬設(shè)備的架構(gòu)方式。即通過軟件方式實(shí)現(xiàn)具有NDIS(Network Driver Interface Specification)接口和流接口的虛擬網(wǎng)卡,進(jìn)行VPN隧道的路由和封裝過程[3],典型例子如OPENVPN等。
??? 基于NDIS接口的虛擬網(wǎng)卡,實(shí)際上是在正常的網(wǎng)絡(luò)處理流程中加入一個(gè)中間層,使之對(duì)上層應(yīng)用表現(xiàn)為網(wǎng)卡,并提供虛擬網(wǎng)卡行為的NDIS接口,而對(duì)真實(shí)網(wǎng)卡則表現(xiàn)為上層應(yīng)用,提供一個(gè)流接口,其結(jié)構(gòu)如圖1所示。
?
?
??? 基于NDIS虛擬網(wǎng)卡的SSL VPN的工作流程如下:
??? (1) 客戶端通過真實(shí)網(wǎng)卡和VPN網(wǎng)關(guān)進(jìn)行SSL協(xié)議握手,得到“虛擬”IP地址和會(huì)話密鑰等信息,這個(gè)虛擬IP地址,一般是VPN網(wǎng)關(guān)所在的內(nèi)網(wǎng)地址。虛擬IP地址被賦給虛擬網(wǎng)卡,而系統(tǒng)路由表也會(huì)作相應(yīng)改動(dòng),使得需要的IP包都發(fā)送到虛擬網(wǎng)卡。
??? (2) 當(dāng)上層應(yīng)用需要通過VPN傳輸數(shù)據(jù)時(shí),數(shù)據(jù)先經(jīng)過TCP/IP" title="TCP/IP">TCP/IP協(xié)議棧封裝成IP包,而這些IP包的源地址就是虛擬網(wǎng)卡的IP地址,目的地址則可能是VPN內(nèi)網(wǎng)的應(yīng)用服務(wù)器地址等,在此將其稱為“虛擬”IP包。這些虛擬IP包會(huì)根據(jù)路由表被送到虛擬網(wǎng)卡的NDIS接口。
??? (3) 虛擬網(wǎng)卡獲得虛擬IP包后將其進(jìn)行數(shù)據(jù)加密,加密后的包體再通過流接口發(fā)給TCP/IP協(xié)議棧進(jìn)行再封裝,封裝好的IP包具有真實(shí)的源(客戶端)地址信息和目的(VPN網(wǎng)關(guān))地址信息,稱為“真實(shí)”IP包,真實(shí)IP包通過真實(shí)網(wǎng)卡發(fā)送到VPN網(wǎng)關(guān)。
??? (4) 與VPN網(wǎng)關(guān)連接的對(duì)外真實(shí)網(wǎng)卡收到真實(shí)IP包后,解包得到加密后的虛擬IP包,并發(fā)送到服務(wù)器的虛擬網(wǎng)卡的流接口,虛擬網(wǎng)卡將數(shù)據(jù)解密,發(fā)到內(nèi)網(wǎng)接口網(wǎng)卡上,并將其作為正常IP包,轉(zhuǎn)發(fā)到相應(yīng)的目的地址(應(yīng)用服務(wù)器、客戶端或其他網(wǎng)關(guān)等)。
??? (5) 當(dāng)VPN網(wǎng)關(guān)向客戶端發(fā)送數(shù)據(jù),或者內(nèi)網(wǎng)用戶或內(nèi)網(wǎng)服務(wù)器通過網(wǎng)關(guān)向VPN用戶發(fā)送數(shù)據(jù)時(shí),流程相似。
??? 可以看出,在以上工作流程中,VPN操作獨(dú)立于TCP/IP協(xié)議棧操作,而且VPN通道可以向所有的上層應(yīng)用提供路由、認(rèn)證和封裝服務(wù),因此這種應(yīng)用架構(gòu)具有良好的層次特性和對(duì)網(wǎng)絡(luò)協(xié)議的兼容性。
2 典型VPN應(yīng)用中的SSL記錄層協(xié)議分析
??? 采用虛擬設(shè)備形式的SSL VPN,其握手協(xié)議等和SSL協(xié)議的傳統(tǒng)應(yīng)用并無(wú)很大不同,但是在記錄層協(xié)議和數(shù)據(jù)傳輸模式上是有所區(qū)別的。
??? (1)記錄頭的作用被弱化,甚至被取消。所有的數(shù)據(jù)被明確地打包為虛擬IP包,通過TCP/IP協(xié)議即可保證其路由和完整性等要求;VPN隧道只傳輸虛擬IP包,不需要再對(duì)負(fù)載類型進(jìn)行識(shí)別,因此,傳統(tǒng)記錄頭中的type、length等信息都可以省略;此外,數(shù)據(jù)也不再需要TCP/IP之外的數(shù)據(jù)校驗(yàn)。
??? (2)利用SSL的傳統(tǒng)加密傳輸應(yīng)用必須通過TCP協(xié)議來(lái)進(jìn)行,而在基于虛擬設(shè)備的SSL VPN應(yīng)用中,無(wú)需特別機(jī)制來(lái)關(guān)注鏈路是否會(huì)超時(shí)。因此,大多數(shù)情況可用UDP協(xié)議傳輸以減少通信開銷,而丟包等情況則只要通過重發(fā)數(shù)據(jù)包等就可解決。
??? (3)即使客戶端需要訪問多個(gè)服務(wù),也只需要開放一個(gè)網(wǎng)關(guān)端口即可。這使得采用虛擬設(shè)備的VPN網(wǎng)關(guān)很容易和防火墻等設(shè)備相配合(只需在防火墻上開放一個(gè)端口即可實(shí)現(xiàn)全部VPN功能)。這也是SSL VPN較其他VPN方案(如IPSec VPN)的優(yōu)勢(shì)之一。
??? 可以看出,采用虛擬設(shè)備的SSL VPN,對(duì)傳統(tǒng)SSL協(xié)議的記錄層協(xié)議和數(shù)據(jù)傳輸模式進(jìn)行了改進(jìn),這種改進(jìn)符合VPN應(yīng)用的特點(diǎn),使得SSL協(xié)議能夠更有效地應(yīng)用在VPN領(lǐng)域。無(wú)論與傳統(tǒng)的SSL應(yīng)用方式相比,還是與IPSec等其他熱門VPN技術(shù)相比,基于虛擬設(shè)備的SSL VPN技術(shù)都有難以替代的優(yōu)點(diǎn)。然而,隨著其應(yīng)用的不斷發(fā)展,這種VPN應(yīng)用也出現(xiàn)了一些不足:
??? 首先,SSL VPN提供了端到網(wǎng)絡(luò)邊緣的安全通道,但是在某些情況下,用戶無(wú)法將端到端的加密通道和端到網(wǎng)絡(luò)邊緣的安全接入方案相結(jié)合。
??? 其次,不同的應(yīng)用可能要求不同的傳輸效率和安全性,而目前的SSL VPN提供的是通用安全服務(wù),對(duì)上層數(shù)據(jù)一視同仁,不能對(duì)特殊應(yīng)用進(jìn)行特殊優(yōu)化,例如:當(dāng)用戶進(jìn)行VoIP通信時(shí),多媒體數(shù)據(jù)在要求安全性的同時(shí),對(duì)實(shí)時(shí)性要求也較高。
??? 在下面的遠(yuǎn)程接入例子中,SSL VPN對(duì)點(diǎn)對(duì)點(diǎn)的多媒體通信支持較差的特點(diǎn)就表現(xiàn)出來(lái)了。
??? 圖2所示是一個(gè)典型的SSL VPN的應(yīng)用場(chǎng)景。用戶UserA、UserB和UserC通過VPN 網(wǎng)關(guān)(Gate1、Gate2和Gate3)建立SSL VPN遠(yuǎn)程連接到自己的Intranet(即圖中的粗線部分),而圖中兩個(gè)Intranet具有互聯(lián)互通的關(guān)系(可設(shè)想為跨國(guó)公司在不同地域的分公司)。
?
??? 在這個(gè)場(chǎng)景中,假設(shè)UserA要和UserC進(jìn)行VoIP通話,這時(shí)雙方的數(shù)據(jù)通路是從UserA加密,再到Gate1解密,再明文經(jīng)過Intranet傳輸(兩個(gè)Intranet之間可能是專線或IPSec VPN),之后再到Gate3被加密,最后到UserC被解密,反之亦然。可以看出,在這個(gè)場(chǎng)景中,多媒體數(shù)據(jù)沒有端到端的安全保障,卻進(jìn)行了多次不必要的加解密操作,從而降低了數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。如果用戶有端到端的安全需求,還需要在SSL VPN之上,額外建立安全通道,造成安全通道的嵌套,而單獨(dú)的端到端安全通道又無(wú)法完成經(jīng)過Intranet的路由和服務(wù)查詢等功能。如果UserB也參與通信,計(jì)算能力較低的手持終端和帶寬較窄的無(wú)線網(wǎng)絡(luò)將使得問題更加嚴(yán)重。
??? 因此,為了更好地支持VoIP等點(diǎn)對(duì)點(diǎn)多媒體通信,需要對(duì)SSL VPN的數(shù)據(jù)傳輸機(jī)制和記錄層協(xié)議(數(shù)據(jù)格式和處理流程)進(jìn)行改進(jìn)。
3 SSL記錄層協(xié)議和數(shù)據(jù)處理流程的改進(jìn)
??? 選擇SSL記錄層協(xié)議進(jìn)行改進(jìn)主要是由于SSL協(xié)議處在傳輸層,因此具有支持對(duì)上層應(yīng)用進(jìn)行識(shí)別和分析的可能性。而且SSL記錄層協(xié)議中規(guī)定的記錄頭結(jié)構(gòu),也可以在VPN應(yīng)用中進(jìn)行有效的利用。
??? 通過對(duì)SSL協(xié)議和VPN應(yīng)用場(chǎng)景的分析,可以進(jìn)行如下改進(jìn)策略:(1)改進(jìn)記錄頭結(jié)構(gòu),加入上層應(yīng)用的相關(guān)信息,例如:可以將應(yīng)用程序在客戶端VPN服務(wù)中進(jìn)行注冊(cè),當(dāng)不同的應(yīng)用調(diào)用VPN服務(wù)時(shí),可為數(shù)據(jù)打上不同的記錄頭。(2)對(duì)于端到端加密的數(shù)據(jù),VPN網(wǎng)關(guān)進(jìn)行識(shí)別并將數(shù)據(jù)直接轉(zhuǎn)發(fā)到目的地址,從而做到數(shù)據(jù)在原客戶端加密而在目的客戶端解密。即對(duì)SSL記錄頭格式和VPN數(shù)據(jù)的處理流程進(jìn)行改進(jìn)。
3.1 記錄頭格式的改進(jìn)
??? 首先,將SSL的記錄頭加在客戶端虛擬網(wǎng)卡的加密IP包之后;然后,對(duì)SSL記錄頭數(shù)據(jù)結(jié)構(gòu)中的內(nèi)容作適當(dāng)刪減,以減少數(shù)據(jù)冗余,并加入路由等需要的信息,修改后的記錄頭具有如下結(jié)構(gòu):
??? 記錄頭結(jié)構(gòu)(精簡(jiǎn)后):
???????? Struct{
?????????? ProtocolVersion version;? ?//協(xié)議信息
?????????? VPNStruct vpn;???//VPN處理信息
???????? }RecordHeader;
??? 加入VPN路由信息結(jié)構(gòu):
?????? Struct{
???????? Uint16 SourceIP;?????? //源“虛擬”IP地址
???????? Uint16 Destination IP;????? //目標(biāo)IP地址
???????? Uint16 SoucePort;?????? //源“虛擬”端口
???????? Uint16 Desination Port;????? //目的端口
???????? ApplicaitonInfomation appinfo;? //應(yīng)用信息
??? } VPNStruct
??? 其中,應(yīng)用信息ApplicaitonInfomation為如下枚舉類型:
??? Enum{
?????? Default(0);??? ?//默認(rèn)類型
?????? VPNtype(1);?? //普通VPN類型
?????? P2Ptype(2);??? //多媒體通信、點(diǎn)對(duì)點(diǎn)類型
?????? (255);??//保留
??? } ApplicaitonInfomation
??? VPNStruct記錄了數(shù)據(jù)的地址信息,并且在appinfo字段表明了承載的應(yīng)用類型,指示沿途的出入網(wǎng)關(guān)應(yīng)當(dāng)采取的不同處理方式。
3.2 VPN數(shù)據(jù)處理流程的改進(jìn)
??? 記錄頭的改進(jìn),使系統(tǒng)對(duì)于數(shù)據(jù)的處理可以根據(jù)應(yīng)用數(shù)據(jù)的不同而有所區(qū)別:客戶端虛擬設(shè)備會(huì)在加密完虛擬IP包后,加入明文記錄頭。當(dāng)進(jìn)行正常通信時(shí),VPN網(wǎng)關(guān)得到數(shù)據(jù)包后,根據(jù)appinfo字段提示,會(huì)選擇將數(shù)據(jù)解密并正常轉(zhuǎn)發(fā),反之亦然。
??? 而進(jìn)行多媒體通信時(shí),客戶端之間首先進(jìn)行端對(duì)端的握手流程。會(huì)話密鑰商定后,數(shù)據(jù)發(fā)送方的虛擬設(shè)備將數(shù)據(jù)加密(采用端到端的會(huì)話密鑰),加入明文記錄頭,以對(duì)此數(shù)據(jù)流性質(zhì)進(jìn)行描述。當(dāng)VPN網(wǎng)關(guān)獲得虛擬IP包時(shí),可以通過明文記錄頭對(duì)數(shù)據(jù)進(jìn)行識(shí)別。當(dāng)發(fā)現(xiàn)數(shù)據(jù)類型為端到端加密類型(P2Ptype)時(shí),VPN網(wǎng)關(guān)將數(shù)據(jù)打入TCP/IP協(xié)議棧、按P2Ptype中的源地址、目的地址進(jìn)行重新封裝和轉(zhuǎn)發(fā),整體流程如圖3所示。
?
??? VPN對(duì)數(shù)據(jù)的處理和原有流程的區(qū)別在于:(1)入口VPN(圖2中的Gate 1)并不將虛擬IP包解密、轉(zhuǎn)發(fā),而是將其和記錄頭作為應(yīng)用負(fù)載進(jìn)行封裝后轉(zhuǎn)發(fā)。(2)出口VPN(圖2中的Gate 2),并不對(duì)數(shù)據(jù)進(jìn)行再加密,而只是封裝轉(zhuǎn)發(fā)。(3)在軟件實(shí)現(xiàn)上,如果內(nèi)網(wǎng)用戶希望得到端到端的安全通道,也必須采用虛擬設(shè)備機(jī)制,處理機(jī)制和上述過程相同。
3.3 改進(jìn)性能分析
?? ?在安全性方面,改進(jìn)后的應(yīng)用架構(gòu)兼顧了SSLVPN在遠(yuǎn)程接入功能上的靈活性和安全性,并且提供了更加高效的端對(duì)端安全服務(wù),既可以支持正常的VPN應(yīng)用,也可以更好地支持端到端的多媒體通信應(yīng)用。此外,由于專門的端對(duì)端安全協(xié)議無(wú)法提供遠(yuǎn)程接入功能,因此,當(dāng)多媒體通信的服務(wù)器(如SIP注冊(cè)服務(wù)器等)架設(shè)在內(nèi)網(wǎng)時(shí),將無(wú)法提供用戶的安全注冊(cè)、查詢功能,而本文方案則可以提供安全的注冊(cè)、查詢服務(wù)。
??? 在傳輸處理效率上,改進(jìn)方案減少了不必要的數(shù)據(jù)加解密開銷,減輕了網(wǎng)關(guān)服務(wù)器負(fù)擔(dān),也減少了數(shù)據(jù)處理的時(shí)間。本文方案增加了對(duì)記錄頭的識(shí)別和對(duì)網(wǎng)關(guān)進(jìn)行TCP/IP協(xié)議再封裝過程,但這些流程都是線形的讀寫操作,與對(duì)稱加解密流程的數(shù)據(jù)置換、疊加等處理相比要簡(jiǎn)單得多,因此開銷也小得多。此外,系統(tǒng)還支持對(duì)多媒體數(shù)據(jù)采用單獨(dú)加密算法的特性,例如對(duì)于普通數(shù)據(jù)進(jìn)行3DES加密,對(duì)多媒體數(shù)據(jù)采用更快速的RC4加密。這樣使得系統(tǒng)對(duì)多媒體數(shù)據(jù)的傳輸、處理效率更高。
??? 在對(duì)現(xiàn)有軟硬件環(huán)境的兼容上,改進(jìn)方案保持了SSL VPN的優(yōu)勢(shì):兼容性好、實(shí)現(xiàn)簡(jiǎn)單。首先不需要對(duì)應(yīng)用程序、TCP/IP協(xié)議棧和硬件設(shè)備做任何改動(dòng),改動(dòng)僅局限在SSL控制邏輯和虛擬設(shè)備驅(qū)動(dòng)程序上;其次,本文方案可部署在現(xiàn)有絕大多數(shù)的網(wǎng)絡(luò)當(dāng)中,只要開放相應(yīng)的防火墻端口即可實(shí)現(xiàn)全部應(yīng)用。
??? 綜上所述,本文結(jié)合基于虛擬設(shè)備實(shí)現(xiàn)的SSL VPN應(yīng)用的具體特點(diǎn),通過對(duì)SSL記錄頭結(jié)構(gòu)和VPN數(shù)據(jù)處理流程的改進(jìn),可以在保持SSL VPN安全性好、輕量級(jí)、兼容性好等傳統(tǒng)優(yōu)勢(shì)的前提下,進(jìn)一步提高SSL VPN的應(yīng)用范圍和靈活性,特別是對(duì)多媒體通信的安全性和實(shí)時(shí)性具有更好的支持。
參考文獻(xiàn)
[1] ?RFC2246: The TLS protocol version 1.0[s]. IETF,1999.
[2] ?RESCORLA E. SSL與TLS.北京:中國(guó)電力出版社,2002.
[3] ?蔣勵(lì),張新.支持多媒體業(yè)務(wù)的VPN網(wǎng)絡(luò)[J]. 西安郵電學(xué)院學(xué)報(bào), 2002,7(1).
[4] ?韓衛(wèi),薛健,白靈. 一種基于安全隧道技術(shù)的SSL VPN及其性能分析. 科學(xué)技術(shù)與工程[J], 2005,5(12).
[5] ?易光華,傅光軒,胡艷. 一種基于SSL的VPN的研究與實(shí)現(xiàn)[J]. 貴州大學(xué)學(xué)報(bào):自然科學(xué)版,2006,23(2).
[6] ?陳愛和,徐敬東, 劉曉欣,等.支持多路負(fù)載平衡的SSL VPN系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2006,27(21).