APP下载

基于IPv6 流标签的IPsec 无开销封装模式*

2020-07-19姜鹏博

通信技术 2020年7期
关键词:分片字段字节

郭 栋,姜鹏博,阳 红

(中国电子科技集团公司第三十研究所,四川 成都 610041)

0 引言

随着网络的普及以及电子商务的流行,网络安全已经成为与人们生活息息相关的课题。IPsec 作为IP 网络层的标准安全协议,在当前IP 网络中被广泛的使用。IPsec 标准提出了两种封装模式,在提供安全服务的同时也带来了一些问题。

1 技术概述

1.1 IPv6 与流标签

IPv6 协议头如图1 所示,对比IPv4 协议头,IPv6[2]头部只有一个新增字段:Flow label,中文译为流标签,用于标示一对网络节点之间传输的一个业务流,同一个业务流中的IP 包应具有相同的流标签。

图1 IPv6 协议头

1.2 IPsec

IPsec 是IP Security 的简称,是一个由IETF 设计的确保IP 层通信安全的机制,是一系列为IP 网络提供安全性的协议和服务的集合。IPsec 不是一个单独的协议,包括了12 个RFC 文件和几十个Internet 草案,已经成为标准的IP 网络安全协议。

标准IPsec 中定义了两种协议[3],AH(验证头)和ESP(封装安全载荷),AH 协议可以为IP 包提供数据完整性、数据源认证和抗重传服务,ESP 协议除了能够提供AH 协议的三种服务外,还可以提供机密性服务。

标准IPsec 中定义了两种封装模式[4]:传输模式和隧道模式,采用ESP 协议时,两种封装模式格式如图2 所示。

其中,ESP 头和ESP 尾均由特定的字段构成,其格式如图3 所示。

图2 两种封装模式

图3 ESP 头和ESP 尾格式

2 传统封装模式存在的问题

2.1 传输开销

由于AH 协议不能提供机密性服务,在应用IPsec 时,通常使用的是ESP 协议。下文均基于ESP 协议进行分析。

两种传统封装模式最大的问题在于封装带来了开销。以以太网为例,在“初始化向量”长度为8字节、“验证数据”为16 字节前提下,分别计算两种封装模式下的传输效率。

传输模式效率计算公式如图4 所示,隧道模式效率计算公式如图5 所示。

在RFC2544[5]测试性能采用的各种帧长情况下,两种封装模式传输效率如表1 所示。

图4 传输模式效率

图5 隧道模式效率

表1 传输模式和隧道模式的传输效率

从表1 可以看出,在帧长较小情况下,两种封装模式开销将极大的影响传输效率。

2.2 丢包策略

由于封装带来了开销,当业务包以线速进入IPsec 对等体时,并不是所有业务包均得到IPsec 服务并正确转发,超过IPsec 对等体处理性能的业务包将会被丢弃,由此带来了丢包策略问题。业务包优先级和丢包策略是一个复杂的课题,在此文中不再详述。

2.3 分片重组

由于封装开销的存在,部分业务包在实施IPsec时需要分片和重组,进一步降低了传输性能,增加了IPsec 实现的复杂性。

3 无开销封装模式

3.1 流标签特点

在IP 网络中,传统上使用IP 包的五元组来区分数据流,也就是源和目的IP 地址、源和目的端口号以及传输协议。但是,分片会导致非首片分片包缺少端口号字段,加密会导致无法获取IP 包的传输协议和端口号字段,还有,由于IPv6 包可能存在扩展头,传输协议和端口号字段要通过一系列的解析才能获取,效率较低。

流标签的使用方法在相关的RFC 中并未做具体设定,但是RFC 对流标签的使用提出了一些要求。如流标签在传输过程中不能被任意节点修改,同一对源和目的地址的节点不能把同一个标签用在不同的数据流上,流标签在使用结束后的120 秒之内不可再被使用等。

3.2 无开销封装实现方式

无开销封装模式,是在传输模式的基础上,逐一分析ESP 头和ESP 尾中各个字段存在的必要性,只保留必需的字段并存储到流标签中,通过流标签实现IPsec。

