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ÿ…...
智慧农业产业园区规划建设方案
背景 近年来,我国农业现代化水平稳步提高,有力促进了农业稳定发展和农民持续增收,为战胜各种困难和风险、保持社会大局稳定奠定了坚实基础。从传统农业向现代农业转型是必要的,与时俱进,现代农牧业示范一体化建设项目的建设有利于这一转型的推进,根据发展设施农业的需求…...
【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来设计: 讨论功能流程时采用时序图、活动图来表达;做业务功能架构时采用组件图来表达;做系统部署架构时采用部署图来表达;做…...
AGI游戏智能落地失败率高达67%?SITS2026专家团复盘11个真实项目,提炼出2个关键决策阈值与1个不可逆拐点
第一章:SITS2026分享:AGI与游戏智能 2026奇点智能技术大会(https://ml-summit.org) AGI在游戏环境中的验证价值 通用人工智能(AGI)并非仅面向抽象推理任务,游戏世界正成为其核心验证场域。开放世界RPG、实时策略与多…...
2026年,泉州创业者资源对接会哪个好用?
创业这条道路,就像是在茫茫大海中航行,充满了未知和挑战。对于泉州的创业者们来说,找到靠谱的资源对接会,就如同找到了一座明亮的灯塔,能指引我们少走弯路。最近就有不少朋友问我,2026年泉州创业者资源对接…...
D3KeyHelper暗黑3技能连点器:从零开始掌握智能自动化战斗
D3KeyHelper暗黑3技能连点器:从零开始掌握智能自动化战斗 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 想要在暗黑破坏神3中轻松实现技…...
不用PS也能玩转迪文屏:PPT制作适配图片的另类技巧
不用PS也能玩转迪文屏:PPT制作适配图片的另类技巧 在物联网设备开发中,迪文屏因其性价比高、接口丰富而广受欢迎。但对于非设计背景的开发者来说,为800480分辨率的迪文屏准备适配图片往往成为最大痛点。传统方案依赖Photoshop等专业工具&…...
从ZkClient到Curator:Spring Boot项目里ZooKeeper客户端选型与实战避坑指南
从ZkClient到Curator:Spring Boot项目中ZooKeeper客户端的技术选型与实战指南 在分布式系统架构设计中,服务协调与状态管理一直是核心挑战之一。作为分布式协调服务的经典解决方案,ZooKeeper凭借其强一致性、高可用性和丰富的通知机制&#x…...
人形机器人半马:进步与失控并存,短板暴露促进行业迭代
北京亦庄:机器人半马现意外在北京亦庄南海子公园的终点线前,“天工Ultra”曾是去年北京亦庄人形机器人半程马拉松的王者,以2小时40分42秒的成绩夺冠。但在今年的比赛中,它触线后未停下,径直冲入路边绿化带,…...
告别重启大法:详解CentOS/Ubuntu网络配置文件的正确修改姿势与避坑指南
告别重启大法:详解CentOS/Ubuntu网络配置文件的正确修改姿势与避坑指南 每次修改完Linux服务器网络配置后,你是否总在纠结该用systemctl restart network还是nmcli?是否经历过配置明明正确却死活不生效的抓狂时刻?本文将带你深入理…...
用不到50块钱的FM模块,我把旧音箱改造成了无线家庭广播系统
50元预算打造全屋无线音频系统:旧音箱改造实战指南 每次看到角落里积灰的老式音箱,总觉得弃之可惜,用起来又嫌接线麻烦。直到发现市面上那些不到50元的FM模块,突然意识到——这些"电子古董"完全可以变身全家覆盖的无线广…...
别再只会用HttpClient了!用C# Socket手搓一个TCP聊天室(WinForms实战)
用C# Socket构建WinForms聊天室:从零实现TCP通信实战 第一次接触网络编程时,看着那些晦涩的协议文档和黑底白字的命令行界面,总觉得离实际应用很远。直到把Socket和WinForms结合起来,才发现原来网络通信可以如此直观——消息在文本…...
3步解锁旧Mac潜能:OpenCore Legacy Patcher完整使用指南
3步解锁旧Mac潜能:OpenCore Legacy Patcher完整使用指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款强大的开源…...
