当前位置: 首页 > news >正文

8.21IPSEC安全基础后篇,IKE工作过程

一、数据存储完整性校验

数据存储完整性校验需通过加密密钥实现。数据存储前还需通过身份认证,该过程同样依赖密钥完成。

二、对称key的产生、传递、管理

VPN中需使用多组对称密钥:

  • 数据加解密需独立密钥
  • 数据完整性校验需独立密钥
  • 身份认证需独立密钥
  • 不同功能的密钥必须独立,以增强VPN安全性。同种功能的密钥可复用,但跨功能密钥需严格区分。
1.对称key的传递:

对称密钥传递依赖非对称加密算法。算法原理虽简单,但实现复杂度高。

1) DH算法

DH算法通过私钥与对方公钥计算生成相同对称密钥,该密钥用于保护数据传输。

  • VPN仅使用DH算法的前半部分(密钥协商阶段)
  • 对称密钥始终不在网络中传输,仅通过本地计算验证
  • DH密钥组

DH组类型

密钥特性

安全性对比

直线型算法(如DH组2/3)

密钥长度较长(如1024位)

计算简单,需更长密钥保障安全

椭圆曲线算法(如163位)

密钥长度较短

计算复杂,同等安全性下密钥更短

密钥长度与安全性非绝对正比,需结合算法复杂度评估。当前推荐使用椭圆曲线算法(如DH组20+)。

2.思考

同一设备可建立多条VPN隧道,各隧道参数(加密算法、校验方式等)可独立配置。

  • 隧道间数据严格隔离,网段不可重叠
  • 每条隧道需绑定唯一保护策略(如传输模式/隧道模式ESP)
  • 安全关联(SA)用于统一管理隧道参数,确保数据按预设规则处理。

三、SA概述

安全关联(SA)是IPSec的核心规则集,每个VPN连接对应多组SA:

  • 单向通信需独立SA(如A→B与B→A需分别配置)
  • 单条VPN连接通常包含4个SA(出/入方向各一对)
1.安全关联

SA包含以下协商参数:

  • 协议类型(AH/ESP)
  • 传输模式(传输/隧道)
  • 加密算法与密钥
  • 验证算法与密钥
  • SA生成方式:
  • 手工配置:参数永不过期,维护成本高
  • IKE自动协商:动态管理,支持定期更新
2.SA如何产生

SA通过协议自动协商生成。SA与IP不同,其作用是在IPSec VPN中双方协定并保护数据。

1) 手工配置
  • 手工配置的SA无过期时间,密钥使用时间越长,安全性越低。
  • 手工配置需在两端设备上完全一致,且物理距离较远时配置难度大。
  • 配置错误风险高,需通过电话或消息同步策略,效率低。
  • 适用场景:实验室测试或开发环境,项目中基本不使用。
2) IKE自动管理
  • IKE(互联网密钥交换协议)为协议簇,用于动态建立、维护和删除SA。
  • 自动协商的SA具有生命周期,与路由、ARP等网络协议类似。
  • 本地无符合条件SA时,设备自动启动IKE协议协商。
  • IKE适用于生产环境,手工配置仅用于特殊场景。

四、IKE工作过程

1.IKE概述
  • IKE全称为互联网密钥交换,用于动态建立、维护和删除SA。
  • IKE为协议簇,包含多种子协议,主要功能包括密钥协商和认证。
  • ISAKMP协议定义了消息交换体系和状态转换流程,为IKE核心协议。
2.ISAKMP协议
  • ISAKMP为标准协议,文档公开,厂商设备均支持。
  • 协议定义了SA协商的完整流程,包括建立、修改和删除。
  • 仅提供参数框架,具体实现由设备厂商决定。
1) ISAKMP报文格式
  • ISAKMP报文格式固定,使用UDP传输,默认端口为500(厂商可能不同)。
  • 协议独立于密钥交换,可被不同密钥交换协议使用。
  • NAT穿越技术通过添加UDP头部解决IPSec与NAT兼容性问题,支持单公网地址多隧道。
  • ESP加密后传输层不可见,需依赖NAT穿越实现端口区分。
  • 密钥管理IKE任务

