IPSec VPN是目前VPN技術(shù)中點(diǎn)擊率非常高的一種技術(shù),同時(shí)提供VPN和信息加密兩項(xiàng)技術(shù),這一期專(zhuān)欄就來(lái)介紹一下IPSec VPN的原理。
IPSec VPN應(yīng)用場(chǎng)景
IPSec VPN的應(yīng)用場(chǎng)景分為3種:
1.
Site-to-Site(站點(diǎn)到站點(diǎn)或者網(wǎng)關(guān)到網(wǎng)關(guān)):如彎曲評(píng)論的3個(gè)機(jī)構(gòu)分布在互聯(lián)網(wǎng)的3個(gè)不同的地方,各使用一個(gè)商務(wù)領(lǐng)航網(wǎng)關(guān)相互建立VPN隧道,企業(yè)內(nèi)網(wǎng)(若干PC)之間的數(shù)據(jù)通過(guò)這些網(wǎng)關(guān)建立的IPSec隧道實(shí)現(xiàn)安全互聯(lián)。
2.
End-to-End(端到端或者PC到PC): 兩個(gè)PC之間的通信由兩個(gè)PC之間的IPSec會(huì)話(huà)保護(hù),而不是網(wǎng)關(guān)。
3.
End-to-Site(端到站點(diǎn)或者PC到網(wǎng)關(guān)):兩個(gè)PC之間的通信由網(wǎng)關(guān)和異地PC之間的IPSec進(jìn)行保護(hù)。
VPN只是IPSec的一種應(yīng)用方式,IPSec其實(shí)是IP Security的簡(jiǎn)稱(chēng),它的目的是為IP提供高安全性特性,VPN則是在實(shí)現(xiàn)這種安全特性的方式下產(chǎn)生的解決方案。IPSec是一個(gè)框架性架構(gòu),具體由兩類(lèi)協(xié)議組成:
1.
AH協(xié)議(Authentication Header,使用較少):可以同時(shí)提供數(shù)據(jù)完整性確認(rèn)、數(shù)據(jù)來(lái)源確認(rèn)、防重放等安全特性;AH常用摘要算法(單向Hash函數(shù))MD5和SHA1實(shí)現(xiàn)該特性。
2.
ESP協(xié)議(Encapsulated Security Payload,使用較廣):可以同時(shí)提供數(shù)據(jù)完整性確認(rèn)、數(shù)據(jù)加密、防重放等安全特性;ESP通常使用DES、3DES、AES等加密算法實(shí)現(xiàn)數(shù)據(jù)加密,使用MD5或SHA1來(lái)實(shí)現(xiàn)數(shù)據(jù)完整性。
為何AH使用較少呢?因?yàn)?span lang="EN-US">AH無(wú)法提供數(shù)據(jù)加密,所有數(shù)據(jù)在傳輸時(shí)以明文傳輸,而ESP提供數(shù)據(jù)加密;其次AH因?yàn)樘峁?shù)據(jù)來(lái)源確認(rèn)(源IP地址一旦改變,AH校驗(yàn)失?。?,所以無(wú)法穿越NAT。當(dāng)然,IPSec在極端的情況下可以同時(shí)使用AH和ESP實(shí)現(xiàn)最完整的安全特性,但是此種方案極其少見(jiàn)。
IPSec封裝模式介紹完IPSec VPN的場(chǎng)景和IPSec協(xié)議組成,再來(lái)看一下IPSec提供的兩種封裝模式(傳輸Transport模式和隧道Tunnel模式)
上圖是傳輸模式的封裝結(jié)構(gòu),再來(lái)對(duì)比一下隧道模式:
可以發(fā)現(xiàn)傳輸模式和隧道模式的區(qū)別:
1.
傳輸模式在AH、ESP處理前后IP頭部保持不變,主要用于End-to-End的應(yīng)用場(chǎng)景。
2.
隧道模式則在AH、ESP處理之后再封裝了一個(gè)外網(wǎng)IP頭,主要用于Site-to-Site的應(yīng)用場(chǎng)景。
從上圖我們還可以驗(yàn)證上一節(jié)所介紹AH和ESP的差別。下圖是對(duì)傳輸模式、隧道模式適用于何種場(chǎng)景的說(shuō)明。
從這張圖的對(duì)比可以看出:
1.
隧道模式可以適用于任何場(chǎng)景
2.
傳輸模式只能適合PC到PC的場(chǎng)景
隧道模式雖然可以適用于任何場(chǎng)景,但是隧道模式需要多一層IP頭(通常為20字節(jié)長(zhǎng)度)開(kāi)銷(xiāo),所以在PC到PC的場(chǎng)景,建議還是使用傳輸模式。
為了使大家有個(gè)更直觀(guān)的了解,我們看看下圖,分析一下為何在Site-to-Site場(chǎng)景中只能使用隧道模式:
如上圖所示,如果發(fā)起方內(nèi)網(wǎng)PC發(fā)往響應(yīng)方內(nèi)網(wǎng)PC的流量滿(mǎn)足網(wǎng)關(guān)的興趣流匹配條件,發(fā)起方使用傳輸模式進(jìn)行封裝:
1.
IPSec會(huì)話(huà)建立在發(fā)起方、響應(yīng)方兩個(gè)網(wǎng)關(guān)之間。
2.
由于使用傳輸模式,所以IP頭部并不會(huì)有任何變化,IP源地址是192.168.1.2,目的地址是10.1.1.2。
3.
這個(gè)數(shù)據(jù)包發(fā)到互聯(lián)網(wǎng)后,其命運(yùn)注定是杯具的,為什么這么講,就因?yàn)槠淠康牡刂肥?span lang="EN-US">10.1.1.2嗎?這并不是根源,根源在于互聯(lián)網(wǎng)并不會(huì)維護(hù)企業(yè)網(wǎng)絡(luò)的路由,所以丟棄的可能性很大。
4.
即使數(shù)據(jù)包沒(méi)有在互聯(lián)網(wǎng)中丟棄,并且幸運(yùn)地抵達(dá)了響應(yīng)方網(wǎng)關(guān),那么我們指望響應(yīng)方網(wǎng)關(guān)進(jìn)行解密工作嗎?憑什么,的確沒(méi)什么好的憑據(jù),數(shù)據(jù)包的目的地址是內(nèi)網(wǎng)PC的10.1.1.2,所以直接轉(zhuǎn)發(fā)了事。
5.
最杯具的是響應(yīng)方內(nèi)網(wǎng)PC收到數(shù)據(jù)包了,因?yàn)闆](méi)有參與IPSec會(huì)話(huà)的協(xié)商會(huì)議,沒(méi)有對(duì)應(yīng)的SA,這個(gè)數(shù)據(jù)包無(wú)法解密,而被丟棄。
我們利用這個(gè)反證法,巧妙地解釋了在Site-to-Site情況下不能使用傳輸模式的原因。并且提出了使用傳輸模式的充要條件:興趣流必須完全在發(fā)起方、響應(yīng)方IP地址范圍內(nèi)的流量。比如在圖中,發(fā)起方IP地址為6.24.1.2,響應(yīng)方IP地址為2.17.1.2,那么興趣流可以是源6.24.1.2/32、目的是2.17.1.2/32,協(xié)議可以是任意的,倘若數(shù)據(jù)包的源、目的IP地址稍有不同,對(duì)不起,請(qǐng)使用隧道模式。
IPSec協(xié)商
IPSec除了一些協(xié)議原理外,我們更關(guān)注的是協(xié)議中涉及到方案制定的內(nèi)容:
1.
興趣流:IPSec是需要消耗資源的保護(hù)措施,并非所有流量都需要IPSec進(jìn)行處理,而需要IPSec進(jìn)行保護(hù)的流量就稱(chēng)為興趣流,最后協(xié)商出來(lái)的興趣流是由發(fā)起方和響應(yīng)方所指定興趣流的交集,如發(fā)起方指定興趣流為192.168.1.0/24à10.0.0.0/8,而響應(yīng)方的興趣流為10.0.0.0/8à192.168.0.0/16,那么其交集是192.168.1.0/24à10.0.0.0/8,這就是最后會(huì)被IPSec所保護(hù)的興趣流。
2.
發(fā)起方:Initiator,IPSec會(huì)話(huà)協(xié)商的觸發(fā)方,IPSec會(huì)話(huà)通常是由指定興趣流觸發(fā)協(xié)商,觸發(fā)的過(guò)程通常是將數(shù)據(jù)包中的源、目的地址、協(xié)議以及源、目的端口號(hào)與提前指定的IPSec興趣流匹配模板如ACL進(jìn)行匹配,如果匹配成功則屬于指定興趣流。指定興趣流只是用于觸發(fā)協(xié)商,至于是否會(huì)被IPSec保護(hù)要看是否匹配協(xié)商興趣流,但是在通常實(shí)施方案過(guò)程中,通常會(huì)設(shè)計(jì)成發(fā)起方指定興趣流屬于協(xié)商興趣流。
3.
響應(yīng)方:Responder,IPSec會(huì)話(huà)協(xié)商的接收方,響應(yīng)方是被動(dòng)協(xié)商,響應(yīng)方可以指定興趣流,也可以不指定(完全由發(fā)起方指定)。
4.
發(fā)起方和響應(yīng)方協(xié)商的內(nèi)容主要包括:雙方身份的確認(rèn)和密鑰種子刷新周期、AH/ESP的組合方式及各自使用的算法,還包括興趣流、封裝模式等。
5.
SA:發(fā)起方、響應(yīng)方協(xié)商的結(jié)果就是曝光率很高的SA,SA通常是包括密鑰及密鑰生存期、算法、封裝模式、發(fā)起方、響應(yīng)方地址、興趣流等內(nèi)容。
我們以最常見(jiàn)的IPSec隧道模式為例,解釋一下IPSec的協(xié)商過(guò)程:
上圖描述了由興趣流觸發(fā)的IPSec協(xié)商流程,原生IPSec并無(wú)身份確認(rèn)等協(xié)商過(guò)程,在方案上存在諸多缺陷,如無(wú)法支持發(fā)起方地址動(dòng)態(tài)變化情況下的身份確認(rèn)、密鑰動(dòng)態(tài)更新等。伴隨IPSec出現(xiàn)的IKE(Internet Key Exchange)協(xié)議專(zhuān)門(mén)用來(lái)彌補(bǔ)這些不足:
1.
發(fā)起方定義的興趣流是源192.168.1.0/24目的10.0.0.0/8,所以在接口發(fā)送發(fā)起方內(nèi)網(wǎng)PC發(fā)給響應(yīng)方內(nèi)網(wǎng)PC的數(shù)據(jù)包,能夠得以匹配。
2.
滿(mǎn)足興趣流條件,在轉(zhuǎn)發(fā)接口上檢查SA不存在、過(guò)期或不可用,都會(huì)進(jìn)行協(xié)商,否則使用當(dāng)前SA對(duì)數(shù)據(jù)包進(jìn)行處理。
3.
協(xié)商的過(guò)程通常分為兩個(gè)階段,第一階段是為第二階段服務(wù),第二階段是真正的為興趣流服務(wù)的SA,兩個(gè)階段協(xié)商的側(cè)重有所不同,第一階段主要確認(rèn)雙方身份的正確性,第二階段則是為興趣流創(chuàng)建一個(gè)指定的安全套件,其最顯著的結(jié)果就是第二階段中的興趣流在會(huì)話(huà)中是密文。
IPSec中安全性還體現(xiàn)在第二階段SA永遠(yuǎn)是單向的:
從上圖可以發(fā)現(xiàn),在協(xié)商第二階段SA時(shí),SA是分方向性的,發(fā)起方到響應(yīng)方所用SA和響應(yīng)放到發(fā)起方SA是單獨(dú)協(xié)商的,這樣做的好處在于即使某個(gè)方向的SA被破解并不會(huì)波及到另一個(gè)方向的SA。這種設(shè)計(jì)類(lèi)似于雙向車(chē)道設(shè)計(jì)。
IPSec雖然只是5個(gè)字母的排列組合,但其所涉及的協(xié)議功能眾多、方案又極其靈活,本期主要介紹IPSec的基本原理,在后續(xù)專(zhuān)欄還會(huì)繼續(xù)介紹IPSec的其它方面知識(shí)。