IPSec 與 IKE 核心知識點總結

一、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)算法是在不安全信道上生成共享對稱密鑰的核心技術,其工作流程如下:

  1. 生成公私鑰對:通信雙方(PeerA、PeerB)各自生成私有密鑰(不傳輸)和公開密鑰(可傳輸);

  2. 交換公鑰:雙方將公開密鑰發送給對方;

  3. 計算共享密鑰:PeerA 用自己的私鑰 + PeerB 的公鑰計算,PeerB 用自己的私鑰 + PeerA 的公鑰計算,最終得到相同的共享密鑰(Secret_Key_X);

  4. 加密對稱密鑰:用共享密鑰加密實際使用的對稱密鑰(如 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. 第 1-2 條消息:交換 SA 載荷,協商安全參數(加密算法、HASH 算法、DH 組、認證方式、生存期等),雙方需達成一致;

  2. 第 3-4 條消息:交換 DH 公鑰(KE 載荷)和隨機數(Nonce 載荷),雙方基于 DH 算法計算共享密鑰,并生成 SKEYID 系列密鑰(用于后續加密和認證);

  3. 第 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. 第 1 條消息:發起方發送 SA 載荷(包含 IPSec 策略,如 ESP/AH、模式、算法)、KE 載荷(可選,用于 PFS 密鑰交換)、Nonce 載荷和 HASH 載荷(驗證消息完整性);

  2. 第 2 條消息:響應方驗證消息后,返回匹配的 SA 載荷及相關參數;

  3. 第 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.對對等體做身份認證

計算密鑰:

階段二:快速模式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93836.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93836.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93836.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C2ComponentStore

1. C2ComponentStore這是 Codec 2.0 HAL 的抽象接口(frameworks/av/media/codec2/core/include/C2ComponentStore.h)。代表一個「組件工廠」,負責:枚舉當前可用的 Codec2 組件(解碼器、編碼器)。創建組件&a…

AI 在醫療領域的應用與挑戰

引言介紹 AI 技術迅猛發展的大背景,引出其在醫療領域的重要應用。闡述研究 AI 醫療應用及挑戰對推動醫療行業進步的重要意義。AI 在醫療領域的應用現狀疾病診斷輔助:描述 AI 影像識別技術在識別 X 光、CT、MRI 影像中疾病特征的應用,如對肺癌…

【GPT入門】第51課 Conda環境遷移教程:將xxzh環境從默認路徑遷移到指定目錄

【GPT入門】第51課 Conda環境遷移教程:將xxzh環境從默認路徑遷移到指定目錄步驟1:創建目標目錄(若不存在)步驟2:克隆環境到新路徑步驟3:驗證新環境可用性步驟4:刪除舊環境(可選&…

應急響應-模擬服務器掛馬后的應急相關操作

工具:攻擊機: kail:192.168.108.131 kail下載地址:https://mirrors.aliyun.com/kali-images/kali-2021.3/kali-linux-2021.3-live-i386.iso靶機:windows 7: 192.168.108.1321、在kali中制作木馬文件:vhost.exe&#xf…

記一次 .NET 某光譜檢測軟件 內存暴漲分析

一:背景 1. 講故事 訓練營里的一位學員找到我,說他們的系統會出現內存暴漲的情況,看了下也不是托管堆的問題,讓我協助一下到底怎么回事?既然有dump了,那就開始分析之旅吧。 二:內存暴漲分析 1. …

基于OpenCV的物體識別與計數

在計算機視覺領域,利用圖像處理技術進行物體識別和計數是一項基礎且重要的任務。本文將介紹一種使用OpenCV庫實現的高效物體識別與計數方法,并提供一些代碼片段以幫助理解各個步驟。 這是前幾年做過傳統圖像處理計數的項目,通過傳統圖像處理之…

算法題打卡力扣第34題:在排序數組中查找元素的第一個和最后一個位置(mid)

題目描述提示&#xff1a; 0 < nums.length < 105 -109 < nums[i] < 109 nums 是一個非遞減數組 -109 < target < 109 解題思路一 暴力解 頭到尾遍歷整個數組。 用一個變量 first 記錄第一次遇到 target 的索引。 繼續遍歷&#xff0c;用另一個變量 last 不斷…

虛幻基礎:曲線

能幫到你的話&#xff0c;就給個贊吧 &#x1f618; 文章目錄曲線&#xff1a;數值變化的曲線動畫曲線動畫曲線get curve value只有curve所在動畫被播放才返回曲線數值沒播放時 返回0一個曲線可以在多個動畫中使用 且可以設置曲線的不同值曲線&#xff1a;數值變化的曲線 動畫…

MFC隨筆—不使用對話框資源模板創建對話框

在MFC程序中使用對話框時一般都是首先在資源模版里創建對話框資源,然后DoModal()或者Create顯示出模式對話框或者非模式對話框。然而采用該方式創建出的對話框移植性差,從一個工程移動到另一個工程比較麻煩。 在MFC中還有另一種創建對話框的方法,即利用DLGTEMPLATE、DLGITEM…

第八十六章:實戰篇:文本生成腳本 → TTS + 鏡頭 → 視頻整合——讓你的文字“動聽”又“好看”!

AI導演鏈路前言&#xff1a;AI的“智能制片人”——文本 → 視頻&#xff0c;你的想法“一鍵出片”&#xff01;第一章&#xff1a;痛點直擊——傳統視頻制作&#xff0c;累到“吐血”&#xff01;第二章&#xff1a;探秘“智能制片廠”&#xff1a;流水線上的四大核心模塊&…

Linux內核源碼詳解--缺頁異常(Page Fault)處理的核心函數handle_pte_fault

handle_pte_fault 是 Linux 內核中處理缺頁異常&#xff08;Page Fault&#xff09;的核心函數&#xff0c;負責根據頁表項&#xff08;PTE&#xff09;的狀態和訪問權限&#xff0c;分發到不同的子處理邏輯&#xff08;如匿名頁映射、文件頁映射、寫時復制、NUMA 遷移等&#…

基于混合注意力網絡和深度信念網絡的魯棒視頻水印技術基礎理論深度解析

1. 引言隨著數字媒體技術的迅猛發展和互聯網的普及&#xff0c;視頻內容的創作、傳播和分享變得前所未有的便捷。然而&#xff0c;這種便利性也帶來了嚴重的版權保護挑戰。數字視頻的易復制性使得盜版和非法傳播成為困擾內容創作者和版權所有者的重大問題。傳統的加密技術雖然能…

linux 之virtio 的驅動框架

1、基本知識 上一篇文章介紹了 virtio 的核心數據的實現和邏輯&#xff1a;linux 之 virtio 子系統核心的數據結構-CSDN博客 virtio 是對半虛擬化 hypervisor 中的一組通用模擬設備的抽象。它允許 hypervisor 導出一組通用的模擬設備&#xff0c;并通過一個通用的應用編程接口…

項目1總結其三(圖片上傳功能)

1、UploadService public interface UploadService {//上傳圖片String uploadImage(MultipartFile file, String type); }upload.location D:/upload Value("${upload.location}")private String uploadLocation;//文件上傳路徑Overridepublic String uploadImage(M…

Linux應用層開發--線程池介紹

Glib 線程池 1. 線程池簡介 線程池是一種管理和重用多個線程的設計模式&#xff1a; 避免頻繁創建/銷毀線程的開銷。提高性能與資源利用率。任務提交后&#xff0c;由線程池內的線程自動執行&#xff0c;任務執行完線程不會退出&#xff0c;而是繼續等待下一個任務。 2. Gli…

【Python】Python 多進程與多線程:從原理到實踐

Python 多進程與多線程&#xff1a;從原理到實踐 文章目錄Python 多進程與多線程&#xff1a;從原理到實踐前言一、并發編程基礎&#xff1a;進程與線程1.1 進程&#xff08;Process&#xff09;1.2 線程&#xff08;Thread&#xff09;1.3 進程與線程的關系二、Python 中的 &q…

electron-vite_18Less和Sass共用樣式指定

項目中可以封裝less公用樣式和方法&#xff0c;比如自動以滾動條樣式、單行省略號、多行省略號、display:none等&#xff1b;關于additionalData的配置生效,請在main.js中引入一個別的樣式或vue組件中使用“<style lang“scss”><style>”找到electron.vite.config…

Python面試題及詳細答案150道(71-80) -- 文件操作篇

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

python新工具-uv包管理工具

uv 是一個由 Astral (Ruff 的創建者) 開發的極速 Python 包和項目管理器&#xff0c;用 Rust 編寫。它旨在作為傳統 Python 包管理工具&#xff08;如 pip、pip-tools、pipx、poetry、pyenv、twine 和 virtualenv 等&#xff09;的替代品&#xff0c;通過其高性能和多功能集成&…

有關spring-ai的defaultSystem與systemMessage優先級

今天在寫項目的時候想用nacos隨時修改system的prompt&#xff0c;突然發現defaultSystem的優先級比systemMessage高很多&#xff0c;廢話我就不說了&#xff0c;看圖吧。你覺得證據不夠&#xff1f;那這樣呢&#xff1f;