- Cisco IPSec VPN實戰(zhàn)指南
- 秦柯
- 5290字
- 2019-11-22 20:30:53
3.3 互聯(lián)網(wǎng)密鑰交換協(xié)議IKE(Internet Key Exchange)
經(jīng)過上文介紹,讀者應該已經(jīng)熟悉了IPSec框架所提供的主要服務(wù),即IPSec VPN需要預先協(xié)商加密協(xié)議、散列函數(shù)、封裝協(xié)議、封裝模式和密鑰有效期等內(nèi)容。具體執(zhí)行協(xié)商任務(wù)的協(xié)議叫做互聯(lián)網(wǎng)密鑰交換協(xié)議IKE。IKE主要完成如下3個方面的任務(wù):
對建立IPSec 的雙方進行認證(需要預先協(xié)商認證方式);
通過密鑰交換,產(chǎn)生用于加密和HMAC 的隨機密鑰;
協(xié)商協(xié)議參數(shù)(加密協(xié)議、散列函數(shù)、封裝協(xié)議、封裝模式和密鑰有效期)。
協(xié)商完成后的結(jié)果就叫做安全關(guān)聯(lián)SA,也可以說IKE建立了安全關(guān)聯(lián)。SA一共有兩種類型,一種叫做IKE SA,另一種叫做IPSec SA。IKE SA 維護了安全防護(加密協(xié)議、散列函數(shù)、認證方式、密鑰有效期等)IKE 協(xié)議的細節(jié)。IPSec SA 則維護了安全防護實際用戶流量(通信點之間流量)的細節(jié)。
IKE由三個協(xié)議組成,如圖3-24所示。
圖3-24 IKE的3大組成協(xié)議
SKEME 決定了IKE 的密鑰交換方式,IKE 主要使用DH 來實現(xiàn)密鑰交換。
Oakley決定了IPSec 的框架設(shè)計,讓IPSec 能夠支持更多的協(xié)議。
ISAKMP 是IKE 的本質(zhì)協(xié)議,它決定了IKE 協(xié)商包的封裝格式,交換過程和模式的切換。
3.3.1 IKE 與ISAKMP
ISAKMP是IKE的核心協(xié)議,所以我們經(jīng)常會把IKE與ISAKMP這兩個術(shù)語互換使用。例如,IKE SA 也經(jīng)常被說成ISAKMP SA。在配臵IPSec VPN 的時候,主要的配臵內(nèi)容也是 ISAKMP。另外,SKEME 和 Oakley沒有任何相關(guān)的配臵內(nèi)容,因此很多網(wǎng)絡(luò)技術(shù)人員常常會認為IKE和ISAKMP是相同的概念。如果一定要對IKE和ISAKMP進行區(qū)分的話,那么由于SKEME的存在,因此IKE能夠決定密鑰交換的方式,但是ISAKMP只能夠為密鑰交換來交換數(shù)據(jù)包,但卻不能決定密鑰交換實現(xiàn)的方式。
3.3.2 IKE 的2 個階段與3 個模式
圖3-25是IKE協(xié)商示意圖,從該圖中,我們可以看到IKE協(xié)商分為兩個不同階段:第一階段和第二階段。第一階段協(xié)商分別可以使用6個包交換的主模式或者3個包交換的主動模式來完成,第一階段協(xié)商的主要目的就是對建立IPSec的雙方進行認證,以確保只有合法的對等體(peer)才能夠建立 IPSec VPN。協(xié)商得到的結(jié)果就是IKESA。第二階段總是使用3 個包交換的快速模式來完成,第二階段的主要目的就是根據(jù)需要加密的實際流量(感興趣流),來協(xié)商保護這些流量的策略。協(xié)商的結(jié)果就是IPSec SA。
圖3-25 IKE的2個階段與3個模式
我們對這一過程做一個簡單的比喻:IKE 協(xié)商過程就像兩個公司做生意的過程。兩個公司在具體合作之前需要相互了解,最簡單的方法可能就是核查對方公司的工商牌照、公司營業(yè)和信譽狀況。也很有可能是約一個地點,坐下來面對面地進行介紹和了解。不管怎么樣,目的就是相互進行認證,建立基本的信任關(guān)系。這個過程其實就是IKE第一個階段需要完成的任務(wù)。第一階段完成后,信任關(guān)系建立了,相應的IKESA 也就建立了。緊接著的主要任務(wù)就是基于具體的項目來簽訂合同。對于IPSec VPN而言,具體的項目就是安全保護通信點之間的流量,具體處理這些流量的策略(IPSec SA)就是合同。IKE第二階段的任務(wù)就是基于需要被加密的流量(A到B)協(xié)商相應的IPSec SA。一旦雙方在第一階段建立起了信任關(guān)系,它們就沒有必要重復進行認證了。接下來,雙方的議題就是根據(jù)第一階段建立的IKE SA,給兩個站點之間的很多需要被加密的流量協(xié)商不同的第二階段策略(IPSec SA)。
現(xiàn)在我們回頭說說第一階段的兩種模式。既然第一階段既可以使用主模式,也可以使用主動模式來完成,那么什么情況應該使用主模式,什么情況應該使用主動模式呢?以Cisco 的IPSec VPN 為例,只有在一種情況下,第一階段才會使用3 數(shù)據(jù)個包交換的主動模式來完成,這就是通過預共享密鑰認證的遠程訪問 VPN(Cisco 的技術(shù)名叫做EzVPN),換言之,使用證書認證的EzVPN也是通過6個數(shù)據(jù)包交換的主模式來完成的。主動模式的交換細節(jié)將會在后面 EzVPN 部分進行詳細介紹。現(xiàn)在我們需要重點介紹一下主模式6個數(shù)據(jù)包和快速模式3個數(shù)據(jù)包,這9個數(shù)據(jù)包的交換細節(jié)。
1.主模式IKE 1-2 包交換
圖3-26 所示為主模式IKE1-2 包交換過程。
圖3-26 主模式數(shù)據(jù)包1-2的交換
主模式一共要交換6個ISAKMP數(shù)據(jù)包,這個過程可以分為1-2、3-4和5-6這3次數(shù)據(jù)包交換。圖3-15為主模式數(shù)據(jù)包1-2交換的示意圖。主模式數(shù)據(jù)包1-2交換主要負責完成2個任務(wù):第一是通過核對收到ISAKMP數(shù)據(jù)包的源IP地址,來確認收到的ISAKMP數(shù)據(jù)包是否源自于合法的對等體(peer);第二個任務(wù)就是協(xié)商IKE策略。
我們先來討論一下第一個任務(wù)的操作過程,假設(shè)站點一(互聯(lián)網(wǎng) IP 地址202.100.1.1)和站點二(互聯(lián)網(wǎng)IP 地址61.128.1.1)之間需要建立IPSec VPN,站點一配臵對等體(Peer)為61.128.1.1,站點二配臵對等體(Peer)為202.100.1.1。于是,當站點二收到第一個ISAKMP的數(shù)據(jù)包,它就會查看這個ISAKMP數(shù)據(jù)包的源IP地址,如果這個源IP地址是202.100.1.1,它就接受這個包,反之則終止整個協(xié)商進程,因為站點二并不希望和這個對等體建立IPSec VPN。
由于這個IP地址出現(xiàn)在IP頭部,并不是ISAKMP數(shù)據(jù)的內(nèi)容,所以在圖3-25中并沒有被體現(xiàn)出來。順便再說明一個問題,ISAKMP數(shù)據(jù)包是使用UDP進行傳輸?shù)模炊丝谔柡湍康亩丝谔柖际?00。
在IKE1-2 個包交換的過程中,IKE 策略協(xié)商才是它主要的任務(wù),策略包含如下5項內(nèi)容:
加密策略;
散列函數(shù);
DH 組;
認證方式;
密鑰有效期。
既然叫IKE策略,表示它是對IKE數(shù)據(jù)包進行處理的策略。以加密策略為例,它決定了加密主模式(MM)的5-6個數(shù)據(jù)包和快速模式(QM)的1-3個數(shù)據(jù)包的策略。但是這個策略絕對不是用于加密實際通信點之間流量(Cisco 也將通信點之間的流量稱為感興趣流)的策略。通信的雙方會在第二階段的快速模式中協(xié)商另外一個加密策略,而這個在快速模式中協(xié)商的策略才會用于處理感興趣流。在第一個數(shù)據(jù)包內(nèi),發(fā)起方會把本地配臵的所有策略一起發(fā)送給接收方,由接收方從中挑出一個可以接收的策略。并且通過第二個IKE包回送給發(fā)送方,向發(fā)送方指明它所選擇的那個策略。
圖 3-27 詳細地介紹了接收方選擇策略的順序,接收方首先用本地優(yōu)先的策略(Policy 10)來檢查對方所發(fā)送過來的全部策略。如果不匹配就由下一個優(yōu)先的策略來檢查,直到找到一個匹配的策略為止。很明顯,圖3-26 所示的IKE 1-2 包交換,協(xié)商得到了如下的IKE策略:
加密策略為DES;
散列函數(shù)為MD5;
DH組為1;
認證方式為預共享密鑰;
密鑰有效期為一天。
圖3-27 接收方選擇IKE策略示意圖
有了這些結(jié)果,在交換后續(xù)IKE3-4 和5-6 包時,就可以使用這套策略來處理了。
2.主模式IKE 3-4 包交換
圖3-28 所示為主模式IKE3-4 包交換過程。
圖3-28 主模式IKE 3-4包交換
IKE 1-2 包交換已經(jīng)協(xié)商出了IKE 策略,但是指望使用這些加密策略和散列函數(shù)來保護 IKE 數(shù)據(jù)還缺少一個重要的內(nèi)容——密鑰。加密和 HMAC 都需要密鑰,這個密鑰從何而來?它會從圖3-28所示的DH交換中產(chǎn)生。我們現(xiàn)在就來介紹這個神奇的算法Diffie-Hellman。
圖3-29所示為Diffie-Hellman算法的計算過程。
圖3-29 Diffie-Hellman算法
DH 是一種非對稱密鑰算法,這個算法基于一個知名的單向函數(shù),離散對數(shù)函數(shù)A=g a modp,這個公式中mod 就是求余數(shù)。這個函數(shù)有這么一個特點,在g 和p 都很大的情況下,已知a求A會很快得到結(jié)果(當然是計算機進行計算),但是已知A求a 幾乎無法完成,這就是所有單向函數(shù)的特點,一個方向運算很快很容易,另一個方向幾乎不能完成。
了解了這個特點以后我們來看看DH是如何工作的,發(fā)起方(Alice)首先隨機產(chǎn)生g、p、a。g和p的大小由1-2包交換的DH組大小來決定,DH組1表示為768位長度,DH組2表示為1024位長度,組越大表示DH交換的強度越大。然后發(fā)起方使用離散對數(shù)函數(shù)計算得出A。并且在第3個IKE包中把g、p、A發(fā)送給接收方(Bob)。接收方(Bob)收到后,隨機產(chǎn)生小b,并且使用從第3個IKE包中接收到的g和p,通過離散對數(shù)函數(shù)計算得到B,然后通過第4個IKE包把B回送給發(fā)起方(Alice)。
現(xiàn)在DH 算法的神奇之處就要體現(xiàn)了,接收方(Bob)通過A b mod p 得到的結(jié)果,等于發(fā)起方(Alice)通過B a mod p 計算得到的結(jié)果,也等于g ab mod p。這樣收發(fā)雙方就通過DH 算法得到了一個共享秘密g ab mod p。這個值中間人是無法計算得出的,因為要計算這個值需要至少一方的私有信息(a或者b),但是中間人只是能夠截獲(g、p、A、B),并且不能通過A和B計算得出a和b(離散對數(shù)特點)。有了這個共享秘密g ab mod p 后,我們可以通過一系列的密鑰衍生算法,得到加密和HMAC 處理IKE信息的密鑰。加密感興趣流的密鑰也是從這個共享秘密衍生而來,可以說它是所有密鑰的始祖。
3.主模式數(shù)據(jù)包5-6的交換
圖3-30所示為主模式數(shù)據(jù)包5-6的交換過程。
圖3-30 主模式數(shù)據(jù)包5-6的交換
IKE 第一階段的主要任務(wù)就是認證,IKE 5-6 包交換就是在安全的環(huán)境下進行認證(從IKE 主模式的第5-6 包開始往后,都使用IKE 1-2 包交換所協(xié)商的加密與HMAC算法進行安全保護),圖3-30 所示為IKE 5-6 包交換的示意圖。前面我們學習的IKE 1-2和3-4 包交換,只是在為IKE5-6 包交換的認證做鋪墊。IKE 1-2 包交換為認證準備好策略(例如,認證策略、加密策略和散列函數(shù)等),IKE 3-4 包交換為保護IKE 5-6 包的安全算法提供密鑰資源。
IPSecVPN 的認證方式有3 個,分別是預共享密鑰認證、證書認證和RSA 加密隨機數(shù)認證。本章只重點介紹預共享密鑰認證。預共享密鑰認證顧名思義就是需要在收發(fā)雙方預先配臵一個相同的共享秘密(sharesecret),認證的時候相互交換由這個共享秘密所制造的散列值來實現(xiàn)認證,這個思路和OSPF對路由更新的認證基本一致的。
圖3-31所示為預共享密鑰認證的示意圖。
我們現(xiàn)在通過圖3-31來介紹IKE主模式的第5個數(shù)據(jù)包,即接收方如何使用預共享密鑰這種認證方式來認證發(fā)起方。
步驟1:發(fā)起方根據(jù)接收方IP地址查詢本地IPSec配臵,找到與其對應的預共享秘密。
步驟2:發(fā)起方把預共享秘密(cisco)和IKE策略內(nèi)容、DH計算的密鑰資源、還有其他一些接收雙方都知道的內(nèi)容一起進行散列計算,得到的結(jié)果就是“認證散列值”。
圖3-31 預共享密鑰認證圖示
步驟3:發(fā)起方把“認證散列值”和本地加密點IP地址放入第5個IKE數(shù)據(jù)包中,加密后發(fā)送給接收方。
步驟4:接收方首先對收到的第5個IKE數(shù)據(jù)包進行解密,提取出發(fā)起方的IP地址,并且基于發(fā)起方的IP地址查詢本地IPSec配臵,找出對應的預共享秘密。
步驟 5:接收方把查詢到的共享秘密,和其他雙方已知內(nèi)容一起計算散列值,得到“認證散列值’”。
步驟6:接收方把從第5個IKE數(shù)據(jù)包中提取出來的“認證散列值”和步驟5計算得到的“認證散列值”進行比較,如果相等,接收方就成功認證了發(fā)起方。當然接收方還要通過相同的辦法來發(fā)送第6個IKE數(shù)據(jù)包,讓發(fā)起方認證接收方。
4.第一階段小結(jié)
第一階段的主要任務(wù)就是相互認證。第一階段完成,不僅表示收發(fā)雙方認證通過,并且還會建立一個雙向的 ISAKMP/IKE 安全關(guān)聯(lián)( SA ),這個 SA 維護了處理ISAKMP/IKE流量的相關(guān)策略(注意:這些策略不會處理實際感興趣流),而對等體雙方還會繼續(xù)使用這個SA,來安全保護后續(xù)的IKE 快速模式1-3 包交換。
5.快速模式 數(shù)據(jù)包1-3的交換
圖3-32 快速模式數(shù)據(jù)報1-3的交換
圖3-32所示為IKE快速模式1-3包交換示意圖。在快速模式中,1-3包交換的主要目的就是在安全的環(huán)境下,基于感興趣流協(xié)商處理這個感興趣流的IPSec策略,這些策略包含如下6項內(nèi)容:
感興趣流;
加密策略;
散列函數(shù);
封裝協(xié)議;
封裝模式;
密鑰有效期。
圖3-32為IKE快速模式1-2包交換,接收方策略選擇過程示意圖。
從圖3-33我們可以看到,在IKE快速模式第一個數(shù)據(jù)包中,發(fā)起方會把感興趣流相關(guān)的IPSec策略一起發(fā)送給接收方,并由接收方來選擇適當策略。這個過程與在IKE主模式1-2包交換時,由接收方來選擇策略的工作方式相同。
圖3-33的協(xié)商結(jié)果是感興趣流為A到B,使用ESP進行隧道封裝,使用AES進行加密,使用SHA對數(shù)據(jù)進行HMAC驗證,密鑰有效期為一小時。
策略協(xié)商完畢以后就會產(chǎn)生相應的IPSec SA,我們發(fā)現(xiàn)在IKE 快速模式第2 個和第3個數(shù)據(jù)包中都出現(xiàn)了安全參數(shù)索引(SPI)這個字段,這個字段的作用我們在3.2.3節(jié)中曾經(jīng)進行過介紹。簡單地說,SPI 是一個字串,用于唯一標識一個IPSec SA。還要注意的一點是,第一階段協(xié)商的 IKE SA 是一個雙向的 SA,但是第二階段協(xié)商的IPSec SA 則是一個單向的SA,也就是存在一個IPSec SA 用于保護發(fā)起方到接收方的流量,標識這個IPSec SA 的SPI出現(xiàn)在快速模式的第二個數(shù)據(jù)包中。
圖3-33 在快速模式數(shù)據(jù)包1-2交換過程中,接收方策略選擇過程示意圖
還存在另外一個 IPSec SA 用來保護接收方到發(fā)起方的流量,而標識這個 IPSec SA的SPI出現(xiàn)在快速模式的最后一個數(shù)據(jù)包中。其實我們還可以這樣來看這個問題,那就是目的設(shè)備決定了SPI 值。因為發(fā)起方到接收方IPSec SA 的SPI是由接收方產(chǎn)生,并通過第二個包發(fā)送給發(fā)起方的,因此目的設(shè)備決定了 SPI 的說法就很容易理解了。
說完了SPI字段我們再來看看IKE快速模式1-2包交換中的PFS字段,PFS這個技術(shù),我們也曾在3.2.5 節(jié)中介紹過。Cisco 的IPSecVPN 默認并沒有啟用PFS 這個技術(shù),也就是說加密感興趣流的密鑰,是由主模式IKE 3-4 包的DH 交換所產(chǎn)生的共享密鑰通過衍生得到的。雖然每一個小時都要更新一次密鑰,但下一個小時的密鑰是由當前這個小時的密鑰衍生得來的。因為密鑰之間存在衍生關(guān)系,所以他們不是PFS的密鑰。Cisco 的IPSec VPN 可以通過配臵來啟用PFS 特性,一旦啟用,在IKE 快速模式1-2包交換就會再進行一次DH交換,相互發(fā)送DH計算所需要的公共值和隨機數(shù)。處理感興趣的密鑰就在這次DH交換中產(chǎn)生。每一個小時都會進行一次全新DH交換,以產(chǎn)生下一個小時所使用的密鑰。
6.第二階段小結(jié)
第二階段的主要任務(wù)就基于具體的感興趣流來協(xié)商相應的IPSec SA,IKE 快速模式交換的三個數(shù)據(jù)包都得到了安全保護(加密、完整性校驗和源認證)。另外兩個值得注意的內(nèi)容就是SPI 和PFS。SPI用于唯一標識一個單向的IPSec SA,SPI的值是由目的設(shè)備決定的。Cisco 的IPSec VPN 在默認情況下沒有啟用PFS 技術(shù),設(shè)備管理員可以通過配臵來啟用這項技術(shù),讓每一次密鑰更新之前都進行一次全新的DH交換,產(chǎn)生全新的密鑰。
到此為止,對于IPSec VPN 理論的介紹就要告一段落了。從下一章起,我們將會開始對Cisco IPSec VPN 的配臵方法進行介紹。
- RCNP實驗指南:構(gòu)建高級的路由互聯(lián)網(wǎng)絡(luò)(BARI)
- 面向物聯(lián)網(wǎng)的CC2530與傳感器應用開發(fā)
- C++黑客編程揭秘與防范
- 社交電商運營策略、技巧與實操
- 局域網(wǎng)組建、管理與維護項目教程(Windows Server 2003)
- 正在爆發(fā)的互聯(lián)網(wǎng)革命
- 面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā):基于CC2530和STM32微處理器
- 計算機網(wǎng)絡(luò)與通信(第2版)
- 世界互聯(lián)網(wǎng)發(fā)展報告·2019
- 區(qū)塊鏈輕松上手:原理、源碼、搭建與應用
- CCNP TSHOOT(642-832)認證考試指南
- 物聯(lián)網(wǎng)的機遇與利用
- 移動互聯(lián)網(wǎng)新思維
- 一本書讀懂移動物聯(lián)網(wǎng)
- 走近2050:注意力、互聯(lián)網(wǎng)與人工智能