IPSecVPN(Internet Protocl Security):是一组基于网络层的,应用密码学的安全通信协议族。与TCP/IP协议簇一样,IPSec不是指具体的哪个协议,而是一个开放的协议簇。

IPSec协议的设计目标:是在IPV4和IPV6环境中为网络层流量提供灵活的安全服务(综合了密码技术,和协议安全机制)

IPSec V皮N:是基于IPSec协议簇构建的在IP层实现的数据安全虚拟专用网。通过在数据包中插入一个预定义头部的方式,来保障OSI上层协议数据的安全,主要用于保护TCP,UDP,ICMP和隧道的IP数据包(如:GRE over IPSec后面会有文章介绍在思科设备上的配置方法)。V皮N只是IPSec协议簇的一种应用方式,V皮N也不知IPSec一种实现方式,还有2层(数据链路层),第四层(传输层)等实现方式

IPSec提供的服务:

数据完整性(Confidentiality)、数据机密性(Integrity)、数据源鉴别(Authentication)、

重传攻击保护(Anti-replay)、不可否认性(Non-repudiation)

IPSec协议簇安全体系框架

注:其中的加密算法、鉴别算法、解释域和密钥管理都是IKE进行协商。

加密算法:

        DES算法:56位加密算法

         3DES:168位加密算法

密钥交换算法:

        DH(Diffie-Hellman密钥协议)

         RSA(不对称密钥算法)

验证算法:

         MD5(消息摘要)

         SHA-1(安全哈希算法)

IKE(internet Key Exchange)

         用于验证IPSec的对端体,协商IKE SA和IPSec SA的安全策略,验证加密材料的建立。

SA(Security Association)

        两个通信实体经协商建立起来的一种协定,规定了通信实体将如何利用安全服务来实现安全的通讯。

IKE定义了安全参数如何协商,以及共享密钥如何建立,但它没有定义的是协商内容。这方面的定义是由"解释域(doi)"文档来进行的

IPSec V皮N体系结构主要由AH、ESP和IKE协议套件组成。

IPSec通过ESP来保障IP数据传输过程的机密性,使用AH/ESP提供数据完整性、数据源验证和抗报文重放功能。

ESP和AH定义了协议和载荷头的格式及所提供的服务,但却没有定义实现以上能力所需具体转码方式,转码方式包括对数据转换方式,如算法、密钥长度等。

为简化IPSec的使用和管理,IPSec还可以通过IKE进行自动协商交换密钥、建立和维护安全联盟的服务。具体介绍如下:

AH协议:AH是报文头验证协议,主要提供的功能有数据源验证、数据完整性校验和防报文重放功能。然而,AH并不加密所保护的数据报。

ESP协议:ESP是封装安全载荷协议。它除提供AH协议的所有功能外(但其数据完整性校验不包括IP头),还可提供对IP报文的加密功能。

IKE协议:IKE协议用于自动协商AH和ESP所使用的密码算法。

1.IPSec协议定义了两种通信保护机制:封装安全载荷(ESP,Encapsulating Security Payload)和鉴别头(AH,Authentication Header)。其中ESP机制为通信提供机密性和完整性;AH机制为通信提供完整性保护。ESP机制和AH机制都能为通信提供抗重放(Anti-replay)攻击。

2.IPSec协议可以设置成在两种工作模式下运行:一种是隧道(tunnel)模式,另一种是传输(transport)模式。

3. IPSec协议使用IKE协议实现安全协议的自动安全参数协商。IKE协商的安全参数包括加密与鉴别算法、 加密与鉴别密钥、通信的保护模式(传输或隧道模式)、密钥的生存期等。IKE将这些安全参数构成的集合称为安全关联(SA,security Association),还负责这些安全参数的刷新。

4.两个数据库:安全策略数据库SPD,安全关联数据库SAD 5.DOI将所有的IPSec小组的文献捆绑在一起。它可以被认为是所有IPSec安全参数的主数据库。 IKE定义了安全参数如何协商,以及共享密钥如何建立,但它没有定义的是协商内容。这方面的定义是由"解释域(doi)"文档来进行的

再说IPSec两种工作模式之前,先说明他们的“作用范围”

传输模式:保护上层协议

隧道模式:保护整个IP数据包

IPSec工作模式

传输模式:

应用场景:经常用于主机和主机之间端到端通信数据保护。

封装方式:不改变原有的IP包头,在原数据包头后面插入IPSec包头,将原来的数据封装成被保护的数据。

