IPsec VPN之安全联盟

一、何为安全联盟

IPsec在两个端点建立安全通信,此时这两个端点被称为IPsec对等体。安全联盟,即SA,是指通信对等体之间对某些要素的约定,定义了两个对等体之间要用何种安全协议、IP报文的封装方式、加密和验证算法。SA是IPsec的基础,也是其本质。对等体之间通过IPsec安全传输数据的前提是在对等体之间成功建立SA。

SA是单向逻辑连接,一般情况下要成对建立,即入方向报文的SA和出方向报文的SA,为了在对等体A和对等体B之间建立IPSec隧道,需要建立两个安全联盟,其中,SA1规定了从对等体A发送到对等体B的数据采取的保护方式,SA2规定了从对等体B发送到对等体A的数据采取的保护方式。

SA的个数还与安全协议有关,若只使用AH或者ESP保护两个对等实体之间的流量,则每个对等实体有连个S,每个方向一个,若对等体同时使用了AH和ESP,那么每个对等实体需要4个,每个方向两个,分别对应AH和ESP。

IPsec为每一个SA打上了唯一的三元组标识,来区分不同方向的SA,三元组包括了SPI(安全参数索引)、目的IP地址和使用的安全协议号(AH或ESP),SPI是唯一标识SA而生成的一个32比特的数值,被封装在AH报文头和ESP报文头中。

1、手工配置

所谓手工配置就是用户在对等体两端手工配置参数,两端参数匹配和协商通过即可建立IPsec SA,手工配置方式较为复杂,适用于小型静态环境。

2、自动协商

由IKE生成和维护,即IKE方式,通信双方基于各自配置的IPsec策略匹配和协商建立SA,不需要用户干预。IKE建立在Internet安全联盟和密钥管理协议ISAKMP定义的框架上,是基于UDP(User Datagram Protocol)的应用层协议。它为IPSec提供了自动协商密钥、建立IPSec安全联盟的服务,能够简化IPSec的配置和维护工作。分为IKEv1、IKEv2,后者比前者效率高。

3、两者差异

对比项手工配置自动协商
加密/验证密钥配置和刷新方式易出错,密钥管理成本高密钥通过DH算法生成,动态刷新,密钥管理成本低
SPI取值手动配置随机生成
生存周期无生成周期限制,SA永久存在由双方的生成周期参数控制,SA动态刷新
安全性
适用场景小型静态环境小、中、大型网络

二、IKEv1协商安全联盟

由阶段1为阶段2做准备,阶段1建立了IKE SA,建立完成后对等体间的ISAKMP消息都通过加密和验证,保证了阶段2的协商,阶段2主要是建立用来传输数据的IPsec SA。

1、IKEv1协商阶段1

①协商建立IKE SA的参数,包括了加密算法、验证算法、身份认证方法、认证算法、DH组标识、IKE SA生存周期等;

②使用DH算法交换密钥材料,并生成密钥。对等体双发使用这些密钥材料各自生成用于对ISAKMP消息加密和验证的对称密钥;

③对等体之间身份认证,使用预共享密钥、数字证书或者数字信封认证等方式验证设备身份。

IKEv1阶段1协商有两种模式,分别为主模式和野蛮模式。

①查找匹配提议不包括IKE SA生存周期;

②交换密钥信息,不同身份认证方法的密钥计算方式是不同的,最终会产生三个密钥,SKEYID_a,SKEYID_e,SKEYID_d,SKEYID_a是ISAKMP消息完整性校验密钥,SKEYID_e是ISAKMP消息加密密钥,SKEYID_d用于衍生出IPsec报文的加密和验证密钥。

与主模式相比,野蛮模式减少了交换信息的数目,提高了协商的速度,但是没有对身份信息进行加密保护。

2、IKEv1协商阶段2

阶段2目的是建立安全传输数据的IPsec SA,并为数据传输衍生出密钥,这一阶段采用了快速模式,该阶段使用阶段1的SKEYID_a对ISAKMP消息的完整性和身份进行校验,使用SKEYID_e对ISAKMP消息进行加密。

①协商发起方发送本端的安全参数和身份认证信息:安全参数包括被保护的数据流、安全协议、加密算法和认证算法等需要协商的参数。身份认证信息包括第一阶段计算出的密钥和第二阶段产生的密钥材料等,可以再次认证对等体。

②协商响应方发送确认的安全参数和身份认证信息并生成新的密钥:IPSec SA数据传输需要的加密、验证密钥由第一阶段产生的密钥、SPI、协议等参数衍生得出,以保证每个IPSec SA都有自己独一无二的密钥。

