1. 程式人生 > >Linux核心入門: IPsec相關知識及其定義

Linux核心入門: IPsec相關知識及其定義

struct ip_auth_hdr {
	__u8  nexthdr;
	__u8  hdrlen;		/* This one is measured in 32 bit units! */
	__be16 reserved;
	__be32 spi;
	__be32 seq_no;		/* Sequence number */
	__u8  auth_data[0];	/* Variable len but >=4. Mind the 64 bit alignment! */
};

struct ip_esp_hdr {
	__be32 spi;
	__be32 seq_no;		/* Sequence number */
	__u8  enc_data[0];	/* Variable len but >=8. Mind the 64 bit alignment! */
};

IPsec簡介

IPsec(IP Security)是IETF制定的三層隧道加密協議,它為Internet上傳輸的資料提供了高質量的、可互操作的、基於密碼學的安全保證。特定的通訊方之間在IP層通過加密與資料來源認證等方式,提供了以下的安全服務:

l              資料機密性(Confidentiality):IPsec傳送方在通過網路傳輸包前對包進行加密。

l              資料完整性(Data Integrity):IPsec接收方對傳送方傳送來的包進行認證,以確保資料在傳輸過程中沒有被篡改。

l              資料來源認證(Data Authentication):IPsec在接收端可以認證傳送IPsec報文的傳送端是否合法。

l              防重放(Anti-Replay):IPsec接收方可檢測並拒絕接收過時或重複的報文。

IPsec具有以下優點:

l              支援IKE(Internet Key Exchange,因特網金鑰交換),可實現金鑰的自動協商功能,減少了金鑰協商的開銷。可以通過IKE建立和維護SA的服務,簡化了IPsec的使用和管理。

l              所有使用IP協議進行資料傳輸的應用系統和服務都可以使用IPsec,而不必對這些應用系統和服務本身做任何修改。

l              對資料的加密是以資料包為單位的,而不是以整個資料流為單位,這不僅靈活而且有助於進一步提高IP資料包的安全性,可以有效防範網路攻擊。

IPsec的協議實現

IPsec協議不是一個單獨的協議,它給出了應用於IP層上網路資料安全的一整套體系結構,包括網路認證協議AH(Authentication Header,認證頭)、ESP(Encapsulating Security Payload,封裝安全載荷)、IKE(Internet Key Exchange,因特網金鑰交換)和用於網路認證及加密的一些演算法等。其中,AH協議和ESP協議用於提供安全服務,IKE協議用於金鑰交換。關於IKE的詳細介紹請參見“2 IKE配置”,本節不做介紹。

IPsec提供了兩種安全機制:認證和加密。認證機制使IP通訊的資料接收方能夠確認資料傳送方的真實身份以及資料在傳輸過程中是否遭篡改。加密機制通過對資料進行加密運算來保證資料的機密性,以防資料在傳輸過程中被竊聽。

IPsec協議中的AH協議定義了認證的應用方法,提供資料來源認證和完整性保證;ESP協議定義了加密和可選認證的應用方法,提供資料可靠性保證。

l              AH協議(IP協議號為51)提供資料來源認證、資料完整性校驗和防報文重放功能,它能保護通訊免受篡改,但不能防止竊聽,適合用於傳輸非機密資料。AH的工作原理是在每一個數據包上新增一個身份驗證報文頭,此報文頭插在標準IP包頭後面,對資料提供完整性保護。可選擇的認證演算法有MD5(Message Digest)、SHA-1(Secure Hash Algorithm)等。

l              ESP協議(IP協議號為50)提供加密、資料來源認證、資料完整性校驗和防報文重放功能。ESP的工作原理是在每一個數據包的標準IP包頭後面新增一個ESP報文頭,並在資料包後面追加一個ESP尾。與AH協議不同的是,ESP將需要保護的使用者資料進行加密後再封裝到IP包中,以保證資料的機密性。常見的加密演算法有DES、3DES、AES等。同時,作為可選項,使用者可以選擇MD5、SHA-1演算法保證報文的完整性和真實性。

