目錄
1. IPsec概述
2. 安全體系
2.1 Authentication Header(AH)
2.2 Encapsulating Security Payload(ESP)
2.3 Security association(SA)
3. 運(yùn)行模式
3.1 傳輸模式
3.2 隧道模式
4 Security Association(SA)
4.1 SA概述
4.2 SA管理
4.3 IKE
4.4 IPsec與IKE
參考資料
IPsec(Internet Protocol Security)是網(wǎng)絡(luò)安全協(xié)議,運(yùn)行在OSI模型的第三層(Internet Protocol,IP層),在VPN(virtual private networks)應(yīng)用很廣泛。
IPsec出現(xiàn)的原因是普通的IP層的報文并沒有加密,存在安全上的隱患,所以在上世紀(jì)90年代提出了IPsec協(xié)議。
IPsec在IP層對報文提供安全服務(wù)。IPsec協(xié)議本身定義了如何在IP數(shù)據(jù)包中增加字段來保證IP包的完整性、 私有性和真實(shí)性,以及如何加密數(shù)據(jù)包。使用IPsec,數(shù)據(jù)就可以安全地在公網(wǎng)上傳輸,圖 1是IPsec的一個使用場景:
IPsec協(xié)議及組件功能如圖 2所示:
IPsec提供如下安全服務(wù):
1. 數(shù)據(jù)機(jī)密性(Confidentiality):IPsec發(fā)送方在通過網(wǎng)絡(luò)傳輸包前對包進(jìn)行加密。
2. 數(shù)據(jù)完整性(Data Integrity):IPsec接收方對發(fā)送方發(fā)送來的包進(jìn)行認(rèn)證,以確保數(shù)據(jù)在傳輸過程中沒有被篡改。
3. 數(shù)據(jù)來源認(rèn)證(Data Authentication):IPsec在接收端可以認(rèn)證發(fā)送IPsec報文的發(fā)送端是否合法。
4. 防重放(Anti-Replay):IPsec接收方可檢測并拒絕接收過時或重復(fù)的報文。
IPsec發(fā)包流程如圖 3 所示:
IPsec收包流程如圖 4 所示:
IPsec提供了兩種安全機(jī)制:認(rèn)證和加密。認(rèn)證機(jī)制使IP通信的數(shù)據(jù)接收方能夠確認(rèn)數(shù)據(jù)發(fā)送方的真實(shí)身份以及數(shù)據(jù)在傳輸過程中是否遭篡改。加密機(jī)制通過對數(shù)據(jù)進(jìn)行加密運(yùn)算來保證數(shù)據(jù)的機(jī)密性,以防數(shù)據(jù)在傳輸過程中被竊聽。
IPsec的安全體系由驗(yàn)證頭協(xié)議(Authentication Header ,AH)、安全封裝協(xié)議(Encapsulating Security Payload ,ESP)及安全聯(lián)盟(Security association,SA)三部分組成。
AH(Authentication Header)是認(rèn)證頭協(xié)議(IP協(xié)議號為51),主要提供的功能有數(shù)據(jù)源驗(yàn)證、數(shù)據(jù)完整性校驗(yàn)和防報文重放功能,可選擇的散列算法有MD5(Message Digest ),SHA1(Secure Hash Algorithm)等。AH插到標(biāo)準(zhǔn)IP包頭后面,它保證數(shù)據(jù)包的完整性和真實(shí)性,防止黑客截?cái)鄶?shù)據(jù)包或向網(wǎng)絡(luò)中插入偽造的數(shù)據(jù)包。AH采用了hash算法來對數(shù)據(jù)包進(jìn)行保護(hù)。AH沒有對用戶數(shù)據(jù)進(jìn)行加密。
AH的報文頭格式如圖 5 所示:
其中,SPI(Secure Parameter Index,安全參數(shù)索引),是用于唯一標(biāo)識SA的一個32比特?cái)?shù)值。
當(dāng)使用AH時,IP地址不能被NAT修改,否則hash值無效,進(jìn)而不能滿足數(shù)據(jù)來源確認(rèn)的特性。
ESP(Encapsulating Security Payload)是報文安全封裝協(xié)議(IP協(xié)議號為50),,ESP將需要保護(hù)的用戶數(shù)據(jù)進(jìn)行加密后再封裝到IP包中,驗(yàn)證數(shù)據(jù)的完整性、真實(shí)性和私有性。 可選擇的加密算法有DES,3DES,AES等。
ESP的工作原理是在每一個數(shù)據(jù)包的標(biāo)準(zhǔn)IP包頭后面添加一個ESP報文頭,并在數(shù)據(jù)包后面追加一個ESP尾。與AH協(xié)議不同的是,ESP將需要保護(hù)的用戶數(shù)據(jù)進(jìn)行加密后再封裝到IP包中,以保證數(shù)據(jù)的機(jī)密性。
ESP報文封裝格式如圖 7所示:
ESP各字段含義見圖 8 所示:
IPsec在兩個端點(diǎn)之間提供安全通信,端點(diǎn)被稱為IPsec對等體。
SA是IPsec的基礎(chǔ),也是IPsec的本質(zhì)。IPsec對數(shù)據(jù)流提供的安全服務(wù)通過SA來實(shí)現(xiàn),它包括協(xié)議、算法、密鑰等內(nèi)容,具體確定了如何對IP報文進(jìn)行處理。一個SA就是兩個IPsec系統(tǒng)之間的一個單向邏輯連接,輸入數(shù)據(jù)流和輸出數(shù)據(jù)流由輸入SA與輸出SA分別處理。
SA主要由Internet Key Exchange(IKE及IKEv2)、Kerberized Internet Negotiation of Keys提供密鑰協(xié)商。
IPsec有隧道(tunnel)和傳輸(transport)兩種運(yùn)行模式。運(yùn)行模式和安全體系中的AH及ESP組合形成4種情況:隧道模式+AH,隧道模式+ESP以及傳輸模式+AH,傳輸模式+ESP。
在隧道模式中,用戶的整個IP數(shù)據(jù)包被用來計(jì)算AH或ESP頭, AH或ESP頭和傳輸層數(shù)據(jù)被封裝在一個新的IP數(shù)據(jù)包中;在傳輸方式中,只是傳輸層數(shù)據(jù)被用來計(jì)算AH或ESP頭,AH或ESP頭和傳輸層數(shù)據(jù)被放置在原IP包頭后面。
傳輸模式和隧道模式的區(qū)別:
1. 傳輸模式在AH、ESP處理前后IP頭部保持不變,主要用于End-to-End的應(yīng)用場景(End-to-End(端到端或者PC到PC):兩個PC之間的通信由兩個PC之間的IPsec會話保護(hù),而不是網(wǎng)關(guān))
2. 隧道模式則在AH、ESP處理之后再封裝了一個外網(wǎng)IP頭,主要用于Site-to-Site的應(yīng)用場景(Site-to-Site(站點(diǎn)到站點(diǎn)或者網(wǎng)關(guān)到網(wǎng)關(guān)):如公司的3個機(jī)構(gòu)分布在互聯(lián)網(wǎng)的3個不同的地方,各使用一個商務(wù)領(lǐng)航網(wǎng)關(guān)相互建立VPN隧道,企業(yè)內(nèi)網(wǎng)(若干PC)之間的數(shù)據(jù)通過這些網(wǎng)關(guān)建立的IPsec隧道實(shí)現(xiàn)安全互聯(lián))
傳輸模式中,只有傳輸層數(shù)據(jù)被用來計(jì)算AH或者ESP頭,傳輸模式的數(shù)據(jù)交互過程如圖 9所示:
傳輸模式AH協(xié)議數(shù)據(jù)格式如圖 10所示:
傳輸模式ESP協(xié)議數(shù)據(jù)格式如圖 11所示:
在傳輸模式中,原來的IP頭不變,依然是原來的IP源地址、IP目的地址,變化的部分是原來的IP層負(fù)載。IP層負(fù)載變?yōu)榱薃H頭(ESP頭)及原IP負(fù)載(或加密后的密文)。
注意:AH不提供對IP層負(fù)載的加密,ESP提供對IP層負(fù)載的加密。
在隧道方式中,用戶的整個IP數(shù)據(jù)包被用來計(jì)算AH或ESP頭,且被加密。AH或ESP頭和加密用戶數(shù)據(jù)被封裝在一個新的IP數(shù)據(jù)包中,隧道模式的數(shù)據(jù)交互如圖 12所示:
AH數(shù)據(jù)封裝如圖 13所示
ESP數(shù)據(jù)封裝如圖 14所示:
在隧道模式中,整個IP層數(shù)據(jù)都被改變:包括IP頭部及IP負(fù)載。IP頭部變?yōu)樾碌腎P頭,IP負(fù)載變?yōu)樵璉P包經(jīng)過加密后的密文。
隧道模式隱藏了數(shù)據(jù)包的源地址和最終目的地址。ESP數(shù)據(jù)包進(jìn)行填充,隱藏了數(shù)據(jù)包的真實(shí)大小,進(jìn)而隱藏了其通信特征。
注意:AH不提供對IP層負(fù)載的加密,ESP提供對IP層負(fù)載的加密。
為正確封裝及提取IPsec數(shù)據(jù)包,需要設(shè)計(jì)一套專門的方案,將安全服務(wù)/密鑰與要保護(hù)的通信數(shù)據(jù)聯(lián)系到一起;同時將遠(yuǎn)程通信實(shí)體與要交換密鑰的IPsec數(shù)據(jù)傳輸聯(lián)系到一起,這樣的構(gòu)建方案稱為SA(Security Association,安全聯(lián)盟)。
SA是兩個應(yīng)用IPsec實(shí)體間(主機(jī)、路由器)的一個單向邏輯連接,決定保護(hù)什么、如何保護(hù)以及誰來保護(hù)通信數(shù)據(jù)。它規(guī)定了用來保護(hù)數(shù)據(jù)包安全的IPsec協(xié)議、轉(zhuǎn)換方式、密鑰以及密鑰的有效存在時間等等。SA是單向的,要么對數(shù)據(jù)包進(jìn)行“進(jìn)入”保護(hù),要么進(jìn)行“外出”保護(hù)。具體采用什么方式,要由三方面的因素決定:第一個是安全參數(shù)索引(SPI),該索引存在于IPsec協(xié)議頭內(nèi),見圖 5及圖 7;第二個是IPsec協(xié)議值;第三個是要向其應(yīng)用SA的目標(biāo)地址。通常,SA是以成對的形式存在的,每個朝一個方向,既可人工創(chuàng)建它,亦可采用動態(tài)創(chuàng)建方式。
SA是單向的,在兩個對等體之間的雙向通信,最少需要兩個SA來分別對兩個方向的數(shù)據(jù)流進(jìn)行安全保護(hù)。同時,如果兩個對等體希望同時使用AH和ESP來進(jìn)行安全通信,則每個對等體都會針對每一種協(xié)議來構(gòu)建一個獨(dú)立的SA。
SA由一個三元組(安全參數(shù)索引(SPI)、IP目的地址、安全協(xié)議號(AH或ESP))來唯一標(biāo)識。SA可通過手工配置和自動協(xié)商兩種方式建立:
1. 手工建立SA的方式是指用戶通過在兩端手工設(shè)置一些參數(shù),在兩端參數(shù)匹配和協(xié)商通過后建立SA。
2. 自動協(xié)商方式由IKE生成和維護(hù),通信雙方基于各自的安全策略庫經(jīng)過匹配和協(xié)商,最終建立Security Association而不需要用戶的干預(yù)。
SPI是用于唯一標(biāo)識SA的一個32比特?cái)?shù)值,它在AH和ESP頭中傳輸。在手工配置SA時,需要手工指定SPI的取值。使用IKE協(xié)商產(chǎn)生SA時,SPI將隨機(jī)生成。
1. 基于時間的生存周期,定義了一個SA從建立到失效的時間
2. 基于流量的生存周期,定義了一個SA允許處理的最大流量
生存周期到達(dá)指定的時間或指定的流量,SA就會失效。SA失效前,IKE將為IPsec協(xié)商建立新的SA,這樣,在舊的SA失效前新的SA就已經(jīng)準(zhǔn)備好。在新的SA開始協(xié)商而沒有協(xié)商好之前,繼續(xù)使用舊的SA保護(hù)通信。在新的SA協(xié)商好之后,則立即采用新的SA保護(hù)通信。
SA提供的安全服務(wù)取決于所選的安全協(xié)議(AH或ESP)、SA模式、SA作用的兩端點(diǎn)和安全協(xié)議所要求的服務(wù)。
SA的管理就是創(chuàng)建和刪除,主要分為手工方式和動態(tài)方式。
手工方式下,安全參數(shù)由管理員按安全策略手工指定、手工維護(hù)。但是,手工維護(hù)容易出錯,而且手工建立的SA沒有存活時間的說法,除非再用人工方式將其刪除,否則便會一直存在下去。
若用動態(tài)方式創(chuàng)建,則SA有一個存活時間與其關(guān)聯(lián)在一起。這個存活時間通常是由密鑰管理協(xié)議在IPsec通信雙方之間加以協(xié)商而確立下來的,存活時間非常重要。若超時使用一個密鑰,會為攻擊者侵入系統(tǒng)提供更多的機(jī)會。SA的自動建立和動態(tài)維護(hù)是通過IKE(Internet Key Exchange)進(jìn)行的。如果安全策略要求建立安全、保密的連接,但卻不存在相應(yīng)的SA,IPsec的內(nèi)核則啟動或觸發(fā)IKE協(xié)商。
IKE(Internet Key Exchange),因特網(wǎng)密鑰交換協(xié)議是IPsec的信令協(xié)議,為IPsec提供了自動協(xié)商交換密鑰、建立安全聯(lián)盟的服務(wù),能夠簡化IPsec的使用和管理,大大簡化IPsec的配置和維護(hù)工作。IKE不是在網(wǎng)絡(luò)上直接傳送密鑰,而是通過一系列數(shù)據(jù)的交換,最終計(jì)算出雙方共享的密鑰,并且即使第三者截獲了雙方用于計(jì)算密鑰的所有交換數(shù)據(jù),也不足以計(jì)算出真正的密鑰。IKE具有一套自保護(hù)機(jī)制,可以在不安全的網(wǎng)絡(luò)上安全的分發(fā)密鑰,驗(yàn)證身份,建立IPSEC安全聯(lián)盟。
IKE具有完善的前向安全性(PFS:Perfect Forward Security)特征。前向安全是指一個密鑰被破解,并不影響其他密鑰的安全性,因?yàn)檫@些密鑰間沒有派生關(guān)系。
IKE協(xié)商分為兩個階段,分別稱為階段一和階段二。
階段一:在網(wǎng)絡(luò)上建立IKE SA,為其它協(xié)議的協(xié)商(階段二)提供保護(hù)和快速協(xié)商。通過協(xié)商創(chuàng)建一個通信信道,并對該信道進(jìn)行認(rèn)證,為雙方進(jìn)一步的IKE通信提供機(jī)密性、消息完整性以及消息源認(rèn)證服務(wù)。第一階段有主模式(Main Mode)和野蠻模式(Aggressive Mode)兩種IKE交換方法;
階段二:快速模式,用在第一階段建立的安全隧道為IPsec協(xié)商安全服務(wù),即為IPsec協(xié)商具體的SA,建立用于最終的IP數(shù)據(jù)安全傳輸?shù)腎Psec SA。
主模式
主模式流程如圖 15所示:
IKE協(xié)商過程中包含三對消息:
第一對消息叫SA交換,是協(xié)商確認(rèn)有關(guān)安全策略的過程;
第二對消息叫密鑰交換,交換Diffie-Hellman公共值和輔助數(shù)據(jù)(如:隨機(jī)數(shù)),密鑰在這個階段產(chǎn)生;
最后一對消息是ID信息和驗(yàn)證數(shù)據(jù)交換,進(jìn)行身份驗(yàn)證和對整個SA交換進(jìn)行驗(yàn)證。
第一階段協(xié)商的信息如下:
1、對等體之間采用何種方式做認(rèn)證,是預(yù)共享密鑰還是數(shù)字證書。
2、雙方使用哪種加密算法(DES、3DES)
3、雙方使用哪種HMAC方式,是MD5還是SHA
4、雙方使用哪種Diffie-Hellman密鑰組
5、使用哪種協(xié)商模式(主模式或主動模式)
6、協(xié)商SA的生存期
第二階段協(xié)商信息如下:
1、雙方使用哪種封裝技術(shù),AH還是ESP
2、雙方使用哪種加密算法
3、雙方使用哪種HMAC方式,是MD5還是SHA
4、使用哪種傳輸模式,是隧道模式還是傳輸模式
5、協(xié)商SA的生存期
野蠻模式
野蠻模式(Aggressive Mode)或者叫激進(jìn)模式,流程如 圖16所示:
1. 發(fā)起方協(xié)商的第一條信息就包含身份信息,并且是明文顯示,因此有身份泄露的隱患;
2. 響應(yīng)方根據(jù)發(fā)起方的身份信息進(jìn)行確認(rèn),并使用預(yù)共享密鑰信息計(jì)算hash;
3. 發(fā)起方根據(jù)響應(yīng)方的身份信息也進(jìn)行hash計(jì)算,與響應(yīng)方提供的hash進(jìn)行比較,如果一致則身份確認(rèn)通過,進(jìn)行IKE SA密鑰種子確認(rèn),如果不一致則雙方協(xié)商結(jié)束;
4. IKE SA協(xié)商完畢之后,利用該SA協(xié)商IPsec SA,從第三條報文開始都是加密的,但雙方身份信息都使用明文傳送。
主模式(Main Mode),正常情況下需要6條報文協(xié)商出IKE SA;野蠻模式只需要3條報文就能實(shí)現(xiàn)。
IKE采用DH算法進(jìn)行密鑰的交換和分發(fā),DH算法原理如圖 17所示。Diffie-Hellman算法是一種公共密鑰算法。通信雙方在不傳送密鑰的情況下通過交換一些數(shù)據(jù),計(jì)算出共享的密鑰(PFS特性是由DH算法保障的)。
為什么需要兩個SA,它們之間的關(guān)系是怎樣的?
第一個隧道IKE SA是用于保護(hù)后續(xù)的再次協(xié)商
第二次隧道協(xié)商的參數(shù)是在完全加密的環(huán)境下進(jìn)行的,之后得到的IPsec SA才真正為數(shù)據(jù)做加密
第一階段策略集面向?qū)ο笫堑诙A段的協(xié)商包,第二階段的轉(zhuǎn)換集面向?qū)ο笫亲罱K的數(shù)據(jù)包。
IKE在IPsec中的作用
1. 因?yàn)橛辛薎KE,IPsec很多參數(shù)(如:密鑰)都可以自動建立,降低了手工配置的復(fù)雜度
2. IKE協(xié)議中的DH交換過程,每次的計(jì)算和產(chǎn)生的結(jié)果都是不相關(guān)的。每次SA的建立都運(yùn)行DH交換過程,保證了每個SA所使用的密鑰互不相關(guān)
3. IPsec使用AH或ESP報文頭中的序列號實(shí)現(xiàn)防重放。此序列號是一個32比特的值,此數(shù)溢出后,為實(shí)現(xiàn)防重放,SA需要重新建立,這個過程需要IKE協(xié)議的配合
4. 對安全通信的各方身份的認(rèn)證和管理,將影響到IPsec的部署。IPsec的大規(guī)模使用,必須有CA(Certificate Authority,認(rèn)證中心)或其他集中管理身份數(shù)據(jù)的機(jī)構(gòu)的參與
5. IKE提供端與端之間動態(tài)認(rèn)證
IKE和IPsec的關(guān)系
IKE和IPsec的關(guān)系如圖 18所示:
IKE與IPsec的關(guān)系為:
1. IKE是UDP之上的一個應(yīng)用層協(xié)議,是IPsec的信令協(xié)議
2. IKE為IPsec協(xié)商建立SA,并把建立的參數(shù)及生成的密鑰交給IPsec
3. IPsec使用IKE建立的SA對IP報文加密或認(rèn)證處理
《The TCP/IP guide》