计算机网络-IPSec VPN基本概念

news2024/12/29 9:23:52

企业分支之间经常有互联的需求,企业互联的方式很多,可以使用专线线路或者Internet线路。部分企业从成本和需求出发会选择使用Internet线路进行互联,但是使用Internet线路存在安全风险,如何保障数据在传输时不会被窃取?

前面我们已经学习了GRE的简单应用了,但是在GRE隧道中不会对报文进行加密因此通过抓包是可以看到数据的报文信息,那怎么确保信息数据的安全呢?

一、IPSec基本概念

1.1 IPSec简介

IPsec(IP Security)协议族是IETF制定的一系列安全协议,它为端到端IP报文交互提供了基于密码学的、可互操作的、高质量的安全保护机制。通过对数据加密认证,IPsec使得数据能够在Internet网络上安全的传输。IPsec VPN技术可以和多种VPN技术结合使用,使得企业互联更加灵活安全。

IPSec隧道
IPSec隧道
GRE Over IPSec
GRE Over IPSec

IPSec不是一个单独的协议,它给出了IP网络上数据安全的一整套体系结构,包括AH(Authentication Header)、ESP(Encapsulating Security Payload)、IKE(Internet Key Exchange)等协议。

IPSec体系结构
IPSec体系结构

IPSec通过加密与验证等方式,从以下几个方面保障了用户业务数据在Internet中的安全传输:

  • 数据来源验证:接收方验证发送方身份是否合法:
  • 数据加密:发送方对数据进行加密,以密文的形式在nternet上传送,接收方对接收的加密数据进行解密后处理或直接转发;
  • 数据完整性:接收方对接收的数据进行验证,以判定报文是否被改;
  • 抗重放:接收方拒绝旧的或重复的数据包,防止恶意用户通过重复发送捕获到的数据包所进行的攻击。

1.2 数据加密

数据加密方式简介: 数据加密可以避免数据转发时被读取。数据加密一般有两种方案:

  • 对称加密:使用同一个密码加密/解密,效率很高,但是对称加密在互相交互密钥时存在密钥被截取的风险。
  • 非对称加密:使用公钥加密,私钥解密,安全性很高但是加解密效率很低。

这里不对数据加密进行过深的探讨,毕竟我也不是专业的。

数据加密方式
数据加密方式

1.3 数据认证

数据认证方式简介: 数据认证的主要目的是确认数据是否被篡改,数据认证主要基于Hash算法。

  • 数据通过Hash算法计算出一个唯一的Hash值,Hash值携带在数据中转发给对端。
  • 对端设备对数据重新进行Hash,得出Hash值。将收到的Hash值与计算出的Hash值进行比对,一致说明没有被篡改。
数据认证方式简介
数据认证方式简介

IPsec提供了两种安全机制:加密和认证。

  • IPsec采用对称加密算法对数据进行加密和解密。数据发送方和接收方使用相同的密钥进行加密、解密。
  • IPsec采用HMAC(Hash-based Message Authentication Code)功能,比较数字签名进行数据完整性和真实性认证。
数据加密与认证
数据加密与认证

1.4 IPsec加密基本思路

IPsec同时使用对称加密与非对称加密,保证了安全也兼顾了性能。

  • 将对称加密所用的密钥,使用非对称算法加密并传递。
  • 数据通过交互后的对称密钥加密。
IPsec加密基本思路
IPsec加密基本思路

简单说就是双方通过使用非对称加密算法对同一密码进行加密得到一个对称秘钥,然后使用该对称秘钥对数据进行加密。一个前提就是密码是双方知道的,一般还是通过口头告知、文档等形式获取。

1.5 安全联盟介绍

SA(Security Association,安全联盟) 可以帮助IPsec对特定要素进行约定,比如:加密算法使用DES,认证算法使用MD5,封装方式使用Tunnel等。

IPsec技术在数据加密,数据验证,数据封装等方面有多种实现方式或算法,两端的设备使用IPsec进行通信时需要保证一致的加密算法,验证算法等。因此需要一种机制帮助两端设备协商这些参数。