在實際進行IP通訊時,可以根據實際安全需求同時使用這兩種協議或選擇使用其中的一種。AH和ESP都可以提供認證服務,不過,AH提供的認證服務要強於ESP。同時使用AH和ESP時,裝置支援的AH和ESP聯合使用的方式為:先對報文進行ESP封裝,再對報文進行AH封裝,封裝之後的報文從內到外依次是原始IP報文、ESP頭、AH頭和外部IP頭。

IPsec基本概念

1. 安全聯盟(Security Association,SA)

IPsec在兩個端點之間提供安全通訊,端點被稱為IPsec對等體。

SA是IPsec的基礎,也是IPsec的本質。SA是通訊對等體間對某些要素的約定,例如,使用哪種協議(AH、ESP還是兩者結合使用)、協議的封裝模式(傳輸模式和隧道模式)、加密演算法(DES、3DES和AES)、特定流中保護資料的共享金鑰以及金鑰的生存週期等。建立SA的方式有手工配置和IKE自動協商兩種。

SA是單向的,在兩個對等體之間的雙向通訊,最少需要兩個SA來分別對兩個方向的資料流進行安全保護。同時,如果兩個對等體希望同時使用AH和ESP來進行安全通訊,則每個對等體都會針對每一種協議來構建一個獨立的SA。

SA由一個三元組來唯一標識,這個三元組包括SPI(Security Parameter Index,安全引數索引)、目的IP地址、安全協議號(AH或ESP)。

SPI是用於唯一標識SA的一個32位元數值,它在AH和ESP頭中傳輸。在手工配置SA時,需要手工指定SPI的取值。使用IKE協商產生SA時,SPI將隨機生成。

通過IKE協商建立的SA具有生存週期,手工方式建立的SA永不老化。IKE協商建立的SA的生存週期有兩種定義方式:

l              基於時間的生存週期,定義了一個SA從建立到失效的時間;

l              基於流量的生存週期,定義了一個SA允許處理的最大流量。

生存週期到達指定的時間或指定的流量,SA就會失效。SA失效前,IKE將為IPsec協商建立新的SA,這樣,在舊的SA失效前新的SA就已經準備好。在新的SA開始協商而沒有協商好之前,繼續使用舊的SA保護通訊。在新的SA協商好之後,則立即採用新的SA保護通訊。

2. 封裝模式

IPsec有如下兩種工作模式:

l              隧道(tunnel)模式:使用者的整個IP資料包被用來計算AH或ESP頭,AH或ESP頭以及ESP加密的使用者資料被封裝在一個新的IP資料包中。通常,隧道模式應用在兩個安全閘道器之間的通訊。

l              傳輸(transport)模式:只是傳輸層資料被用來計算AH或ESP頭,AH或ESP頭以及ESP加密的使用者資料被放置在原IP包頭後面。通常,傳輸模式應用在兩臺主機之間的通訊,或一臺主機和一個安全閘道器之間的通訊。

不同的安全協議在tunnel和transport模式下的資料封裝形式如圖1-1所示,data為傳輸層資料。

3. 認證演算法與加密演算法

(1)        認證演算法

認證演算法的實現主要是通過雜湊函式。雜湊函式是一種能夠接受任意長的訊息輸入,併產生固定長度輸出的演算法,該輸出稱為訊息摘要。IPsec對等體計算摘要,如果兩個摘要是相同的,則表示報文是完整未經篡改的。IPsec使用兩種認證演算法:

l              MD5:MD5通過輸入任意長度的訊息,產生128bit的訊息摘要。

l              SHA-1:SHA-1通過輸入長度小於2的64次方bit的訊息,產生160bit的訊息摘要。

MD5演算法的計算速度比SHA-1演算法快,而SHA-1演算法的安全強度比MD5演算法高。

(2)        加密演算法

加密演算法實現主要通過對稱金鑰系統,它使用相同的金鑰對資料進行加密和解密。目前裝置的IPsec實現三種加密演算法:

