ipsec协议簇(详解)

IPSEC协议簇

IPSEC协议簇 --- 基于网络层的,应用密码学的安全通信协议组

IPV6中,IPSEC是要求强制使用的,但是,IPV4中作为可选项使用

IPSEC可以提供的安全服务

机密性 --- 数据加密

完整性 --- 防篡改可用性

数据源鉴别 -- 身份认证数字证书

PSK -- 预共享密钥

不可否认性 --- 数据源鉴别重传攻击保护 --- 通过添加序列号 --- 一个一次性的数字 --- 用来防重放攻击

有限的流量保密 --- 在IPSEC中可以抓取感兴趣流,即可以设定哪些流量需要进入IPSEC隧道,继续保密传输,哪些流量不需要进入到通道中。

IPSEC 协议簇

安全协议

两种工作模式

                传输模式

传输模式封装方式:不改变原有的IP包头,在原始的数据包头后面添加IPSEC包头,将原来的数据封装成被保护的数据

因为没有添加新的IP头部,所以,无法跨越公网建立隧道,适合在私网内部,数据传输时进行安全保障。

隧道模式

封装方式:需要增加新的IP头部,其后面是IPSEC的包头,之后,将原来的整个数据包进行分装保护。

适用于需要跨越公网的环境。

两个安全协议

                AH --- 鉴别头协议

AH --- 鉴别头协议 --- 属于网络层协议,但是,封装在IP协议之上 --- 协议号:51

可以提供的安全服务

1,数据的完整性保证 --- 其最主要的工作是保证数据传输的完整性,所以,没有办法对数据进行加密保护

2,数据源认证 --- 身份认证

3,抗重放攻击

AH的包头

安全参数索引(SPI) --- 用来唯一的标识SA --- 安全联盟、

SA -- 安全联盟 --- IPSEC在建立通道之前,双方需要协商安全参数,安全参数协商完成后,则建立对应的SA --- IPSEC SA

注意:IPSEC SA是分方向的,要想构建一个双向的安全通道,则需要建立两条方

向相反的SA,则不同的SA需要使用不同的SPI来进行标识,相当于是SA的一个

ID。

序列号 --- 用来防重放攻击

AH的保护范围传输模式

隧道模式

因为AH在进行完整性校验时会包含IP头部的内容,所以,在IP头部中,有一些在传输过程中就会发生变化的数据,比如TTL,TOS这样的数据将不做校验。

因为会校验IP地址,所以,AH无法应用在NAT环境下。

ESP --- 封装安全载荷协议

ESP --- 封装安全载荷协议 --- 属于网络层协议,但是,封装在IP协议之上 --- 协议号:50

可以提供的安全服务

1,数据的完整性校验

2,数据源认证

3,抗重放的保护

4,数据保密 --- 注意,这个是AH所不具备的一个安全服务 --- 可以进行选择性加密

ESP的头部

保护范围 --- 加密的范围是除了最外层的IP头部,ESP的头部以及最后ESP的认证数据部分不进行加密,其他内容都需要进行加密;

   完整性校验的范围是加密的内容再增加ESP的头部内容传输模式

隧道模式

AH和ESP也可以同时使用

AH+ESP传输模式

AH+ESP隧道模式

注意:只要有AH参与的封装,就会导致IP头部的信息被校验,就无法应对NAT环境。

IKE--互联网密钥交换

IPSEC SA是可以手工创建的

IKE -- 互联网密钥交换 --- 动态建立IPSEC SA --- IKEV1,IKEV2

IKE协议中包含三个协议

SKEME

OAKLEY

ISAKMP  --- 互联网安全联盟密钥管理协议 --- UDP 500 --- 要求源和目标端口都必须是UDP的500

阶段1

阶段1 --- 协商构建IKE SA(ISAKMP SA)--- 不区分源和目标 --- 其主要目的是获得建立IPSEC SA时参数协商过程中的安全通道,对协商参数进行安全保护。 --- 做身份认证