IPSec VPN使用IKE自动协商SA的过程分为两个阶段:

  • 阶段一任务:
    • 双向ISAKMP SA协商,包含三部分:
      • 协商安全参数:包括加密算法、验证算法、DH组、身份认证方式及密钥生存周期
      • 建立初始SA
      • 交换计算密钥材料:通过DH算法交换公钥及随机数,生成身份认证密钥、数据加解密密钥、完整性校验密钥
    • 身份认证:通过后进入阶段二
  • 阶段二任务:
    • 生成两个单项IPSec SA用于保护数据
    • 协商内容:
      • 数据传输协议(AH/ESP)
      • 传输模式(传输模式/隧道模式)
      • 数据保护算法(加密算法、校验算法)
      • 密钥生存周期
    • 步骤:
      • 交换密钥计算材料
      • 生成密钥
      • 身份认证
  • IKE协商的两个阶段

    

对比项

阶段一

阶段二

SA类型

ISAKMP SA(IKE SA)

IPSec SA

模式

主模式(6报文)/野蛮模式(3报文)

快速模式(3报文)

保护对象

阶段二协商报文

用户数据

复用性

可保护多个阶段二协商

独立生成

报文总数

主模式+快速模式=9报文

野蛮模式+快速模式=6报文

2) ISAKMP报文携带的载荷
  • ISAKMP消息报头

ISAKMP报文采用火车式结构:

  • 报头固定字段:
    • 发起方Cookie:通过哈希算法(源IP+源端口+随机数+时间戳)生成前64位,用于身份标识且不可逆推
    • 应答方Cookie:首报文置零,后续报文由接收方生成
    • 特性:
      • 单次协商中Cookie不可变
      • 不同协商会话Cookie必然不同
  • 下一载荷字段:指示报头后首个载荷类型
  • 防篡改机制:Cookie变更将导致报文丢弃
  • 载荷类型

ISAKMP可携带的载荷类型包括:

  • SA载荷(安全联盟参数)
  • 密钥交换载荷
  • 身份认证载荷
  • 证书载荷(仅证书认证时存在)
  • 哈希/签名载荷
  • 随机数载荷
  • 通知/删除载荷
  • 版本号

    版本号字段包含主版本和次版本标识,无实际协商功能。

  • 交换类型

    交换类型字段用于标识阶段一的协商模式:

  • 主模式(值1)

野蛮模式(值2)

  • 该字段不参与阶段二(快速模式)标识。
  • 标志

    标志的最后三位具有特定功能:从最后一位开始依次为加密位、提交位和纯验证位

  • 加密位功能:值为1表示头部后面的所有载荷被加密,值为0表示明文传输
  • 提交位作用:确保被保护数据发送前完成协商,未完成协商则禁止发送数据
  • 纯验证位含义:允许特定机构(如政府公安)实施密钥恢复机制,可解密截获的报文
  • 报文ID

    第一阶段报文ID:全为零值

  • 第二阶段报文ID:由发起方生成随机值,用于唯一标识第二阶段状态
  • 报文长度定义:头部与所有载荷的总长度之和
  • 载荷头部

    载荷头部结构包含三个要素:

    • 下一载荷类型标识:指示后续载荷的数据类型
    • 当前载荷长度:本段数据的字节长度
    • 实际数据内容:具体传输的有效信息
  • 终止标识规则:当下一载荷类型值为零时,表示报文结束
3) 一个完整的ISAKMP报文结构

ISAKMP报文采用模块化结构:由头部和多个可扩展的载荷组成

  • 载荷数量特性:根据实际需求灵活配置,支持携带2-4个或更多载荷
  • 与IPV6报文结构的相似性:两者均采用头部+扩展头的设计,使IPV6原生支持IPSec加密功能