l              DES(Data Encryption Standard):使用56bit的金鑰對一個64bit的明文塊進行加密。

l              3DES(Triple DES):使用三個56bit的DES金鑰(共168bit金鑰)對明文進行加密。

l              AES(Advanced Encryption Standard):使用128bit、192bit或256bit金鑰長度的AES演算法對明文進行加密。

這三個加密演算法的安全性由高到低依次是:AES、3DES、DES,安全性高的加密演算法實現機制複雜,運算速度慢。對於普通的安全要求,DES演算法就可以滿足需要。

4. 協商方式

有如下兩種協商方式建立SA:

l              手工方式(manual)配置比較複雜,建立SA所需的全部資訊都必須手工配置,而且不支援一些高階特性(例如定時更新金鑰),但優點是可以不依賴IKE而單獨實現IPsec功能。

l              IKE自動協商(isakmp)方式相對比較簡單,只需要配置好IKE協商安全策略的資訊,由IKE自動協商來建立和維護SA。

當與之進行通訊的對等體裝置數量較少時,或是在小型靜態環境中,手工配置SA是可行的。對於中、大型的動態網路環境中,推薦使用IKE協商建立SA。

5. 安全隧道

安全隧道是建立在本端和對端之間可以互通的一個通道,它由一對或多對SA組成。

加密卡

IPsec在裝置上可以通過軟體實現,還可以通過加密卡實現。通過軟體實現,由於複雜的加密/解密、認證演算法會佔用大量的CPU資源,從而影響裝置整體處理效率;而通過加密卡,複雜的演算法處理在硬體上進行,從而提高了裝置的處理效率。

加密卡進行加/解密處理的過程是:裝置將需要加/解密處理的資料發給加密卡,加密卡對資料進行處理,然後加密卡將處理後的資料傳送回裝置,再由裝置進行轉發處理。

IPsec虛擬隧道介面

1. 概述

IPsec虛擬隧道介面是一種支援路由的三層邏輯介面,它可以支援動態路由協議,所有路由到IPsec虛擬隧道介面的報文都將進行IPsec保護,同時還可以支援對組播流量的保護。使用IPsec虛擬隧道介面建立IPsec隧道具有以下優點:

l              簡化配置:通過路由來確定對哪些資料流進行IPsec保護。與通過ACL指定資料流範圍的方式相比,這種方式簡化了使用者在部署IPsec安全策略時配置上的複雜性,使得IPsec的配置不會受到網路規劃的影響,增強了網路規劃的可擴充套件性,降低了網路維護成本。

l              減少開銷:在保護遠端接入使用者流量的組網應用中,在IPsec虛擬隧道介面處進行報文封裝,與IPsec over GRE或者IPsec over L2TP方式的隧道封裝相比,無需額外為入隧道流量加封裝GRE頭或者L2TP頭,減少了報文封裝的層次,節省了頻寬。

l              業務應用更靈活:IPsec虛擬隧道介面在實施過程中明確地區分出“加密前”和“加密後”兩個階段,使用者可以根據不同的組網需求靈活選擇其它業務(例如NAT、QoS)實施的階段。例如,如果使用者希望對IPsec封裝前的報文應用QoS,則可以在IPsec虛擬隧道介面上應用QoS策略;如果希望對IPsec封裝後的報文應用QoS,則可以在物理介面上應用QoS策略。

2. 工作原理

IPsec虛擬隧道介面對報文的加封裝/解封裝發生在隧道介面上。使用者流量到達實施IPsec配置的裝置後,需要IPsec處理的報文會被轉發到IPsec虛擬隧道介面上進行加封裝/解封裝。

如圖1-2所示,IPsec虛擬隧道介面對報文進行加封裝的過程如下:

圖 2 IPsec虛介面隧道加封裝原理圖

(1)        Router將從入介面接收到的IP明文送到轉發模組進行處理;