主模式

主模式 --- 默认使用IP地址作为身份标识,需要经过6个数据包交互来完成IKE SA 的建立,安全性较高

第一,二个数据包:SA的交换

1,Ci,Cr --- cookie --- 这个是IKEV1版本中的做法,到了V2版本,这里使用的是SPI,在V1版本中,其作用是相似

2,Sai,Sar --- 进行安全参数协商 --- “五元组”

加密算法,哈希算法,身份认证,DH组,SA存活时间

     DES                MD5         PSK        DH2      86400S

注意:这里协商的所有参数,是为了构建IKE SA使用参数

注意:如果是手工建立的SA,则将永久有效,但是,如果使用IKE建立的SA,则将存在老化时间,默认是86400S,如果时间到了,则将拆除通道,重新建立。

注意:DH算法分组,常用分组为DH1,DH2,DH5,DH14,组号越大,则安全性越高

注意:这里的身份认证是在协商身份认证的方式

如果对方在回复时,发现里面的参数本地不支持,则将回复一个负载拒绝报文,则中断SA的构建。但是,其中的SA存活时间可以不同,如果不同,则按照较小的来执行

第三,四个数据包

Ni,Nr --- 是两端发送时携带的一个随机数

X,Y --- DH算法中需要交换的两个参数

SKEYID 种子密钥 ---- 计算时里面包含了预共享密钥所有其他密钥在计算时,都需要加入种子密钥

SKEYID_e --- 加密密钥 --- 用于第5.6个数据包以及第二阶段IPSEC SA协商过程中的数据加密 --- g^ir --- DH算法中计算出的Z

CKY_I,CKY_R --- 前面过程中传递的cookie值

SKEYID_a --- 验证密钥 --- 在第一阶段5,6个数据包以及第二个阶段中进行 HASH算法时使用的密钥 ---- 哈希算法也可以结合密钥一起使用,其技术叫做HMAC,这样做安全性更高

SKEYID_d --- 推导密钥 --- 用来计算最终密钥(用来加密数据的密钥)的一个参数

第五,六个数据包 --- 用来进行身份认证以及数据验证 --- 这两个数据包是进行加密的

Idi/Idr  --- 身份标识

Hashi/Hashr --- 使用哈希算法来校验之前传递的安全参数 --- 通过HMAC来进行运算,使用之前计算的验证密钥

野蛮模式

野蛮模式 --- 可以自定义身份标识,并且,速度较快,仅需使用3个数据包就可以完成IKE SA的建立

注意:野蛮模式前两个数据包中的参数用来协商密钥信息,则第三个数据包可以进行加密传输,因为,身份信息是通过明文传递的,所以,安全性较低

阶段2

阶段2 --- 通过阶段一构建的安全通道,传递需要建立IPSEC SA使用的安全参数,用来协商最终的密钥。 --- 快速模式 -- quick mode --- UDP 500

第二阶段需要协商的安全参数

1,加密算法 --- 最终进行数据加密使用的算法(协商完加密算法之后,需要计算

出最终使用的加密密钥,需要根据第一阶段计算出来的推导密钥计算得出)

2,Hash算法 --- 最终进行数据传输时使用的hash算法

3,安全协议 --- AH/ESP

4,封装模式 --- 隧道/传输

5,存活时间

PFS --- 密钥完美向前保密

PFS --- 密钥完美向前保密 --- 正常情况下,第二阶段计算的加密密钥是通过第一阶段计算出的推导密钥衍生出来的,但这样,可能导致第一阶段密钥泄露影响第二阶段密钥,所以,可以开启PFS的功能,之后,将不再使用之前的推导密钥,将重新使用DH算法计算出一个新的密钥

注意:PFS功能需要两边同时开启,方可生效

数据传输阶段通过AH或者ESP来传输数据

VPN黑洞

