IPsec VPN协议框架

news2024/10/7 17:26:54

IPsec是IETF(Internet Engineering Task Force)制定的一组开放的网络安全协议。它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合,包括认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)两个安全协议、密钥交换和用于验证及加密的一些算法等。

IPsec框架如下所示:

通过这些协议,在两个设备之间建立一条IPSec隧道。数据通过IPSec隧道进行转发,实现保护数据的安全性。从以下几个方面保障了用户业务数据在Internet中的安全传输:

数据真实性:接收方验证发送方身份是否合法。

数据机密性:发送方对数据进行加密,以密文的形式在Internet上传送,接收方对接收的加密数据进行解密后处理或直接转发。

数据完整性:接收方对接收的数据进行验证,以判定报文是否被篡改。

防重放:接收方拒绝旧的或重复的数据包,防止恶意用户通过重复发送捕获到的数据包所进行的攻击。

一、安全协议

IPSec使用认证头AH和封装安全载荷ESP两种安全协议来传输和封装数据,提供认证或加密等安全服务。

AH是报文头验证协议,主要提供的功能有数据源验证、数据完整性校验和防报文重放功能;然而,AH并不加密所保护的数据报文。AH协议对数据包以及认证密钥进行HASH计算,接收方接收带有计算结果的数据包后采用同样的HASH对原有数据进行计算,比较前后HASH结果,若一致则保证了数据来源认证和完整性校验,AH协议的数据完整性校验范围为整个IP报文。

ESP协议是封装安全载荷协议,主要提供的功能有加密、数据源验证、数据完整性校验和防报文重放功能。与AH不同的是,ESP协议将数据中有效载荷进行加密后再封装到数据包中,以保证数据机密性,但ESP没有对IP报文头内容进行保护,除非采用了隧道模式。

安全特性

AHESP

协议号

51

50

数据完整性校验

支持(验证整个IP报文)

支持(传输模式不验证IP头,隧道模式验证整个IP报文)

数据源验证

支持

支持

数据加密

不支持

支持

防报文重放攻击

支持

支持

IPSec NAT-T(NAT穿越)

不支持

支持

二、封装模式

1、传输模式

在传输模式下,AH头或ESP头被插入到IP头与传输层协议头之间,保护TCP/UDP/ICMP负载。由于传输模式未添加额外的IP头,所以原始报文中的IP地址在加密后报文的IP头中可见。

传输模式不改变报文头,故隧道的源和目的地址必须与IP报文头中的源和目的地址一致,所以只适合两台主机或一台主机和一台VPN网关之间通信。

2、隧道模式

隧道模式下,AH头或ESP头被插到原始IP头之前,另外生成一个新的报文头放到AH头或ESP头之前,保护IP头和负载。

隧道模式隐藏了原始IP报文头,采用了新的报文头,新报文头中的源地址、目的地址为隧道两端的公网IP地址,所以适用于两台VPN网关之间或一台主机与一台VPN网关之间的通信。

在隧道模式下,AH协议的完整性验证范围为包括新增IP头在内的整个IP报文。ESP协议验证报文的完整性检查部分包括ESP头、原IP头、传输层协议头、数据和ESP报尾但不包括新IP头,因此ESP协议无法保证新IP头的安全。ESP的加密部分包括原IP头传输层协议头、数据和ESP报尾。

3、传输模式和隧道模式比较

在安全性方面,隧道模式优于传输模式,隧道模式可以完全对原始IP数据包进行验证和加密,隧道模式可以隐藏内部IP地址以及协议类型端口等;

在性能方面,隧道模式由于有一个额外的报文头部,因此比传输模式要占用更多带宽;

在应用场景方面,传输模式主要用于两台主机或一台主机和一台VPN网关之间通信,隧道模式主要用于两台VPN网关之间或一台主机与一台VPN网关之间的通信。

三、加密和验证算法

IPsec为了保证数据传输的安全性,对数据进行了加密以及验证,加密可以保证数据的机密性,防止被窃取,验证可以保证数据的真实性,防止数据被篡改或仿冒。

1、加密

发送方采用加密算法和加密密钥对原始数据进行加密封装,接收方收到报文,使用相同的加密算法和加密密钥将报文逆向恢复,即解密。

对称密钥可以手工配置或者通过DH密钥交换算法生成,并在两端设备共享。

IPsec使用ESP协议对IP报文内容进行加密,主要包括DES、3DES、AES、SM4,其中DES、3DES安全性低,存在安全风险,不推荐使用。