Ipsec工作模式即ipsec协议封装模式,主要用于定义在不同工作模式下,数据包交互的封装格式 这里的IPSEC包头就是下面介绍的AH头或者ESP头部 在传输模式下,IPSec协议处理模块会在IP报头和高层协议报头之间插入一个IPSec报头。

在这种模式下,IP报头与原始IP分组中的IP报头是一致的,只是IP报文中的协议字段会被改成IPSec协议的协议号(50或者51) ,并重新计算IP报头校验和。传输模式保护数据包的有效载荷、高层协议,IPSec源端点不会修改IP报头中目的IP地址,原来的IP地址也会保持明文。传输模式只为高层协议提供安全服务。

隧道模式:

应用场景:经常用于私网与私网之间通过公网进行通信,建立安全VPN通道。

与传输模式不同,在隧道模式下,原始IP分组被封装成一个新的IP报文,在内部报头以及外部报头之间插入一个IPSec报头,原IP地址被当作有效载荷的一部分收到IPSec的保护。另外,通过对数据加密,还可以隐藏原数据包中的IP地址,这样更有利于保护端到端通信中数据的安全性。

IPSec通信协议:

AH(Authentication Header,认证报头)

1、无连接数据完整性:通过哈希函数(如MD5、SHA1)产生的校验来保证;

2、数据源认证:通过在计算验证码时加入一个共享密钥来实现;

3、抗重放服务:AH报头中的序列号可以防止重放攻击。

不论是传输模式还是隧道模式下,AH提供对数据包的保护时,它保护的是整个IP数据包(易变的字段除外,如IP头中的TTL和TOS字段)。

注:AH分配到的协议号是51。也就是说,使用AH协议进行安全保护的IPv4数据报文的IP头部中协议字段将是51,表明IP头之后是一个AH头。AH头比ESP头简单得多,因为它没有提供机密性。由于不需要填充和一个填充长度指示器,因此也不存在尾部字段。另外,也不需要一个初始化向量。

AH Header:

(在传输模式和隧道模式下的封装方式,在下面与ESP的封装方式进行统一对比)

ESP(Encapsulating Security Payload,封装安全有效载荷):

1、无连接数据完整性:通过哈希函数(如MD5、SHA1)产生的校验来保证;

2、数据源认证:通过在计算验证码时加入一个共享密钥来实现;

3、抗重放服务:AH报头中的序列号可以防止重放攻击。

4、数据保密

5、有限的数据流保护

注:包含AH提供的服务,并比AH多出两种安全服务。

保密服务通过使用密码算法加密 IP 数据包的相关部分来实现。

数据流保密由隧道模式下的保密服务提供。

ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。

注:ESP同样被当作一种IP协议对待,紧贴在ESP头前的IP头,以协议号50标志ESP头,ESP之前的IP头中的协议字段将是50,以表明IP头之后是一个ESP头。 并且,ESP不仅具备ESP头,还有一个包含有用信息的ESP尾。

在隧道模式中,ESP保护整个IP包,整个原始IP包将会以ESP载荷的方式加入新建的数据包,同时,系统根据隧道起点和终点等参数,建立一个隧道IP头,作为这个数据包的新IP头,ESP头夹在隧道IP头和原始IP包之间,并点缀ESP尾。 而ESP提供加密服务,会以原始IP包和ESP尾以密文的形式出现。 ESP在验证过程中,只对ESP头部、原始数据包IP包头、原始数据包数据进行验证;只对原始的整个数据包进行加密,而不加密验证数据。 作为一个IPSec头,ESP头中必然包含一个SPI字段。这个值,和IP头之前的目标地址以及协议结合在一起,用来标识特定的安全联盟。SPI本身是个任意数,可以是使用者自己指定,也可交由一些密钥管理技术自行协商决定。需要注意的是, SPI可以经过了验证,但却无法被加密。这是必不可少的一种做法,因为SPI用于SA的标识,指定了采用的加密算法以及密钥,并用于对包进行解密。如果SPI本身已被加了密,我们会碰到一个非常严重的问题——“先有鸡,还是先有蛋”。

ESP Header

两种模式下,AH和ESP的封装方式对比:

传输模式:

AH对数据包的封装:

ESP对数据包的封装:

隧道模式:

AH对数据包的封装:

ESP对数据包的封装:

AH和ESP对比:

IPSec建立阶段

IKE协商阶段

SA(安全联盟)

定义:是通信对等体间对某些要素的约定,通信的双方符合SA约定的内容,就可以建立SA。

SA由三元组来唯一标识,包括:

安全参数索引       目的IP地址      安全协议号

IPSec是在两个端点之间提供安全通信,端点被称为IPSec对等体。

IPSec能够允许系统、网络的用户或管理员控制对等体间安全服务的粒度。例如,某个组织的安全策略可能规定来自特定子网的数据流应同时使用AH和ESP进行保护,并使用3DES(Triple Data Encryption Standard)进行加密;另一方面,策略可能规定来自另一个站点的数据流只使用ESP保护,并仅使用DES加密。通过SA(SecurityAssociation),IPSec能够对不同的数据流提供不同级别的安全保护。

安全联盟是IPSec的基础,也是IPSec的本质。SA是通信对等体间对某些要素的约定,例如,使用哪种安全协议、协议的操作模式(传输模式和隧道模式)、加密算法(DES和3DES)、特定流中保护数据的共享密钥以及密钥的生存周期等。

安全联盟是单向的,在两个对等体之间的双向通信,最少需要两个安全联盟来分别对两个方向的数据流进行安全保护。入站数据流和出站数据流分别由入站SA和出站SA进行处理。同时,如果希望同时使用AH和ESP来保护对等体间的数据流,则分别需要两个SA,一个用于AH,另一个用于ESP。

安全联盟由一个三元组来唯一标识,这个三元组包括安全参数索引(SPI, Security Parameter Index)、目的IP地址、安全协议号(AH 或ESP)。SPI 是为唯一标识SA而生成的一个32 比特的数值,它在IPSec头中传输。 IPSec设备会把SA的相关参数放入SPD(Security Policy Database)里面,SPD里面存放着“什么数据应该进行怎样的处理”这样的消息,在IPSec数据包出站和入站的时候会首先从SPD数据库中查找相关信息并做下一步处理。

IKE的产生背景:

用IPSec保护一个IP包之前,必须先建立安全联盟(SA)

IPSec的安全联盟可以通过手工配置的方式建立。但是当网络中节点较多时,手工配置将非常困难,而且难以保证安全性。这时就可以使用IKE(Internet Key Exchange)自动进行安全联盟建立与密钥交换的过程。Internet密钥交换(IKE)就用于动态建立SA,代表IPSec对SA进行协商

IKE的用途:

IKE为IPSec协商生成密钥,供AH/ESP加解密和验证使用。

在IPSec通信双方之间,动态地建立安全关联(SA:Security Association),对SA进行管理和维护

IKE是UDP之上的一个应用层协议,是IPSec的信令协议。IKE为IPSec协商生成密钥,供AH/ESP加解密和验证使用。AH协议和ESP协议有自己的协议号,分别是51和50。 SA(Security Association):是两个IPSec通信实体之间经协商建立起来的一种共同协定,它规定了通信双方使用哪种IPSec协议保护数据安全、应用的算法标识、加密和验证的密钥取值以及密钥的生存周期等等安全属性值。 通过使用安全关联(SA) , IPSec能够区分对不同的数据流提供的安全服务。

IKE工作过程

KE经过两个阶段为IPSec进行密钥协商并建立安全联盟:

第一阶段交换:通信各方彼此间建立了一个已通过身份验证和安全保护的通道,此阶段的交换建立了一个ISAKMP安全联盟,即ISAKMP SA(也可称为IKE SA)。 第一阶段交换有两种协商模式:

主模式协商

野蛮模式协商

一般情况下,IKE的主模式适用于两设备的公网IP固定、且要实现设备之间点对点的环境。 对于例如ADSL拨号用户,其获得的公网IP不是固定的,且可能存在NAT设备的情况下,采用野蛮模式做NAT穿越,同时,由于IP不是固定的,用name作为id-type,总部采用模板的方式接收分支的IPSEC 接入。

第二阶段交换:用已经建立的安全联盟(IKE SA)为IPSec协商安全服务,即为IPSec协商具体的安全联盟,建立IPSec SA,产生真正可以用来加密数据流的密钥,IPSec SA用于最终的IP数据安全传送。

下一篇分析:IKE 两种模式的对比和有关IPSec的一些知识补漏。

