IPsec入門篇講解(第二篇)

安全聯盟(SA)

 IPSec經過在IPSec對等體間創建雙向安全聯盟(SA),造成一個安全互通的IPSec隧道,來實現Internet上數據的安全傳輸
 SA由一個三元組來惟一標識,這個三元組包括安全參數索引SPI(Security Parameter Index)、目的IP地址和使用的安全協議號(AH或ESP)。其中,SPI是爲惟一標識SA而生成的一個32位比特的數值,它在AH和ESP頭中傳輸。在手工配置SA時,須要手工指定SPI的取值。使用IKE協商產生SA時,SPI將隨機生成
 SA是單向的邏輯鏈接,所以兩個IPSec對等體之間的雙向通訊,最少須要創建兩個SA來分別對兩個方向的數據流進行安全保護。如圖1所示,爲了在對等體A和對等體B之間創建IPSec隧道,須要創建兩個安全聯盟,其中,SA1規定了從對等體A發送到對等體B的數據採起的保護方式,SA2規定了從對等體B發送到對等體A的數據採起的保護方式
IPsec入門篇講解(第二篇)
 另外,SA的個數還與安全協議相關。若是隻使用AH或ESP來保護兩個對等體之間的流量,則對等體之間就有兩個SA,每一個方向上一個。若是對等體同時使用了AH和ESP,那麼對等體之間就須要四個SA,每一個方向上兩個,分別對應AH和ESP
 有兩種方式創建IPSec安全聯盟:手工方式和IKE自動協商方式。兩者的主要區別爲
 密鑰生成方式不一樣
 手工方式下,創建SA所需的所有參數,包括加密、驗證密鑰,都須要用戶手工配置,也只能手工刷新,在中大型網絡中,這種方式的密鑰管理成本很高;IKE方式下,創建SA須要的加密、驗證密鑰是經過DH算法生成的,能夠動態刷新,於是密鑰管理成本低,且安全性較高
 生存週期不一樣
 手工方式創建的SA,一經創建永久存在;IKE方式創建的SA,其生存週期由雙方配置的生存週期參數控制
 所以,手工方式適用於對等體設備數量較少時,或是在小型網絡中。對於中大型網絡,推薦使用IKE自動協商創建SA算法

IKE協議

 因特網密鑰交換IKE(Internet Key Exchange)協議創建在Internet安全聯盟和密鑰管理協議ISAKMP定義的框架上,是基於UDP(User Datagram Protocol)的應用層協議。它爲IPSec提供了自動協商密鑰、創建IPSec安全聯盟的服務,可以簡化IPSec的使用和管理,大大簡化IPSec的配置和維護工做
 IKE負責自動創建和維護IKE SA(也稱爲ISAKMP SA)和 IPSec SA。功能主要體如今以下幾個方面:
 對雙方進行認證
 交換公共密鑰,產生密鑰資源,管理密鑰
 協商協議參數(封裝,加密,驗證….)
 IKE協議版本分爲IKEv1和IKEv2 是公有協議 IKEv1 在RFC2409 IKEv2 在RFC 5996
 IKE的三大組件
 SKEME:定義如何經過公共密鑰技術(DH算法)實現密鑰交換
 Oakley:提供了IPSec對各類技術的支持,例如對新的加密與散列技術。並無具體的定義使用什麼樣的技術
 ISAKMP:定義了消息交換的體系結構,包括兩個IPSEC對等體間分組形式和狀態轉變(定義封裝格式和協商包交換的方式)下層由UDP協議承載 源目端口號爲500
IPsec入門篇講解(第二篇)
IPsec入門篇講解(第二篇)
IPsec入門篇講解(第二篇)
IPsec入門篇講解(第二篇)安全

IKEV1版本

IKE的三個模式
 IKEv1創建IKE SA的過程定義了主模式(Main Mode)和野蠻模式(Aggressive Mode)兩種交換模式
 主模式包含三次雙向交換,用到了六條信息 野蠻模式只用到三條信息