(2)        轉發模組依據路由查詢結果,將IP明文傳送到IPsec虛擬隧道介面進行加封裝:原始IP報文被封裝在一個新的IP報文中,新IP頭中的源地址和目的地址分別為隧道介面的源地址和目的地址。

(3)        IPsec虛擬隧道介面完成對IP明文的加封裝處理後,將IP密文送到轉發模組進行處理;

(4)        轉發模組進行第二次路由查詢後,將IP密文通過隧道介面的實際物理介面轉發出去。

如圖1-3所示,IPsec虛擬隧道介面對報文進行解封裝的過程如下:

圖 3 IPsec虛介面隧道解封裝原理圖

(1)        Router將從入介面接收到的IP密文送到轉發模組進行處理;

(2)        轉發模組識別到此IP密文的目的地為本裝置的隧道介面地址且IP協議號為AH或ESP時,會將IP密文送到相應的IPsec虛擬隧道介面進行解封裝:將IP密文的外層IP頭去掉,對內層IP報文進行解密處理。

(3)        IPsec虛擬隧道介面完成對IP密文的解封裝處理之後,將IP明文重新送回轉發模組處理;

(4)        轉發模組進行第二次路由查詢後,將IP明文從隧道的實際物理介面轉發出去。

從上面描述的加封裝/解封裝過程可見,IPsec虛擬隧道介面將報文的IPsec處理過程區分為兩個階段:“加密前”和“加密後”。需要應用到加密前的明文上的業務(例如NAT、QoS),可以應用到隧道介面上;需要應用到加密後的密文上的業務,則可以應用到隧道介面對應的物理介面上。

本特性的支援情況與裝置的型號有關,請以裝置的實際情況為準。

使用IPsec保護IPv6路由協議是指,使用AH/ESP協議對IPv6路由協議報文進行加/解封裝處理,併為其提供認證和加密的安全服務,目前支援OSPFv3、IPv6 BGP、RIPng路由協議。

IPsec對IPv6路由協議報文進行保護的處理方式和目前基於介面的IPsec處理方式不同,是基於業務的IPsec,即IPsec保護某一業務的所有報文。該方式下,裝置產生的所有需要IPsec保護的IPv6路由協議報文都要被進行加封裝處理,而裝置接收到的不受IPsec保護的以及解封裝(解密或驗證)失敗的IPv6路由協議報文都要被丟棄。

在基於介面的IPsec處理方式下,裝置對配置了IPsec安全功能的介面上傳送的每個報文都要判斷是否進行IPsec處理。目前,該方式有兩種實現,一種是基於ACL的IPsec,只要到達介面的報文與該介面的IPsec安全策略中的ACL規則匹配,就會受到IPsec保護;另一種是基於路由的IPsec,即IPsec虛擬隧道介面方式,只要被路由到虛擬隧道介面上的報文都會受到IPsec保護。

相對於基於介面的IPsec,基於業務的IPsec既不需要ACL來限定要保護的流的範圍,也不需要指定IPsec隧道的起點與終點,IPsec安全策略僅與具體的業務繫結,不管業務報文從裝置的哪個介面傳送出去都會被IPsec保護。

由於IPsec的金鑰交換機制僅僅適用於兩點之間的通訊保護,在廣播網路一對多的情形下,IPsec無法實現自動交換金鑰,因此必須使用手工配置金鑰的方式。同樣,由於廣播網路一對多的特性,要求各裝置對於接收、傳送的報文均使用相同的SA引數(相同的SPI及金鑰)。因此,目前僅支援手工安全策略生成的SA對IPv6路由協議報文進行保護。

IKE

IKE簡介

在實施IPsec的過程中,可以使用IKE(Internet Key Exchange,因特網金鑰交換)協議來建立SA,該協議建立在由ISAKMP(Internet Security Association and Key Management Protocol,網際網路安全聯盟和金鑰管理協議)定義的框架上。IKE為IPsec提供了自動協商交換金鑰、建立SA的服務,能夠簡化IPsec的使用和管理,大大簡化IPsec的配置和維護工作。

