数据传输安全-IKE工作过程

在前面的课程中,你已经掌握了:

  1. IPSec的目标:提供机密性、完整性、身份认证、防重放。

  2. IPSec的执行者:AH和ESP协议。

  3. IPSec的规则手册:SA(安全关联),包含了所有保护参数(算法、密钥、模式等)。

  4. SA的创建方式:手工配置(麻烦、不安全)或自动协商(IKE)

本课程就是深入讲解“自动协商”这个环节,即 IKE协议是如何工作的。它解决了最根本的问题:如何在不安全的网络上,安全地协商出那些需要用来保护网络安全的秘密参数(尤其是密钥)?

一、IKE的工作过程

1.IKE协议概述与基础

1.1  IKE定义

IKE是一种混合型协议,用于在IPSec通信双方之间,动态地、自动地建立、协商、管理和删除安全关联(SA)

1.2 IKE的组成

 IKE的组成:一个混合协议

IKE不是一个从零设计的协议,而是一个“集大成者”,它建立在由ISAKMP定义的框架上,并实现了OakleySKEME两种协议的一部分功能。

协议组件角色与贡献简单理解
ISAKMP
(Internet Security Association and Key Management Protocol)
定义了协商、建立、修改和删除SA的过程和报文格式(即“怎么谈”)。
注意:ISAKMP只提供了一个通用框架,它本身不定义具体的密钥交换方式或认证方式。
定义了语言的语法和结构。比如,问句怎么开头,答句怎么结尾。但它不管具体问什么内容。
Oakley描述了一系列被称为“模式”的密钥交换方法(即“用什么方法谈”),其核心是Diffie-Hellman密钥交换的多种变体。提供了多种具体的对话技巧。比如,如何通过三步对话达成一个共识,或者如何通过五步对话来达成。
SKEME提供了一种快速的密钥交换机制,并支持公钥加密认证等概念。提供了快速达成共识和验证对方身份的方法

结论:IKE = ISAKMP的框架 + Oakley的交换模式 + SKEME的共享和密钥更新技术

3.IKE的版本

IKE主要有两个版本:

IKEv1

  • 特点:功能强大且成熟,但协议较复杂,报文交换数量多,有多个模式(主模式、野蛮模式、快速模式)。

  • IKEv1协议直接使用ISAKMP定义的报文结构和交换模式。

IKEv2 (RFC 7296)

  • 是IKEv1的演进版本,目前已成为新部署项目的首选

  • 特点

    • 更简洁:交换次数更少(通常4次报文交换即可完成双向认证和IPSec SA建立)。

    • 更安全:修复了IKEv1的一些已知漏洞。

    • 更可靠:内置了 NAT-T(NAT穿越)支持和更强大的存活检测机制。

    • 效率更高:报文结构更优化。

2. IKE的报文结构

IKE报文是通过UDP协议传输的,其整体结构可以分解为以下三层:

| IP头部 | UDP头部 (源端口500, 目的端口500) | ISAKMP报文 |

其中最核心、最复杂的就是 ISAKMP报文

一个ISAKMP报文由 一个通用头部 和 一串链接起来的载荷 组成。

ISAKMP报文是IKEv1协议的载体,所有IKEv1的协商(主模式、野蛮模式、快速模式)都通过交换ISAKMP报文完成。其结构分为两大块:固定长度的通用头部 和 可变长度的载荷链

2.1通用头部

发起方:

应答方:

下一个载荷:

版本号:

交换类型:

标志:

报文ID:

报文长度:

2.2 载荷

载荷是挂在ISAKMP头部后面、真正携带协商信息的数据块。多种不同类型的载荷通过“下一个载荷”字段像链条一样连接起来。

载荷通用头部:每个载荷都以一个简单的头部开始:

  • 下一个载荷 (1字节):指向链中下一个载荷的类型。如果这是最后一个载荷,则该字段为0。

  • 保留 (1字节) |

  • 载荷长度 (2字节):当前载荷的总长度(包括本头部)。

3.IKE协商的两个阶段

阶段一:建立IKE SA

2.1 目的

  • 验证对端身份真实性。

  • 协商出一个双向的IKE SA(管理SA),用于保护第二阶段的通信。

2.2 两种模式

  • 主模式 - 6个报文

    • 特点:身份保护(Identity Protection),第5/6报文才交换身份信息且已加密。

    • 过程:三组报文交换(策略协商、DH交换、身份认证)。

  • 野蛮模式3个报文

    • 特点:速度快,但身份信息在明文阶段交换。

    • 适用场景:适合对端IP地址不固定(如动态IP)、且对身份暴露不敏感的情况。