对比项DES3DESAESSM4
密钥长度56位168位128、192、256位128位
安全级别

2、验证

IPsec通过HMAC功能,通过比较ICV验证数据包完整性和真实性。加密与验证通常是配合使用。

发送方将加密后的报文通过验证算法和对称密钥生成ICV,IP报文和ICV一起发给接收方,接收方将两者分离,通过一样的验证算法和对称密钥对加密报文进行处理,同样得到ICV,对比两个ICV是否相符,若相符则验证通过,否则丢弃。

验证的对称加密密钥可以手动配置,也可以通过DH算法生成并在两端设备共享。

常用的验证算法有MD5、SHA、SM3,其中MD5、SHA1安全性低,存在安全风险,不推荐使用。

对比项MD5SHA1SHA2SM3
签名长度128位160位

SHA2-256:256位

SHA2-384:384位

SHA2-512:512位

256位
安全级别

四、密钥交换

1、密钥交换方式

1.1、带外共享密钥

在IPsec两方手工配置静态的加密和验证密钥,双方通过带外共享方式(例如电话邮件方式)保证密钥的一致性,缺点是安全性低、可扩展性差,在点到多点组网中工作量大,为了提升网络安全性,还需周期更换密钥,工作量更复杂。

1.2、使用一个安全的连接分发密钥

通过IKE协议自动协商密钥。IKE采用DH算法在不安全的网络上安全地分发密钥。这种方式配置简单,可扩展性好,特别是在大型动态的网络环境下此优点更加突出。同时,通信双方通过交换密钥交换材料来计算共享的密钥,即使第三方截获了双方用于计算密钥的所有交换数据,也无法计算出真正的密钥。

2、IKE协议

IKE协议建立在ISAKMP(Internet Security Association and Key Management Protocol)定义框架上,是基于UDP的应用层协议。它为IPSec提供了自动协商密钥、建立IPSec安全联盟的服务,能够简化IPSec的使用和管理,大大简化IPSec的配置和维护工作。

IKE协议最厉害的地方莫过于其永远不会在不安全的网络上传送密钥,而是通过交换数据,双方再计算出共享密钥,核心计算是DH交换技术,即使被截获了交换数据也无法计算出来真正的密钥。

3、DH密钥交换

DH算法用于产生密钥材料,通信双方交换密钥材料,各自计算出完全相同的对称密钥,用于加密和验证,任何时候,不交换真正的密钥。

DH算法是用于密钥交换,而不是对IP报文加密解密。


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

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

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

相关文章

dolphinscheduler海豚调度(五)seatunnel案例

seatunnel作为新一代流行的数据集成工具,其功能非常强大且简单易用,今天演示一下如何通过dolphinscheduler创建并运行seatunnel任务 本次dolphinscheduler和seatunnel均部署在同一机器上的单机版本 1、环境配置 打开dolphinscheduler安装目录&#xf…

【Python】新手入门(6):变量与数据类型

【Python】新手入门(6):变量与数据类型 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448…

Java多线程——synchronized、volatile 保障可见性

目录 引出synchronized、volatile 保障可见性Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java多线程——synchronized、volatile 保障可见性 synchronized、volatile 保障可见性 原子性:在一次或者多次操作时…

嵌入式学习-FreeRTOS-Day1