标准IPsec 中ESP 协议的扩展头和扩展尾的格式如图3 所示,SPI 用于关联安全联盟,序列号用于抗重放,初始化向量是加解密算法的一个输入。另外,分组算法通常需要将明文数据填充成8 或16字节的整数倍,因此ESP 尾中有填充字段和填充长度。下一个头用于记录原始包中的传输协议类型。验证数据用于实现完整性校验功能。

如果不考虑抗重放功能,可省略序列号字段。加解密时可使用IPv6 头部中的固定字段作为初始化向量,可省略初始化向量字段。另外,通过设计特定的算法,加解密无需再提供填充字段。如果不考虑完整性校验功能,可省略验证数据字段。

因此,在构成ESP 头和ESP 尾的各字段中,只有SPI 和下一个头字段必须保留。标准IPsec 中SPI 字段长度为4 个字节,下一个头长度为1 个字节,流标签的22 比特空间不足以存放SPI 和下一个头。下一个头存放的是原始包的协议值,长度必须为1个字节,因此只能压缩SPI 存储空间。

如图6 所示,将22 比特的流标签空间划分成两部分,前14 比特用于存放SPI,后8 比特用于存放下一个头。

图6 流标签的划分格式

无开销模式中的SPI 和下一个头与标准Ipsec中的相同字段用法保持一致。

流标签用于在一对源和目的之间标记一个特定的数据流,与SPI 字段在IPsec 中的作用基本类似,另外具有同样流标签的业务包应得到相同的服务,以及流标签在传输过程中不能被更改等特点,使得流标签非常适合于实现IPsec。

3.3 模式比较

与标准IPsec 中定义的两种封装模式比较,无开销模式具有以下特点:

(1)在实现IPsec 的同时省略了开销,传输性能可达到线速。

(2)传输模式和隧道模式下,当输入的明文数据已达到线速的情况下,开销会造成丢包,将带来丢包策略、业务包优先级等一系列复杂问题。无开销模式无此类问题。

(3)传输模式和隧道模式下,经过IPsec 处理后,包长度会增加,由此带来分片和重组问题,分片和重组会进一步影响传输性能。无开销模式不会改变包长,无需考虑分片。

(4)传输模式和隧道模式下,SPI 字段占用了32 比特空间,同一对源和目的IP 地址之间最多能够建立4 294 967 296 个SA。无开销模式下,由于流标签字段空间有限,SPI 字段最大只能占用14 比特空间,在同一对源和目的IP 地址之间最多能够建立16 384 个SA,对于一般的终端节点够用,如果节点为服务器则要慎重考虑。

(5)传输模式和隧道模式下,ESP 扩展头中存在序列号字段用于提供抗重放服务,无开销模式没有足够的空间存放序列号,因此无法提供抗重放服务。

(6)传输模式和隧道模式可提供数据完整性服务,无开销模式没有足够的空间存放校验数据,因此在IPsec 层面无法提供数据完整性服务,但被保护的高层协议通常包括校验和字段,数据完整性方面可以借助于高层协议如TCP、UDP 及ICMPv6等协议实现。

(7)无开销模式,未对下一个头字段加密,网络攻击者可通过抓包分析获取数据流传输协议。

4 结语

标准IPsec 定义的两种封装模式在提供IP 网络安全服务的同时,也带来了传输开销、分片等问题。本文提出的无开销封装模式,通过利用IPv6 头部中的流标签字段,在IPv6 协议下无开销实现IPsec。由于流标签空间有限,无开销模式无法提供数据完整性和抗重放服务,高层协议的校验和可提供弱完整性服务。无开销模式可提供简单的机密性服务,在带宽有限的网络中具有一定的优势。另外,省略填充字段依赖于特殊的算法实现,需要在设计和实现算法时考虑。

猜你喜欢

分片字段字节
上下分片與詞的時空佈局
利用状态归约处理跨分片交易的多轮验证方案①
带钩或不带钩选择方框批量自动换
No.8 字节跳动将推出独立出口电商APP
浅谈台湾原版中文图书的编目经验
No.10 “字节跳动手机”要来了?
基于模糊二分查找的帧分片算法设计与实现
轻量级分组密码Midori64的积分攻击
通用导弹雷达罩曲面分片展开系统的开发
无正题名文献著录方法评述