IPsec入門篇講解(第二篇)網絡

主模式過程

 消息①和②用於策略交換,發起方發送一個或多個IKE安全提議,響應方查找最早匹配的IKE安全提議,並將這個IKE安全提議迴應給發起方
 消息③和④用於密鑰信息交換,雙方交換Diffie-Hellman公共值和nonce值,IKE SA的認證/加密密鑰在這個階段產生
 消息⑤和⑥用於身份和認證信息交換(雙方使用生成的密鑰發送信息),雙方進行身份認證和對整個主模式交換內容的認證
IPsec入門篇講解(第二篇)框架

主模式詳細報文過程

1 2報文過程

 1-2消息用於參數的協商(明文) 協商內容:(加密算法 驗證算法 驗證方式 DH組 有效期)ide

Initiator(發起者)               Responder(響應方)
============================================================================================
             HDR, SA             -->
                                  <--            HDR, SA 

              Ci  SA  
                                               Ci  Cr  SA

 HDR ISAKMP頭部
 Ci Cr 表明發起方和響應方的SPI
 所對應的命令行以下函數

ike proposal 10
 encryption-algorithm aes-192               ---加密算法
 authentication-algorithm md5               ---認證算法
 integrity-algorithm hmac-sha2-256          ---完整性算法

檢查:加密

[FW1]display ike proposal verbose 
11:42:46  2019/08/04

  IKE Proposal Priority 10:
  ------------------------------------------------------------------
    Authentication Method    : PRE_SHARED           ---身份驗證方法
    Authentication Algorithm : MD5              ---認證算法
    Encryption Algorithm     : 192-AES          ---加密算法
    Diffie-Hellman Group     : DH-Group2            ---DH算法
    Sa Duration(Seconds)     : 86400                ---SA持續時間
    Integrity Algorithm      : HMAC-SHA2-256        ---完整性算法
  ------------------------------------------------------------------

注意:安全提議是有默認配置,能夠修改
DH算法組能夠修改命令行

[FW1-ike-proposal-10]dh  ?
  group1   Indicate the 768-bit Diffie-Hellman group
  group14  Indicate the 2048-bit Diffie-Hellman group
  group15  Indicate the 3072-bit Diffie-Hellman group
  group16  Indicate the 4096-bit Diffie-Hellman group
  group2   Indicate the 1024-bit Diffie-Hellman group,default
  group5   Indicate the 1536-bit Diffie-Hellman group

3 4報文過程

 3-4消息用於密鑰素材的交換及產生密鑰 若是1 2兩個消息不協商出DH組的3 4消息中的KE也不會有3d

Ci Cr , KE, Ni         -->

                                  <--   Ci Cr , KE, Nr

 KE key exchange 密鑰交換
 Ni Nr 隨機數
 經過前面1 2的DH算法算出公共的K值
 經過K值推導SKEYID(種子密鑰)
 SKEYID分爲兩種狀況 預共享密鑰方式(PSK)和採用數字證書方式(在1 2兩個報文中進行協商)
 在預共享密鑰認證中,認證字做爲一個輸入來產生密鑰,通訊雙方採用共享的密鑰對報文進行Hash計算,判斷雙方的計算結果是否相同。若是相同,則認證經過;不然認證失敗
 在數字證書認證中,通訊雙方使用CA證書進行數字證書合法性驗證,雙方各有本身的公鑰(網絡上傳輸)和私鑰(本身持有)。發送方對原始報文進行Hash計算,並用本身的私鑰對報文計算結果進行加密,生成數字簽名。接收方使用發送方的公鑰對數字簽名進行解密,並對報文進行Hash計算,判斷計算結果與解密後的結果是否相同。若是相同,則認證經過;不然認證失敗
 在數字信封認證中,發送方首先隨機產生一個對稱密鑰,使用接收方的公鑰對此對稱密鑰進行加密(被公鑰加密的對稱密鑰稱爲數字信封),發送方用對稱密鑰加密報文,同時用本身的私鑰生成數字簽名。接收方用本身的私鑰解密數字信封獲得對稱密鑰,再用對稱密鑰解密報文,同時根據發送方的公鑰對數字簽名進行解密,驗證發送方的數字簽名是否正確。若是正確,則認證經過;不然認證失敗
 採用預共享密鑰的方式(1-2消息中已經協商)code

