來自:https://zhuanlan.zhihu.com/p/50502778
網絡安全之IPSec vpn詳解
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IPSec靜態隧道工作原理
IPSec VPN分為兩個協商階段,ISAKMP階段及IPSec階段,ISAKMP階段主要是協商兩端的保護策略,驗證對等體的合法性,產生加密密鑰,保護第二階段IPSec SA的協商。第二階段IPSec階段,主要是確定IPSec SA的保護策略,使用AH還是ESP、傳輸模式還是隧道模式、被保護的數據是什么等等。第二階段協商的目標就是產生真正用於保護IP數據的IPSec SA。IPSec通信實體雙方對於一、二階段的這些安全策略必須達成一致,否則IPSec協商將無法通過。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IPSec實現
工作於TCP/IP第三層IP層上網絡數據安全地一整套體系結構;包括網絡認證協議AH(Authentication Header,認證頭)、ESP(Encapsulating Security Payload,封裝安全載荷)、IKE(Internet Key Exchange,因特網密鑰交換又稱isakmp)和用於網絡認證及加密的一些算法等。其中,AH協議和ESP協議用於提供安全服務,IKE協議用於密鑰交換。
整個IPSec VPN地實現基本簡化為兩個SA協商完成
SA(security association):是兩個通信實體經協商建立起來地一種協議,它們決定了用來保護數據包安全地IPsec協議,轉碼方式,密鑰,以及密鑰地有效存在時間等等
IKE(isakmp)SA:協商對IKE數據流進行加密以及對對等體進行驗證地算法(對密鑰地加密和peer地認證)對等體之間只能存在一個
第一階段:建立ISAKMPSA協商的是以下信息:
1、對等體之間采用何種方式做認證,是預共享密鑰還是數字證書。
2、雙方使用哪種加密算法(DES、3DES)
3、雙方使用哪種HMAC方式,是MD5還是SHA
4、雙方使用哪種Diffie-Hellman密鑰組
5、使用哪種協商模式(主模式或主動模式)
6、協商SA的生存期
IPSec SA:協商對對等體之間地IP數據流進行加密地算法 對等體之間可以存在多個
第二階段:建立IPsecSA協商的是以下信息:
1、雙方使用哪種封裝技術,AH還是ESP
2、雙方使用哪種加密算法
3、雙方使用哪種HMAC方式,是MD5還是SHA
4、使用哪種傳輸模式,是隧道模式還是傳輸模式
5、協商SA的生存期
名詞解釋:
AH協議(IP協議號為51):提供數據源認證、數據完整性校驗和防報文重放功能,它能保護通信免受篡改,但不能防止竊聽,適合用於傳輸非機密數據。AH的工作原理是在每一個數據包上添加一個身份驗證報文頭,此報文頭插在標准IP包頭后面,對數據提供完整性保護。可選擇的認證算法有MD5(Message Digest)、SHA-1(Secure Hash Algorithm)等。
ESP協議(IP協議號為50):提供加密、數據源認證、數據完整性校驗和防報文重放功能。ESP的工作原理是在每一個數據包的標准IP包頭后面添加一個ESP報文頭,並在數據包后面追加一個ESP尾。與AH協議不同的是,ESP將需要保護的用戶數據進行加密后再封裝到IP包中,以保證數據的機密性。常見的加密算法有DES、3DES、AES等。同時,作為可選項,用戶可以選擇MD5、SHA-1算法保證報文的完整性和真實性。
IPSec有兩種工作模式:
隧道(tunnel)模式:用戶的整個IP數據包被用來計算AH或ESP頭,AH或ESP頭以及ESP加密的用戶數據被封裝在一個新的IP數據包中。通常,隧道模式應用在兩個安全網關之間的通訊。
傳輸(transport)模式:只是傳輸層數據被用來計算AH或ESP頭,AH或ESP頭以及ESP加密的用戶數據被放置在原IP包頭后面。通常,傳輸模式應用在兩台主機之間的通訊,或一台主機和一個安全網關之間的通訊。

IKE:
IKE為IPsec提供了自動協商交換密鑰、建立SA的服務,能夠簡化IPsec的使用和管理,大大簡化IPsec的配置和維護工作。
IKE的安全機制
IKE具有一套自保護機制,可以在不安全的網絡上安全地認證身份、分發密鑰、建立IPsec SA。
1. 數據認證
數據認證有如下兩方面的概念:
身份認證:身份認證確認通信雙方的身份。支持兩種認證方法:預共享密鑰(pre-shared-key)認證和基於PKI的數字簽名(rsa-signature)認證。
身份保護:身份數據在密鑰產生之后加密傳送,實現了對身份數據的保護。
2. DH
DH(Diffie-Hellman,交換及密鑰分發)算法是一種公共密鑰算法。通信雙方在不傳輸密鑰的情況下通過交換一些數據,計算出共享的密鑰。即使第三者(如黑客)截獲了雙方用於計算密鑰的所有交換數據,由於其復雜度很高,不足以計算出真正的密鑰。所以,DH交換技術可以保證雙方能夠安全地獲得公有信息。
3. PFS
PFS(Perfect Forward Secrecy,完善的前向安全性)特性是一種安全特性,指一個密鑰被破解,並不影響其他密鑰的安全性,因為這些密鑰間沒有派生關系。對於IPsec,是通過在IKE階段2協商中增加一次密鑰交換來實現的。PFS特性是由DH算法保障的。
IKE的交換過程
IKE使用了兩個階段為IPsec進行密鑰協商並建立SA:
第一階段,通信各方彼此間建立了一個已通過身份認證和安全保護的通道,即建立一個ISAKMP SA。第一階段有主模式(Main Mode)和野蠻模式(Aggressive Mode)兩種IKE交換方法。
第二階段,用在第一階段建立的安全隧道為IPsec協商安全服務,即為IPsec協商具體的SA,建立用於最終的IP數據安全傳輸的IPsec SA。
圖 4 主模式交換過程

如圖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的關系
圖 5 IPsec與IKE的關系圖

從圖2-2中我們可以看出IKE和IPsec的關系:
l IKE是UDP之上的一個應用層協議,是IPsec的信令協議;
l IKE為IPsec協商建立SA,並把建立的參數及生成的密鑰交給IPsec;
l IPsec使用IKE建立的SA對IP報文加密或認證處理。