1.IPSEC協議簇安全框架
a.IPSec簡介
IPSec(Internet Protocol Security):是一組基于網絡層的,應用密碼學的安全通信協議族。IPSec不是具體指哪個協議,而是一個開放的協議族。
IPSec協議的設計目標:是在IPV4和IPV6環境中為網絡層流量提供靈活的安全服務。
IPSec VPN:是基于IPSec協議族構建的在IP層實現的安全虛擬專用網。通過在數據包中插入一個預定義頭部的方式,來保障OSI上層協議數據的安全,主要用于保護TCP、UDP、ICMP和隧道的IP數據包。
b.IPSec協議族
IPSec VPN體系結構主要由AH、ESP和IKE協議套件組成。 IPSec通過ESP來保障IP數據傳輸過程的機密性,使用AH/ESP提供數據完整性、數據源驗證和抗報文重放功能。
ESP和AH定義了協議和載荷頭的格式及所提供的服務,但卻沒有定義實現以上能力所需具體轉碼方式,轉碼方式包括對數據轉換方式,如算法、密鑰長度等。 為簡化IPSec的使用和管理,IPSec還可以通過IKE進行自動協商交換密鑰、建立和維護安全聯盟的服務。具體如下:
AH協議:AH是報文頭驗證協議,主要提供的功能有數據源驗證、數據完整性校驗和防報文重放功能。然而,AH并不加密所保護的數據報。
ESP協議:ESP是封裝安全載荷協議。它除提供AH協議的所有功能外(但其數據完整性校驗不包括IP頭),還可提供對IP報文的加密功能。
IKE協議:IKE協議用于自動協商AH和ESP所使用的密碼算法。 IKE定義了安全參數如何協商,以及共享密鑰如何建立,但它沒有定義的是協商內容。這方面的定義是由"解釋域(doi)"文檔來進行。
IPSec協議族:
1.IPSec協議定義了兩種通信保護機制:
封裝安全載荷(ESP,Encapsulating Security Payload):ESP機制為通信提供機密性和完整性;
鑒別頭(AH,Authentication Header):AH機制為通信提供完整性保護。
ESP機制和AH機制都能為通信提供抗重放(Anti-replay)攻擊。
2.IPSec協議可以設置成在兩種工作模式下運行:一種是隧道(tunnel)模式,另一種是傳輸(transport)模式。
3.IPSec協議使用IKE協議實現安全協議的自動安全參數協商。IKE協商的安全參數包括加密與鑒別算法、 加密與鑒別密鑰、通信的保護模式(傳輸或隧道模式)、密鑰的生存期等。IKE將這些安全參數構成的集合稱為**安全關聯(SA,security Association)**,還負責這些安全參數的刷新。
4.兩個數據庫:安全策略數據庫SPD,安全關聯數據庫SAD。
5.DOI將所有的IPSec小組的文獻捆綁在一起。它可以被認為是所有IPSec安全參數的主數據庫。
2.IPSEC工作模式
a.傳輸模式(Transport mode)
在傳輸模式下,IPSec協議處理模塊會在IP報頭和高層協議報頭之間插入一個IPSec報頭。
IP報頭與原始IP分組中的IP報頭是一致的,只是IP報文中的協議字段會被改成IPSec協議的協議號(50或者51) ,并重新計算IP報頭校驗和。傳輸模式保護數據包的有效載荷、高層協議,IPSec源端點不會修改IP報頭中目的IP地址,原來的IP地址也會保持明文。
傳輸模式只為高層協議提供安全服務。
主要應用場景:經常用于主機和主機之間端到端通信的數據保護。
封裝方式:不改變原有的IP包頭,在原數據包頭后面插入IPSec包頭,將原來的數據封裝成被保護的數據。
b.隧道模式(Tunnel mode)
傳輸模式不同,在隧道模式下,原始IP分組被封裝成一個新的IP報文,在內部報頭以及外部報頭之間插入一個IPSec報頭,原IP地址被當作有效載荷的一部分受到IPSec的保護。
通過對數據加密,還可以隱藏原數據包中的IP地址,這樣更有利于保護端到端通信中數據的安全性。
封裝方式:增加新的IP(外網IP)頭,其后是ipsec包頭,之后再將原來的整個數據包封裝。
主要應用場景:經常用于私網與私網之間通過公網進行通信,建立安全VPN通道。
3.IPSEC通信協議
a.AH協議
AH分配到的協議號是51。即使用AH協議進行安全保護的IPv4數據報文的IP頭部中協議字段將是51,表明IP頭之后是一個AH頭。AH頭比ESP頭簡單得多,因為它沒有提供機密性。由于不需要填充和一個填充長度指示器,因此也不存在尾部字段。另外,也不需要一個初始化向量。
AH提供的安全服務:
無連接數據完整性:通過哈希函數產生的校驗來保證。
數據源認證:通過在計算驗證碼時加入一個共享秘鑰來實現。
抗重放服務:AH報頭中的序列號可以防止重放攻擊。
AH不提供任何保密性服務:它不加密所保護的數據包。
不論是傳輸模式還是隧道模式下,AH提供對數據包的保護時,它保護的是整個IP數據包(易變的字段除外,如IP頭中的TTL和TOS字段)。
AH頭:
AH在傳輸模式下封裝:
AH在隧道模式下封裝:
b.ESP協議
ESP同樣被當作一種IP協議對待,緊貼在ESP頭前的IP頭,以協議號50標志ESP頭,ESP之前的IP頭中的協議字段將是50,以表明IP頭之后是一個ESP頭,ESP不僅具備ESP頭,還有一個包含有用信息的ESP尾。
在隧道模式中,ESP保護整個IP包,整個原始IP包將會以ESP載荷的方式加入新建的數據包,同時,系統根據隧道起點和終點等參數,建立一個隧道IP頭,作為這個數據包的新IP頭,ESP頭夾在隧道IP頭和原始IP包之間,并點綴ESP尾。
ESP提供加密服務,所以原始IP包和ESP尾以密文的形式出現。
ESP在驗證過程中,只對ESP頭部、原始數據包IP包頭、原始數據包數據進行驗證;只對原始的整個數據包進行加密,而不加密驗證數據。
ESP提供的安全服務:
無連接數據完整性。
數據源認證。
抗重放服務。
數據保密。
有限的數據流保護
保密服務通過使用密碼算法加密IP數據包的相關部分來實現。
數據流保密由隧道模式下的保密服務提供。
ESP通常使用DES、3DES、AES等加密算法實現數據加密,使用MD5或SHA1來實現數據完整性認證。
ESP頭:
ESP在傳輸模式下封裝:
ESP通常使用DES、3DES、AES等加密算法實現數據加密,使用MD5或SHA1來實現數據完整性認證。
ESP同樣被當作一種IP協議對待,緊貼在ESP頭前的IP頭,以協議號50標志ESP頭,并且,ESP不僅具備ESP頭,還有一個包含有用信息的ESP尾。
在隧道模式中,ESP保護整個IP包,整個原始IP包將會以ESP載荷的方式加入新建的數據包,同時,系統根據隧道起點和終點等參數,建立一個隧道IP頭,作為這個數據包的新IP頭,ESP頭夾在隧道IP頭和原始IP包之間,并點綴ESP尾。
ESP提供加密服務,所以原始IP包和ESP尾以密文的形式出現。
ESP在驗證過程中,只對ESP頭部、原始數據包IP包頭、原始數據包數據進行驗證;只對原始的整個數據包進行加密,而不加密驗證數據。
c.AH和ESP對比
ESP在隧道模式不驗證外部IP頭,因此ESP在隧道模式下可以在NAT環境中運行。 ESP在傳輸模式下會驗證外部IP頭部,將導致校驗失敗。
AH因為提供數據來源確認(源IP地址一旦改變,AH校驗失敗),所以無法穿越NAT。
4.IPSEC建立階段
a.IKE協商階段
1.安全聯盟SA(Security Association):是兩個IPSec通信實體之間經協商建立起來的一種共同協定,它規定了通信雙方使用哪種IPSec協議保護數據安全、應用的算法標識、加密和驗證的密鑰取值以及密鑰的生存周期等等安全屬性值。通過使用安全關聯(SA) , IPSec能夠區分對不同的數據流提供的安全服務。
2.IPSec是在兩個端點之間提供安全通信,端點被稱為IPSec對等體。IPSec能夠允許系統、網絡的用戶或管理員控制對等體間安全服務的粒度。通過SA(Security Association),IPSec能夠對不同的數據流提供不同級別的安全保護。
3.安全聯盟是IPSec的基礎,也是IPSec的本質。SA是通信對等體間對某些要素的約定,例如,使用哪種安全協議、協議的操作模式(傳輸模式和隧道模式)、加密算法(DES和3DES)、特定流中保護數據的共享密鑰以及密鑰的生存周期等。
4.安全聯盟是單向的,在兩個對等體之間的雙向通信,最少需要兩個安全聯盟來分別對兩個方向的數據流進行安全保護。入站數據流和出站數據流分別由入站SA和出站SA進行處理。同時,如果希望同時使用AH和ESP來保護對等體間的數據流,則分別需要兩個SA,一個用于AH,另一個用于ESP。
5.安全聯盟由一個三元組來唯一標識,這個三元組包括安全參數索引(SPI, Security Parameter Index)、目的IP地址、安全協議號(AH 或ESP)。SPI 是為唯一標識SA而生成的一個32比特的數值,它在IPSec頭中傳輸。
6.IPSec設備會把SA的相關參數放入**SPD(Security Policy Database)**里面,SPD里面存放著“什么數據應該進行怎樣的處理”這樣的消息,在IPSec數據包出站和入站的時候會首先從SPD數據庫中查找相關信息并做下一步處理。
1.IKE的產生背景
1.用IPSec保護一個IP包之前,必須先建立安全聯盟(SA)。
2.IPSec的安全聯盟可以通過手工配置的方式建立。但是當網絡中節點較多時,手工配置將非常困難,而且難以保證安全性。這時就可以使用**IKE(Internet Key Exchange)**自動進行安全聯盟建立與密鑰交換的過程。Internet密鑰交換(IKE)就用于動態建立SA,代表IPSec對SA進行協商。
2.IKE的用途
1.IKE為IPSec協商生成密鑰,供AH/ESP加解密和驗證使用。
2.在IPSec通信雙方之間,動態地建立安全關聯(SA:Security Association),對SA進行管理和維護。
3.IKE與AH/ESP之間關系
IKE是UDP之上的一個應用層協議,是IPSec的信令協議。IKE為IPSec協商生成密鑰,供AH/ESP加解密和驗證使用。AH協議和ESP協議有自己的協議號,分別是51和50。
4.IKE工作過程
IKE經過兩個階段為IPSec進行密鑰協商并建立安全聯盟:
第一階段交換:通信各方彼此間建立了一個已通過身份驗證和安全保護的通道,此階段的交換建立了一個ISAKMP安全聯盟,即ISAKMP SA(也可稱為IKE SA)。
第一階段交換有兩種協商模式:
主模式協商,一般情況下,IKE的主模式適用于兩設備的公網IP固定、且要實現設備之間點對點的環境。
野蠻模式協商,對于例如ADSL撥號用戶,其獲得的公網IP不是固定的,且可能存在NAT設備的情況下,采用野蠻模式做NAT穿越,同時,由于IP不是固定的,用name作為id-type,總部采用模板的方式接收分支的IPSEC接入。
第二階段交換:用已經建立的安全聯盟(IKE SA)為IPSec協商安全服務,即為IPSec協商具體的安全聯盟,建立IPSec SA,產生真正可以用來加密數據流的密鑰,IPSec SA用于最終的IP數據安全傳送。
5.IKE階段1
IKE階段1協商過程:
IKE階段1–主模式協商:
第一次交換(消息1和2):策略協商。
在第1個數據包的傳輸過程中,發送方發起一個包含cookie (記為:Ci ) 和SA負載(記為:SAi,攜帶協商IKE SA的各項參數(5元組),包括IKE的散列類型如MD5;加密算法如DES、3DES等;認證方法如預共享、數字簽名、加密臨時值等;DH組;SA存活期)的數據包用來協商參數。
接收方查看IKE策略消息,在本地尋找與發送方IP地址匹配的策略,找到后發回一條消息去響應。響應者發送一個cookie (記為:Cr)和SA負載(記為:SAr,已經挑選的安全參數);如果沒有可以挑選的參數,響應者會返回一個負載拒絕。
第二次交換(消息3和4):Diffie-Hellman交換。
執行DH交換,發起者和接收者交換偽隨機數,如nonce。nonce是計算共享秘密(用來生成加密密鑰和認證密鑰)所必需的。該技術的優勢在于,它允許參與者通過無擔保媒體創建秘密值。
第三次交換(消息5和6):對等體驗證。
ISAKMP/IKE階段1主要任務就是認證,第三階段即在安全的環境下進行認證,前面兩個步驟四個數據包的傳輸都是為了第三階段第5和第6個數據包交換的認證做鋪墊。第1-2包交換為認證準備好策略(例如:認證策略、加密策略和散列函數等),第3-4包交換為保護5-6的安全算法提供密鑰資源。
1.第1、2個包里重點在于ISAKMP策略的協商,這些策略直接提供對第二階段的IPSEC SA策略協商的加密保護,這是為后面能在一個安全的環境下協商IPSEC SA策略打下基礎。
2.在3、4個包里,重點在于通過DH算法產生和傳遞進行第一階段認證的密鑰材料,這些材料會讓兩端的VPN設備產生一對相同的密鑰,這個密鑰就是第一階段相互間真實的認證密鑰。
3.在5、6個包里,就用前面產生的認證密鑰進行相互認證,當相互認證通過,那么為第二階段協商IPSEC SA策略的安全通道立即打開,兩端的VPN服務器會用第一階段協商的安全策略對第二階段協商的IPSEC SA策略進行安全加密和認證。
IKE階段1–野蠻模式協商:
野蠻模式IKE交互過程:
野蠻模式同樣包含三個步驟,僅通過三個包進行傳輸,野蠻模式標識為Aggressive。
野蠻模式下有三個交互包:
第一個交互包發起方建議SA,發起DH交換
第二個交互包接收方接受SA
第三個交互包發起方認證接受方
野蠻模式交互過程少,所以在傳輸過程中,其傳輸的數據比較多,并且前兩個數據為明文傳輸,僅消息3為加密傳輸。
1.第一條消息:發起者發送5元組,DH公共值,輔助隨機數nonce以及身份資料(IDi和IDr,在此處為設備上配置域名字符串或用戶名字符串,也有可能是IP地址)。響應者可以選擇接受或者拒絕該建議。Diffie-Hellman 公開值、需要的隨機數據和身份信息也在第一條消息中傳送。
2.第二條消息:如果響應者接受發起者的建議,則回應一個選定的5元組,DH公共值,輔助隨機數nonce,身份材料以及一個“認證散列值”。
3.第三條消息:由發起者發送一個“認證散列值”,該消息被驗證,讓應答方能夠確定其中的散列值是否與計算得到的散列值相同,進而確定消息是否有問題。實際上,這個消息認證發起者并且證明它是交換的參與者。這個消息使用前兩個消息交換的密鑰信息生成的密鑰進行加密。
但是要注意: 包含身份信息的消息未被加密, 所以和主模式不同,野蠻模式不提供身份保護。
IKE階段1兩種模式對比:
6.IKE階段2
IKE階段2協商過程:
與第一階段的過程類似,參與者交換建議,以確定在SA中采用哪些安全參數。
雙方協商IPSec安全參數,稱為變換集transform set,包括:加密算法、Hash算法、安全協議、封裝模式、存活時間。
階段2提案還包括安全協議-封裝安全有效載荷(ESP)或認證頭(AH)以及所選的加密和認證算法。
標準IPSec第二階段:
階段2使用“快速模式”交換??焖倌J接袃蓚€主要的功能:
協商安全參數來保護數據連接。
周期性的對數據連接更新密鑰信息。
第二階段的效果為協商出IPSec 單向SA,為保護IPsec數據流而創建。第二階段整個協商過程受第一階段ISAKMP/IKE SA保護。
快速模式交換通過三條消息建立IPsec SA。
這3個包主要用來協商用于加密用戶數據的安全策略(只有認證和加密方法和對應算法):
前兩條消息協商IPsec SA的各項參數值,并生成IPsec使用的密鑰;第二條消息還為響應方提供在場的證據;第三條消息為發起方提供在場的證據。
當第二階段協商完畢之后,第一階段的策略將暫時不會被使用,直到有新的VPN連接建立時或IPSEC SA加密密鑰超時時,才會用第一階段的策略重新生成并傳遞新的加密數據和認證的密鑰。
b.數據傳輸階段
1.概述
數據傳輸階段是通過AH或者ESP通信協議進行數據的傳輸。 數據傳輸建立在網絡層。
2.VPN隧道黑洞
可能情況:
對端的VPN連接已經斷開而我方還處在SA的有效生存期時間內,從而形成了VPN隧道的黑洞。
另外一端如果之前SA沒有釋放,異常重啟的對端又來連接,是不會接受新的連接協商的。
DPD解決VPN隧道黑洞:
DPD:死亡對等體檢測(Dead Peer Detection),檢查對端的ISAKMP SA是否存在。當VPN隧道異常的時候,能檢測到并重新發起協商,來維持VPN隧道。
DPD只對第一階段生效,如果第一階段本身已經超時斷開,則不會再發DPD包。
DPD包并不是連續發送,而是采用空閑計時器機制。每接收到一個IPSec加密的包后就重置這個包對應IKE SA的空閑定時器;
如果空閑定時器計時開始到計時結束過程都沒有接收到該SA對應的加密包,那么下一次有IP包要被這個SA加密發送或接收到加密包之前就需要使用DPD來檢測對方是否存活。
DPD檢測主要靠超時計時器,超時計時器用于判斷是否再次發起請求,默認是發出5次請求(請求->超時->請求->超時->請求->超時)都沒有收到任何DPD應答就會刪除SA。
檢查對端的ISAKMP SA是否存在兩種工作模式:
1.周期模式:每隔一段時間,向對端發送DPD包探測對等體是否仍存在,如果收到回復則證明正常。如果收不到回復,則會每隔2秒發送一次DPD,如果發送七次仍收不到回復,則自動清除本地對應的ISAKMP SA和IPSEC SA。
2.按需模式:這是默認模式,當通過IPSEC VPN發送出流量而又收不到回程的數據時,則發出DPD探測包,每隔2秒發送一次,七次都收不到回應則清除本地對應的ISAKMP SA和IPSEC SA。注意,如果IPSEC通道上如果跑的只有單向的UDP流量,則慎用這個模式,盡管這種情況極少。
DPD很實用,應該開啟。至于選擇哪個模式,則根據實際需要,周期模式可以相對快地找出問題peer,但較消耗帶寬;按需模式,較節約帶寬,但只有當發出加密包后收不到解密包才會去探測。
審核編輯:劉清
-
IPSec
+關注
關注
0文章
59瀏覽量
22797 -
OSI
+關注
關注
0文章
81瀏覽量
15404 -
UDP協議
+關注
關注
0文章
69瀏覽量
12683 -
TCP通信
+關注
關注
0文章
146瀏覽量
4217
原文標題:什么是IPSec?6000字帶你詳細剖析,很贊!
文章出處:【微信號:ZYNQ,微信公眾號:ZYNQ】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論