IKE SA和IPSec SA的区别

2023-10-28

刚接触IPSec的时候,一直很奇怪,为什么要做两阶段的协商?先协商出来一个IKE SA,然后再IKE SA的基础上协商出来一个IPSec SA。直接一步到位协商出IPSec SA不是很好吗?但是在实际应用中,直接协商IPSec SA就显得不是那么有效率了。

打个比方,某公司A有个子公司B,为了方便子公司B的员工访问总公司A的内部数据,在双方的安全网关上部署VPN,使用IPSec进行数据加密。如果双方都使用IKEv1,而且只有一个协商阶段,直接协商出IPSec SA,那么每一次协商可能都需要6个Main Mode消息和3个Quick Mode消息。由于SA是有超时时间的,这样每次协商都会产生大量的协商消息,降低了网络的利用率。而如果采用两阶段协商,只需要在网关间协商出一个IKE SA,然后用这个SA来为应用数据流协商IPSec SA,那么每个IPSec SA只需要一个Quick Mode即可。所以,两阶段的好处在于,可以通过第一阶段协商出IKE SA用作IPSec SA协商的载体,从而减少IPSec SA协商的开销。


那么IKE SA和IPSec SA的区别在哪儿呢?从定义上来看,IKE SA负责IPSec SA的建立和维护,起控制作用;IPSec SA负责具体的数据流加密。比如一个HTTP请求,可能最终需要用到IPSec SA定义的ESP协议和相关ESP加密算法。


IKE SA和IPSec SA协商的内容也是不一样的,如下:

1. IKEv1的IKE SA协商内容

参考:http://www.iana.org/assignments/ipsec-registry

a. 加密算法

b. 哈希算法

c. 认证方法 - 如证书认证、Pre-shared Key

d. PRF算法 - 用来产生加解密密钥

e. DH算法和参数

f. Key长度 - 某些算法,如AES-CBC的key长度是可变的,可以通过Attribute来协商Key长度

g. SA的生存时间


2. IKEv2的IKE SA协商内容

参考:http://www.iana.org/assignments/ikev2-parameters/ikev2-parameters.xml

a. 加密算法

b. PRF算法

c. Integrity算法

d. DH算法

e. ESN - Extended Sequence Numbers


3. IPSec SA的协商内容

参考:http://www.iana.org/assignments/isakmp-registry

a. ESP加密算法或AH完整性算法

b. 加密模式

c. 认证算法

d. SA生存时间

e. 压缩算法

f. DH算法和参数

g. 加密密钥长度

h. 认证密钥长度

以上均有部分内容是可选的,不是所有的参数都必须协商。上面的三个链接里都详细描述了IANA对每个阶段SA协商用到的参数,比如算法的编号等等。