建立IPsec SA一般有两种方式:

  • 手工方式:手工方式建立IPsec SA管理成本很高,加密验证方式需要手工配置,手工刷新SA,且SA信息永久存在安全性较低,适用于小型网络。
  • IKE方式:IKE方式建立IPsec SA管理成本比较低,加密验证方式通过DH算法生成,SA信息有生成周期,且SA动态刷新,适用于小型,中大型网络。

IKE SA的主要作用是构建一条安全的通道,用于交互IPsec SA。

IPsec SA,由一个三元组来唯一标识,这个三元组包括安全参数索引SPI(Security Parameter Index)、目的IP地址和使用的安全协议号(AH或ESP)。

前面我们说到了IPSec框架中涉及到数据加密和认证,而实际情况下加密算法和认证算法很多,而IPSec中必须保证两端算法一致才能协商成功,那怎么协商呢?就是通过SA来定义,通过在SA中指定加密算法、认证算法、封装模式、传输层协议等内容。而在IPSec中有两个阶段:IKE阶段和IPSec阶段,两个是承上启下的作用。

1.6 密钥交换介绍

IPSec需要交互一个双方认可的对称秘钥,那怎么交互呢?

现网中交互对称密钥一般会使用密钥分发协议:IKE(Internet Key Exchange,因特网密钥交换)。

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

密钥交换介绍
密钥交换介绍

IKE支持的认证算法有:MD5、SHA1、SHA2-256、SHA2-384、SHA2-512、SM3。

IKE支持的加密算法有:DES、3DES、AES-128、AES-192、AES-256、SM1和SM4。

ISAKMP由RFC2408定义,定义了协商、建立、修改和删除SA的过程和包格式。ISAKMP只是为SA的属性和协商、修改、删除SA的方法提供了一个通用的框架,并没有定义具体的SA格式。 ISAKMP报文可以利用UDP或者TCP,端口都是500,一般情况下常用UDP协议,所以在防火墙上放通IPSec的流量可以允许UDP 500/4500端口的流量通过。

1.7 安全协议介绍

IPSec的加密与解密大致是在原有的报文头部增加一层或多层头部以实现加密,在传输层中

IPsec有两种传输层协议提供认证或加密服务:AH(Authentication Header,认证头),ESP(Encapsulating Security Payload,封装安全载荷)。

  • AH仅支持认证功能,不支持加密功能。
  • ESP支持认证和加密功能。
安全协议介绍
安全协议介绍

AH仅支持认证功能,不支持加密功能。 AH在每一个数据包的标准IP报头后面添加一个AH报文头。AH对数据包和认证密钥进行Hash计算,接收方收到带有计算结果的数据包后,执行同样的Hash计算并与原计算结果比较,传输过程中对数据的任何更改将使计算结果无效,这样就提供了数据来源认证和数据完整性校验。AH协议的完整性验证范围为整个IP报文。

ESP支持认证和加密功能。 ESP在每一个数据包的标准IP报头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾(ESP Trailer和ESP Auth data)。与AH不同的是,ESP将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但ESP没有对IP头的内容进行保护,除非IP头被封装在ESP内部(采用隧道模式)。

关键字段含义:

  • Sequence Number:是一个从1开始的单项递增的计数器,唯一地标识每一个数据包,用于防止重放攻击。
  • SPI:IPsec安全参数索引,用于唯一标识IPsec安全联盟。
  • Authentication Data:该字段包含数据完整性校验值 ICV(Integrity Check Value),用于接收方进行完整性校验。可选择的认证算法有MD5、SHA1、SHA2、SM3。

简单理解就是将内网源IP怎样进行再封装增加传输层报头,AH仅支持认证功能,不支持加密功能,而ESP支持认证和加密功能,我一般情况下都是使用的ESP协议。

ESP模式
ESP模式
AH模式
AH模式
不同模式的报文抓包
不同模式的报文抓包

1.8 封装模式介绍