如果启用PFS(完美向前保密),则需要再次应用DH算法计算出一个共享密钥,然后参与上述计算,因此在参数协商时要为PFS协商DH密钥组,防止SKEYID_d泄露导致IPsec VPN受到侵犯。

③发送方发送确认信息,确认与响应方可以通信,协商结束。

三、IKEv2协商安全联盟

IKEv1无论是主模式+快速模式,还是野蛮模式+快速模式,前者至少需要9条消息,后者至少需要6条消息,因此IKEv2简化了过程,最少需要4条就可以完成一对IPsec SA的建立。

1、初始交换

正常情况下,IKEv2通过初始交换就可以完成第一对IPSec SA的协商建立。包括了IKE SA初始交换(IKE_SA_INIT交换)和IKE认证交换(IKE_AUTH交换)。

①第一对(IKE_SA_INIT):完成IKE SA的参数协商,包括协商加密和验证算法,交换临时随机数和DH交换。最后生成3三密钥:

SKEYID_a用于第二对消息完整性校验;

SKEYID_e用于加密第二对消息;

SKEYID_d用于衍生出IPsec报文的加密和验证密钥。

②第二对(IKE_AUTH):以加密方式完成身份认证、对前两条信息的认证和IPSec SA的参数协商。

2、创建子SA交换

当一个IKE SA需要创建多对IPSec SA时,需要使用创建子SA交换来协商多于一对的IPSec SA。另外,创建子SA交换还可以用于IKE SA的重协商。

创建子SA交换包含一个交换两条消息,对应IKEv1协商阶段2,交换的发起者可以是初始交换的协商发起方,也可以是初始交换的协商响应方。创建子SA交换必须在初始交换完成后进行,交换消息由初始交换协商的密钥进行保护。

如果启用PFS,创建子SA交换需要额外进行一次DH交换,生成新的密钥材料。生成密钥材料后,子SA的所有密钥都从这个密钥材料衍生出来。

3、通知交换

运行IKE协商的两端有时会传递一些控制信息,例如错误信息或者通告信息,这些信息在IKEv2中是通过通知交换完成的。通知交换必须在IKE SA保护下进行,也就是说通知交换只能发生在初始交换之后。

四、IKEv1和IKEv2对比


参考资料:防火墙和VPN技术与实践——李学昭

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

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

相关文章

k8s中storageClass存储介绍

目录 一.storageclass产生背景 二.storageClass的具体使用 1.创建NFS共享目录和服务 2.创建Service Account来管控NFS provisioner在k8s集群中运行的权限 3.创建StorageClass来建立PVC并调用NFS provisioner进行预定的工作 4..创建NFS provisioner来共享NFS并建立PV 将PV…

IOS面试题object-c 51-60

51. 阐述常见的 Objective-C 的数据类型 ? Objective-C的数据类型有NSString,NSNumber,NSArray,NSMutableArray,NSData等等,这些都是class,创建后便是对象,而C语言的基本数据类型int…

使用jar命令删除.jar文件中的重复的类和目录并重新打包

引言: android项目,引入的 .jar包 和 .aar中 有相同的类,导致编译冲突,由于这些依赖项没有上传到Maven仓库,无法使用 exclude 排除,只能尝试修改jar文件,删除重复的代码,再重新打包…

CACLP预告 | 飞凌嵌入式与您相约山城重庆

第二十一届中国国际检验医学暨输血仪器试剂博览会(CACLP)将于2024年3月16日-18日在重庆国际博览中心举行。本次会议将探讨科技创新趋势,展示最新成果,发现和挖掘颠覆性技术和创新产品,引领实验医学体外诊断科技创新和未…

电脑资料管理软件(5个高效批量管理电脑资料的方法)

企业电脑资料管理是企业一大难题,为什么这样说? 首先,企业电脑资料的数量庞大且种类繁多。 其次,电脑资料的安全性和保密性要求高。 再者,电脑资料的管理涉及到多个部门和员工的协作。 ...... 针对此类情况很多企业…

MySQL 优化建议

MySQL 优化是一个涵盖多个方面的广泛主题,包括查询优化、表结构优化、索引优化、配置优化以及硬件和存储优化等。以下是一些关键的 MySQL 优化建议: 1. 查询优化 避免 SELECT:只选择需要的列,而不是所有列。使用 LIMIT 分页&…

