0x01 IPSec
IPSec協議實際上是一套協議集合,包括IKE協議、認證頭(AuthenticationHeader,AH)協議、封裝安全載荷(Encapsulating Security Payload,ESP)協議和用于網絡身份鑒別及加密的一些算法等。
從工作流程上看,IPSec協議可分為兩個環節:IKE是第一個環節,完成通信雙方的身份鑒別、確定通信時使用的IPSec安全策略和密鑰;第二個環節是使用數據報文封裝協議和IKE中協定的IPSec安全策略和密鑰,實現對通信數據的安全傳輸。
IPSec工作模式分為傳輸模式和隧道模式。傳輸模式一般用于端到端的應用場景;隧道模式一般用于創建虛擬專用網隧道鏈路。
1、IKE協議
通過數據包對IKE進行詳細分析和介紹
IKE協議用于鑒別通信雙方身份、創建安全聯盟(Security Association,SA)、協商加密算法以及生成共享會話密鑰等,其中ISAKMP是IKE的核心協議,定義了建立、協商、修改和刪除SA的過程和報文格式,并定義了密鑰交換數據和身份鑒別數據的載荷格式。ISAKMP的一個核心功能就是創建和維護SA。SA作為通信雙方之間對某些要素的一種協定,是IPSec的基礎,協定的內容包括數據報文封裝協議、IPSec工作模式、密碼算法等安全策略和密鑰。IPSec的兩種封裝協議(AH和ESP)均使用SA中協定的內容保護通信安全。
另外,SA是單向的,一個SA為單一通信方向上傳輸的數據提供一種安全服務,通信雙方需要產生屬于自己的SA。若使用多個安全服務保護數據流,例如,同時提供認證和加密服務,那么應該創建多個SA來分別實現不同安全服務對數據的保護,即每個SA對應一個安全服務。
IP Sec 9個包分析 主模式(前6個包)+ 快速模式(后3個包)
第一階段主模式:ISAKMP協商階段
工作流程如下圖所示:
下面針對數據包來分析主模式的協商過程
包一:發起端協商SA,使用的是UDP協議,端口號是500,上層協議是ISAKMP,該協議提供的是一個框架,里面的負載Next payload類似模塊(SA載荷),可以自由使用。可以看到發起端提供了自己的SPI值,以及SA的加密套件,加密套件主要是加密算法、雜湊算法、認證算法、秘鑰長度、生存時間等。
包二:響應端收到發送端發送的加密套件后,對比自己是否有相對應的加密套件,如果有就使用和發送端相同的加密套件加密數據,把自己的SPI值和選擇好的加密套件發送給發送端。如果沒有相同加密套件則IKE建立失敗響應。
在包二中響應方同時還發送自己的簽名證書和加密證書(雙證書)
包三和包四:
在包三和包四中,雙方進行數據交換,交換的內容包括Nonce載荷(Ni和Nr)、身份標識載荷(IDi和IDr)等,其中Nonce載荷是生成工作密鑰所必需的參數。這些數據使用雙方各自隨機生成的臨時密鑰SK進行對稱加密保護,SK用對方的加密證書中的公鑰進行加密保護。雙方各自對交換數據進行數字簽名,這一過程使用簽名證書對應的私鑰來完成,并將簽名結果發給對方。同時,發送端的雙證書也在包三中發給響應端,這樣發送端和響應端都有了對方的簽名和加密證書,可以使用對方的公鑰。
包三和包四完成后,參與通信的雙方利用Nonce載荷等交換數據經偽隨機函數(PRF)派生出基本密鑰參數,并通過PRF用基本密鑰參數派生出三個對稱密鑰,分別是用于產生會話密鑰的密鑰參數、用于驗證完整性和數據源身份的工作密鑰及用于加密的工作密鑰(注意這里沒有生成會話密鑰)。
包五和包六:發送端和響應端對前面協商過程內容進行鑒別確認。這兩個消息中傳遞的信息使用包三和包四產生的用于機密的工作密鑰來做對稱加密保護。對稱密碼算法由一開始雙方協商的算法,這里使用的是SM4-CBC。為了檢查交換內容,雙方通過計算HMAC驗證身份和協定的SA信息。第一階段主模式到此結束。
第二階段快速模式:IPSec SA協商階段
第二階段快速模式的工作流程如下圖所示:
快速模式用于協商建立通信時使用的IPSec SA,包括IPSec安全策略和會話密鑰(會話密鑰在快速模式中產生)。
會話密鑰有兩個,均為對稱密鑰,分別用于通信數據加密,以及完整性校驗和數據源身份鑒別。
快速模式交換的數據由主模式協定的ISAKMP SA提供保護,即除了ISAKMP頭外所有的載荷都是加密的,加密密鑰選用用于加密的工作密鑰。同時,在ISAKMP頭之后會緊跟一個HMAC載荷,用于驗證交換數據的完整性和數據源身份。
在快速模式中,數據包都是加密的,簡單放一張快速模式數據包的圖片看下吧
最后,將主模式包三和包四中派生出的用于產生會話密鑰的密鑰參數經PRF計算得到會話密鑰。PRF的輸入還包括雙方的Nonce載荷、從主模式建立的ISAKMP SA中獲得的協議值和安全參數索引(SPI),其中SPI用于唯一標識一個數據報文對應的SA。用于加密的會話密鑰與用于驗證完整性和數據源身份的會話密鑰則按照密碼算法要求的長度,從會話密鑰素材中依次選取。
野蠻模式
除IKE模式外,還有野蠻模式
書上沒有對野蠻模式進行講解,我這也沒有野蠻模式數據包,就簡單說下
野蠻模式只用到三條信息:前兩條消息1和2用于協商IKE安全提議,交換Diffie-Hellman公共值、必需的輔助信息以及身份信息,并且消息2中還包括響應方發送身份信息供發起方認證,消息3用于響應方認證發起方。
2、AH協議
AH協議提供了數據源身份鑒別、完整性和抗重放等安全功能,沒有提供加密服務。因此AH協議不能單獨用于封裝IP數據報文,應和ESP協議一起使用。AH協議不支持NAT穿越。
AH協議的主要作用是為整個IP數據報文(IP頭和IP載荷)提供高強度完整性校驗,以確保被篡改過的數據包可以被檢查出來。在傳輸模式和隧道模式下有不同的放置位置,如下圖所示。
3、ESP協議
ESP協議相對于AH協議增加了對數據報文的加密功能,ESP協議可以單獨使用。在ESP協議和AH協議結合使用時,無需開啟ESP提供數據源身份鑒別服務。ESP協議支持NAT穿越。
ESP頭在傳輸模式和隧道模式中分別有不同的放置位置,保護范圍也有所不同,如下圖所示:
4、IPSec VPN產品
IPSec VPN產品工作在網絡層,對應用層協議完全透明。
IPSec VPN產品主要用于站到站和端到站模式,也用于端到端模式(較少)。其中站到站和端到站采用隧道模式,端到端可以采用隧道模式或者傳輸模式。
前面在分析數據包時,可以看到算法對應的屬性值,如下表所示:
IPSec VPN產品的密鑰體系也分為三層:設備密鑰、工作密鑰和會話密鑰。
①設備密鑰:非對稱密鑰對,包括簽名密鑰對(設備內部產生)和加密密鑰對(外部密鑰管理機構產生),用于實體身份鑒別、數字簽名和數字信封等。其中,用于簽名的設備密鑰對在IKE第一階段提供基于數字簽名的身份鑒別服務;用于加密的設備密鑰對在IKE第一階段對交換數據提供保密性保護。
②工作密鑰:對稱密鑰,在IKE第一階段經密鑰協商派生得到,用于對會話密鑰交換過程的保護。其中,用于加密的工作密鑰為IKE第二階段交換的數據提供保密性保護;用于完整性校驗的工作密鑰為IKE第二階段傳輸的數據提供完整性保護及對數據源進行身份鑒別。
③會話密鑰:對稱密鑰,在IKE第二階段經密鑰協商派生得到,直接用于數據報文及報文MAC的加密和完整性保護。其中,用于加密的會話密鑰為通信數據和MAC值提供保密性保護;用于完整性校驗的會話密鑰為通信數據提供完整性保護。
0x02 SSL
1、SSL協議
SSL協議是由多個協議組成的兩層協議集合,如下圖所示:
下層協議包括記錄層協議,主要用于封裝不同的更高層協議的數據,為數據提供保密性、完整性和數據分段等服務,特別是它可為B/S的交互提供傳輸服務的超文本傳輸協議(HTTP)提供安全服務。
上層協議分為:握手協議、密碼規格變更協議和報警協議
其中,握手協議實現了服務端和客戶端之間相互的身份鑒別、交互過程中密碼套件(公鑰密碼算法、對稱密碼算法和密碼雜湊算法的集合)與密鑰的協商;密碼規格變更協議則是用于通知對方其后的通信消息將用剛剛協商的密碼規格及相關聯的密鑰來保護;報警協議用于關閉連接的通知,以及對整個連接過程中出現的錯誤進行報警,其中關閉通知由發起者發送,錯誤報警由錯誤的發現者發送,報警消息中包含報警級別和報警內容。
(1)握手協議分析
握手協議的主要作用有兩點:一是通信雙方對彼此進行身份鑒別;二是協商連接會話所需的密碼參數(如密碼算法、密鑰),其中各類密碼算法組成的集合稱為密碼套件。
握手協議工作流程如下圖所示,主要分為四個階段,如下圖所示:
下面通過抓取的國密SSL數據進行分析
數據包為抓取使用密信瀏覽器訪問沃通GM SSL專用測試頁面所得
階段一:首先客戶端向服務端發送Client Hello消息,其中包含國密協議版本號、隨機數、Seesion ID和客戶端所能使用的密碼套件等信息。
若服務端未回應,則產生一個致命錯誤并斷開連接
服務端返回Server hello信息,包含隨機數和協商的密碼套件等信息,這里雙方協商的密碼套件為ECC_SM4_SM3。
在第一階段中客戶端和服務端完成了密碼套件的協商以及確定安全傳輸能力(包括協議版本、會話標識等屬性),并且產生和交換隨機數。
階段二:身份鑒別和秘鑰交換,服務端發送證書Server Certificate(雙證書:簽名證書和加密證書)、服務端密鑰交換消息Server Key Exchange(簽名值,用于生成預主秘鑰)。
在階段二中,服務端如果要驗證客戶端的身份,會在發送Server Key Exchange后向客戶端發送證書請求消息Certificate Request(這里沒有進行驗證,采用的是單向鑒別),完成后發送Hello完成消息 Server Hello Done,表示Hello消息階段已經結束。
階段三:在階段二中,如果服務端對客戶端進行了身份驗證,客戶端需要在階段三中返回一個證書消息Client Certificate(這里服務端未對客戶端進行身份驗證)。
客戶端發送密鑰交換消息Client Key Exchange,消息內容取決于雙方Hello消息協商出的密鑰交換算法,在這里雙方Hello消息協商出來的密鑰交換算法為ECC,則客戶端產生46字節隨機數與版本號一起構成預主密鑰,采用服務端的加密公鑰進行加密并放在Client Key Exchange消息中發送給服務端。
在階段三中如果客戶端和服務端使用的是雙向鑒別,客戶端返回證書消息Client Certificate,那么也應發送一個帶數字簽名的消息Certificate Verify供服務端驗證客戶端的身份(這里采用的單向鑒別,沒有發送)。
在對交換數據進行加密和簽名計算時,數據的加密運算采用對方加密證書中的公鑰來進行加密;簽名采用自己的簽名私鑰進行簽名。
階段四:Change Cipher Spec 密碼規格變更協議
客戶端發送密碼規格變更消息(加密傳輸中每隔一段時間必須改變其加解密參數的協議,因為后續的報文都會采用剛剛協商好的加密秘鑰進行加密傳輸,因此會發送該報文),發送加密的握手結束消息。
Encrypted handshake Message 加密握手消息
客戶端告訴服務端,自己在整個握手過程中收到了什么數據,發送了什么數據。來保證中間沒人篡改報文。該數據采用剛才協商好的秘鑰進行加密,順帶驗證秘鑰。
服務端回應密碼規格變更消息,使用剛協商的算法和密鑰,發送加密的握手結束消息。
握手過程結束,雙方開始進行數據傳輸。
SSL VPN密碼套件的屬性值定義,如下表所示。
在GM/T 38636-2020 傳輸層密碼協議(TLCP)中,增加了GCM分組模式的密碼套件,刪除了SHA1密碼套件(SHA1被認為是有風險的密碼算法),如下表所示:
(2)記錄層協議
當客戶端和服務端握手成功后,待傳輸的應用數據通過記錄層協議封裝,并得到保密性和完整性保護,分為數據分段、數據壓縮、數據添加MAC、對數據和MAC加密、附加SSL記錄報頭五步,整體流程如下圖所示:
2、SSL VPN 產品
SSL VPN產品采用工作在應用層和傳輸層之間的VPN技術。
基于B/S的架構是SSL VPN最為常見的應用方式。
SSLVPN產品用于端到站和站到站兩種,其中端到站是常用的,是產品必須支持的;站到站是可選支持的。
SSL VPN產品的密鑰體系分為三層:①用于管理的設備密鑰;②用于生成工作密鑰的預主密鑰和主密鑰;③用于保護通信數據的工作密鑰。
①設備密鑰:非對稱密鑰對,包括簽名密鑰對(設備內部產生)和加密密鑰對(外部密鑰管理機構產生)。其中,簽名密鑰對用于握手協議中通信雙方的身份鑒別;加密密鑰對用于預主密鑰協商時所用交換參數的保密性保護。(在這里簽名密鑰對和加密密鑰對分別由設備內部和外部密鑰管理機構產生,但是簽名證書和加密證書均應由外部認證機構簽發)。
②預主密鑰、主密鑰:對稱密鑰,其中預主密鑰是雙方協商通過偽隨機函數(PRF)生成的密鑰素材,用于生成主密鑰;主密鑰(48字節)由預主密鑰、雙方隨機數等交換參數,經PRF計算生成的密鑰素材,用于生成工作密鑰。
③工作密鑰:對稱密鑰,對通信數據安全性提供保護,由主密鑰、客戶端隨機數、服務端隨機數、常量字符串經PRF計算生成。工作密鑰包括兩個對稱密鑰:數據加密密鑰用于數據的加密和解密;校驗密鑰用于數據的完整性計算和校驗。
0x03 總結
SSL和IPSec在商用密碼應用與安全性評估中涉及的內容比較多,能出的考點也是很多,本文簡單對一些重要內容進行了羅列和總結,結合真實數據包對IPSec和SSL協議進行了分析,包括SSL握手協議過程、IPSec IKE協商過程和三層密鑰體系及產出的位置,希望可以幫助大家理解學習。
審核編輯:劉清
-
IPSec
+關注
關注
0文章
59瀏覽量
22808 -
ESP
+關注
關注
0文章
183瀏覽量
33928 -
UDP協議
+關注
關注
0文章
69瀏覽量
12695 -
SSL
+關注
關注
0文章
125瀏覽量
25739
原文標題:IPSec和SSL國密數據包分析
文章出處:【微信號:Tide安全團隊,微信公眾號:Tide安全團隊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論