一、重点 1、VCC和GND VCC: 1、电路中为电源,供应电压 2、3.3v-5v 3、数字信号中用1表示GND: 1、表示地线 2、一般为0v 3、数字信号中用0表示2、电容和电阻 电容 存储电荷 存储能量: 电容器可以在其两个导体板(极…

03.axios数据提交和错误处理

一.axios常用请求方法和数据提交 1. 想要提交数据,先来了解什么是请求方法 请求方法是一些固定单词的英文,例如:GET,POST,PUT,DELETE,PATCH(这些都是http协议规定的)&am…

【Web】浅聊JDBC的SPI机制是怎么实现的——DriverManager

目录 前言 分析 前言 【Web】浅浅地聊JDBC java.sql.Driver的SPI后门-CSDN博客 上篇文章我们做到了知其然,知道了JDBC有SPI机制,并且可以利用其Driver后门 这篇文章希望可以做到知其所以然,对JDBC的SPI机制的来源做到心里有数 分析 先是…

开源玩具总动员-本博客的知识关系图

作为一个非全职编程爱好者,基本是把计算机周边当做高档大玩具来玩的,顺便带着有兴趣的学生搞一搞学习。这篇文章作为全站的一个导航篇,把本博客的主干要点汇聚一下。从小学开始一直与计算机结缘。通过各种业余时间,慢慢地把感兴趣…

一篇了解电容的使用

目录 一、电容理论基础 1.电容的本质 2.电容量的大小 (1)电容的单位 (2)电容量的决定式 3.电容的特点 4.电容的串并联 5.电容器的类型 6.电容实际的电路模型 二、电容器的选型 1.安装方式 2.电容值 3.电容的类型 4…

备战蓝桥杯————二分搜索(一)

引言 一、二分查找 基本概念 代码框架 二、二分查找 题目描述 解题思路及代码 结果展示 三、寻找左侧边界的二分搜索 使用背景 基本代码 引言 在计算机科学的世界里,二分查找算法无疑是一种经典且强大的工具。它以其高效的性能,在有序数据集中…

Java毕业设计 基于SpringBoot 众筹网

Java毕业设计 基于SpringBoot 众筹网 SpringBoot 众筹网 功能介绍 注册 邮箱验证码 登录 忘记密码 首页 图片轮播 关于我们 项目列表 发布项目 我的添加项目 提交审核 已在募捐 项目详情 项目介绍 项目进展 捐赠列表 评论 新闻列表 发布新闻 新闻详情 评论新闻 联系我们 提交…

Android开发工程师面试题,2024年Android开发陷入饱和

前言 马上快到金三银四都春招阶段了,在这本就是跳槽、找工作的年后黄金时间,大多数求职者都早早做好年后求职的准备,其中不乏有年前早早辞了工作准备年后跳槽的有经验的职场老人们,也有一批即将毕业的应届毕业生的职场新人们。 …

redis使用笔记

redis使用笔记 1、Redis简介1.1 含义1.2 功能1.3 特点 2. 常用的数据结构2.1 HASH 3 redis接口定义3.1 redisReply3.2 redisContext3.3 redisCommand 4 实践操作4.1 遇到问题4.1.1 Get哈希的时候返回error4.1.2 长度一直为0,str没法打印(未解决&#xff…

合泰HT66F2390----定时器中断学习笔记

前言 无需多言 直接开始定时器中断 的学习 通过上次的PWM学习&#xff0c;上次用的是周期型TM定时器模块 这次使用标准型TM定时器模块&#xff08;STM&#xff09; 代码 #include <HT66F2390.h>void Timer0_Init(void){_stm0c0 0b00001000;_stm0c1 0b11000001;_stm…

Android岗面试,android内存优化面试题

前言 曾听过很多人说Android学习很简单&#xff0c;做个App就上手了&#xff0c;工作机会多&#xff0c;毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。 在工作初期&#xff0c;工作主要是按照业务需求实现App页面的功能&#xff0c;按照设…

22万字大模型面经整理+答案

槽位对齐&#xff08;slot alignment&#xff09; 在text2sql任务中&#xff0c;槽位对齐&#xff08;slot alignment&#xff09;通常指的是将自然语言问题中的关键信息&#xff08;槽位&#xff09;与数据库中的列名或API调用中的参数进行匹配的过程。这个过程中&#xff0c…

PTA L2-001 紧急救援

作为一个城市的应急救援队伍的负责人&#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候&#xff0c;你的任务是带领你的…

leetcode 热题 100_最小覆盖子串

题解一&#xff1a; 双指针滑动窗口&#xff1a;暴力解法——用双指针来表示字符串s中的子串首尾&#xff0c;遍历所有子串并与字符串t判断是否符合条件。我们可以对遍历和判断的过程进行优化&#xff0c;首先是遍历&#xff0c;右指针先移动直到涵盖所以需要的字母&#xff0c…

大数据技术学习笔记(五)—— MapReduce(2)

目录 1 MapReduce 的数据流1.1 数据流走向1.2 InputFormat 数据输入1.2.1 FileInputFormat 切片源码、机制1.2.2 TextInputFormat 读数据源码、机制1.2.3 CombineTextInputFormat 切片机制 1.3 OutputFormat 数据输出1.3.1 OutputFormat 实现类1.3.2 自定义 OutputFormat 2 Map…

【Software Platform Bundle】

https://www.ni.com/zh-cn/support/downloads/software-products/download.software-platform-bundle.html