CODESYS双通气缸功能块(ST源代码)

博途PLC双通气缸功能块请参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/136415539https://rxxw-control.blog.csdn.net/article/details/136415539CODESYS 结构变量使用 https://rxxw-control.blog.csdn.net/article/details/126248829

【Python】Python Astar算法生成最短路径GPS轨迹

简介 最短路径问题是计算机科学中一个经典问题,它涉及找到图中两点之间距离最短的路徑。在实际应用中,最短路径算法用于解决广泛的问题,例如导航、物流和网络优化。 步骤 1:加载道路网络数据 要计算最短路径,我们需…

JetPack入门

先导入依赖 implementation("androidx.lifecycle:lifecycle-extensions:2.2.0") 1.使用LifeCycle解耦页面与组件 Activity package com.tiger.lifecycle;import android.annotation.SuppressLint; import android.os.Bundle; import android.os.SystemClock; impo…

[Python人工智能] 四十二.命名实体识别 (3)基于Bert+BiLSTM-CRF的中文实体识别万字详解(异常解决中)

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解如何实现中文命名实体识别研究,构建BiGRU-CRF模型实现。这篇文章将继续以中文语料为主,介绍融合Bert的实体识别研究,使用bert4keras和kears包来构建Bert+BiLSTM-CRF模型。然而,该代码最终结…

【Haproxy】Haproxy的配置和应用

HAProxy介绍 HAProxy是法国开发者威利塔罗(Willy Tarreau)在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计&a…

python | %d,%2d,%-2d,%.2d,%02d的区别

1)%d :普通输出整型 2)%2d:2为整型的宽度,不足2位向左补空格 3)%-2d:2为整型的宽度,不足2位向右补空格 4)%.2d:最少输出2位,不足2位则在前面补…

10个高级的SQL查询方法

大家好,SQL 是管理和分析关系数据库的基本工具。掌握基本的SQL命令能够完成简单的数据查询和操作,但是如果想从数据中提取更有价值的信息,数据分析工作者应该深入学习和掌握高级的SQL技巧。 1.窗口函数 窗口函数是指在SQL查询中对一组相关行…

【排序】七大排序表格比较

排序 时间复杂度 空间复杂度 最坏时间复杂度 最好时间复杂度 稳定性 插入排序 O(n) O(1) O(n) O(n) 稳定 希尔排序 O(nlogn)-O(n)取决于增量序列 O(1) O(n^1.3) O(nlogn) 不稳定 选择排序 O(n) O(1) O(n) O(n) 不稳定 冒泡排序 O(n) O(1) O(n) O(n…

[eslint error] ‘v-model‘ should be on a new line.

错误详情 错误原因 此问题是由于.eslintrc.js文件中的vue/max-attributes-per-line配置错误产生的 esline默认要求属性单独开一行 错误解决 所以解决的方法有两个一个是遵从eslint默认规则让属性新开一行,能解决问题 但是我不喜欢看这样子的代码,所以我只好去改掉eslint的规…

2024.02.05校招 实习 内推 面经

绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、校招 | 京东2024校招这些岗位持续热招中(内推) 校招 | 京东2024校招这些岗位持续热招中(内推) 2、校招 | 科捷智能2024全球校园招聘进行…

什么是数据采集与监视控制系统(SCADA)?

SCADA数据采集是一种用于监控和控制工业过程的系统。它可以实时从现场设备获得数据并将其传输到中央计算机,以便进行监控和控制。SCADA数据采集系统通常使用传感器、仪表和控制器收集各种类型的数据,例如温度、压力、流量等,然后将这些数据汇…

chrome插件:离线安装/详细步骤

一、工具按钮/三个点,拓展程序,管理拓展程序,加在已解压的拓展程序 添加后即可使用 二、工具按钮/三个点,拓展程序,管理拓展程序,拖放已解压的文件/Modheader 拖放后出现的页面 点击图标,查看…

JavaScript版本

JavaScript 由 Brendan Eich 于 1995 年发明,并于 1997 年成为 ECMA 标准。 ECMAScript 是该语言的官方名称。 从 2015 年起,ECMAScript 按年命名(ECMAScript 2015)。 ECMAScript Editions 版本官方名称描述1ECMAScript 1 (199…

SpringCloud基础

SpringCloud基础环境 1、基本环境版本选择 Java: Java17;spring cloud:2023.0.0;spring boot:3.2.0;cloud alibaba:2022.0.0.0-RC2;Maven:3.9;Mysql&#x…