之前我们对密码学的基本概念和一些基础知识做了简介,其中包括加密、完整性校验、消息验证码、数字签名等。这一篇章将对IPSec的基本框架进行简介,并介绍上一篇长学习的各部分知识如何在IPSec的基本架构中进行运用。
什么是IPSec
IPSec不是单独的某个协议,它给出应用于IP层上网络数据安全的一整套方案,其主要包括如下组件:
①工作模式
传输模式(transport mode)
隧道模式(tunnel mode)
②封装数据包
认证头协议AH(IP Authentication Header)
安全载荷协议ESP(IP Encapsulating Security Payload)
③秘钥管理
因特网秘钥交换协议IKE(Internet Key Exchange Protocol)
④流量保护
安全关联SA(Security Association)
⑤两个数据库
SPD—安全策略数据库
SADB—安全关联数据库
相关术语
①通信点:实际进行数据通信的站点。例如发送数据的PC
②加解密点:负责将实际通信的数据进行加密和解密的站点。例如配置IPSec VPN的设备
IPSec解决方案工作模式
IPSec的解决方案中有两个工作模式,一个是传输模式,一个是隧道模式。每个模式使用的场景不同,对数据的处理方式也不同,下面我们来详细了解一下这两种模式的区别。
传输模式
在传输模式下,AH或ESP被插入到IP头之后但在所有传输层协议之前,或所有其他IPSec协议之前。
使用场景
传输模式用于两台主机之间的通讯,或者是一台主机和一个安全网关之间的通讯。在传输模式下,对报文进行加密和解密的两台设备本身必须是报文的原始发送者和最终接收者。换句话说,就是加解密点是实际的通信点。正是因为如此,如果通信双方的IP地址是私网地址,那么该VPN无法穿越Internet。如下场景:
隧道模式
在隧道模式下,AH或ESP插在原始IP头之前,另外生成一个新IP头放到AH或ESP之前。
使用场景
隧道模式经常使用在网络到网络的场景中。
通常,在两个安全网关(路由器)之间的数据流量,绝大部分都不是安全网关本身的通讯量,因此在安全网关之间一般不使用传输模式,而总是使用隧道模式。在一个安全网关被加密的报文,只有另一个安全网关能够解密。因此必须对IP报文进行隧道封装,即增加一个新的IP头,进行隧道封装后的IP报文被发送到另一个安全网关,才能够被解密。如下场景:
封装协议
IPSec是为了在网络层为IP分组提供安全服务,这些服务包括访问控制、数据完整性、身份验证、防止重放和数据机密性。
安全载荷协议ESP和认证头协议AH是两种IPSec安全协议,用于为IP数据报提供这种安全协议,接下来我们将简介这两种协议。
安全载荷协议ESP(IP Encapsulating Security Payload)
ESP主要提供私密性、数据完整性、源认证、防重放服务,其协议号为50,没有端口号,。支持两种工作模式,详细报文如下:
以下为各个常见字段的含义
字段 |
长度 |
描述 |
Security Parameters Index |
32比特 |
安全参数索引。用于标识该数据包从属于哪个安全关联。 |
Sequence Number |
32比特 |
序列号。每发一个包,序列号增加一。收到相同序列号的数据包,则认为是重放攻击,会丢弃该数据包。 |
Initialization vector |
不详 |
初始化向量位。(上图中没有,见下图)
|
Payload Data* |
变长 |
有效载荷数据(可变)。 |
Padding |
0–255字节 |
填充字段,也叫做垫片。(例如:在DES中,等分64位,如果最后不足64,则填充数据,一般是填充0) |
Pad Length |
8比特 |
填充字段长度。 |
Next Header |
8比特 |
表示紧跟在ESP头部后面的协议类型,例如TCP |
Integrity Check Value-ICV |
变长 |
验证数据。加密的是明文数据包部分,做哈希的是ESP头部和明文数据部分(也就是指纹针对的对象)。哈希做出来放在ESP认证尾部(也就是ESP trailer中) |
认证头协议AH(IP Authentication Header)
主要提供数据完整性、源认证、防重放攻击,
不提供私密性,协议号为51,详细报文如下:
以下为各常见字段的含义
字段 |
长度 |
描述 |
Next Header |
8比特 |
表示紧跟在AH头部后面的协议类型,例如UDP |
Payload Len |
8比特 |
AH的长度减2,4字节为计数单位。例如,有个96比特的认证值,长度将是"4"(即头部固定的3个4字节 + ICV的3个4字节 - 2)。对于IPv6,头部总长度必须为8字节的倍数。 |
RESERVED |
16比特 |
预留将来使用。必须置0,接收时忽略。 |
Security Parameters Index |
32比特 |
用于给报文接收端识别SA |
Sequence Number Field |
32比特 |
序列号,每发送一个报文,计数加1,例如每发一个SA报文序列号增加1。 |
Integrity Check Value-ICV |
变长 |
报文的ICV字段,可变长度,长度必须为32比特的整数倍。 |
注意:AH中出了服务类型、标志、段偏移量、TTL等值是不用变化的,其他的值都需要进行哈希计算,其中包括源目IP地址,所以在经过NAT之后,哈希值不一样,导致无法验证。如下图所示:
AH和ESP协议组合使用
安全关联SA(Security Association)
两个IPSec实体(主机、安全网关)之间经过协商建立起来的一种协定,内容包括采用何种IPSec协议(AH还是ESP )、运行模式(传输模式还是隧道模式)、验证算法、加密算法、加密密钥、密钥生存期、抗重放窗口,
从而决定了保护什么、如何保护以及谁来保护。可以说SA是构成IPSec的基础。
安全关联是IPSec的基本组成部分,一个正产的IPSec_VPN会有以下两种SA:
①IKE SA
作用:保护第一阶段的协商流量和认证流量(
上述紫色字体)
特点:双向的(一条关联可以用于A→B、A←B)、默认有效期1天
②IPSec SA
作用:保护实际传输的流量(
上述绿色字体)
特点:单向的(一条关联要么用于A→B,要么用于B→A。一条感兴趣流,有两条IPSec SA)、默认有效期1个小时
注意:这两种SA都是IKE协议协商产商的。
SPD和SADB数据库
SPD—安全策略数据库
①SPD用于存放IPSec_VPN的策略,这些策略用来定义哪些流量需要走IPSec(也就是感兴趣流)
②SPD存储的主要内容如下:
源目IP地址、源目端口、封装协议、工作模式
③SPD的三种行为:
A、旁路:当数据包源目IP不匹配SPD记录的策略时,按照路由表转发。
B、IPSec加密:当数据包的源目IP匹配SPD记录策略时,交给相应的封装来执行IPSec处理
C、丢弃:这个内容比较多,在“方向crypto-map”中详解。
SADB—安全关联数据库
在两个端点之间建立IPSec安全关联时,需要创建用于对数据流进行加密或验证的安全状态信息。安全关联状态存储在一种名为安全关联数据库(SADB)的数据结构中。两个IPSec对等体之间的通信出现故障时,必须清楚对等体的SADB,并在回复IPSec安全关联时重新创建。
①SADB中的每一个条目都定义了与一个SA相关联的参数,当一个IPSec_SA被创建,SADB就会更新所有关于这个SA的参数
②主要存储的内容如下:
SPI、封装协议(包括加密算法、完整性校验)、工作模式
③主要行为
A、当一个inbound-IPSec数据包抵达,SADB基于外层IP头部的目的IP地址、SPI、IPSec封装协议,三个标识查找对应的SA。
B、然后用这个SA的相参数处理这个inbound_IPSec数据包
C、对于outbound_IPSec数据包处理的相关参数,室友SPD相关联的SA来获取。
两个数据库处理的大致流程
总结来说:
SPD决定是否要处理数据,SADB决定如何处理数据。
IPSec数据处理流程
outbound流量
①办事处发送一个数据包,源为202.200.200.1,目的为7.7.1.1,下一跳到Site_2
②Site_2依据路由表进行转发,法相该接口部署了一个crypto-map
③因此Site_2执行SPD查询,查看是否有关于该数据(源为202.200.200.1,目的为7.7.1.1)的安全策略。
④若策略表中ACL所关联的感兴趣流,能够匹配该流量,则执行IPSec加密(转换集)
⑤然后检查是否建立了到IPSec对等体的安全关联
如果有,则依据该安全关联直接转发
如果没有,则所有想要发送的数据包都将被丢弃,直到该安全关联被建立
inbound流量
①Site_1接收到该数据包,依据SADB中的三个标识找到对应的SA
②找到匹配的SA之后,使用对应的安全策略对该数据执行认证和解密
③再将解密后数据包的源目IP地址、源目端口号、IP协议号与SPD数据进行对比,以确保其有效性。
④以上步骤完成后,Site_1按照常规转发方式,将明文数据包发送到目的地(7.7.1.1)
以上我们了解了IPSec解决方案中各部分的大致内容,但是在运用这个解决方案的过程中,有一个关键的步骤:各个部分用来协商秘钥的参数以及一些共享密钥如何交换?这部分的内容由因特网必要交换协议进行解决(IKE),IKE又分为IKEv1和IKEv2两个版本,他们是IPSec解决方案的核心组成部分。下一节我们将简介IKEv1的主要内容。
相关课程内容推荐
华为认证入门:hcia和hcna的区别
思博华为认证课程安排表: HCIA-DATACOM课表 | HCIA-云计算课表
华为399限额限时活动入门课程:HCIA课程
华为认证值不值得考?华为网络工程师认证有哪些?
华为不同等级费用差异:华为认证hcna、hcnp、hcie考试费用