http://blog.csdn.net/jiangwlee/article/details/7395903


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IKE SA和IPSec SA的区别 的相关文章

  • java线程安全问题分析、3种解决办法

    目录 一 线程不安全 1 1 代码 1 2 解析 解析 卖出不存在的票 解析 卖出相同的票 1 3 解决办法 二 解决方法1 同步代码块 2 1 代码 2 2 解析 三 解决方法2 同步方法 3 1 代码 3 2 说明 四 解决方法3 Lo
  • php如何实现mac端重签ipa,mac用终端对ipa包重新签名

    一年前写过一个用命令行对安卓的apk包重新签名的文章 网上是让用IResin这个软件 但是我用了总是重签名失败 报错warning resource rules has been deprecated in Mac OSX gt 10 10
  • Qml-------ApplicationWindow

    QML内的窗口元素 ApplicationWindow和window 此文章讲解一下ApplicationWindow的基础使用 导入模块 QtQuick Controls qt两个模块的定义与使用方法 import QtQuick Con
  • std::jthread与std::thread区别

    std jthread是C 20新引入的线程类 与 std thread 类似 或者说 jthread是对thread进一步的封装 功能更强大 std jthread的 j实际上是 joining的缩写 众所周知 std thread在其生
  • 创建线程的第一种方式:继承Thread类(含Thread类部分源码解析)

    创建线程的第一种方式 继承Thread类 定义一个类 继承Thread类 重写Thread类中的run方法 创建Thread类的实现类的对象 利用该对象调用Thread类中的start方法 运行结果 好了 接下来我们看源码 首先我们看一下T
  • gcc命令中参数c和o混合使用的详解

    操作系统 windows xp 软件 msys 编译器 gcc gcc c a c 编译成目标文件a o gcc o a a o 生成执行文件a exe gcc a c 生成执行文件a exe gcc o a c a c 编译成目标文件a
  • qml添加qmldir文件步骤

    1 写自定义控件 2 编写qmldir文件 3 在pro文件中添加模块路径 4 在mian cpp中加载qml之前添加模块路径 5 qml中引用自定义qml模块 6 效果如图 参考 参考 https blog csdn net qq 165
  • 机器学习量化应用:用回归策略预测价格

    我们已经知道 监督学习主要就是分类和回归两种方法 本文以支持向量机 support vector machine SVM 来说明 如何采取机器学习中回归方法来预测股票价格 这在传统量化中是根本不可能实现的 在机器学习领域却能达到50 以上的
  • 【QT专栏】QT中实现多线程的四种方式和线程同步

    目录 一 继承QThread 1 基本概念 2 操作流程 二 继承QObject 推荐 1 基本概念 2 操作流程 三 继承QRunnable 配合QThreadPool实现多线程 1 外界通信 2 QMetaObject invokeMe
  • ARM NOEN vfmaq_laneq_f32与vextq_f32指令例子

    vfmaq laneq f32是乘法运算相关指令 vextq f32是取数据相关指令 具体功能用文字描述比较麻烦 直接看个列子一下就懂了 所以在这里记录下来 float32x4 t sum vdupq n f32 0 sum 0 0 0 0

