一、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;