转者注:

  1. 此篇转载 曹世宏 先生博文;本人在自己 IPSec 实践应用基础上,对此篇博文内容增加章节编号;在 封装协议章节中、删减两张抓包图片。
  2. IPSec 通讯两端是互为 client 、server 的方式,双方对等加密和认证。

1. IPSec 概念简介

什么是IPSec?

IPSec(Internet Protocol Security)是IETF(Internet Engineering Task Force)制定的一组开放的网络安全协议。它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合。

IPSec用来解决IP层安全性问题的技术。IPSec被设计为同时支持IPv4和IPv6网络。

IPSec主要包括安全协议AH(Authentication Header)和ESP(Encapsulating Security Payload),密钥管理交换协议IKE(Internet Key Exchange)以及用于网络认证及加密的一些算法等。

IPSec主要通过加密与验证等方式,为IP数据包提供安全服务。

IPSec提供的服务:

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

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

为什么要实施IPSec?

实施的最大动机是省钱。

2. IPSec 框架

IPSec是一个框架,它不是具体指某个协议,而是定义了一个框架,由各种协议组和协商而成。该框架涉及到的主要有,加密算法、验证算法、封装协议、封装模式、秘钥有效期等等。

转载者注:
个人理解,IPSec 框架属于网络应用的一种解决方案,描述业务流流转规则和细节规定;

2.1 加密:

加密算法分为两类。对称算法和非对称算法。

对称加密算法:

特点:对称秘钥算法:用相同的秘钥进行加减密。

加解密过程:

加密:明文数据 -----共享秘钥加密 --------密文数据

解密:密文数据 -----共享秘钥解密 --------明文数据

对称加密算法优点:

  • 速度快
  • 安全
  • 紧凑

对称加密算法缺点:

  • 明文传输共享秘钥,容易出现中途劫持和窃听的问题。
  • 秘钥数量是以参与者数量平方的速度增长。即指数增长 。
  • 因为数量过多,所以管理和存储会有很大问题。
  • 不支持数字签名和不可否认性。

适用做大数据加密。

常见对称算法:

  • DES,数据加密标准DES(Data Encryption Standard)它使用56位的密钥对一个64位的明文块进行加密。

  • 3DES,3DES(Triple Data Encryption Standard),3DES是一种增强型的DES标准,它在需要保护的数据上使用3次DES,即使用三个不同的56位的DES密钥(共168位密钥)对明文进行加密。

  • AES, 先进加密标准AES(Advanced Encryption Standard)
    AES被设计用来替代3DES,提供更快和更安全的加密功能。AES可以采用三种密钥:AES-128、AES-192和AES-256,其密钥长度分为128位、192位、256位。

随着密钥长度的提升,加密算法的保密及安全性要求越高,但计算速度也越慢。一般情况下128bit就可以充分满足安全需求。

非对称加密算法:

特点:非对称秘钥算法,一对密钥,公钥和私钥。公钥加密,私钥解密。

用私钥加密,公钥解密叫做数字签名。

仅仅只用于密钥交换(加密密钥)和数字签名(加密散列)。

非对称加密算法的优点:

  • 安全
  • 因为不必发送密钥给接受者,所以非对称密钥不必担心密钥被中途截获的问题。
  • 密钥数目和参与者数目一样。
  • 不需要事先在各参与者之间建立关系以交换密钥。
  • 技术支持数字签名和不可否认性。

非对称加密算法的缺点:

  • 非常非常慢。
  • 密文会很长。

适用于小数据加密。

常见非对称加密算法:

RSA, 512/768/1024/2048bit ro lager。
DH,768,、102/1536bit or lager。只适用于虚拟专用网 。

转载者注:
数字信封 ----完美解决方案:

加密过程本质上、是对称加非对称算法应用过程:

加密过程:

  1. 适用对称密钥加密明文得到密文。
  2. 用非对称密钥的私钥加密明文的对称密钥得到密钥包。

解密过程:

  1. 适用对方的公钥解密密钥包从而得到明文的对称密钥。
  2. 用对称密钥解密密文,得到明文数据。

