IPsec VPN简介
什么是IPsec?
IPsec(Internet Protocol Security)是为IP网络提供安全性的协议和服务的集合,它是VPN(Virtual Private Network,虚拟专用网)中常用的一种技术。其实就是一种协议簇(类似TCP/IP协议簇),IPsec VPN就是基于IPsec协议簇来进行封装的一种VPN技术。VPN的核心就是隧道技术,隧道技术的核心就是封装技术。
通信双方通过IPsec建立一条IPsec隧道,IP数据包通过IPsec隧道进行加密传输,有效保证了数据在不安全的网络环境如Internet中传输的安全性。
IPsec VPN 保护的是点对点之间的通信,通过IPsec VPN可以在主机和主机之间、主机和网络安全网关之间或网络安全网关(如路由器、防火墙)之间建立安全的隧道连接。其协议主要工作在IP层,在IP层对数据包进行加密和验证。
IPsec VPN的工作流程
大致可以分为四个阶段:
1、识别“感兴趣流”。网络设备接收到报文后,通常会将报文的五元组等信息和IPsec策略进行匹配来判断报文是否要通过IPsec隧道传输,需要通过IPsec隧道传输的流量通常被称为“感兴趣流”。
2、协商安全联盟(Security Association)。SA是通信双方对某些协商要素的约定,比如双方使用的安全协议、数据传输采用的封装模式、协议采用的加密和验证算法、用于数据传输的密钥等,通信双方之间只有建立了SA,才能进行安全的数据传输。
识别出感兴趣流后,本端网络设备会向对端网络设备发起SA协商。在这一阶段,通信双方之间通过IKE协议先协商建立IKE SA(用于身份验证和密钥信息交换),然后在IKE SA的基础上协商建立IPsec SA(用于数据安全传输)。
3、数据传输。IPsec SA建立成功后,双方就可以通过IPsec隧道传输数据了。IPsec为了保证数据传输的安全性,在这一阶段需要通过AH或ESP协议对数据进行加密和验证。加密机制保证了数据的机密性,防止数据在传输过程中被窃取;验证机制保证了数据的真实可靠,防止数据在传输过程中被仿冒和篡改。
如下图,IPsec发送方会使用加密算法和加密密钥对报文进行加密,即将原始数据“乔装打扮”封装起来。然后发送方和接收方分别通过相同的验证算法和验证密钥对加密后的报文进行处理得到完整性校验值ICV。如果两端计算的ICV相同则表示该报文在传输过程中没有被篡改,接收方对验证通过的报文进行解密处理;如果ICV不相同则直接丢弃报文。
IPsec VPN中的数据加密流程:

4、隧道拆除。通常情况下,通信双方之间的会话老化(连接断开)即代表通信双方数据交换已经完成,因此为了节省系统资源,通信双方之间的隧道在空闲时间达到一定值后会自动删除。

IKE (互联网密钥交换协议)
主要用来完成IPsec中需要的密钥相关参数的协商工作,可以动态建立IPsec SA 。有两个版本IKE V1、IKE V2
IKE中的三个协议
1、SKEME
2、OAKLEY
3、ISAKMP ISAKMP(互联网安全联盟密钥管理协议)
我们重点了解第三个ISAKMP ISAKMP(互联网安全联盟密钥管理协议)
这就是IKE协议的本体,主要用来完成IPSEC中需要的密钥相关参数的协商工作。可以动态建立IPsec SA UDP500----源、目标端口都必须是500。
SKEME、OAKLEY ---这两个协议可以理解为是IKE协商过程中使用到的资源库(了解即可)
注意:身份认证是建立安全通道的前提。
IKE第一阶段
主要目的是为了获得建立IPSEC SA时使用的密钥,以及进行身份认证。
IKE SA(ISAKMP SA)-----这个SA是双向逻辑的,不区分源和目标。
主模式:默认使用IP地址作为身份标识(也要作为PSK的识别标志),使用6个数据包进行交互,安全性更高

这里我们根据上图中的各个数据包单独进行分析:
第一二个数据包:进行SA交换
1、Cl--- cookie ---这个参数每个数据包中都会携带,在IKEV2中,变成了SPI,在这里作用类似。 2,SA---里面携带的是需要协商的安全参数 ------“五元组"(如下)
加密算法,哈希算法,身份认证,DH组,SA存活期
AES MD5 PSK DH2 84600s(默认值)
注意:手工建立的SA,一经建立,则将永久有效;但是IKE建立的SA,需要配置生存周期,周期时间到了之后,将重新建立SA。时间可以不同,不同的话按照小的来执行。
第二个回包主要确认安全参数,如果安全参数都可以对的上,则将继续完成后面的协商。如果参数没有对上,则将回复一个负载拒绝报文,结束IKESA的建立。
第三四个数据包 ---DH密钥交换 ---对称密钥1,NI,Nr---代表的是随机数 2,X,Y --- DH算法中需要公开的参数这里,为了加强安全性,DH算法会生成四种密钥

