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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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…

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

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

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

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

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

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

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…

C++ Qt开发:QNetworkInterface网络接口组件

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QNetworkInterface组件实现查询详细的…

Ubuntu18/20运行ORB-SLAM3

ORB-SLAM3复现(ubuntu18/20) 文章目录 ORB-SLAM3复现(ubuntu18/20)1 坐标系与外参Intrinsic parameters2 内参Intrinsic parameters2.1 相机内参① 针孔模型Pinhole② KannalaBrandt8模型③ Rectified相机 2.2 IMU内参 3 VI标定—外参3.1 Visual calibration3.2 Inertial calib…

软件测试工程师的一天工作内容是什么?

相信但凡提出这个问题,基本上都是准备入行或转行,又各种纠结的小伙伴。测试工程师到底都些干啥?加班多不多?薪资高不高?前景怎么样?有没有35岁焦虑问题?让我们挨个问题盘一下。 一、测试人员的日常 9:30 到公司 打…

[贰],万能开篇HelloWorld

1,新建项目 File/New/Project Android/Android Application Project 输入程序名字HelloWorld Next Next 选择Blank Activity 修改为HelloWorldActivity 2,异常点 No resource found that matches the given name Theme.AppCompat.Light import andro…

vue3引入高德地图

首先注册高德key https://console.amap.com/dev/key/a vue项目中安转地图包 pnpm i amap/amap-jsapi-loader -S 先说最重要核心,踩雷过 页面中需写入以下代码,现在注册的高德key要求强制写入安全密钥 window._AMapSecurityConfig {securityJsCode…

CorelDRAW Essentials2024使用简单易学的图形软件,让设计充满乐趣

CorelDRAW Essentials 2024使用简单易学的图形软件,让设计充满乐趣 创作引人注目的海报、卡片、社交媒体图片等。 增强功能!支持文件导入/导出新增功能!支持 WebP 文件,提高网页兼容性并优化图像交付增强功能!显著的…

Independent Variable Dependent Variable

自变量(Independent Variable) -----------> 因变量(Dependent Variable) 数据 ----------------------------------------------结果,报告等等

Raingad IM即时聊天/即时通讯网站源码,附带系统搭建教程

支持功能 支持单聊和群聊,支持发送表情、图片、语音、视频和文件消息单聊支持消息已读未读的状态显示,在线状态显示群聊创建、删除和群成员管理、群公告、群禁言等支持置顶联系人,消息免打扰;支持设置新消息声音提醒,…