2.2 验证:

验证算法,也叫HASH算法,散列函数。

目的:

  • 验证数据的完整性

特点:

  • 固定大小
  • 雪崩效应
  • 单向不可逆
  • 冲突避免(SHA-2)

工作原理:

明文数据-----------散列算法(MD5算法)--------算出散列值1(12345)
明文数据+散列值一起发给对端

验证:
明文数据----------同样的散列算法(MD5算法)---------算出散列值2(67890)
如果散列值1和散列2相同,说明验证成功,如果散列值不相同,说明验证失败

常见的验证算法:

  • MD5
    消息摘要MD5(Message Digest 5),输入任意长度的消息,MD5产生128位的签名。
    MD5比SHA更快,但是安全性稍差。

  • SHA1
    安全散列算法SHA(Secure Hash Algorithm)是由NIST开发的。在1994年对原始的HMAC功能进行了修订,被称为SHA1。输入长度小于264bit的消息,SHA1产生160位的消息摘要。

SHA1比MD5要慢,但是更安全。因为它的签名比较长,具有更强大的防攻破功能,并可以更有效的发现共享的密钥。

  • SHA2
    SHA2是SHA1的加强版本,SHA2算法相对于SHA1加密数据长度有所上升,安全性能要远远高于SHA1。SHA2算法包括SHA2-256、SHA2-384和SHA2-512,密钥长度分别为256位、384位和512位。

随着密钥长度的上升,认证算法安全强度更高,但计算速度越慢。一般情况下256位就可以充分满足安全需求。

数字签名的工作过程示意图:


私钥加密,公钥解密------数字签名
实现完整性,源认证 不可否认

实现过程:

明文数据---------hash算法(md5)----------hash值(128bit-例如12345)-------私钥加密------------数字签名    数字签名 --------用对方公钥解密------hash值12345明文数据--------hash算法(md5) ---hash值12345
如果散列值1和散列2相同,说明验证成功,如果散列值不相同,说明验证失败

数字签名的应用:

驱动程序签名
PDF签名
IPSec 虚拟专用网 数字签名认证。
数字证书采用数字签名。

2.3 封装协议(安全协议):

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

2.3.1 AH:

AH是一种基于IP的传输层协议,协议号为51。
只能支持认证 ,不支持加密 。
对整个头部进行认证。

  • AH工作原理:
    其工作原理是在每一个数据包的标准IP报头后面添加一个AH报文头。如下所示:

    图:AH报文头结构
    AH对数据包和认证密钥进行Hash计算,接收方收到带有计算结果的数据包后,执行同样的Hash计算并与原计算结果比较,传输过程中对数据的任何更改将使计算结果无效,这样就提供了数据来源认证和数据完整性校验。AH协议的完整性验证范围为整个IP报文。
    AH报文头字段含义:
字段 长度 含义
下一头部 8比特 标识AH报文头后面的负载类型。传输模式下,是被保护的上层协议(TCP或UDP)或ESP协议的编号;隧道模式下,是IP协议或ESP协议的编号。注意:当AH与ESP协议同时使用时,AH报文头的下一头部为ESP报文头。
负载长度 8比特 表示以32比特为单位的AH报文头长度减2,缺省为4。
保留字段 16比特 保留将来使用,缺省为0。
SPI 32比特 IPSec安全参数索引,用于唯一标识IPSec安全联盟。
序列号 32比特 是一个从1开始的单项递增的计数器,唯一地标识每一个数据包,用于防止重放攻击。
认证数据 一个变长字段,长度为32比特的整数倍,通常为96比特。 该字段包含数据完整性校验值 ICV(Integrity Check Value),用于接收方进行完整性校验。可选择的认证算法有MD5、SHA1、SHA2、SM3。

2.3.2 ESP:

ESP支持加密和认证。

ESP是一种基于IP的传输层协议,协议号为50。其工作原理是在每一个数据包的标准IP报头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾(ESP Tail和ESP Auth data)。与AH不同的是,ESP将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但ESP没有对IP头的内容进行保护。

