IPsec VPN协议框架

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.mzph.cn/news/724341.shtml

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

相关文章

java排序简单总结和推荐使用套路(数据排序,结构体排序)

了解int和Integer的区别 int是Java的基本数据类型,用于表示整数值。Integer是int的包装类,它是一个对象,可以包含一个int值并提供一些额外的功能。 Java集合框架中的集合类(如List、Set、Map)只能存储对象,…

计算机基础专升本笔记十三-PowerPoint常用快捷键大全

计算机基础专升本笔记十三-PowerPoint常用快捷键大全 PowerPoint常用快捷键 按键作用Ctrl A全选表格Ctrl B字体加粗Ctrl C复制Ctrl D文本、图形、图片等距复制Ctrl E居中Ctrl F查找Ctrl G组合,可统一移动,改变大小Ctrl H隐藏鼠标箭头Ctrl I斜…

第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 统计子矩阵

#include<iostream> #include<algorithm> #include<cstring> #include<string> #include<vector> #include<queue>using namespace std;int cnt,temp; int n,m,K; int a[505][505]; int pre[505][505];//二维前缀和void sol() {cin>>…

如何从产品的角度做好内容营销?媒介盒子支招

内容运营就是指将生产传播内容并进行重组&#xff0c;去满足用户的内容消费需求&#xff0c;想要提高内容运营的效果&#xff0c;媒介盒子认为可以从产品出发&#xff0c;将内容运营与品牌产品相结合。那么应该怎么做呢&#xff1f;接下来就让媒介盒子告诉你。 一、 场景化内容…

MySQL 空间碎片详解

文章目录 前言1. 空间碎片如何产生2. 空间碎片如何查看3. 空间碎片如何回收后记 前言 MySQL 数据库在运行过程中&#xff0c;随着时间的推移&#xff0c;可能会出现空间碎片的问题。空间碎片是指数据库表中不再使用的空间&#xff0c;但由于各种原因&#xff0c;这些空间并没有…

小程序嵌套H5-真机突然无法使用

今天测试反馈了一个问题&#xff0c;测试环境的小程序突然就登录不了了。我自己拿手机扫码登录是正常的&#xff0c;用其他同事的手机扫描登录也是正常。 下面是排查的路线&#xff1a; 1、其他环境使用测试手机扫码登录是否正常&#xff1f;(正常) 2、H5地址改为本地IP&#…

【漏洞复现】CVE-2023-27178 GDidees CMS任意文件上传漏洞复现

漏洞描述 漏洞编号&#xff1a;CVE-2023-27178 GDidees CMS是法国一款开源的网站管理工具&#xff0c;可用于创建站点、照片或视频库。GDidees CMS 3.9.1及以下版本存在任意文件上传漏洞&#xff0c;允许未经授权的攻击者上传精心构造的文件并执行任意代码。 影响版本 GDide…

Linux运维_Bash脚本_编译安装Glib-2.78.4

Linux运维_Bash脚本_编译安装Glib-2.78.4 Bash (Bourne Again Shell) 是一个解释器&#xff0c;负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件&#xff0c;并于 1989 年发布的免费软件&#xff0c;作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux 和…

国内企业怎么创建WhatsApp Business账号?

什么是WhatsApp Business 账号&#xff1f; WhatsApp是世界上最受欢迎的消息应用程序之一&#xff0c;拥有超过25亿月活用户。近年来&#xff0c;WhatsApp 推出了一项新产品——WhatsApp Business 。 那么&#xff0c;WhatsApp Business 究竟是什么呢&#xff1f;WhatsApp Bu…

【EI会议征稿通知】第四届人工智能,大数据与算法国际学术会议 (CAIBDA 2024)

第四届人工智能&#xff0c;大数据与算法国际学术会议 (CAIBDA 2024) 2024 4th International Conference on Artificial Intelligence, Big Data and Algorithms 由河南省科学院、河南大学主办&#xff0c;河南省科学院智慧创制研究所、河南大学学术发展部、河南大学人工智能…