随机推荐

  • element的table组件二次封装,实现动态表头

    封装element的table组件 让其实现动态表头 由于后端传递过来的数据是表头跟数据分开的 而element的table组件是固定死表头的 跟ant design不一样 这怎么搞 只能自己二次封装了 封装思路 1 参照ant desig
  • p5.js炫酷背景动态js特效代码

    下载地址 p5 js炫酷背景动态特效代码 dd
  • 生产管理系统MES详细功能介绍

    MES通过集成各种功能模块 实现了生产过程的全面监控 优化和管理 MES系统在生产过程中被广泛应用 彻底改变了传统的生产方式 MES系统主要有哪些功能模块呢 小编将为大家详细介绍 实时数据采集与监控 MES系统通过连接各种传感器和设备 实时
  • C++开发环境搭建_Visual Studio

    环境搭建步骤 l 下载软件 l 安装软件 l 运行软件 1 下载软件 在百度搜索 visual studio 选择 如下图中的选项 进入Visual Studio 官网后 选择 下载Windows版 并选择Community 2017 社区
  • javafx集成Sqlite工具类,包含增删改查范例

    javafx集成Sqlite工具类 包含增删改查范例 技术分享交流 qq群 835259695 package com hq utils import com hq database entity CollectionBox import
  • 算法练习:707 设计链表(2022-09-23)

    707 设计链表 来源 力扣 LeetCode 链接 https leetcode cn problems design linked list 设计链表的实现 您可以选择使用单链表或双链表 单链表中的节点应该具有两个属性 val和next
  • SmartImageView的简单使用

    SmartImageView主要是为了加速从网上加载图片 支持根据URL地址加载图片 支持异步加载图片 支持图片缓存等 下载地址 http loopj com android smart image view 下载完成后拷贝到项目下的lib
  • nginx反向代理解决vue打包后运行产生的跨域问题

    代理简介 正向代理 客户端明确服务端地址 服务端接收请求时只清楚来自哪个代理服务 反向代理 隐藏服务端信息 访问者并不知道自己访问的时一个地址 反向实现 1 下载nginx 2 修改nginx conf文件 server server 监听
  • 解析excel的坑

    1 解析excel的时候因调用的方法不同导致解析excel的时候数据有时会少一行 hssfSheet getLastRowNum 最后一行行标 比行数小1 hssfSheet getRow k getLastCellNum 获取列数 比最后
  • C++音视频开发从放弃到入门(基于FFmpeg+OpenCV)

    前言 音视频开发一定要学C 吗 答案是肯定的 虽然其它语言也能搞音视频开发 甚至使用起来更简单 但 语言越高级 离真相就越远 当你的功能需求日益增多 程序的性能需求越来越迫切 你想进一步了解程序实现的细节时 使用其它语言往往会面临 无法解决
  • Pinely Round 2 (Div. 1 + Div. 2) A~D

    A Channel 题意 有n个订阅者 a个初始在线人数 q个上下线情况 问是否一定或有可能所有订阅者都阅读了新的帖子 思路 同时在线人数等于n时 一定都阅读了 输出YES 初始在线人数加上所有的上线人数 所有的 号 大于等于n的话输出MA
  • STL- 常用算法(拷贝和替换,算术生成,集合算法)

    目录 1 常用拷贝和替换算法 1 1copy 容器内指定范围的元素拷贝到另一容器中 1 2replace 将容器内指定范围的旧元素修改为新元素 1 3 replace if 将区间内满足条件的元素 替换成指定元素 1 4 swap 互换两个
  • Docker安装redis集群

    文章目录 1 Redis集群介绍 2 Redis 集群的数据分片 3 Redis 集群的主从复制模型 4 docker搭建Redis集群 3主3从 5 主从容错切换迁移案例 6 主从扩容案例 7 主从缩容案例 1 Redis集群介绍 Red
  • 时序预测

    时序预测 MATLAB实现PSO GRU 粒子群优化门控循环单元 时间序列预测 目录 时序预测 MATLAB实现PSO GRU 粒子群优化门控循环单元 时间序列预测 预测效果 基本介绍 模型介绍 PSO模型 GRU模型 PSO GRU模型
  • C++中的静态和动态多态

    之前学过继承 子类继承父类的属性 多态就是基于继承而来的 我们在如果只用继承 那么子类继承父类的各种属性在编译环节 就已经被确认了 导致代码不灵活 如果继承下来的某个子类不支持某种问题的解决 那么父类就需要重新编写代码 这样这个子类ok了
  • (四)为深度伪造预处理数据集

    目录 在Notebook上设置基础 提取视频帧 人脸检测和提取 下载项目文件 75 5 MB 深度伪造 使用深度学习在视频中将一个人的脸换成另一个人的脸 是当今使用人工智能的最有趣和最可怕的方式之一 虽然深度伪造可用于合法目的 但它们也可用
  • Redis新数据类型

    Bitmaps 1 简介 现代计算机用二进制 位 作为信息的基础单位 1个字节等于8位 例如 abc 字符串是由3个字节组成 但实际在计算机存储时将其用二进制表示 abc 分别对应的ASCII码分别是97 98 99 对应的二进制分别是01
  • C++实现简易图书馆管理系统

    目录 一 概要设计 二 详细设计 模块一 管理员模块 一 概要设计 二 详细设计 模块二 借阅者模块 一 概要设计 二 详细设计 模块三 初始界面模块 三 总结 一 概要设计 本程序为图书馆管理系统 按需求 本程序大致分为2个部分 其一是管
  • nodejs:三个点(...)是什么

    参考 JS中三个点 是什么鬼
  • IKE SA和IPSec SA的区别

    刚接触IPSec的时候 一直很奇怪 为什么要做两阶段的协商 先协商出来一个IKE SA 然后再IKE SA的基础上协商出来一个IPSec SA 直接一步到位协商出IPSec SA不是很好吗 但是在实际应用中 直接协商IPSec SA就显得不