学习IPSec笔记总结(一)---------IPSec的基础知识相关推荐

  1. 学python需要什么基础知识-Python的学习,都需要具备哪些计算机基础知识?

    原标题:Python的学习,都需要具备哪些计算机基础知识? 首先 ,Python 语言可以完全从零基础学习 , 即使没有任何计算机基础.通过系统化的学习过程 , 同时也能掌握 Python 编程. 虽 ...

  2. 没有计算机基础可以学python-Python的学习,都需要具备哪些计算机基础知识?

    原标题:Python的学习,都需要具备哪些计算机基础知识? 首先 ,Python 语言可以完全从零基础学习 , 即使没有任何计算机基础.通过系统化的学习过程 , 同时也能掌握 Python 编程. 虽 ...

  3. 编程c语言零基础知识,零基础学习C语言都需要掌握哪些基础知识

    随着互联网的不断发展,越来越多的人都在学习互联网软件编程开发语言,而今天我们就一起来了解一下,零基础学习C语言都需要掌握哪些基础知识. 无论学习哪门语言先应该了解一下自己所学语言的背景,也可以说它的发 ...

  4. 【STM32H7】第8章 学习USB协议栈前要了解的基础知识

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99710 第8章   学习USB协议栈前要了解的基础知识 本章节 ...

  5. 【STM32F407】第8章 学习USB协议栈前要了解的基础知识

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99710 第8章   学习USB协议栈前要了解的基础知识 本章节 ...

  6. 【STM32F429】第8章 学习USB协议栈前要了解的基础知识

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99710 第8章   学习USB协议栈前要了解的基础知识 本章节 ...

  7. 【学习笔记】投资理财,基金基础知识科普入门学习,凭运气赚回来的钱,会凭实力亏掉_20210115

    [理财笔记] 理财举例:年收入20万,月入2万现金流,如何理财? 1.指数基金:了解大盘趋势,4分之一的钱 2.股票基金:了解行业基金,4分之一的钱 3.货币基金:了解货币基金,比如余额宝,4分之一的 ...

  8. SEO小白学习与实践(二):SEO相关基础知识与自有网站诊断

    前言 两年前建网站的时候,一切都是从百度检索开始的,遇到问题就问度娘.后来发现,这样的方法不是很好.度娘可以帮助解决铁定问题,但是非常系统的知识最好还是从书本上获取.于是,这次SEO学习咱就改变思路, ...

  9. 【Datawhale 组队学习Pytorch】Task01 Pytorch安装和基础知识

    [项目简介] PyTorch是利用深度学习进行数据科学研究的重要工具,在灵活性.可读性和性能上都具备相当的优势,近年来已成为学术界实现深度学习算法最常用的框架.考虑到PyTorch的学习兼具理论储备和 ...

  10. access2013数据库实验笔记_医学科研实验基础知识笔记(十):甲基化

    往期回顾 医学科研实验基础知识笔记(一):细胞增殖 医学科研实验基础知识笔记(二):细胞凋亡检测 医学科研实验基础知识笔记(三):细胞周期检测 医学科研实验基础知识笔记(四):细胞自噬研究策略 医学科 ...

最新文章

  1. 整合quickx到普通cocos2dx
  2. Win/Linux常用命令
  3. 双列集合,往treeMap里添加元素的时候注意的事项
  4. ViewPager 入门一
  5. 让我们来开发一种更类似人脑的神经网络吧(三)
  6. ASP.NET Core 实现带认证功能的Web代理服务器
  7. java 转jsp_【转】JSP三种页面跳转方式
  8. JS快速实现深拷贝--一行就搞定了
  9. python if break_python_if_else,while,break
  10. Java扫描仪toString()方法及示例
  11. matlab中如何表示线积分,MATLAB - 复杂的线/路径积分
  12. 生成指定序列的前一字典序序列(洛谷P2525题题解,C++语言描述)
  13. java buqi_Java 异常
  14. 北大青鸟广州天河中心C#学习笔记一--C#中的参数传递
  15. HBase之超时机制
  16. nginx防火墙在哪设置_Nginx 基本使用介绍
  17. 【VRP问题】基于模拟退火算法求解带时间窗的车辆路径规划问题VRPTW
  18. 视频教程-2021软考网络工程师--基础知识视频教程-软考
  19. 全球及中国石油天然气开采行业产量情况及十四五开发战略规划报告2021年版
  20. Openstack日常运维

热门文章

  1. 柏拉图对爱情和婚姻的说法
  2. ROS1云课→31欢乐卷假期
  3. ACS510 Modbus通讯
  4. ubuntu16.04修改复制粘贴快捷键的方法
  5. tf.logging.set_verbosity(tf.logging.INFO)
  6. python3 同时读取两个文件
  7. SpirngBoot整合ArangoDB
  8. quartz的maven依赖_maven项目使用quartz定时任务
  9. java面试经典题目
  10. OC、OD、线与、线或、推挽概念