2.3 IKE协商第一阶段过程分析

第1、2个报文:协商安全策略(明文交换)
  • 过程

    1. (报文1) 发起方(RA)将自己支持的所有IKE策略(一个或多个策略套件)放在SA载荷中发送给响应方(RB)。

      • 每个策略套件包含:加密算法(如AES)、散列算法(如SHA)、认证方法(如pre-share)、DH组(如group 14)、生存时间

    2. (报文2) 响应方(RB)收到后,在自己的策略库中寻找优先级最高且完全匹配的策略,并将该策略通过SA载荷发回给发起方。

  • 状态明文传输。此时尚未建立安全通道。

  • 结果:双方就保护IKE SA的安全参数达成一致。如果找不到匹配项,协商就此失败。

第3、4个报文:交换DH公共值和随机数(明文交换)
  • 目的:生成共享密钥的“种子”,为后续所有加密和认证提供基础。

  • 过程

    1. (报文3) 发起方(RA)生成一个DH私钥,计算出对应的DH公钥,放入KE载荷(Key Exchange)。同时,生成一个随机数Ni,放入Nonce载荷。一并发送给对方。

    2. (报文4) 响应方(RB)执行相同的操作:生成自己的DH私钥,计算DH公钥放入KE载荷,生成随机数Nr放入Nonce载荷,发回给发起方。

  • 状态明文传输。KE和Nonce载荷本身不需要加密,因为DH算法的安全性基于数学难题(离散对数)。

  • 结果

    • 双方各自使用对方的DH公钥和自己的DH私钥,通过DH算法独立计算出相同的共享秘密 g^ab这个值从未在网络上传输过。

    • 双方都拥有了两个随机数 Ni 和 Nr

DH算法