VPN黑洞 --- 隧道建立之后,如果其中一台设备出现异常,另一端还在SA的有效期内,则数据将出现有去无回的情况,形成VPN黑洞

解决方案 --- DPD死亡对等体检测类似于心跳检测机制

利用的是空闲计时器原理 --- 两边同时开启一个计时器,有数据包通过时,直接刷新计时器,如果计时器归0,则会开始发送DPD的探测报文,对方收到后,将回复应答,正常回复则刷新计时器,如果没有应答,则连续发送5次,都没有应答,则将拆掉通道;

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

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

相关文章

长效代理IP如何选用及代理服务分析

在这个数据为王、信息瞬息万变的时代,长效代理IP成为了众多开发者、数据科学家乃至普通网民手中的一把利器。它不仅能帮助我们解决地域管理,还能在保护隐私的同时,确保数据传输的稳定与安全。但面对市面上琳琅满目的代理服务,如何…

IVI(In-Vehicle Infotainment,智能座舱的信息娱乐系统)

IVI能够实现包括三维导航、实时路况、辅助驾驶等在线娱乐功能。 IVI人机交互形式(三板斧):声音、图像、文字 IVI人机交互媒介I(四件套):中控屏幕(显示、触控)、仪表显示、语言、方…

目标检测 | YOLO v1、YOLO v2、YOLO v3与YOLO v3 SPP理论讲解

☀️教程:霹雳吧啦Wz ☀️链接:https://www.bilibili.com/video/BV1yi4y1g7ro?p1&vd_sourcec7e390079ff3e10b79e23fb333bea49d 一、YOLO v1 针对于two-stage目标检测算法普遍存在的运算速度慢的缺点,YOLO创造性的提出了one-stage目标检测…

2024-07-20 Unity插件 Odin Serializer2 —— 序列化教程

文章目录 1 由根对象决定序列化2 实现 Odin 序列化器2.1 继承已有序列化类2.2 自定义序列化类 3 避免 Unity 无限深度警告4 指定序列化秘钥4.1 External String Reference Resolver4.2 External GUID Reference Resolver4.3 External Index Reference Resolver 4 功能与限制4.1…

为什么我不建议用Excel做进销存系统?

进销存管理系统是一个企业中非常关键的部分,它涉及商品的采购、销售和库存管理等复杂流程。虽然EXCEL作为一个办公软件,它的通用性和灵活性使其能够处理这类数据,但实际上,使用它来构建专业的进销存管理系统存在一些明显的局限性。…

haproxy服务介绍

