一、IPSec 安全基礎
IPSec 是保障 IP 數據傳輸安全的核心協議,其核心圍繞密鑰管理和安全策略約定展開,具體包括以下關鍵內容:
1. 對稱密鑰的作用與要求
對稱密鑰是 IPSec 實現加密、驗證的基礎,主要用于三個場景:
加密 / 解密算法(KEY1):對 IP 數據進行加密,確保數據機密性;
HASH 算法(KEY2):用于數據完整性校驗(如 HMAC),防止數據被篡改;
身份認證(KEY3):驗證通信雙方的合法性,防止身份偽造。
密鑰要求:
橫向一致:通信雙方的同功能密鑰必須相同(如 A 的 KEY1 與 B 的 KEY1 一致,否則無法解密);
縱向獨立:同一設備的 KEY1、KEY2、KEY3 必須不同(避免一個密鑰泄露導致所有安全機制失效)。
舉例:類似兩人通信,A 加密用的鑰匙(KEY1)和 B 解密用的鑰匙必須一樣(橫向一致),但 A 的加密鑰匙(KEY1)不能和自己的校驗鑰匙(KEY2)相同(縱向獨立),否則小偷拿到一把鑰匙就能破解所有保護。
2. DH 算法:對稱密鑰的安全交換
Diffie-Hellman(DH)算法是在不安全信道上生成共享對稱密鑰的核心技術,其工作流程如下:
生成公私鑰對:通信雙方(PeerA、PeerB)各自生成私有密鑰(不傳輸)和公開密鑰(可傳輸);
交換公鑰:雙方將公開密鑰發送給對方;
計算共享密鑰:PeerA 用自己的私鑰 + PeerB 的公鑰計算,PeerB 用自己的私鑰 + PeerA 的公鑰計算,最終得到相同的共享密鑰(Secret_Key_X);
加密對稱密鑰:用共享密鑰加密實際使用的對稱密鑰(如 KEY1、KEY2、KEY3)并傳輸,對方用相同共享密鑰解密。
舉例:DH 算法類似兩人約定用 “公開的配方”(DH 組)各自在家做 “面團”(私鑰),然后交換 “面團樣本”(公鑰);雙方用自己的面團和對方的樣本混合,最終得到完全相同的 “共享面團”(共享密鑰)。即使別人拿到樣本,也無法還原出相同的混合面團。
DH 密鑰組:不同組定義了密鑰長度和算法,影響安全性和性能,例如:
組 5(1536 位,直算法):Cisco 支持的最安全組;
組 15(3072 位,直算法):理論最安全,但 Cisco 不支持;
組 3/4/7:基于橢圓曲線算法,密鑰長度短但安全性高(如組 3 僅 155 位)。
3. 安全關聯(SA):IPSec 的 “安全策略約定”
SA 是 IPSec 實體(主機、網關)之間的核心約定,決定了 “如何保護數據”,是 IPSec 的基礎。
(1)SA 的核心內容
包含保護 IP 數據的所有參數:
協議選擇(AH 或 ESP);
運行模式(傳輸模式或隧道模式);
加密算法(如 3DES、AES)、驗證算法(如 MD5、SHA);
加密密鑰、驗證密鑰;
密鑰生存期、抗重放窗口等。
(2)SA 的單向性
一個VPN連接有一對SA,通信是雙向的,所以A的出方向的的SA和B的入方向是一對SA(這一對是一樣的),B的出方向和A的入方向是一對SA
SA 是單向的:
入方向(inbound)SA:處理接收的數據包;
出方向(outbound)SA:處理發送的數據包;
通信雙方需各有一對 SA(入 + 出),構成 “SA 束”,且雙方的 SA 參數必須一致。
舉例:SA 類似兩人約定的 “快遞規則”:A 寄給 B(出方向 SA)和 B 收 A 的(入方向 SA)是兩套規則,但內容必須一致(如都用 ESP 加密、傳輸模式、AES 算法),否則 B 無法正確接收 A 的包裹。
(3)SA 的產生方式
手工配置:管理員手動指定 SA 參數,無生命周期(永不過期),易出錯且存在安全隱患(密鑰長期不變),實際中幾乎不用;使用時間越長就越不安全,且物理距離較遠
IKE 自動管理:通過 IKE 協議動態協商、維護 SA,有生命周期(到期自動更新,會更安全),是主流方式。如果安全策略要求建立安全、保密的連接,但又不存在與該連接相應 的SA,IPSec會立刻啟動IKE來協商SA。
二、IKE 工作過程:動態建立 SA 的核心協議
IKE(互聯網密鑰交換協議)是動態建立 SA 的協議,基于 ISAKMP 框架,融合了 Oakley 和 SKEME 的技術,實現 SA 的自動協商與管理。IKE不是一個單獨協議,是一個協議簇,包含很多不同協議,都可以完成SA或密鑰的協商,利用協議協商的都會有生命周期
1. IKE 的核心構成
ISAKMP:定義 SA 協商的框架(消息格式、狀態轉換),是 IKE 的基礎;?
Oakley:提供密鑰交換的模式(如 DH 算法的應用方式),并沒有 具體的定義交換什么樣的信息;
SKEME:提供身份認證機制(如預共享密鑰、證書)。
舉例:IKE 像一個 “項目組”:ISAKMP 是 “項目管理流程”(規定如何溝通),Oakley 是 “技術方案模板”(規定如何生成密鑰),SKEME 是 “成員身份驗證方法”(確保參與方合法)。
ISKMP協議:(安全聯盟密鑰管理協議)
定義了協商、建立、修改和刪除SA的過程和包格式。
ISAKMP只是為協商、修改、刪除SA的方法提供了一個通用的框架,并沒有定義具體的SA格式。這個通用的框架是與密鑰交換獨立的,可以被不同的密鑰交換協議使用。
ISAKMP報文可以利用UDP,端口都是500(思科500,深信服5000),一般情況下常用 UDP協議。IKE使用ISAKMP消息來協商并建立SA。 如果不用這個,需要多個VPN隧道就需要多個公網地址。在IP頭部后面加裝了一個UDP頭部
2. IKE 協商的兩個階段
IKE 通過兩階段協商建立 SA,確保通信安全:
第一階段:建立 ISAKMP SA(IKE SA)
需要完成的任務:協商出一個雙向的ISAKMP SA,用于保護階段二
包含三個部分:
????????1.協商安全參數:加密算法、HASH算法、DH組、身份認證、生命周期,建立一個初始化的SA
????????2.交換計算密鑰的材料:DH算法(交換公鑰,隨機數),計算出各種密鑰
????????3.對對等體做身份認證,認證成功后進入階段二
作用:生成一個 “安全信道”,保護第二階段的協商過程。 有兩種模式:
主模式(Main Mode):6 條 ISAKMP 消息交互,安全性高(身份信息加密);
野蠻模式(Aggressive Mode):3 條 ISAKMP 消息交互,速度快但安全性較低(身份信息可能明文傳輸)。
主模式詳細流程:
第 1-2 條消息:交換 SA 載荷,協商安全參數(加密算法、HASH 算法、DH 組、認證方式、生存期等),雙方需達成一致;
第 3-4 條消息:交換 DH 公鑰(KE 載荷)和隨機數(Nonce 載荷),雙方基于 DH 算法計算共享密鑰,并生成 SKEYID 系列密鑰(用于后續加密和認證);
第 5-6 條消息:交換身份載荷(如 IP 地址)和 HASH 載荷(驗證身份),確保對方擁有相同的預共享密鑰(或證書),完成身份認證。
舉例:主模式類似兩人 “先悄悄商量見面規則”(1-2 條消息),再 “交換信物生成鑰匙”(3-4 條消息),最后 “驗證身份確認對方是自己人”(5-6 條消息),全程私密,不易被偷聽。
第二階段:建立 IPSec SA
主要完成任務:2個單向的IPSEC sa 用于保護數據
步驟:
1.協商安全參數(安全協議(ESP或AH),工作模式(傳輸模式或隧道模式),保護數據用的加密算法,保護數據用的HASH算法,保護數據用的密鑰的生命周期)
2.交換計算密鑰的材料,然后生成密鑰
3.進行身份認證
作用:在第一階段的安全信道中,協商用于保護實際 IP 數據的 SA。 僅有一種模式:快速模式(Quick Mode),3 條 ISAKMP 消息交互,所有消息均被第一階段的 ISAKMP SA 加密保護。
快速模式流程:
第 1 條消息:發起方發送 SA 載荷(包含 IPSec 策略,如 ESP/AH、模式、算法)、KE 載荷(可選,用于 PFS 密鑰交換)、Nonce 載荷和 HASH 載荷(驗證消息完整性);
第 2 條消息:響應方驗證消息后,返回匹配的 SA 載荷及相關參數;
第 3 條消息:發起方確認,完成 IPSec SA 協商。
舉例:快速模式類似兩人 “在已上鎖的會議室里”(第一階段的安全信道),商量 “具體的文件傳輸規則”(IPSec SA),確保規則只有雙方知道。
可以用一個階段一保護多個階段二
3. ISAKMP 報文格式
IKE 消息基于 ISAKMP 報文格式,核心結構包括:
Cookie:
發起方Cookie(Initiator Cookie):64 bit – 常用的一個生成Cookie的方法是對下述信息進行HASH(MD5、 SHA1或其他HASH算法)之后,取結果的前64位:
源IP地址+目的IP地址+UDP源端口+UDP目的端口+隨機數 +當前日期+當前時間
報頭:例如:A發給B
含發起方 Cookie(64 位)
第一個報文中不知道應答方Cookie,置為0,在應答方收到后,發送第二個報文,發起方Cookie是A,應答方Cookie是B,在整個VPN協商中,只能由發起方發送第一個報文,所以發起方是固定的
應答方 Cookie(64 位,用于防止 DOS 攻擊)
下一個載荷(指示后續內容類型,報文相當于一個火車頭,下一個載荷代表第一節車廂后帶的數據)
交換類型(主模式 / 野蠻模式等)標識階段一,只有階段一有兩種模式
標志(如是否加密)只有后三位有用:加密位:置為1,代表頭部后面的載荷都是加密的,置為0,表示是明文,沒有加密;提交位:確保發送數據之前完成Sa協商;純驗證位:能夠為恢復密鑰機制的機構使用
報文 ID(第二階段用于標識協商):在第一階段全為0,在第二階段是發起方的隨機值,可以標識第二階段的狀態
長度(報文總字節數):頭部加載荷的總長度
載荷:攜帶具體內容,如 SA 載荷(安全參數)、KE 載荷(DH 公鑰)、身份載荷(IP 地址 / 域名)、HASH 載荷(身份驗證)等,共 13 種類型。
舉例:Cookie 類似 “驗證碼”,每次協商生成唯一值,收到與之前不同的 Cookie 就丟棄報文,避免攻擊者發送大量假消息癱瘓系統。
工作過程
階段一:主模式
三個部分:
1.協商安全參數:加密算法、HASH算法、DH組、身份認證、生命周期,建立一個初始化的SA
2.交換計算密鑰的材料:DH算法(交換公鑰,隨機數),計算出各種密鑰
3.對對等體做身份認證
計算密鑰:
階段二:快速模式