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