计算机等级考试:信息安全技术 知识点一

美国联邦政府颁布数字签名标准(Digital Signature Standard&#xff0c;DSS)的年份是1994美国联邦政府颁布高级加密标准(Advanced Encryption Standard&#xff0c;AES)的年份是2001产生认证码的函数类型通常有3类:消息加密、消息认证码和哈希函数。自主访问控制&#xff0c;Di…

C++之std::any

std::any 是 C++17 引入的一种通用类型包装,允许在运行时存储和检索任何类型的值。你可以将不同类型的值放入 std::any 对象中,然后在需要时检索出原始类型。 以下是使用 std::any 的基本用法: 使用 std::any 存储和检索自定义类型: #include <iostream> #include &…

Android工作资料,这份火爆全网的452页Android Framework内核解析

为什么想跳槽&#xff1f; 简单说一下当时的状况&#xff0c;我在这家公司做了两年多&#xff0c;这两年多完成了一个大项目&#xff0c;作为开发的核心主力&#xff0c;开发压力很大&#xff0c;特别是项目上线前的几个月是非常辛苦&#xff0c;几乎每晚都要加班到12点以后&a…

前方高能,又一波Smartbi签约喜报来袭

近期&#xff0c;交通银行、厦门国际银行、中原农业保险、江苏中天科技等多家知名企业签约Smartbi&#xff0c;携手Smartbi实现数据驱动业务新增长。 Smartbi数10年专注于商业智能BI与大数据分析软件与服务&#xff0c;为各行各业提供提供一站式商业智能平台&#xff08;PaaS&a…

Android 中get请求网络数据 详细举例

请求链接 https://api.bilibili.com/x/web-interface/ranking 1.添加网络权限 依赖等 implementation com.squareup.okhttp3:okhttp:4.9.3 implementation com.google.code.gson:gson:2.8.92.写请求类network package com.example.myapplication;import android.graphics.Bi…

nav2_gps_waypoint_follower_demo 不能在ros2 humble中直接使用的解决方法

GIT上的nav2_gps_waypoint_follower_demo是基于ros-iron编写的&#xff0c;其中followGpsWaypoints(wps) service只能在Iron上使用。 解决方法&#xff1a; 第一步&#xff1a;将interactive_waypoint_follower.py修改为如下代码&#xff1a; import rclpy from rclpy.node …

前端语义化标签及实例

常用的语义化标签的以下几种&#xff1a; header、nav、article、section、aside、footer、abbr、dfn、address、del、ins、pre、meter、progress <header> 定义文章的页眉信息 <header><h1>我的网站标题</h1><nav><ul><li><a …

windows 字符编码

LPSTR char* LPCSTR const char* LPWSTR wchar_t* LPCWSTR const wchar_t* LPTSTR TCHAR* LPCTSTR const TCHAR*STD_OUTPUT_HANDLE 标准输出句柄 STD_INTPUT_HANDLE 标准输入句柄 STD_ERROR_HANDLE 标准错误句柄 windows 使用的是utf-16 linux 使用的是utf-8 wch…

4. 使用zap替换gin框架默认的日志并配置日志切割

文章目录 一、gin默认的中间件二、基于zap的中间件三、在gin项目中使用zap 本文将介绍在基于gin框架开发的项目中如何配置并使用zap来接收gin框架默认的日志以及如何配置日志切割。 我们在基于gin框架开发项目时通常都会选择使用专业的日志库来记录项目中的日志&#xff0c;go…

leancloud云存储如何接入App Inventor 2?

提问&#xff1a;leancloud如何应用到App Inventor 2&#xff1f; LeanCloud 能够高效存取海量级 JSON 对象、二进制文件、地理位置等数据。其内置的行级 ACL 权限控制&#xff0c;以及通用的用户及角色管理体系&#xff0c;可以快速实现安全而灵活的数据访问。 根据官方文档&a…