在传输层使用安全协议还涉及到一个封装模式的问题。封装模式是指将AH或ESP相关的字段插入到原始IP报文中,以实现对报文的认证和加密,封装模式有传输模式和隧道模式两种。现网中多使用隧道模式进行封装。 就是说这个报文的字段摆放顺序是怎样的。

封装模式介绍
封装模式介绍

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

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

总结:IPSec是一个框架,通过IPSec实现的VPN称为IPSec VPN。IPSec通过加密认证来实现安全传输。第一阶段首先需要协商秘钥一致,通过秘钥交换IKE来协商,生成一个IKE的SA(安全联盟),里面定义了加密算法、认证算法、隧道模式等。第二阶段使用一阶段的IKE SA进行加密数据,可以选择AH或者ESP进行封装,AH不支持加密,ESP支持加密和认证,封装模式可以选择隧道模式或者传输模式,区别在于封装后数据包的头部不一样,一般情况下使用ESP安全协议以及隧道传输模式即可

本文由 mdnice 多平台发布

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

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

相关文章

【Linux】环境ChatGLM-4-9B 模型之 openai API 服务

一、摘要 最近看到 Function Call 比较感兴趣,它的核心是赋予大模型能够调用外部API的能力,能够解决大模型功能扩展性问题,允许模型调用外部数据库或API,提供特定领域的详细信息;解决信息实时性问题,模型可以实时获取最新数据;解决数据局限性问题,大模型训练数据虽多但…

实践教程|Transformer Decoder-Only 模型批量生成 Trick

导读 本文给出了一个用单Transformer decoder( GPT)模型进行批量生成时的解决方法。 发现用单 Transformer decoder (Aka GPT)模型进行生成时,因为位置对齐等问题,进行批量生成时十分麻烦。 训练时&#…

【NoSQL数据库】MongoDB数据库——文档的查询操作(多条件查询、聚合aggregate、管道)

往期文章: ​​​​​​【NoSQL数据库】MongoDB数据库的安装与卸载-CSDN博客 【NoSQL数据库】MongoDB数据库——集合和文档的基本操作(创建、删除、更新、查询)-CSDN博客 目录 一、MongoDB文档查询原理 1、使用 find() 方法进行文档基本…

git pull error: cannot lock ref

Git: cannot lock ref ‘refs/remotes/origin/feature/xxx’: refs/remotes/origin/feature/xxx/car’ exists; cannot create refs/remotes/origin/feature/xxx git remote prune origin重新整理服务端和本地的关联关系即可

Harnessing Large Language Models for Training-free Video Anomaly Detection

标题:利用大型语言模型实现无训练的视频异常检测 原文链接:https://openaccess.thecvf.com/content/CVPR2024/papers/Zanella_Harnessing_Large_Language_Models_for_Training-free_Video_Anomaly_Detection_CVPR_2024_paper.pdf 源码链接:ht…

Flutter解压文件并解析数据

Flutter解压文件并解析数据 前言 在 Flutter 开发中,我们经常需要处理文件的读取和解压。 这在处理应用数据更新、安装包、存档文件等场景中尤为常见。 本文将介绍如何在Flutter中使用archive插件来解压文件并解析数据。 准备 在开始之前,我们需要…

论文阅读:Single-cell transcriptomics of 20 mouse organs creates a Tabula Muris

The Tabula Muris Consortium., Overall coordination., Logistical coordination. et al. Single-cell transcriptomics of 20 mouse organs creates a Tabula Muris. Nature 562, 367–372 (2018). 论文地址:https://doi.org/10.1038/s41586-018-0590-4 代码地址…

【算法】模拟

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:替换所有的问号 二:提莫攻击 三:z字形变换 四:外观…

MongoDB整合SpringBoot

MongoDB整合SpringBoot 环境准备 1.引入依赖 <!--spring data mongodb--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 2.配置yml spr…

【简洁明快】使用python读取数据建立pptx (python-pptx图文调整案例)

使用python自动读取数据建立pptx 前言如何使用 Python 自动生成 PPTX第一步&#xff1a;安装所需库第二步&#xff1a;创建一个新的 PPTX第三步&#xff1a;添加幻灯片第四步&#xff1a;添加内容添加文本添加图片第五步&#xff1a;保存 PPTX 图文实操案例&#xff08;自动读取…