DH的安全性基于一个数学难题:计算离散对数在有限域中是非常困难的。我们用一个经典的“颜色混合”比喻来理解它:

  1. 公开约定公共参数

    • 通信双方(Alice和Bob)公开约定一种公共颜色(黄色)。这对应DH算法中的公共参数(一个大质数 p 和一个底数 g。在IKE中,这由选择的 DH组(Group) 决定。

  2. 各自选择私有数字

    • Alice秘密地选择一个私密数字(Private Key) a

    • Bob也秘密地选择自己的私密数字(Private Key) b

    • a 和 b 是核心秘密,永远不告诉任何人,也不在网络上传送。

  3. 计算并交换公共值

    • Alice用自己的私密数字 a 和公共颜色(黄色)进行混合,得到一种新的混合色(橘色)。她将橘色发送给Bob。

    • Bob用自己的私密数字 b 和公共颜色(黄色)进行混合,得到一种新的混合色(绿色)。他将绿色发送给Alice。

    • 这个过程对应数学运算:A = g^a mod p (Alice计算) 和 B = g^b mod p (Bob计算)。

    • 这里的 A 和 B 就是各自的 DH公钥,对应IKE报文中的 KE载荷,是在网络上明文传输的

  4. 双方计算最终共享秘密

    • Alice收到Bob的绿色后,再加入自己的私密数字 a 进行混合,得到最终的颜色(棕色)。

    • Bob收到Alice的橘色后,再加入自己的私密数字 b 进行混合,得到最终的颜色(同样是棕色)。

    • 这个过程对应数学运算:

      • Alice计算:B^a mod p = (g^b)^a mod p = g^{ba} mod p

      • Bob计算:A^b mod p = (g^a)^b mod p = g^{ab} mod p

    • 由于 g^{ab} = g^{ba},双方独立计算出了完全相同的数字,这个数字就是 DH共享秘密 g^{ab}

关键点:窃听者(Eve)可以看到公共颜色(黄色)、Alice的混合色(橘色)和Bob的混合色(绿色)。但从这些颜色中,她几乎无法分离出最终的棕色。数学上,从公钥 A 或 B 反推私钥 a 或 b(离散对数问题)在计算上是不可行的。

DH组定义了密钥交换的强度。组号越大,使用的质数 p 越大,计算出的共享秘密 g^{ab} 就越长,安全性越高,但计算开销也越大。(回顾)

第5、6个报文:身份认证(加密交换)
  • 目的验证对端身份的真实性。确认你正在和“正确的人”通信,而不是中间人。

  • 过程

    1. (密钥衍生) 在交换3、4报文后,双方已经可以计算出共享秘密 g^ab 并拥有随机数 Ni, Nr 和Cookie CKYi, CKYr。它们会使用一个伪随机函数(PRF),结合预共享密钥衍生出三把关键的密钥

      • SKEYID_e:用于加密后续IKE报文的密钥。

      • SKEYID_a:用于认证(完整性验证)后续IKE报文的密钥。

      • SKEYID_d:作为种子,用于衍生IPSec SA的密钥。
        例如:SKEYID = prf(pre-shared-key, Ni | Nr)

    2. (报文5 - 已加密) 发起方(RA)使用刚生成的 SKEYID_e 和 SKEYID_a 对ID载荷(身份信息,如IP地址)和Hash载荷进行计算和加密,然后发送给响应方。

      • Hash_I = prf(SKEYID, RA's_IP | RB's_IP | CKYi | CKYr | SA_offer | IDi)

    3. (报文6 - 已加密) 响应方(RB)收到后,先用 SKEYID_e 解密,再用相同的算法和本地信息计算一个Hash值。如果与自己收到的 Hash_I 完全一致,则证明:

      • 消息未被篡改(完整性)。

      • 发起方拥有正确的预共享密钥(身份认证)。
        验证通过后,响应方以同样方式发送自己的ID和Hash载荷给发起方进行验证。

  • 状态加密传输从第5个报文开始,所有载荷均被 SKEYID_e 加密,并用 SKEYID_a 进行认证。

  • 结果完成双向身份认证。至此,一个安全的、经过认证的IKE SA正式建立。

总结:

❓“DH交换是在哪个阶段完成的?为什么它不怕被窃听?”

"DH交换是在IKE阶段一的第3和第4个报文中完成的。

它不怕被窃听是因为其安全性基于计算离散对数的数学难题。虽然双方在网络上明文传输了各自的DH公钥(g^a mod p 和 g^b mod p),但窃听者无法从这些公钥中反算出双方的私钥 a 和 b,因此也就无法计算出双方最终协商出的共享秘密 g^{ab} mod p。这个共享秘密本身从未在链路上出现過。"

❓“IKE阶段一是如何实现身份认证的?”

"IKE阶段一主要通过验证对方是否拥有相同的预共享密钥或数字证书来实现身份认证。

以预共享密钥为例:

  1. 双方在完成DH交换后,会使用预共享密钥、交换的随机数(Nonce)等参数,衍生出一个认证密钥(SKEYID_a)。

  2. 随后,双方会计算一个哈希值(例如 Hash_I),这个哈希值的内容包含了身份信息和之前的协商参数,并用 SKEYID_a 作为密钥。

  3. 这个哈希值在加密通道中交换。接收方用相同的本地参数和预共享密钥重新计算一遍。

  4. 如果计算出的哈希值与对方发来的完全一致,就证明对方拥有正确的预共享密钥,身份认证通过。如果不一致,协商立即终止。"

❓“主模式和野蛮模式的主要区别是什么?”(野蛮模式更快但身份明文传输,且只有3个报文)

"主模式和野蛮模式的主要区别有三点:

  1. 报文数量与速度:主模式是6次报文交换,速度较慢;野蛮模式只有3次交换,速度更快。

  2. 身份保护:这是最核心的区别。主模式的身份交换(ID载荷)在加密后的第5、6报文中进行,隐藏了身份信息。而野蛮模式的身份信息在明文的第1、2报文中就交换了,无法提供身份保护。

  3. 适用场景:主模式更安全通用。野蛮模式通常用于对端IP地址不固定(如动态IP)且对身份信息暴露不敏感的特殊场景。"

阶段二:建立IPSec SA

2.3 目标

IKE SA的保护下,协商用于保护用户数据IPSec SA

2.4 快速模式 - 3个报文

  • 所有报文均被IKE SA的加密和认证功能所保护。

  • 协商IPSec SA的具体参数:协议(AH/ESP)、模式(传输/隧道)、算法、生存期、受保护的数据流等。

2.5 IKE阶段二(快速模式)过程

第1个报文:发起提议
  • 目的:发起方(RA)提出保护用户数据的IPSec SA策略

  • 载荷内容

    • SA载荷:包含一个或多个提议载荷变换载荷,详细定义了IPSec SA的参数:

      • 安全协议:是使用 ESP 还是 AH

      • 封装模式:是传输模式还是隧道模式

      • 加密算法:用于数据的算法(如AES-256)和密钥长度。

      • 认证算法:用于数据完整性的算法(如SHA256)。

      • 生存时间:IPSec SA的有效期(时间或流量)。

    • Nonce载荷:发送一个新的随机数 Ni2,用于保证交换的新鲜性,防止重放攻击,并参与新密钥的生成。

    • (可选) KE载荷:如果启用了完美前向保密(PFS),则会包含一个新的DH公钥,用于一次全新的DH交换。

    • ID载荷:标识要保护的数据流(通常由ACL定义),例如 源IP:192.168.1.0/24 -> 目标IP: 192.168.2.0/24

    • Hash载荷:用于对消息进行认证。

第2个报文:响应应答
  • 目的:响应方(RB)接受发起方的提案,并参与生成新密钥。

  • 过程

    1. RB 收到报文后,用IKE SA的密钥(SKEYID_eSKEYID_a)进行解密和验证

    2. 在自己的配置中查找与收到的提案匹配的IPSec策略

    3. 如果找到,RB 会生成自己的随机数 Nr2

    4. RB 构建一个回应报文,其载荷结构与报文1类似:

      • SA载荷:指明所接受的提议。

      • Nonce载荷:携带 Nr2

      • (可选) KE载荷:如果对方请求了PFS,则也返回自己的新DH公钥。

      • ID载荷:标识数据流。

      • Hash载荷:计算一个新的Hash值进行回应和认证。

第3个报文:确认
  • 目的:发起方(RA)对响应方的应答进行最终确认,完成协商。

  • 过程

    1. RA 收到报文后,同样进行解密和验证

    2. 验证通过后,RA 发送第三个也是最后一个报文。

    3. 这个报文通常只包含一个Hash载荷,作为对整个快速模式交换的确认。

  • 结果:收到此报文后,双方都认为IPSec SA已成功建立,可以开始用来保护用户数据了。

总结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920594.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

翻译-同位协同克里金算法

同点协同克里金法 副标题: 地统计学课程 主要内容: 同点协同克里金法 摘要 同点协同克里金法是一种多元地统计学技术,用于借助次要变量(协变量)来估算主要变量。本课程介绍了同点协同克里金法,并将其与简单克里金法和简单协同克里金法进行了比较。通过一个假设的案例…

国家统计局数据分析01——机器学习

我们前面爬取过国家统计局数据爬取——机器学习-CSDN博客的数据,我们接下来就对爬取的数据进行分析。 这是一个完整的数据分析代码,主要用于加载、清洗和探索政府统计数据。让我为你详细解释每个部分: 1. 导入必要的库 import pandas as pd # 数据处理和分析的核心库 imp…

【杂谈】-混沌理论能否赋予机器差异化思考能力?

混沌理论能否赋予机器差异化思考能力? 文章目录混沌理论能否赋予机器差异化思考能力?1、AI与结构化思维的本质特征2、人类思维的独特优势3、混沌算法的创新实践4、混沌算法的作用机理5、混沌算法的应用实例5.1 音乐创作革新5.2 图像生成突破5.3 科学发现…

jQuery.print插件:网页内容打印与导出指南

本文还有配套的精品资源,点击获取 简介:在网页开发中,为了实现内容的打印或导出,可以利用jQuery.print插件,该插件提供了一个简易的解决方案,尤其适用于表格数据。本指南详细介绍了如何使用jQuery.print…

w嵌入式分享合集125

自己的原文哦~ https://blog.51cto.com/whaosoft/14165530 一、常用电路基础公式 1.欧姆定律计算 计算电阻电路中电流、电压、电阻和功率之间的关系。 欧姆定律解释了电压、电流和电阻之间的关系,即通过导体两点间的电流与这两点间的电势差成正比。说…

Docker 核心技术:Union File System

大家好,我是费益洲。UnionFS 作为 Docker 的技术核心之一,实现了 Docker 镜像的分层轻量化构建、容器资源的隔离复用等目的。本文将从核心原理、主流技术实现简单介绍 UnionFS。 核心原理 Linux 的联合文件系统(Union File System&#xff0c…

MongoDB 文档模型设计:JSON 结构的灵活性与陷阱

MongoDB 文档模型设计:JSON 结构的灵活性与陷阱第一章:MongoDB 文档模型基础与核心特性1.1 MongoDB 文档模型的哲学基础1.2 文档模型的优势分析1.3 与关系型数据库的深度对比第二章:文档设计模式与最佳实践2.1 嵌入式模式(Embeddi…

基于SQL大型数据库的智能问答系统优化

一、食用指南 基于SQL数据库的智能问答系统设计与实现介绍了在数据库中创建表格数据问答系统的基本方法,我们可以向该系统提出关于数据库数据的问题,最终获得自然语言答案。 为了针对数据库编写有效的查询,我们需要向模型提供表名、表结构和…

【计算机网络】前端基础知识Cookie、localStorage、sessionStorage 以及 Token

一、先搞懂:为什么需要这些“存储工具”? 网页是“无状态”的——比如你登录一个网站,浏览器和服务器每次通信都是独立的,服务器默认记不住你是谁。为了让服务器“记住”用户状态(比如登录状态、购物车内容&#xff09…

【语法】【C+V】【mermaid】本身常用图表类型用法快查【CSDN不支持,VSCODE可用】

文章目录 Mermaid 简介Mermaid 由三部分组成Mermaid 的使用方法复杂图表结构的技巧饼图简介饼图语法饼图示例雷达图简介雷达图语法雷达图语法细节标题轴曲线选项 雷达图示例时间线简介时间线语法时间线示例树形图简介树形图语法树形图示例数据包图简介数据包图语法1&#xff1a…

不止效率工具:AI 在文化创作中如何重构 “灵感逻辑”?

一、引言1.1 AI 创作的崛起在当今时代,AI 技术在文化创作领域的迅猛发展已成为不可忽视的现象。从文字创作领域中,AI 能够快速生成小说、诗歌,一些新闻媒体也开始运用 AI 撰写新闻稿件;到视觉艺术方面,AI 绘画软件能依…

软考-系统架构设计师 专家系统(ES)详细讲解

个人博客:blogs.wurp.top 一、ES的核心概念与价值 1. 什么是专家系统(ES)? 专家系统是一种模拟人类专家解决特定领域问题的智能计算机程序系统。它运用特定领域内大量专家水平的知识和经验,进行推理和判断&#xff…

Vue3+TS+Element-Plus+el-tree创建树节点

1、一级树应用效果&#xff1a;代码&#xff1a;MaterialCategory.vue<script setup lang"ts" name"MaterialCategory"> ...... // 创建树&#xff08;一级树&#xff09; const createTree (dataList: IMaterialCategory[]) > {// 将原始数据转…

C++基础(④链表反转(链表 + 迭代 / 递归))

链表反转&#xff08;链表 迭代 / 递归&#xff09; 题目描述&#xff1a;给你单链表的头节点 head&#xff0c;请你反转链表&#xff0c;并返回反转后的链表头节点。 示例&#xff1a;输入链表 1→2→3→4→5 → 输出 5→4→3→2→1。 思路提示&#xff1a;迭代法&#xff1a…

面向企业级产品开发的自动化脚本实战

引言&#xff1a; 在产品开发团队中&#xff0c;设计师、产品经理和工程师之间的协作常常伴随着大量重复性工作&#xff1a;手动整理设计稿链接、更新产品需求文档、同步项目状态...这些工作不仅耗时&#xff0c;还容易出错。本文将带你编写一个Python脚本&#xff0c;自动化这…

科技赋能生态,智慧守护农林,汇岭生态开启农林产业现代化新篇章

在我国&#xff0c;农林业作为国民经济的基础产业&#xff0c;不仅关乎国家粮食安全与生态平衡&#xff0c;更是乡村振兴战略实施的核心领域。近年来&#xff0c;国家高度重视“三农”问题&#xff0c;大力推进乡村振兴战略&#xff0c;强调要实现农业农村现代化&#xff0c;促…

贪心算法面试常见问题分类解析

一、贪心算法问题 1. 跳跃游戏系列 能否到达终点: def canJump(nums):max_reach = 0for i in range(len(nums)):if i > max_reach:return Falsemax_reach = max(max_reach, i + nums[i])return True 最少步数: def jump(nums):jumps = end = max_pos = 0for i in range(l…

【3D入门-指标篇上】3D 网格重建评估指标详解与通俗比喻

一、指标对比表格指标名称核心定义计算关键步骤通俗比喻典型应用场景Chamfer距离双向平均几何距离采样点→计算最近邻距离→取平均沙滩沙粒的平均距离差评估服装轮廓、褶皱的细微差异法向量一致性表面法向量方向匹配度计算法向量点积→取绝对值→平均刺猬刺的朝向一致程度评估布…

补题报告08

题目背景某天&#xff0c;奇异博士在纽约圣所研究维山帝之书时&#xff0c;发现了连接不同多元宇宙的传送门网络......题目描述经研究&#xff0c;奇异博士发现每个传送门都有固定的 “时间代价”—— 正数表示双向通行&#xff08;往返时间代价相同均为正值&#xff09;&#…

马斯克杀入AI编程!xAI新模型Grok Code Fast 1发布,深度评测:速度、价格与API上手指南

AI 编程的赛道&#xff0c;又迎来一位重量级玩家——马斯克的 xAI。 就在最近&#xff0c;xAI 悄然发布了一款专为编码而生的新模型&#xff1a;Grok Code Fast 1。这款模型最初以代号“Sonic”在内部流传&#xff0c;如今正式亮相&#xff0c;便凭借其 256K 超长上下文、惊人的…