SKEYID = prf(pre-shared-key, Ni_b |  Nr_b)

 採用數字證書 (1-2消息中已經協商)

SKEYID = prf(K,Ni_b | Nr_b)
DH(DIFFIE-HELLMAN)密鑰交換算法

網關A和B利用ISAKMP消息的Key Exchange和nonce載荷交換彼此的密鑰材料
 Key Exchange用於交換DH公開值
 nonce用於傳送臨時隨機數
 因爲DH算法中IKE Peer雙方只交換密鑰材料,並不交換真正的共享密鑰,因此即便***竊取了DH值和臨時值也沒法計算出共享密鑰,這一點正是DH算法的精髓所在 從抓包中能夠看到IKE Peer雙方交換密鑰材料
IPsec入門篇講解(第二篇)
 Diffie-Hellman算法是一種公開密鑰算法。通訊雙方在不傳送密鑰的狀況下經過交換一些數據,計算出共享的密鑰。即便第三方(如***)截獲了雙方用於計算密鑰的全部交換數據,也不足以計算出真正的密鑰。DH保證了IKE不在網絡上直接傳輸密鑰,而是經過一系列數據的交換,最終計算出雙方共享的密鑰
 但DH沒有提供雙方身份的任何信息,不能肯定交換的數據是否發送給合法方,第三方能夠經過截獲的數據與通訊雙方都協商密鑰、共享通訊,從而獲取和傳遞信息,因此IKE還須要身份認證來對對等體身份進行認證
 密鑰材料交換完成後,IKE Peer雙方結合自身配置的身份驗證方法各自開始複雜的密鑰計算過程(預共享密鑰或數字證書都會參與到密鑰計算過程當中),最終會產生三個密鑰:
 SKEYID_d:用於衍生出IPSec報文加密和驗證密鑰——最終是由這個密鑰保證IPSec封裝的數據報文的安全性!

SKEYID_d = prf(SKEYID, K | Ci | Cr | 0)

推導因子
prf(僞隨機函數)
 SKEYID_a:ISAKMP消息完整性驗證密鑰——誰也別想篡改ISAKMP消息了,只要消息稍有改動,響應端完整性檢查就會發現!

SKEYID_a = prf(SKEYID, SKEYID_d | K | Ci | Cr | 1)

用於驗證的密鑰
 SKEYID_e:ISAKMP消息加密密鑰——再也別想竊取ISAKMP消息了,竊取了也看不懂!

SKEYID_e = prf(SKEYID, SKEYID_a | K | Ci | Cr | 2)

用於加密的密鑰, 用於後續5-6消息的加密以及快速模式的加密
 整個密鑰交換和計算過程在IKE SA超時時間的控制下以必定的週期進行自動刷新,避免了密鑰長期不變帶來的安全隱患
IPsec入門篇講解(第二篇)
DH(Diffie-Hellman)密鑰交換算法
IPsec入門篇講解(第二篇)

5 6報文過程

5-6消息用於身份認證
預共享密鑰方式身份認證

HDR*, IDii, HASH_I  -->

                                  <--    HDR*, IDir, HASH_R

HDR *------表明加密
ID 身份標識,通常使用IP地址

HASH_I = prf(SKEYID, K | Ci | Cr | SAi | IDii_b )
HASH_R = prf(SKEYID, K| Ci | SAi | IDir_b )

數字證書方式的身份認證

HDR*, IDii, [ CERT, ] SIG_I -->
                                    <--    HDR*, IDir, [ CERT, ] SIG_R
相關文章
相關標籤/搜索