3.IKE协商第一阶段过程分析

1) IKE协商第一阶段目的及任务

阶段一核心目标:协商建立ISAKMP SA(或IKE SA)

  • 需完成的三个关键任务:
    • 加密套件协商
    • 密钥材料交换与生成
    • 通信双方身份认证
2) 加密套件:
  • 加密套件包含五个要素:
    • 加密算法
    • 哈希算法
    • DH组参数
    • 身份认证方式
    • SA生命周期
3) 交换密钥计算材料,生成密钥
  • 密钥生成分两步:
    • 交换计算材料:包含DH公钥和随机数
    • 生成最终密钥:基于共享材料进行密码运算
4) 身份认证
  • 认证阶段作用:验证通信双方身份的合法性
  • 典型认证方式:预共享密钥机制
5) 主模式六个报文

报文序号

功能分类

传输内容

方向

1-2

加密套件协商

发起方支持的加密套件列表

发起方→应答方

3-4

密钥材料交换

DH公钥与随机数

双向交互

5-6

身份认证

基于预共享密钥的认证信息

双向确认

6) 加密套件的选择
  • 加密套件选择原则:
    • 优先级判定标准:选择双方支持的最小策略编号
    • 安全配置建议:将高安全等级的套件配置为较小编号
7) 第1、2个ISAKMP报文
  • 首报文关键字段:
    • 发起方Cookie:用于标识会话
    • 加密套件列表:包含全部支持的策略组合
  • 应答方处理逻辑:从匹配的套件中选择策略编号最小的配置项
8) 身份认证密钥
  • 身份认证密钥(s key.ID)通过随机数算法计算生成
  • 计算要素包括预共享密钥和双方随机数,通过prf算法生成
  • s key ID杠d密钥作为中间材料使用,计算方式为:身份认证密钥+DH对称密钥+发起方cookie+应答方cookie
  • s key ID杠d密钥用于后续加密密钥和完整性校验密钥的计算
9) 完整性认证密钥和数据加解密密钥

密钥类型

计算要素

功能

算法特性

完整性认证密钥

s key ID + s key ID杠d + DH对称密钥

数据完整性校验

算法固定,不同算法添加常数不同

数据加解密密钥

s key ID + s key ID杠d + DH对称密钥

数据加密解密

AES/DES/3DES等加密算法实现

10) 身份认证过程
  • 身份认证步骤:将SA信息、cookie值及身份信息通过身份认证密钥进行散列计算
  • 发起方操作:生成散列值后附加身份ID,使用e密钥加密并通过a密钥校验完整性
  • 应答方验证:解密后通过cookie和SA信息验证身份,需双向认证(发起方→应答方→发起方)
  • 主模式六个报文中有两个加密报文,阶段一生成的密钥用于后续通信保护
11) 阶段一与阶段二的关系

阶段一生成的加密密钥和完整性校验密钥直接应用于阶段二的快速模式,实现安全参数协商。

12) 阶段二:快速模式
  • 核心目标:协商IPsec SA(安全关联)
  • 协商内容包括:
    • 协议类型(AH/ESP)
    • 工作模式(传输/隧道)
    • 加密算法与校验算法
    • 生命周期参数
13) 阶段二:快速模式任务

快速模式通过三个报文完成:

  • 发起方发送安全参数(含加密套件)及密钥计算材料
  • 应答方确认参数并返回验证信息
  • 双方确认SA建立
14) 阶段二:安全参数
  • 安全参数组成:协议类型、工作模式、加密算法、校验算法、生命周期
  • 报文保护机制:使用阶段一生成的e密钥加密和a密钥校验
  • 密钥材料更新:需重新生成DH公钥和随机数,确保前向安全性
4.IKE协商第二阶段过程分析
  • 第二阶段协商内容包括:proposal载荷、ESP加密算法、校验算法、传输/隧道模式选择、生命周期参数
  • 关键载荷构成:
    • KE载荷:包含DH公钥随机值
    • 身份ID载荷:用于通信双方身份标识
    • 哈希载荷:使用阶段一生成的完整性校验密钥对加密数据做认证
  • 哈希值功能:应答方通过该值完成报文完整性校验