ESP报文头字段:

字段 长度 含义
SPI 32比特 IPSec安全参数索引,用于唯一标识IPSec安全联盟。
序列号 32比特 是一个从1开始的单项递增的计数器,唯一地标识每一个数据包,用于防止重放攻击。
负载数据 包含由下一头部字段给出的变长数据。
填充字段 用于增加ESP报文头的位数。填充字段的长度与负载数据的长度和算法有关。当待加密报文的明文长度不是加密算法所要求的块长度时,需要进行填充补齐。
填充长度 8比特 给出前面填充字段的长度,置0时表示没有填充。
下一头部 8比特 标识ESP报文头后面的下一个负载类型。传输模式下,是被保护的上层协议(TCP或UDP)的编号;隧道模式下,是IP协议的编号。
认证数据 一个变长字段,长度为32比特的整数倍,通常为96比特。 该字段包含数据完整性校验值ICV,用于接收方进行完整性校验。可选择的认证算法与AH的相同。ESP的验证功能是可选的,如果启动了数据包验证,会在加密数据的尾部添加一个ICV数值。

2.4 封装模式

封装模式是指将AH或ESP相关的字段插入到原始IP报文中,以实现对报文的认证和加密,封装模式有传输模式和隧道模式两种。

2.4.1 传输模式:

在传输模式中,AH头或ESP头被插入到IP头与传输层协议头之间,保护TCP/UDP/ICMP负载。传输模式不改变报文头。

图:传输模式下报文封装
传输模式下,AH协议的完整性验证范围为整个IP报文。ESP协议验证报文的完整性检查部分包括ESP头、传输层协议头、数据和ESP报尾,但不包括IP头,因此ESP协议无法保证IP头的安全。ESP的加密部分包括传输层协议头、数据和ESP报尾。
判断方法:

  1. 通信点地址和加密点地址相同
  2. 通信点地址可以被路由

2.4.2 隧道模式:

在原IP头部之前插入ESP/AH头部,同时生成新的IP头部 。

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

判断方法:

通信点地址和加密点地址不相同
通信点地址到internet能不能被路由,肯定是隧道

2.4.3 传输模式和隧道模式比较:

传输模式和隧道模式的区别在于:
从安全性来讲,隧道模式优于传输模式。它可以完全地对原始IP数据报进行验证和加密。隧道模式下可以隐藏内部IP地址,协议类型和端口。
从性能来讲,隧道模式因为有一个额外的IP头,所以它将比传输模式占用更多带宽。
当安全协议同时采用AH和ESP时,AH和ESP协议必须采用相同的封装模式。

2.5 秘钥有效期:

默认为86400s,即24小时;在配置文件可修改。

3 IPSec 相关链接

3.1 认证、加密相关

IKEv1协议参考:IKEv1协议详解
IKEv2协议参考:IKEv2协议详解

数字证书PKI原理

3.2 IPSec各种场景配置示例

IPSec各场景配置示例

3.3 IPSec 应用

IPSec 虚拟专用网的NAT穿越技术NAT-T
IPSec 高可靠(高可用)
GRE over IPSec技术原理

原文链接:
https://cshihong.blog.csdn.net/article/details/89423551

延展阅读链接:
https://www.strongswan.org/documentation.html
IPSEC 的IKE协商过程,主模式和野蛮模式