种子密钥 --- 剩余三种密钥都需要加入种子密钥运算得出,并且,种子密钥中计算时,会携带预共享密钥。
SKEYID_e---加密密钥 --- g^ir(代表的就是DH算法中计算出来的Z),CKY-I/CKY-R(前面双方携带的cookie值)----用于第一个阶段5,6数据包和第二阶段数据包加密使用。
SKEYID_a ---- 验证密钥 ---用于第二阶段hash时使用的密钥 ---HMAC算法(结合密钥的HASH算法),安全性比不加入密钥的HASH算法更高。
SKEYID_d ---推导密钥 ---用于计算最终密钥(最终加密数据的密钥)的素材
注意:在NAT环境,或是IP地址会变化的场景下,不适合用主模式。
野蛮模式
特点:可以自定义身份标识,速度快,只需要三个数据包就可以完成标识,安全性低

注意:在野蛮模式中,可以自定义身份标识,主要是因为身份信息不需要加密,并且,前两个数据包都无法加密,所以,野蛮模式安全性较低。仅第三个数据包会进行加密。但是,野蛮模式适用于NAT环境以及IP地址不固定的环境。
主模式和野蛮模式的区别

第二阶段
基于已经建立的安全通道,来协商建立IPSEC SA的安全参数,完成后,则标志着IPSEC SA的建立。 快速模式(quick mode) UDP500
需要协商的安全参数
加密算法 ---正式传输数据时使用的加密算法(加密算法协商完成后,会计算密钥第一阶段计算出来的推导密钥会加入到该密钥的计算中)
HASH算法 ---正式传输数据时进行完整性校验的算法
安全协议 ---AH/ESP
封装模式 --- 传输模式/隧道模式
存活时间
可以了解一下这个协议
PFS --- 密钥完美向前保密 --- 正常工作中,第二阶段的最终密钥是通过第一阶段的推导密钥计算出来的,但是,这样做不安全,推导密钥泄露可能导致最终密钥泄露。所以,可以开启这个PFS技术(注意:要开启需要两端设备都开启才行),之后,则将在第二阶段重新进行一次DH交换,计算最终的密钥,从而提高安全性。
数据传输阶段
VPN黑洞:隧道建立之后,如果其中一段的设备异常重启,另一端还在有效期内,则他发送的数据将有去无回,就形成了VPN黑洞。
解决方法
DPD死亡对等体检测。类似于心跳检测机制 ---采用空闲计时器原理 ---两边同时开启一个固定时间的计时器,期间数据值直接发过去,如果计时器超时,则数据发送前,先发送一个DPD检测报文,如果收到对方的DPD应答报文,则将重置计时器。如果没有收到,并且,连续5次都没有收到,则将拆掉安全通道。
最后,在面试过程中常问的一个问题,IPSec SA和IKE SA谁是单向谁是双向?
IKE SA 是双向的,两端只需要构建一条SA就可以共同拥有了;
IPSec SA是单向的,所以就需要创建两条。
相关文章:
IPsec VPN简介
什么是IPsec? IPsec(Internet Protocol Security)是为IP网络提供安全性的协议和服务的集合,它是VPN(Virtual Private Network,虚拟专用网)中常用的一种技术。其实就是一种协议簇(类…...
探索 Canva 的功能以及如何有效使用 Canva
『创意瞬间变现!Canva AI Drawing 让你的文字描绘成艺术』 在数字设计和创意领域,Canva 是创新和用户友好性的灯塔。这个平台不仅简化了图形设计,还引入了 AI Drawing 等强大工具,使其成为专业人士和初学者的首选解决方案。让我们…...
python中匿名函数简单样例
目录 一、匿名函数(也称为 lambda 函数): 二、简单样例: 2.1 filter() 函数: 2.2 map() 函数: 2.3 sorted() 函数: 一、匿名函数(也称为 lambda 函数): 简洁性:匿名函数通常比命…...
【SpringBoot】 什么是springboot(二)?springboot操作mybatisPlus、swagger、thymeleaf模板
文章目录 SpringBoot第三章1、整合mybatsPlus1-234-67-10问题 2、整合pageHelper分页3、MP代码生成器1、编写yml文件2、导入依赖3、创建mp代码生成器4、生成代码5、编写配置类扫描mapper类6、编写控制器类 4、swagger1、什么是swagger2、作用3、发展历程4、一个简单的swagger项…...
【JavaWeb】前后端分离SpringBoot项目快速排错指南
1 发起业务请求 打开浏览器开发者工具,同时显示网络(Internet)和控制台(console) 接着,清空控制台和网络的内容,如下图 然后,点击你的业务按钮,发起请求。 首先看控制台…...
Go语言高级特性
目录 1. 并发编程 1.1 Goroutine轻量级线程 1.2 Channel通信机制 1.3 WaitGroup等待组 1.4 Mutex互斥锁 2. 垃圾回收机制 2.1 内存管理介绍 2.2 垃圾回收原理 2.3 性能调优策略 2.4 常见问题及解决方案 3. 接口与反射 3.1 接口定义与实现 3.2 空接口与类型断言 3…...
边缘计算安全有多重要
德迅云安全研究发现边缘安全是对存储或处理在网络边缘的数据的保护。边缘可以用不同的方式定义,但一般来说,它包括企业直接控制之外的任何设备或位置。这可能包括传感器、连接物联网的设备和移动设备。 边缘计算正在彻底改变商业运作方式。这引发了对边缘…...
Uniapp开发入门:构建跨平台应用的全面指南
引言 什么是Uniapp Uniapp是一款由DCloud公司推出的基于Vue.js的跨平台应用开发框架。它的核心理念是“一套代码,多端运行”,开发者只需编写一份代码,即可生成包括iOS、Android、H5、微信小程序、支付宝小程序、百度小程序等多平台的应用。…...
初级银行从业资格证知识点(十)
中国银保监会近年来启动了银行业保险业清廉金融文化建设活动,旨在通过全覆盖参与、全过程融入、全方位提升,增强金融从业人员清廉从业意识,培育清廉金融理念,通过文化的渗透力和影响力,厚植清廉根基,提升金…...
设计模式-13 - Prototype Design Pattern 原型设计模式
设计模式-13 - Prototype Design Pattern 原型设计模式 1.定义 原型设计模式是一种创建对象的方式,它通过复制一个现有的对象(原型)来创建一个新对象。 2.内涵 优点: 创建对象的高效方式:克隆一个对象比从头开始创建…...
05. 【Java教程】第一个 Java 程序
本节我们将以Windows操作系统为例,编写并执行第一个Java程序。在这之前,请确保你的操作系统上已经安装了JDK 1. 编译程序 大家可能有个疑问,为什么需要编译程序呢?计算机不能直接执行我们编写的源代码吗? 这是由于计…...
网易灵犀办公企业邮箱的IMAP和POP3服务器地址
IMAP 电子邮件地址:saleyouxiang.com 帐户类型:IMAP 接收邮件服务器:imaphz.qiye.163.com 发送邮件服务器:smtphz.qiye.163.com 用户名:saleyouxiang.comPOP3 电子邮件地址:saleyouxiang.com 帐户类型&…...
吴恩达深度学习笔记:优化算法 (Optimization algorithms)2.3-2.5
目录 第二门课: 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第二周:优化算法 (Optimization algorithms)2.3 指数加权平均数(Exponential…...
【正版系统】海外短剧系统功能介绍,前端uniapp+开源。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、海外短剧系统功能介绍 二、搭建要求 1.系统要求 总结 前言 短剧作为一种快速、紧凑的娱乐形式,正逐渐受到更多海外观众的喜爱。这种需求增长为…...
位图(c++)
文章目录 1.位图概念2.位图的实现3.应用(解决整形存在或次数问题)3.1存在问题3.2次数问题 5.搜索的方法对比: 1.位图概念 和哈希一样,都是一个表来记录某个元素的个数或者存在与否;不同的是哈希使用的计算机定义的完整…...
音源分离 | Hybrid Spectrogram and Waveform Source Separation
一、摘要 本文提出了基于Demucs架构的的时域频域的分离模型。提出的模型在2021年索尼组织的音乐分离挑战中获胜。该架构还包括其他改进,如压缩残差分支、局部注意力或奇异值正则化。 在MusDB HQ数据集上,所有源的信噪比(SDR)平均提…...
动态el-form表单以及动态禁用
当右侧下拉框选中为 长期有效,那么左侧输入框为禁用状态; <el-form-item label"证明有效期" class"is-required"><div v-for"(item,index) in form.arrayDat" :key"index" style"width: 100%;display: flex;justify-co…...
【Web后端】web后端开发简介_Servlet简介
1.web后端开发简介 Java企业级开发,也就是学习]avaEE(Enterprise Edition)版本,是一种结构和一套标准。在应用中开发的标准就是Servlet、jsp和JavaBean技术。jsp技术现在已基本处于淘汰状态,简单了解即可web后端开发,基于B/S模式的开发体系。…...
Taylor Francis科技期刊数据库文献去哪里获取
一、Taylor & Francis科技期刊数据库简介: Taylor & Francis 科技期刊数据库(T&F ST Library)提供超过520种经专家评审的高质量科学与技术类期刊, 其中超过85%的期刊被Web of Science收录,内容最早至1997年。该科技期…...
C#学习笔记12:Winform网页操作-CefSharp内嵌浏览器
今日学习使用Winform操作网页,先从从窗体内嵌一个浏览器开始吧: 文章提供测试代码讲解、测试效果图、整体测试工程下载 目录 CefSharp介绍与安装: 创建解决方案安装CefSharp: 控件放置: 整体代码贴出: 更改…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
