SANGFOR SCSA——虚拟专用网与IPSec解决方案
一、虛擬專用網(wǎng)絡(luò)概述
企業(yè),組織,商業(yè)等對專用網(wǎng)有強(qiáng)大的需求,高性能,高速度和高安全性是專用網(wǎng)明顯的優(yōu)勢。但是物理上架設(shè)專用網(wǎng)價格不菲,架設(shè)實(shí)施難度大,以上兩方面是虛擬專用網(wǎng)絡(luò)需求的最直接的原因。
虛擬專用網(wǎng)virtual private network:指依靠ISP或其他NSP在公用網(wǎng)絡(luò)基礎(chǔ)設(shè)施上構(gòu)建的專用的安全數(shù)據(jù)通信網(wǎng)絡(luò),又因?yàn)椴皇俏锢砩系膶S镁W(wǎng),只是邏輯上的,所以被稱為虛擬專用網(wǎng),核心技術(shù)是隧道。
1、虛擬專用網(wǎng)的分類
(1)按照業(yè)務(wù)類型分類:
①Client-LAN XXX(access XXX)
使用Internet遠(yuǎn)程訪問的虛擬專用網(wǎng),比如出差的員工有遠(yuǎn)程辦公的需求。
②LAN-LAN XXX
為了在不同局域網(wǎng)之間建立安全的數(shù)據(jù)傳輸通道,比如企業(yè)分支之間或與合作伙伴之間進(jìn)行互聯(lián)。
(2)按照網(wǎng)絡(luò)層次分類
應(yīng)用層(SSL XXX)傳輸層(Sangfor XXX)網(wǎng)絡(luò)層(IPSec,GRE等)網(wǎng)絡(luò)接口層(L2F/L2TP,PPTP等)
2、虛擬專用網(wǎng)常用的技術(shù)
(1)隧道技術(shù)
隧道:在公共通信網(wǎng)絡(luò)上構(gòu)建的一條數(shù)據(jù)路徑,可以提供與專用通信線路等同的連接特性。
隧道技術(shù):指在隧道的兩端通過封裝以及解封裝技術(shù)在公網(wǎng)上建立一條數(shù)據(jù)通道,使用這條通道對數(shù)據(jù)報文進(jìn)行傳輸。增加了隧道頭部與新的IP頭部。
常見的隧道技術(shù)有:GRE,L2TP,IPSec,Sangfor,SSL。其中GRE只有簡單的加密;L2TP只有用戶身份認(rèn)證,比如CHAP、PAP,不存在加密和驗(yàn)證;而IPSec,Sangfor,SSL都是既支持身份認(rèn)證,也支持加密和校驗(yàn)。
(2)加解密技術(shù)
主流的加密算法分為兩大類:對稱加密算法,非對稱加密算法(公鑰加密算法)
常見的對稱加密算法:IDEA,DES/3DES,RC,AES等
對稱加密算法的缺陷:密鑰傳輸風(fēng)險,密鑰多,難管理。
非對稱加密算法:加密和解密使用不同的密鑰,分為公鑰加密,私鑰解密,這樣做的好處使得通信雙方無需進(jìn)行密鑰傳輸。
常見的非對稱加密算法:ECC,RSA,Rabin等
對稱加密與非對稱加密的比較:
安全性上面非對稱加密較高,速度上對稱加密較快,適合加密大塊數(shù)據(jù),密鑰數(shù)量上非對稱加密較少。
所以后來人們采取對稱加密算法加密數(shù)據(jù),非對稱加密算法加密對稱加密算法的密鑰。
(3)完整性與身份驗(yàn)證技術(shù)
數(shù)字簽名就是解決了完整性的問題,將原始數(shù)據(jù)通過哈希算法得到信息摘要hash值,再將hash值用自己私鑰進(jìn)行加密,形成數(shù)字簽名發(fā)送給對端,接收端同樣將之前加密的數(shù)據(jù)解密得到原始數(shù)據(jù),進(jìn)程hash運(yùn)算,得到信息摘要,再用公鑰解密接收到的數(shù)字簽名,得到信息摘要,兩者對比即可,判斷數(shù)據(jù)完整性。
HASH算法的特點(diǎn):
不等長輸入,等長輸出;不可逆性;雪崩效應(yīng);使用hash算法的值對同一數(shù)據(jù)是固定的。
但是存在一個問題,公鑰的真實(shí)性怎么得到保障,畢竟公鑰是公開,傳輸過程中,可以被篡改。所以引出CA機(jī)構(gòu)這一概念。接收端使用CA的公鑰解密發(fā)送方發(fā)過來的數(shù)字證書中的簽名,得到摘要信息,然后再對證書進(jìn)行hash運(yùn)算,得到另外一個簽名,也就是摘要信息,對比兩者,如果一致,就說明證書的CA機(jī)構(gòu)頒發(fā)的。
而PKI就是規(guī)定可信的CA以及CA的工作流程。
PKI(公開密鑰體系,Public Key Infrastructure)是一種遵循標(biāo)準(zhǔn)的利用非對稱加密技術(shù)為電子商務(wù)的開展提供一套安全基礎(chǔ)平臺的技術(shù)和規(guī)范。
PKI就是利用公鑰理論和技術(shù)建立的提供安全服務(wù)的基礎(chǔ)設(shè)施。用戶可利用PKI平臺提供的服務(wù)進(jìn)行安全的電子交易、通信和互聯(lián)網(wǎng)上的各種活動。
PKI 技術(shù)采用證書管理公鑰,通過第三方的可信任機(jī)構(gòu)——CA認(rèn)證中心把用戶的公鑰和用戶的其他標(biāo)識信息捆綁在一起放在用戶證書中,在互聯(lián)網(wǎng)上驗(yàn)證用戶的身份。
目前,通用的辦法是采用建立在PKI基礎(chǔ)之上的數(shù)字證書,通過把要傳輸?shù)臄?shù)字信息進(jìn)行加密和簽名,保證信息傳輸?shù)臋C(jī)密性、真實(shí)性、完整性和不可否認(rèn)性,從而保證信息的安全傳輸。
CA中心:即證書授權(quán)中心certificate authority,作為電子商務(wù)部交易中受信任的第三方,具有不可否認(rèn)性。
CA中心的作用:簽發(fā)證書,規(guī)定證書的有效期和通過發(fā)布證書廢除列表CRL確保必要時可以廢除證書,以及對證書和密鑰進(jìn)行管理。為每個使用公鑰的用戶發(fā)放一個數(shù)字證書,數(shù)字證書的作用則是標(biāo)明證書中列出的用戶合法擁有證書中列出的公鑰,使用CA的私鑰對證書進(jìn)行簽名。數(shù)字簽名使得攻擊者不能偽造和篡改證書。
數(shù)字證書是一般包含:
用戶身份信息 用戶公鑰信息 身份驗(yàn)證機(jī)構(gòu)數(shù)字簽名的數(shù)據(jù)
從證書用途來看,數(shù)字證書可分為簽名證書和加密證書。
簽名證書:主要用于對用戶信息進(jìn)行簽名,以保證信息的真實(shí)性和不可否認(rèn)性。
加密證書:主要用于對用戶傳送的信息進(jìn)行加密,以保證信息的機(jī)密性和完整性。
二、IPSec解決方案
1、IPSec協(xié)議族安全框架
IPSec 簡介
IPSec(Internet Protocol Security):是一組基于網(wǎng)絡(luò)層的,應(yīng)用密碼學(xué)的安全通信協(xié)議族。IPSec不是具體指哪個協(xié)議,而是一個開放的協(xié)議族。
IPSec協(xié)議的設(shè)計目標(biāo):是在IPV4和IPV6環(huán)境中為網(wǎng)絡(luò)層流量提供靈活的安全服務(wù)。
IPSec XXX:是基于IPSec協(xié)議族構(gòu)建的在IP層實(shí)現(xiàn)的安全虛擬專用網(wǎng)。通過在數(shù)據(jù)包中插入一個預(yù)定義頭部的方式,來保障OSI上層協(xié)議數(shù)據(jù)的安全,主要用于保護(hù)TCP、UDP、ICMP和隧道的IP數(shù)據(jù)包。
IPSec提供的安全服務(wù):機(jī)密性,完整性,數(shù)據(jù)源認(rèn)證,重傳攻擊保護(hù)(依靠序列號單向遞增),不可否認(rèn)性。
IPSec協(xié)議族安全框架:
IPSec協(xié)議族
2、IPSec工作模式
(1)傳輸模式
傳輸模式transport mode,主要應(yīng)用于主機(jī)和主機(jī)之間的端到端通信的數(shù)據(jù)保護(hù)。封裝方式:不改變原有的IP報頭,在原數(shù)據(jù)報頭后面插入IPSec報頭,將原來的數(shù)據(jù)封裝成被保護(hù)的數(shù)據(jù)。
需要兩臺PC配置公網(wǎng)地址,所以這種模式使用并不多,我們所學(xué)的XXX是站點(diǎn)到站點(diǎn)或出差與總部之間,而這種主機(jī)到主機(jī)不屬于以上兩種。
(2)隧道模式
隧道模式tunnel mode,經(jīng)常用于私網(wǎng)與私網(wǎng)之間通過公網(wǎng)進(jìn)行通信,建立安全XXX隧道。
與傳輸模式不同,在隧道模式下,原始IP分組被封裝成一個新的IP報文,在內(nèi)部報頭以及外部報頭之間插入一個IPSec報頭,原IP地址被當(dāng)作有效載荷的一部分收到IPSec的保護(hù)。另外,通過對數(shù)據(jù)加密,還可以隱藏原數(shù)據(jù)包中的IP地址,這樣更有利于保護(hù)端到端通信中數(shù)據(jù)的安全性。
封裝方式:增加新的IP頭,其后是ipsec報頭,之后再將原來的整個數(shù)據(jù)包封裝。
3、IPSec通信協(xié)議
AH和ESP是IPSec的兩個主要協(xié)議。
認(rèn)證頭(AH , Authentication Header)協(xié)議為IP通信提供數(shù)據(jù)源認(rèn)證、數(shù)據(jù)完整性檢驗(yàn)和防重放保證。
封裝安全載荷(ESP, Encapsulating Security Payload)為IP通信提供完整性檢驗(yàn)、認(rèn)證、加密和防重放保證。
AH和ESP可以單獨(dú)使用,也可以同時使用。 在實(shí)際的組網(wǎng)中,ESP協(xié)議使用較多。IPSec通過AH(Authentication Header)和ESP(Encapsulating Security Payload)這兩個安全協(xié)議來實(shí)現(xiàn)數(shù)據(jù)報文在網(wǎng)絡(luò)上傳輸時的安全性(eg:私有性、完整性、真實(shí)性和防重放等)
(1)AH協(xié)議
AH(authentication header認(rèn)證報頭)
AH提供的安全服務(wù):
①無連接數(shù)據(jù)完整性,通過哈希函數(shù)產(chǎn)生的校驗(yàn)來保證;
②數(shù)據(jù)源認(rèn)證,通過在計算驗(yàn)證碼時加一個共享秘鑰來實(shí)現(xiàn);
③抗重放服務(wù),AH報頭中的序列號可以防止重放攻擊。
AH不提供任何保密性服務(wù),不加密所保護(hù)的數(shù)據(jù)包。不論是傳輸模式,還是隧道模式,AH提供對數(shù)據(jù)包的保護(hù)時,保護(hù)整個IP數(shù)據(jù)包。
AH分配到的協(xié)議號是51。也就是說,使用AH協(xié)議進(jìn)行安全保護(hù)的IPv4數(shù)據(jù)報文的IP頭部中協(xié)議字段將是51,表明IP頭之后是一個AH頭。AH頭比ESP頭簡單得多,因?yàn)樗鼪]有提供機(jī)密性。由于不需要填充和一個填充長度指示器,因此也不存在尾部字段。
下一頭部:8bit,標(biāo)識認(rèn)證頭后面的下一個負(fù)載類型
負(fù)載長度:8bit,表示以3bit為單位的AH頭部長度減2,默認(rèn)為4
保留字段:16bit;
安全參數(shù)索引:32bit,用于表示有相同IP地址和相同安全協(xié)議的不同SA;
序列號:32bit,用于防止重放攻擊,SA建立之初為0;
認(rèn)證數(shù)據(jù):由SA初始化時指定的算法來計算。
<1>AH在傳輸模式下封裝
上面說的認(rèn)證頭的認(rèn)證數(shù)據(jù)就是AH認(rèn)證頭摘要。
<2>AH在隧道模式下封裝
(2)ESP協(xié)議
ESP(encapsulating security payload)封裝安全有效載荷
ESP提供的安全服務(wù):無連接數(shù)據(jù)的完整性,數(shù)據(jù)源認(rèn)證,抗重放服務(wù),數(shù)據(jù)加密,有限的數(shù)據(jù)流保護(hù)。
保密服務(wù)通過使用密碼算法加密 IP 數(shù)據(jù)包的相關(guān)部分來實(shí)現(xiàn)。
數(shù)據(jù)流保密由隧道模式下的保密服務(wù)提供。
ESP通常使用DES、3DES、AES等對稱加密算法實(shí)現(xiàn)數(shù)據(jù)加密,使用MD5或SHA1來實(shí)現(xiàn)數(shù)據(jù)完整性認(rèn)證。
ESP同樣被當(dāng)作一種IP協(xié)議對待,緊貼在ESP頭前的IP頭,以協(xié)議號50標(biāo)志ESP頭,ESP之前的IP頭中的協(xié)議字段將是50,以表明IP頭之后是一個ESP頭。
并且,ESP不僅具備ESP頭,還有一個包含有用信息的ESP尾。
在隧道模式中,ESP保護(hù)整個IP包,整個原始IP包將會以ESP載荷的方式加入新建的數(shù)據(jù)包,同時,系統(tǒng)根據(jù)隧道起點(diǎn)和終點(diǎn)等參數(shù),建立一個隧道IP頭,作為這個數(shù)據(jù)包的新IP頭,ESP頭夾在隧道IP頭和原始IP包之間,并點(diǎn)綴ESP尾。
而ESP提供加密服務(wù),所以原始IP包和ESP尾以密文的形式出現(xiàn)。
ESP在驗(yàn)證過程中,只對ESP頭部、原始數(shù)據(jù)包IP包頭、原始數(shù)據(jù)包數(shù)據(jù)進(jìn)行驗(yàn)證;只對原始的整個數(shù)據(jù)包進(jìn)行加密,而不加密驗(yàn)證數(shù)據(jù)。
認(rèn)證數(shù)據(jù):一個變長字段,也叫Integrity Check Value,由SA初始化時指定的算法來極端。長度=整數(shù)倍32位比特
填充頭部:8比特,給出前面填充字段的長度,置0時表示沒有填充
下一頭部:8比特,標(biāo)識認(rèn)證頭后面的下一個負(fù)載類型
填充字段:8比特,大多數(shù)加密加密算法要求輸入數(shù)據(jù)包含整數(shù)各分組,因此需要填充
負(fù)載數(shù)據(jù):包含由下一頭部字段給出的變長數(shù)據(jù)
序列號:32比特,一個單項遞增的計數(shù)器,用于防止重放攻擊,SA建立之初初始化為0,序列號不允許重復(fù)
SPI:32比特,用于標(biāo)識有相同IP地址和相同安全協(xié)議的不同SA。由SA的創(chuàng)建者定義,只有邏輯意義。
<1>ESP在傳輸模式下封裝
ESP對原始數(shù)據(jù)進(jìn)行加密,但是不會加密IP頭,否則中途轉(zhuǎn)發(fā)路由器怎么查看IP頭,會把加密的數(shù)據(jù)放置IP數(shù)據(jù)段,然后對IPSec頭,也就是這里的ESP頭以及ESP尾和新的IP數(shù)據(jù)段一起進(jìn)行哈希運(yùn)算校驗(yàn)完整性,hash值放在ESP認(rèn)證字段里。ESP尾部的作用無非就是填充的意思,因?yàn)閿?shù)據(jù)加密有最小單位,不足需要填充。
<2>ESP在隧道模式下封裝
AH和ESP對比
協(xié)議號AH為51,ESP為50,都支持?jǐn)?shù)據(jù)完整性校驗(yàn),只是ESP對IP頭不驗(yàn)證,都支持源認(rèn)證,ESP支持?jǐn)?shù)據(jù)加解密,AH不支持,都支持抗重放服務(wù),NAT-T(NAT穿越)AH不支持,ESP支持的。
ESP在隧道模式不驗(yàn)證外部IP頭,因此ESP在隧道模式下可以在NAT環(huán)境中運(yùn)行。
而AH因?yàn)樘峁?shù)據(jù)來源確認(rèn)(源IP地址一旦改變,AH校驗(yàn)失敗),所以無法穿越NAT。
4、IPSsc建立階段
(1)IKE協(xié)商階段
安全聯(lián)盟SA
SA security association是通信對等體間對某些重要的約定,通信的雙方符合SA約定的內(nèi)容,就可以建立SA。
SA由三元組唯一標(biāo)識,包括:安全參數(shù)索引SPI,目的IP地址,安全協(xié)議號。
IPSec是在兩個端點(diǎn)之間提供安全通信,端點(diǎn)被稱為IPSec對等體。IPSec能夠允許系統(tǒng)、網(wǎng)絡(luò)的用戶或管理員控制對等體間安全服務(wù)的粒度。例如,某個組織的安全策略可能規(guī)定來自特定子網(wǎng)的數(shù)據(jù)流應(yīng)同時使用AH和ESP進(jìn)行保護(hù),并使用3DES(Triple Data Encryption Standard)進(jìn)行加密;另一方面,策略可能規(guī)定來自另一個站點(diǎn)的數(shù)據(jù)流只使用ESP保護(hù),并僅使用DES加密。
通過SA(SecurityAssociation),IPSec能夠?qū)Σ煌臄?shù)據(jù)流提供不同級別的安全保護(hù)。安全聯(lián)盟是IPSec的基礎(chǔ),也是IPSec的本質(zhì)。SA是通信對等體間對某些要素的約定,例如,使用哪種安全協(xié)議、協(xié)議的操作模式(傳輸模式和隧道模式)、加密算法(DES和3DES)、特定流中保護(hù)數(shù)據(jù)的共享密鑰以及密鑰的生存周期等。
安全聯(lián)盟是單向的,在兩個對等體之間的雙向通信,最少需要兩個安全聯(lián)盟來分別對兩個方向的數(shù)據(jù)流進(jìn)行安全保護(hù)。入站數(shù)據(jù)流和出站數(shù)據(jù)流分別由入站SA和出站SA進(jìn)行處理。
IPSec設(shè)備會把SA的相關(guān)參數(shù)放入SPD(Security Policy Database)里面,SPD里面存放著“什么數(shù)據(jù)應(yīng)該進(jìn)行怎樣的處理”這樣的消息,在IPSec數(shù)據(jù)包出站和入站的時候會首先從SPD數(shù)據(jù)庫中查找相關(guān)信息并做下一步處理。
IKE產(chǎn)生背景
用IPSec保護(hù)一個IP包之前,必須先建立安全聯(lián)盟(SA)
IPSec的安全聯(lián)盟可以通過手工配置的方式建立。但是當(dāng)網(wǎng)絡(luò)中節(jié)點(diǎn)較多時,手工配置將非常困難,而且難以保證安全性。這時就可以使用IKE(Internet Key Exchange)自動進(jìn)行安全聯(lián)盟建立與密鑰交換的過程。Internet密鑰交換(IKE)就用于動態(tài)建立SA,代表IPSec對SA進(jìn)行協(xié)商。
IKE的用途
在IPSec通信雙方之間,動態(tài)地建立安全關(guān)聯(lián)(SA:Security Association),對SA進(jìn)行管理和維護(hù)。
IKE與AH/ESP之間關(guān)系
IKE是UDP之上的一個應(yīng)用層協(xié)議,是IPSec的信令協(xié)議。IKE為IPSec協(xié)商生成密鑰,供AH/ESP加解密和驗(yàn)證使用。AH協(xié)議和ESP協(xié)議有自己的協(xié)議號,分別是51和50。
IKE的工作過程
第一階段:通信各方彼此間建立了一個已通過身份驗(yàn)證和安全保護(hù)的通道,此階段的交換建立了一個ISAKMP安全聯(lián)盟,即ISAKMP SA(也可稱為IKE SA)。第一階段交換有兩種協(xié)商模式:主模式協(xié)商,野蠻模式協(xié)商。
第二階段:用已經(jīng)建立的安全聯(lián)盟(IKE SA)為IPSec協(xié)商安全服務(wù),即為IPSec協(xié)商具體的安全聯(lián)盟,建立IPSec SA,產(chǎn)生真正可以用來加密數(shù)據(jù)流的密鑰,IPSec SA用于最終的IP數(shù)據(jù)安全傳送。
主模式:默認(rèn)使用IP地址作為身份標(biāo)識,默認(rèn)是傳遞自己的出口地址做身份標(biāo)識, 校驗(yàn)對端的公網(wǎng)IP做對端身份標(biāo)識。(自動生成雙方身份ID)
野蠻模式:可以使用用戶名或IP等作為雙方身份標(biāo)識,即可以手動配置身份ID
IKE階段1協(xié)商過程
DH就是一種非對稱加密算法,之前說了ESP加密數(shù)據(jù)采用的是對稱加密算法,那么共享密鑰的安全性就很重要,DH就解決了這個問題。
(p/g都是質(zhì)數(shù))
第一次交換(消息1和2):策略協(xié)商。
在第1個數(shù)據(jù)包的傳輸過程中,發(fā)送方發(fā)起一個包含cookie (記為:Ci ) 和SA負(fù)載(記為:SAi,攜帶協(xié)商IKE SA的各項參數(shù)(5元組),包括IKE的散列類型如MD5;加密算法如DES、3DES等;認(rèn)證方法如預(yù)共享、數(shù)字簽名、加密臨時值等;DH組;SA存活期)的數(shù)據(jù)包用來協(xié)商參數(shù)。
接收方查看IKE策略消息,在本地尋找與發(fā)送方IP地址匹配的策略,找到后發(fā)回一條消息去響應(yīng)。響應(yīng)者發(fā)送一個cookie (記為:Cr)和SA負(fù)載(記為:SAr,已經(jīng)挑選的安全參數(shù));如果沒有可以挑選的參數(shù),響應(yīng)者會返回一個負(fù)載拒絕。
第二次交換(消息3和4):Diffie-Hellman交換。
執(zhí)行DH交換,發(fā)起者和接收者交換偽隨機(jī)數(shù),如nonce。nonce是計算共享秘密(用來生成加密密鑰和認(rèn)證密鑰)所必需的。該技術(shù)的優(yōu)勢在于,它允許參與者通過無擔(dān)保媒體創(chuàng)建秘密值。也就是非對稱的私鑰雙方都有了,之前也說了真正加密數(shù)據(jù)的是共享秘鑰,需要靠非對稱算法交互使得預(yù)共享密鑰雙方安全學(xué)習(xí)。
第三次交換(消息5和6):對等體驗(yàn)證
ISAKMP/IKE階段1主要任務(wù)就是認(rèn)證,第三次交換即在安全的環(huán)境下進(jìn)行認(rèn)證,前面兩個步驟四個數(shù)據(jù)包的傳輸都是為了第三次交換第5和第6個數(shù)據(jù)包交換的認(rèn)證做鋪墊。第1-2包交換為認(rèn)證準(zhǔn)備好策略(例如:認(rèn)證策略、加密策略和散列函數(shù)等),第3-4包交換為保護(hù)5-6的安全算法提供密鑰資源。
將預(yù)共享密鑰通過偽隨機(jī)函數(shù)得出一個值,再將這個值與非對稱的私鑰再偽隨機(jī)函數(shù)得出三個值,成為SKEYID,為SKEYID_a,SKEYID_e,SKEYID_d
分別是Ike消息完整性驗(yàn)證密鑰,對5/6報文進(jìn)行完整性校驗(yàn);Ike消息加密密鑰,對5/6報文進(jìn)行對稱加密;用于衍生出IPSec報文加密和驗(yàn)證密鑰,最終這個密鑰保證IPSec封裝的數(shù)據(jù)報文的安全性。
前兩個就完成了對等體驗(yàn)證。
P.S.
主模式下IKEv1采用3個步驟6條ISAKMP消息建立IKE SA。下面是以10.0.1.223主動發(fā)起IKE協(xié)商為例的整個數(shù)據(jù)構(gòu)成:
第一個消息由隧道的發(fā)起者發(fā)起,攜帶了如這樣一些參數(shù),如加密機(jī)制-DES,散列機(jī)制-MD5-HMAC,Diffie-Hellman組-2,認(rèn)證機(jī)制-預(yù)共享:
消息2是應(yīng)答方對發(fā)送方信息的應(yīng)答,當(dāng)應(yīng)答方查找SPD查找到發(fā)送方相關(guān)的策略后,將自己的信息同樣發(fā)送給對端,當(dāng)然,應(yīng)答方在發(fā)送傳輸集時將會生成自己Cookie并添加到數(shù)據(jù)包中,數(shù)據(jù)包信息如下:
當(dāng)完成了第一步驟雙方的策略協(xié)商后,則開始進(jìn)行第二步驟DH公共值交換,隨數(shù)據(jù)發(fā)送的還包含輔助隨機(jī)數(shù),用戶生成雙方的加密密鑰。消息3的數(shù)據(jù)包信息如下:
應(yīng)答方同樣將本端的DH公共值和Nonce隨機(jī)數(shù)發(fā)送給對端,通過消息4傳輸:
第五條消息由發(fā)起者向響應(yīng)者發(fā)送,主要是為了驗(yàn)證對端就是自己想要與之通信的對端。這可以通過預(yù)共享、數(shù)字簽名、加密臨時值來實(shí)現(xiàn)。
雙方交換DH公共值后,結(jié)合隨機(jī)數(shù)生成一系列的加密密鑰,用于雙方加密、校驗(yàn),同時生成密鑰后,將公共密鑰和本端身份信息等進(jìn)行hash,hash值傳輸給對端進(jìn)行驗(yàn)證設(shè)備身份。發(fā)送方通過消息5發(fā)送給接收方,可以看到載荷類型為身份驗(yàn)證載荷,所攜帶的信息經(jīng)過加密,無法查看相關(guān)信息。
第六條消息由響應(yīng)者向發(fā)起者發(fā)送,主要目的和第五條一樣。
在這六條消息過后,也就是驗(yàn)證一旦通過,就進(jìn)入了IKE第二階段:快速模式。
野蠻模式IKE交互過程
野蠻模式同樣包含三個步驟,但僅通過三個包進(jìn)行傳輸,其數(shù)據(jù)傳輸如下,從抓包中可以看到野蠻模式標(biāo)識為Aggressive。
野蠻模式下有三個交互包,前兩個數(shù)據(jù)為明文傳輸,僅消息3為加密傳輸。:
1、第一個交互包發(fā)起方建議SA,發(fā)起DH交換
2、第二個交互包接收方接受SA
3、第三個交互包發(fā)起方認(rèn)證接受方
1.第一條消息:發(fā)起者發(fā)送5元組(主模式中介紹的五種參數(shù)),DH公共值(上文中的X、Y或者DH交換中講到的c),輔助隨機(jī)數(shù)nonce(上文中的Ni或Nr)以及身份資料(IDi和IDr,在此處為設(shè)備上配置域名字符串或用戶名字符串,也有可能是IP地址)。響應(yīng)者可以選擇接受或者拒絕該建議。
Diffie-Hellman 公開值、需要的隨機(jī)數(shù)據(jù)和身份信息也在第一條消息中傳送。
2.第二條消息:如果響應(yīng)者接受發(fā)起者的建議,則回應(yīng)一個選定的5元組,DH公共值,輔助隨機(jī)數(shù)nonce,身份材料以及一個“認(rèn)證散列值”。
3.第三條消息:由發(fā)起者發(fā)送一個“認(rèn)證散列值”,該消息被驗(yàn)證,讓應(yīng)答方能夠確定其中的散列值是否與計算得到的散列值相同,進(jìn)而確定消息是否有問題。實(shí)際上,這個消息認(rèn)證發(fā)起者并且證明它是交換的參與者。這個消息使用前兩個消息交換的密鑰信息生成的密鑰進(jìn)行加密。
注意: 包含身份信息的消息未被加密, 所以和主模式不同,野蠻模式不提供身份保護(hù)。
消息1數(shù)據(jù)包中包含了SA載荷,即策略協(xié)商信息;密鑰交換載荷和隨機(jī)數(shù)載荷;身份驗(yàn)證載荷。野蠻模式將主模式中需要進(jìn)行交換的數(shù)據(jù)全部進(jìn)行了發(fā)送:
當(dāng)應(yīng)答方接收到發(fā)起方發(fā)送來的消息1后,通過自身查看SPD是否存在與發(fā)起方身份匹配的相關(guān)策略,若存在,則利用消息1中信息與自身配置進(jìn)行計算,生成身份驗(yàn)證hash值后,將自身配置策略信息和hash值傳送給發(fā)起方。對比消息1和消息2,可以看到消息2中增加了hash載荷。
發(fā)起方接收到應(yīng)答方的策略信息和hash值后,同樣進(jìn)行驗(yàn)證,若匹配,則將自身的hash值用計算出的密鑰加密后,傳輸給應(yīng)答方。從flag中可以看出此時數(shù)據(jù)經(jīng)過了加密。
IKE階段1兩種模式對比:
主模式消息交互為6個,而野蠻模式為3個;
身份ID:主模式使用IP地址作為ID,而野蠻模式可以采用多種形式,比如IP,字符串等;
預(yù)共享密鑰:主模式只能基于IP地址來確定,野蠻模式基于ID信息確認(rèn);
安全性:主模式較高,前4個明文,后兩個密文,野蠻模式只有前兩個明文,最后一個加密但是不會進(jìn)行身份驗(yàn)證;
速度上主模式較慢,野蠻模式快。
雙方協(xié)商IPSec安全參數(shù),稱為變換集transform set,包括:加密算法,hash算法,安全協(xié)議,封裝模式,存活時間。
階段2只有一種信息交換模式——快速模式,它定義了受保護(hù)數(shù)據(jù)連接是如何在兩個IPSEC對等體之間構(gòu)成的。
快速模式有兩個主要的功能:
1.協(xié)商安全參數(shù)來保護(hù)數(shù)據(jù)連接。
2.周期性的對數(shù)據(jù)連接更新密鑰信息。
第二階段的效果為協(xié)商出IPSec 單向SA,為保護(hù)IPsec數(shù)據(jù)流而創(chuàng)建。第二階段整個協(xié)商過程受第一階段ISAKMP/IKE SA保護(hù)。
另外第二階段所有數(shù)據(jù)都經(jīng)過了加密。
(2)數(shù)據(jù)傳輸階段
數(shù)據(jù)傳輸階段是通過AH或者ESP通信協(xié)議進(jìn)行數(shù)據(jù)的傳輸,是建立在網(wǎng)絡(luò)層的。
XXX隧道黑洞
對端的XXX連接已經(jīng)斷開,而我方還處在SA的有效生存時間內(nèi),從而形成了隧道黑洞,本端不停發(fā)送加密后的數(shù)據(jù),但是對端不接收。
DPD解決XXX隧道黑洞
DPD:死亡對等體檢測(Dead Peer Detection),檢查對端的ISAKMP SA是否存在。當(dāng)VPN隧道異常的時候,能檢測到并重新發(fā)起協(xié)商,來維持VPN隧道。
DPD主要是為了防止標(biāo)準(zhǔn)IPSEC出現(xiàn)“隧道黑洞”。
DPD只對第一階段生效,如果第一階段本身已經(jīng)超時斷開,則不會再發(fā)DPD包。
DPD概述
1、 DPD包并不是連續(xù)發(fā)送,而是采用空閑計時器機(jī)制。
2、每接收到一個IPSec加密的包后就重置這個包對應(yīng)IKE SA的空閑定時器;如果空閑定時器計時開始到計時結(jié)束過程都沒有接收到該SA對應(yīng)的加密包,那么下一次有IP包要被這個SA加密發(fā)送或接收到加密包之前就需要使用DPD來檢測對方是否存活。
3、DPD檢測主要靠超時計時器,超時計時器用于判斷是否再次發(fā)起請求,默認(rèn)是發(fā)出5次請求(請求->超時->請求->超時->請求->超時)都沒有收到任何DPD應(yīng)答就會刪除SA。
檢查對端的ISAKMP SA是否存在。兩種工作模式
(1)周期模式:每隔一段時間,向?qū)Χ税l(fā)送DPD包探測對等體是否仍存在,如果收到回復(fù)則證明正常。如果收不到回復(fù),則會每隔2秒發(fā)送一次DPD,如果發(fā)送七次仍收不到回復(fù),則自動清除本地對應(yīng)的ISAKMP SA和IPSEC SA。
(2)按需模式:這是默認(rèn)模式,當(dāng)通過IPSEC VPN發(fā)送出流量而又收不到回程的數(shù)據(jù)時,則發(fā)出DPD探測包,每隔2秒發(fā)送一次,七次都收不到回應(yīng)則清除本地對應(yīng)的ISAKMP SA和IPSEC SA。注意,如果IPSEC通道上如果跑的只有單向的UDP流量,則慎用這個模式,盡管這種情況極少。
五、IPSec XXX應(yīng)用場景
IPSec與NAT技術(shù)的結(jié)合
(1)IPSec和NAT同臺設(shè)備部署,如果NAT在IPSec前處理數(shù)據(jù),干擾IPSec流量,解決方案:私網(wǎng)之間流量不做NAT轉(zhuǎn)換
(2)NAT設(shè)備和ipsec XXX不是同一臺設(shè)備,NAT放置在外網(wǎng)出口,ipsec XXX設(shè)備在內(nèi)網(wǎng),兩者具有沖突性,導(dǎo)致協(xié)商失敗。解決方案:使用野蠻模式。
IKE總結(jié):
SANGFOR的IPSec XXX主模式身份ID是默認(rèn)配置的(IP地址),不能修改,在NAT環(huán)境下會出現(xiàn)協(xié)商問題,所以只能選擇野蠻模式,其他廠商的IPSec XXX主模式身份ID若可以自由配置,在NAT環(huán)境下則可以協(xié)商成功。
NAT下的數(shù)據(jù)傳輸可行性
由于AH會在進(jìn)隧道口的時候,將所有IP包進(jìn)行完整性認(rèn)證,形成AH認(rèn)證頭摘要,所以一旦在進(jìn)入隧道后,經(jīng)過NAT,在接收方計算得到的AH頭部就會和發(fā)送方發(fā)送的AH認(rèn)證頭不一致。導(dǎo)致AH校驗(yàn)失敗,數(shù)據(jù)包被接收方丟棄。
AH協(xié)議是根據(jù)自己的完整性決定丟棄數(shù)據(jù)的。但是在網(wǎng)絡(luò)協(xié)議棧的設(shè)計中,本身也存在校驗(yàn)機(jī)制來檢驗(yàn)數(shù)據(jù)包是否是正確的數(shù)據(jù)包。
TCP/UDP偽首部校驗(yàn)機(jī)制
偽首部是為了增加校驗(yàn)和的檢錯能力,校驗(yàn)12字節(jié)的內(nèi)容,源IP,目的IP共8字節(jié),保留字節(jié)1字節(jié),傳輸層協(xié)議號1字節(jié),TCP/UDP報文長度(報頭+數(shù)據(jù))2字節(jié)。
TCP/UDP偽首部——校驗(yàn)和,一致才會接收。
所以ESP的傳輸模式與NAT不兼容。
所以只有ESP的隧道模式與NAT兼容。
還存在一個問題,在真正數(shù)據(jù)傳輸?shù)臅r候,如果是多XXX IKE協(xié)商,那么由于ESP的隧道模式下知識增加了新的IP頭,但是當(dāng)經(jīng)過防火墻時候,或者說多對一地址轉(zhuǎn)換的時候,ESP新加的并沒有傳輸層的端口號,實(shí)現(xiàn)不了端口復(fù)用。這樣就會導(dǎo)致傳輸?shù)綄Χ说臄?shù)據(jù)無法區(qū)分。
多XXX連接問題總結(jié):
1、隧道協(xié)商過程中,IKE規(guī)定源和目的端口都必須為UDP 500,在多VPN場景下源端口可能會在防火墻設(shè)備NAT后發(fā)生變化,從而導(dǎo)致IKE協(xié)商失敗。
2、數(shù)據(jù)傳輸過程中,由于ESP在工作在網(wǎng)絡(luò)層,沒有傳輸層頭部,從而無法進(jìn)行NAPT端口復(fù)用,導(dǎo)致數(shù)據(jù)傳輸失敗。
NAT-T技術(shù)
NAT-T用來解決標(biāo)準(zhǔn)IPSec XXX只能同時進(jìn)行一個XXX連接的問題,NAT-T允許多個IPSec XXX同時連接,出現(xiàn)了NAT-T的技術(shù)。
(1)NAT-T協(xié)議運(yùn)用在IPSec XXX中,在IKE協(xié)商和XXX連接時,允許源端口為非UDP 500端口,使用目的端口是UDP4500端口。
(2)NAT-T協(xié)議為ESP增加了UDP頭部,從而解決了數(shù)據(jù)傳輸過程經(jīng)過防火墻后無法進(jìn)行端口復(fù)用的問題。
總結(jié)
以上是生活随笔為你收集整理的SANGFOR SCSA——虚拟专用网与IPSec解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英特尔oneAPI---跨架构实现高效率
- 下一篇: 【加密芯片】加密芯片——ATSHA204