1. 全面讲解 IPSec 基本原理相关推荐

  1. 十七、IPsec基本原理与配置

    IPsec VPN 定义 VPN:Virtual Private Network,利用公共网络来构建的私人专用网络称为虚拟私有网络(跨公网建立私有隧道). IPsec:IP security ,是一组 ...

  2. “SCSA-T学习导图+”系列:IPSec VPN原理与应用

    本期引言: 本章主要讲解IPSec VPN相关理论概念,工作原理.从安全和加密原理入手,讲解了IPSec 在VPN对等体设备实现的安全特性,如数据的机密性.数据的完整性,数据验证等.重点分析IPSec ...

  3. 网络安全——网络层IPSec安全协议(4)

    作者简介:一名云计算网络运维人员.每天分享网络与运维的技术与干货.   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.IPSec安全协议 1.IPSec提供的安全服务 ...

  4. hcl的ipsec实验

    1.实验拓扑: 2.需求 1.总公司和分公司通过IPSec VPN连接 2.总公司和分公司都能访问外网 3.需求分析 1.这个实验既要实现vpn连接,也要实现外网的连接,则需要写两条acl,分别作为i ...

  5. 4周,从入门小白到爬虫老炮儿,薪资水平超过60% IT新手!

    打开知乎搜索"爬虫教程",相关讨论有近1300+个 搜索出来的第一条回答,已经收获了近9K的赞 网络上爬虫教程如此丰富,但是我们公众号后台却经常收到学员的截图及问题:这个爬虫出错是 ...

  6. [Android] AlertDialog获取网上天气并显示各城市天气

    最近帮同学做android百度地图,其中涉及到定位城市天气功能.才知道自己技术非常的一般,还有很多东西需要学习,同时需要回归到我研究生的方向--数据挖掘.同时又见识到了一位叫柳峰的大神,推荐大家去看看 ...

  7. EntityFramework Core上下文实例池原理

    [导读]无论是在我个人博客还是著作中,对于上下文实例池都只是通过大量文字描述来讲解其基本原理,而且也是浅尝辄止,导致我们对其认识仍是一知半解,本文我们摆源码,从源头开始分析 希望通过本文从源码的分析, ...

  8. aspnet core 2.1中使用jwt从原理到精通二

    在aspnet core中,自定义jwt管道验证 有了上一节的内容作为基础,那这点也是非常容易的,关键点在中间件,只是把上一级在测试类中的自定义验证放到中间件中来即可, 不过需要注意:中间件 的位置很 ...

  9. 彻底理解正向代理、反向代理、透明代理

    套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术 ...

最新文章

  1. 使用Source Safe for SQL Server解决数据库版本管理问题
  2. AngularJs应用页面切换优化方案
  3. TF之TFOD-API:基于tensorflow框架利用TFOD-API脚本文件将YoloV3训练好的.ckpt模型文件转换为推理时采用的.pb文件
  4. ai可以滚轮缩放吗_AI侵入艺术天堂!艺术也可以“量产”了吗?
  5. Deep Learning of Binary Hash Codes for Fast Image Retrieval(2015)
  6. mootools温习与深入_Element_1
  7. 求数组中最大值和次大值
  8. getprop setprop初步探索
  9. matlab 6.5 vc6,MATLAB6.5 与 VC6.0混合编程中的 VC6.0的设置
  10. NS3使用Eclipse配置
  11. 深度学习入门——03 MNIST手写数字图像集识别实验
  12. Android Studio制作简易音乐盒
  13. 【性能测试】一份完整的性能测试报告模板
  14. 鸿蒙应用开发学习|HarmonyOS工程介绍
  15. windows 找不到文件'gpedit.msc'.请确定文件名是否正确后 windows10 家庭版 打不开组策略 不想更新 不想换版本
  16. ECMAScript6官方文档学习笔记(一)----let和const命令
  17. CNSS测量与数据处理作业
  18. 电脑维修常用硬件技术
  19. 检测设备是否为模拟器,是否root,禁止截屏
  20. mysql中groupby用法_详解SQL中GroupBy的用法

热门文章

  1. 机器学习实验之肿瘤分类与预测(朴素贝叶斯)
  2. Linux时间戳和时间格式转化
  3. Vertx之Junit单元测试
  4. 钢材和不锈钢切削液-市场现状及未来发展趋势
  5. ceph-csi rbd 容器部署
  6. android闹钟设计的开题报告,电子闹钟设计开题报告.doc
  7. 服务器预览图片不显示不出来,服务器预览图片不显示
  8. 《网络安全创新实践》:设计并实现一种基于Npcap的网络嗅探器
  9. Rust雪山怎么防冷_刷爆朋友圈:冬天户外耍雪小常识:雪套、冰爪的正确使用方式...
  10. github 拉取下载慢,我教你如何加速