三维扫描检测在汽车制造中的应用

三维扫描&#xff0c;通过先进三维扫描技术获取产品和物体的形面三维数据&#xff0c;建立实物的三维图档&#xff0c;满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维数字化存档、逆向设计、产品开发、直接3D打印制造或辅助加工制造等一系列的应用。 三维扫描…

flyway执行sql遇到变量执行报错解决

前两天在公司使用flyway工具执行sql时&#xff0c;开发写的sql里面有变量&#xff0c;于是这个flyway工具不识别这个变量直接报错&#xff0c;不接着往下执行了。报错信息如下&#xff1a; flyway工具执行sql报错 information: No value provided for placeholder: ${ep1} 于是…

go语言的sdk项目搭建与git 操作标签tag并推送至远程仓库

在搭建 SDK 项目并结合 Git 操作标签&#xff08;Tag&#xff09;时&#xff0c;通常会涉及项目初始化、版本管理、Git 标签的创建与管理等内容。以下是一个完整的步骤指南&#xff0c;帮助您搭建 SDK 项目并学习如何使用 Git 标签。 ### 1. **搭建 SDK 项目** 首先&#xff…

机器学习算法的核心理论小总结

机器学习算法的核心在于利用数据构建模型以解决实际问题&#xff0c;而理解其理论基础是高效应用的关键。本文从机器学习的基本概念出发&#xff0c;详细解析监督学习中的几种经典算法&#xff0c;如逻辑回归、决策树和支持向量机&#xff08;SVM&#xff09;。同时&#xff0c…

3.STM32通信接口之SPI通信---SPI实战(W25Q64存储模块介绍)《精讲》

上一节介绍了SPI的通信过程和方法&#xff0c;接下来就要进行STM32与外围模块通信了&#xff0c;这个模块是一块非易失型存储芯片&#xff0c;能够提供8MB的存储空间。接下来跟着Whappy脚步&#xff0c;进行探索新大陆吧&#xff01;【免费】W25Q64(中英文数据手册)资源-CSDN文…

第七节(1)、T型加减速转动【51单片机-TB6600驱动器-步进电机教程】

摘要&#xff1a;本节介绍步进电机T型加减速的控制方法&#xff0c;分2个小节&#xff0c;本小节主要内容为该控制方法的推导与计算&#xff0c;第二节对T型加减速进行了简化计算 一.加速阶段计算 1.1 计算时间与步数关系 根据位移公式可得&#xff1a; a n g l e 0 n ∗ s…

Python123_Python程序语言设计基础_Python基本图形绘制

turtle八边形绘制 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬ 描述 使用tur…

刘铁猛p3 C# 控制台程序引用System.Windows.Forms报错,无法引用程序集 解决方法

学习刘铁猛老师c#入门详解第三集 引用System.Windows.Forms时报错了 错误图例 为什么控制台应用添加项目引用里面为什么找不到任何项目&#xff0c;同时从com里面加的引用会出现警告&#xff1f; 其实是创建控制台程序的时候出错了 解决方法 重新创建控制台程序 选控制台应…

Linux下,用ufw实现端口关闭、流量控制(二)

本文是 网安小白的端口关闭实践 的续篇。 海量报文&#xff0c;一手掌握&#xff0c;你值得拥有&#xff0c;让我们开始吧&#xff5e; ufw 与 iptables的关系 理论介绍&#xff1a; ufw&#xff08;Uncomplicated Firewall&#xff09;是一个基于iptables的前端工具&#xf…

Leetcode 每日一题 290.单词规律

目录 一、问题分析 二、解题思路 三、代码实现 四、复杂度分析 五、总结 在编程的世界里&#xff0c;我们常常会遇到各种有趣的字符串匹配问题。今天要探讨的就是这样一个问题&#xff1a;给定一种规律 pattern 和一个字符串 s&#xff0c;判断 s 是否遵循与 pattern 相同…