haproxy 搭建使用开启HAProxy的界面UI配置负载均衡配置web代理 HAProxy(High Availability Proxy)是一个高性能的TCP/HTTP负载均衡器和代理服务器,广泛用于提升Web应用的可用性和性能。[官网说明](https://docs.haproxy.org/2.8/intro.html#3…

NLP: 词袋模型和TFIDF模型

文章目录 词袋模型TF-IDF模型词汇表模型 词袋模型 文本特征提取有两个非常重要的模型: 词集模型:单词构成的集合,集合自然每个元素都只有一个,也即词集中的每个单词都只有一个。 词袋模型:在词集的基础上如果一个单词…

autoxjs的安装与配置

AutoxJs 是一个基于 JavaScript 的自动化工具,用于在 Android 平台上创建自动化脚本。它是在原 Auto.js 项目的基础上继续维护和升级而来的。 AutoxJs 的优势主要包括以下几点: 无需 root 权限:可以在没有 root 权限的设备上运行大部分功能&…

JavaWeb系列二十三: web 应用常用功能(文件上传下载)

文件上传下载 基本介绍文件上传基本原理文件上传应用实例文件上传注意事项和细节 文件下载基本原理文件下载应用实例文件下载注意事项 ⬅️ 上一篇: JavaWeb系列二十二: 线程数据共享和安全(ThreadLocal) 🎉 欢迎来到 JavaWeb系列二十三: web 应用常用功能(文件上传…

创建最佳实践创建 XML 站点地图--SEO

您是否正在努力让您的网站被搜索引擎索引?您想提高您网站的搜索引擎知名度吗?如果是,您可能会错过 XML 站点地图的重要性。XML 站点地图在改善您网站的 SEO 方面发挥着至关重要的作用。‍ XML 站点地图是您网站结构的蓝图,可帮助…

YOLOv5项目梳理

1 项目介绍 参考项目:YOLO项目 1.1训练模型 YOLOv5模型 train.py 训练预训练模型 ... ... def parse_opt(knownFalse):# 命令行参数解析器初始化parser argparse.ArgumentParser()# 初始权重路径,默认为 ROOT / yolov5s.pt,用于指定模…

Navicat 17 for Mac 数据库管理软件

Mac分享吧 文章目录 效果一、准备工作二、开始安装1. 双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕。2. 应用程序/启动台显示Navicat图标,表示安装成功。 二、运行测试运行后提示:“Navicat Premium.pp”已损坏&#x…

在qt的c++程序嵌入一个qml窗口

//拖拽一个QQuickWidget c端和qml通信的桥梁 找到qml的main.qml的路径 ui->quickWidget->setSource(QUrl::fromLocalFile("../../../code/main.qml"));// QML 与 Qt Widgets 通信//窗口就成了一个类实例对象pRoot (QObject*)ui->quickWidget->rootObje…

redis面试基础知识

redis的数据类型 Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样: 五种基本数据类型 Redis 通用命令 通用指令是部分数据类型的,都可以使用的指令,常见的有: KEYS&#xff…

思维(交互题),CF 1990E2 - Catch the Mole(Hard Version)

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 E2 - Catch the Mole(Hard Version) 二、解题报告 1、思路分析 考虑每次误判都会让鼹鼠上升一层,相应的,最外层的一层结点都没用了 由于数据范围为5000,我们随便找个叶子…

Electron案例解析-编写一个简单的electron程序

index.html <!DOCTYPE html> <html> <head><meta charset"UTF-8" /><!-- 内容安全策略--><metahttp-equiv"Content-Security-Policy"content"default-src self; script-src self"/><metahttp-equiv&quo…

C语言-栈和队列

文章目录 &#x1f3af;引言&#x1f453;栈和队列1.栈1.1栈的概念与结构1.2栈的实现 2.队列2.1队列的概念与结构2.2队列的实现 &#x1f947;结语 &#x1f3af;引言 欢迎来到HanLop博客的C语言数据结构初阶系列。在之前的文章中&#xff0c;我们详细介绍了链表及其操作方法。…

8年前端总结和感想(转)~

我是牛奶&#xff0c;本文是我前端工作 8 年的一些总结和感想 主要记录下个人点滴、前端知识点、场景应用、未来的憧憬以及个人规划&#xff0c;供自己以后查漏补缺&#xff0c;也欢迎同道朋友交流学习。 自我介绍 我是一名工作在非知名公司的 8 年前端&#xff0c;双非普通本…

JMeter使用手册

安装 下载地址 https://jmeter.apache.org/download_jmeter.cgi 下载后解压到win的文件夹中 打开JMeter的bin文件夹&#xff0c;双击这个jar就启动了JMeter 启动 出现这样的界面 基本使用 添加变量 这个变量在使用的时候可以被引用 创建线程组 所有的请求都得基于…

Linux:Linux进程概念

目录 前言 1. 冯诺依曼体系结构 2. 操作系统 2.1 什么是操作系统 3. 进程 3.1 基本概念 3.2 描述进程——PCB 3.3 进程和程序的区别 3.4 task_struct-PCB的一种 3.5 task_struct的内容分类 4. 查看进程 4.1 通过系统文件查看进程 4.2 通过ps指令查看进程 4.3 …