五、IPSec协议概述

1.IPSec协议保护IP数据的方式

完整性校验哈希值用于应答方验证报文完整性,该值可见于报文特定字段。

2.eNSP新建拓扑

加密数据通过哈希值实现校验功能,该机制未在报文显式标注。第一阶段协商生成的密钥材料为校验基础。

3.密钥计算材料与身份认证
  • 答方处理流程:
    • 确认安全参数(SA)
    • 发送包含应答方公钥和随机数的密钥计算材料
    • 附加身份ID载荷
  • 密钥生成时机:收到第二个报文后,应答方可计算全部五个会话密钥
4.密钥计算与安全参数确认
  • 身份认证机制:通过R哈希载荷实现应答方身份验证
  • 发起方验证条件:
    • 安全参数已确认
    • 密钥材料完整接收
    • 具备身份ID及认证函数
5.身份认证与密钥保护

处理阶段

完成动作

剩余任务

第三个报文

安全参数确认

应答方认证发起方身份

密钥生成完成

附加发起方身份载荷

保护机制:所有报文参数受第一阶段密钥保护,实际内容不可见

6.实验平台与隧道模式

GRE over IPSec实验中隧道模式通过GRE实现,而纯IPSec实验需显式配置阶段二工作模式。后者需明确指定ESP封装协议、加密算法及完整性验证方式。

六、实验

实验配置差异:

  • 混合模式:GRE隧道隐式确定IPSec模式参数
  • 独立模式:需手动配置ESP协议参数及传输/隧道模式选项

http://www.xdnf.cn/news/1340497.html

相关文章:

  • 基于Matlab的饮料满瓶检测图像处理
  • 面试压力测试破解:如何从容应对棘手问题与挑战
  • 火语言 RPA 进阶功能:让自动化更实用​
  • 利用DeepSeek编写调用系统命令用正则表达式替换文件中文本的程序
  • vmware安装centos7
  • 大数据毕业设计选题推荐-基于大数据的鲍鱼多重生理特征数据可视化分析系统-Spark-Hadoop-Bigdata
  • 代码随想录算法训练营27天 | ​​56. 合并区间、738.单调递增的数字、968.监控二叉树(提高)
  • 嵌入式-中断的概念,优先级,编程-Day17
  • 亚马逊站外推广效能重构:自然排名提升的逻辑与实操边界
  • 底层逻辑颠覆者:Agentic BI如何通过“Data + AI Agent”架构重构数据价值链?
  • Trae AI 超级团队
  • matplotlib 6 - Gallery Images
  • 力扣905:按奇偶排序数组
  • 【GPT入门】第52课 openwebui安装与使用
  • postman接口自动化测试
  • redis在Spring中应用相关
  • Django ModelForm
  • C#基础编程核心知识点总结
  • 打破传统课程模式,IP变现的创新玩法 | 创客匠人
  • RabbitMQ面试精讲 Day 26:RabbitMQ监控体系建设
  • 从零开始的Agent学习(二)-增加文档输出功能
  • 36、供应链计划与执行优化 (军方后勤) - /供应链管理组件/military-logistics-scm
  • 34、扩展仓储管理系统 (跨境汽车零部件模拟) - /物流与仓储组件/extended-warehouse-management
  • 3D 环形旋转图片轮播(纯html,css,js)
  • 力扣hot100:无重复字符的最长子串,找到字符串中所有字母异位词(滑动窗口算法讲解)(3,438)
  • 从零开始理解 K 均值聚类:原理、实现与应用
  • 自学嵌入式第二十四天:数据结构(4)-栈
  • linux-ubuntu里docker的容器portainer容器建立后如何打开?
  • WSL的Ubuntu如何改名字
  • Ubuntu网络图标消失/以太网卡显示“未托管“