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

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技术与实践——李学昭

相关文章:

IPsec VPN之安全联盟

一、何为安全联盟 IPsec在两个端点建立安全通信,此时这两个端点被称为IPsec对等体。安全联盟,即SA,是指通信对等体之间对某些要素的约定,定义了两个对等体之间要用何种安全协议、IP报文的封装方式、加密和验证算法。SA是IPsec的基…...

012集——显示高考天数倒计时——vba实现

以下代码实现高考倒计时: Sub 高考倒计时() 高考日期 CDate("06,07," & Year(Date)) If Date > 高考日期 Then高考日期 CDate("06-07-" & Year(Date) 1) End If 年月日 Year(Date) & "年" & Month(Date) &am…...

1.1 深度学习和神经网络

首先要说的是:深度学习的内容,真的不难。你要坚持下去。 神经网络 这就是一个神经网络。里面的白色圆圈就是神经元。神经元是其中最小的单位。 神经网络 单层神经网络: 感知机 (双层神经网络) 全连接层: …...

sentinel docker 基础配置学习

1:去官网下载 Releases alibaba/Sentinel GitHub 2:保存到linux 3:编写dockerfile FROM openjdk:8-jreLABEL authors"xxx" #第二步创建一个文件夹Z RUN mkdir /app #第三步复制jar 到app 下 COPY xxxxxx-1.8.7.jar /app/#第四…...

与缓存相关的状态码

与缓存相关的 HTTP 状态码主要涉及客户端和服务器之间对资源缓存的处理和验证,以下是一些常见的与缓存相关的状态码: 1. **200 OK**: - 当服务器成功处理了客户端的请求时,会返回状态码 200 OK。这意味着请求成功,…...

影刀_如何点击桌面图片上的指定区域

问题:如图,桌面上有一张打开的图片,如何点击“J&T极兔快递”的左上角和右下角? 总体流程: 1、用“影刀离线OCR”指令获取目标区域坐标值。 分别是:x1,y1,x2,y2 2、用快捷键ctrlalt键获取图片左上角的…...

linux安装部署mmdetection,亲测可行

安装了两天,最后终于成功,这里有一些注意事项,版本对应啥的: 这里是mmdetection与MMCV的版本对应关系: mmdet与mmcv的版本对应有一些包因为版本问题直接pip下载不了,这里直接跑到官网去复制下载命令&#…...

redis常见问题

目录 一、缓存穿透 二、缓存击穿 三、缓存雪崩 四、redis做为缓存,mysql的数据如何与redis进行同步呢?(双写一致性) 五、redis做为缓存,数据的持久化是怎么做的? 六、数据过期策略 七、数据淘汰策略 八、Redis分布式锁使用场景 九、Redis分布…...

Java虚拟机(JVM)元数据区存放的内容

类元数据 元数据区(在HotSpot虚拟机中也称为Metaspace)主要存放了类的元数据信息,如类的名称、访问修饰符、常量池、字段描述、方法描述等。 运行时常量池 运行时常量池是每个类或接口的常量池表的运行时表示形式,包含了若干种不…...

wifi连接上后是怎么提供网络的?

干了六个月的网络协议栈,又回到了wifi老本行,所以我最近又开始研读 Android wifi fwk的源码了 之前还在干wifi的时候就思考过一个问题,wifi区别于蓝牙的一个很明显的点是,wifi可以提供 access to Internet 所以我想看看wifi连接成…...

TQTT X310 软件无线电设备的FLASH固件更新方法--WIN和UBUNTU环境

TQTT X310 除了PCIE口全部兼容USRP 官方的X310,并配备两块UBX160射频子板以及GPSDO。TQTT X310可以直接使用官方的固件,但是不支持官方的固件升级命令。这篇BLOG提供烧写刷新FLASH的方法。 这里分别给出WIN下和UBUNTU下升级的软件和方法 WIN环境下烧写…...

【DevOps基础篇】Docker进阶高级技巧使用

【DevOps基础篇】Docker进阶高级技巧使用 目录 【DevOps基础篇】Docker进阶高级技巧使用清理垃圾删除悬空卷删除已退出的容器删除悬空镜像自动删除交互式容器检查Docker资源美观的JSON和jq处理显示整个Docker信息仅显示插件列出连接到‘bridge’网络的所有容器的IP地址监视容器…...

20240308-2-校招前端面试常见问题-网络及浏览器

校招前端面试常见问题【4】——网络及浏览器 1、网络相关 Q:请简述一下 HTTP 协议,以及 HTTP1.0/1.1/2.0/3.0 的区别? HTTP 协议:超文本传输协议,使用 TCP/IP 协议传输数据。是一个应用层的协议。 HTTP1.0&#xff…...

智慧农业产业园区规划建设方案

背景 近年来,我国农业现代化水平稳步提高,有力促进了农业稳定发展和农民持续增收,为战胜各种困难和风险、保持社会大局稳定奠定了坚实基础。从传统农业向现代农业转型是必要的,与时俱进,现代农牧业示范一体化建设项目的建设有利于这一转型的推进,根据发展设施农业的需求…...

【Git】项目源码迁移到另一个gitlab(保留原来提交历史记录)

目录 前情提要迁移方案IDEA远程仓库管理团队其他成员切换gitgit命令操作界面 前情提要 公司原来是自己私有部署的gitlab。有了研发云后就希望将代码推送到研发云的代码仓库上。这时候需要迁移并保留原来提交的历史记录。 迁移方案 登录新的gitlab(代码仓库)新建空白项目获取…...

python基础9_序列类型

回顾: 什么是变量?,有什么用? 可以变化的量, 就是个容器,多次变化,方便后续使用, 前面介绍了哪些数据类型? bool, str, int, float 用什么函数查看数据的类型? a "hello" print(type(a)) 到了这一步,,我们认识了哪些数据类型呢? int 整型(整数), float…...

基于AI软件平台 HEGERLS智能托盘四向车机器人物流仓储解决方案持续升级

随着各大中小型企业对仓储需求的日趋复杂,柔性、离散的物流子系统也不断涌现,各种多类型的智能移动机器人、自动化仓储装备大量陆续的应用于物流行业中,但仅仅依靠传统的物流技术和单点的智能化设备,已经无法更有效的应对这些挑战…...

技术小知识:云计算服务下的IaaS,PaaS,SaaS⑥

一、云计算 云计算起源仿照天空的云朵聚集,意为对大量服务器的远程管理。以便能对服务器做空间、资源的最大动态协调利用和降低操作执行命令的复杂度。 二、云计算衍生下的服务 在服务器以一种云的形式存在,衍生除了很多服务提供,以便用户可以…...

Pytorch学习 day07(神经网络基本骨架的搭建、2D卷积操作、2D卷积层)

神经网络基本骨架的搭建 Module:给所有的神经网络提供一个基本的骨架,所有神经网络都需要继承Module,并定义_ _ init _ _方法、 forward() 方法在_ _ init _ _方法中定义,卷积层的具体变换,在forward() 方法中定义&am…...

StarUML6.0.1使用

1. 简介 作为一个软件开发人员,平时免不了做一定的软件设计,标准做法就是采用UML来设计: 讨论功能流程时采用时序图、活动图来表达;做业务功能架构时采用组件图来表达;做系统部署架构时采用部署图来表达;做…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...