IKE不是在網路上直接傳輸金鑰,而是通過一系列資料的交換,最終計算出雙方共享的金鑰,並且即使第三者截獲了雙方用於計算金鑰的所有交換資料,也不足以計算出真正的金鑰。

IKE的安全機制

IKE具有一套自保護機制,可以在不安全的網路上安全地認證身份、分發金鑰、建立IPsec SA。

1. 資料認證

資料認證有如下兩方面的概念:

l              身份認證:身份認證確認通訊雙方的身份。支援兩種認證方法:預共享金鑰(pre-shared-key)認證和基於PKI的數字簽名(rsa-signature)認證。

l              身份保護:身份資料在金鑰產生之後加密傳送,實現了對身份資料的保護。

2. DH

DH(Diffie-Hellman,交換及金鑰分發)演算法是一種公共金鑰演算法。通訊雙方在不傳輸金鑰的情況下通過交換一些資料,計算出共享的金鑰。即使第三者(如黑客)截獲了雙方用於計算金鑰的所有交換資料,由於其複雜度很高,不足以計算出真正的金鑰。所以,DH交換技術可以保證雙方能夠安全地獲得公有資訊。

3. PFS

PFS(Perfect Forward Secrecy,完善的前向安全性)特性是一種安全特性,指一個金鑰被破解,並不影響其他金鑰的安全性,因為這些金鑰間沒有派生關係。對於IPsec,是通過在IKE階段2協商中增加一次金鑰交換來實現的。PFS特性是由DH演算法保障的。

IKE的交換過程

IKE使用了兩個階段為IPsec進行金鑰協商並建立SA:

(1)        第一階段,通訊各方彼此間建立了一個已通過身份認證和安全保護的通道,即建立一個ISAKMP SA。第一階段有主模式(Main Mode)和野蠻模式(Aggressive Mode)兩種IKE交換方法。

(2)        第二階段,用在第一階段建立的安全隧道為IPsec協商安全服務,即為IPsec協商具體的SA,建立用於最終的IP資料安全傳輸的IPsec SA。

如圖2-1所示,第一階段主模式的IKE協商過程中包含三對訊息:

l              第一對叫SA交換,是協商確認有關安全策略的過程;

l              第二對訊息叫金鑰交換,交換Diffie-Hellman公共值和輔助資料(如:隨機數),金鑰材料在這個階段產生;

l              最後一對訊息是ID資訊和認證資料交換,進行身份認證和對整個第一階段交換內容的認證。

野蠻模式交換與主模式交換的主要差別在於,野蠻模式不提供身份保護,只交換3條訊息。在對身份保護要求不高的場合,使用交換報文較少的野蠻模式可以提高協商的速度;在對身份保護要求較高的場合,則應該使用主模式。

IKE在IPsec中的作用

l              因為有了IKE,IPsec很多引數(如:金鑰)都可以自動建立,降低了手工配置的複雜度。

l              IKE協議中的DH交換過程,每次的計算和產生的結果都是不相關的。每次SA的建立都執行DH交換過程,保證了每個SA所使用的金鑰互不相關。

l              IPsec使用AH或ESP報文頭中的序列號實現防重放。此序列號是一個32位元的值,此數溢位後,為實現防重放,SA需要重新建立,這個過程需要IKE協議的配合。

l              對安全通訊的各方身份的認證和管理,將影響到IPsec的部署。IPsec的大規模使用,必須有CA(Certificate Authority,認證中心)或其他集中管理身份資料的機構的參與。

l              IKE提供端與端之間動態認證。

IPsec與IKE的關係

從圖2-2中我們可以看出IKE和IPsec的關係:

l              IKE是UDP之上的一個應用層協議,是IPsec的信令協議;

l              IKE為IPsec協商建立SA,並把建立的引數及生成的金鑰交給IPsec;

l              IPsec使用IKE建立的SA對IP報文加密或認證處理。

附件下載