APP下载

IoT云连接中轻量级IPSec VPN的部署

2020-08-26曾喜娟

绵阳师范学院学报 2020年8期
关键词:物件数据包密钥

曾喜娟

(黎明职业大学智能制造工程学院,福建泉州 362000)

0 引言

物联网通过智能物件及网络技术,将物理世界的各类感知器件连接起来,通过无线传感技术采集物理世界的信息,经互联网传给云端服务器.在物联网部署的海量终端一般是资源受限、异构的瘦客户端,通过摄像头、传感器等收集的数据信息与人们的日常生活密切相连[1],在物联网业务环境中,通信、数据协同等操作将更加频繁,这个庞大的系统如果不加于安全隐私的规范,某些生活隐私或者敏感数据有可能会造成泄密.而物联网终端和一般的通用计算机系统不同,大多为资源受限的低功耗的智能物件,容易受到拒绝服务攻击(Denial of Service,Dos),面向传统数据集的安全技术难以直接应用.现有的一些非IP物联网技术如ZigBee及Z-wave等联盟提出AES加密、数据完整性、鉴权等[2],都只是在数据链路层进行,此类协议无法直接与基于IP协议的互联网相连,必须通过相关网关将其转换为IP包,此时基于数据链路层技术无法保护在互联网的数据安全.IPSO联盟提出在智能物件中使用IP协议,把IEEE802.15.4 上引入6LoWPAN适配层[3],支持IPV6协议,因此可以把IP的安全机制应用于物联网中,如SSL及IPSec.其中SSL运行于传输层,为两个网络端点提供了基于TCP的端对端的安全信道,在认证阶段使用了非对称加密算法,却不适合在计算能力有限的智能物件上使用,且只支持TCP,不支持对整个IP协议栈其他协议如udp等的安全防护.而IPSec作为标准IPV6网络层下方的一个必备的安全套件,为通信双方提供安全服务.在6LoWPAN中利用IEEE802.15.4设备中的AES加速器优势,便于在智能物件中实现.因此,在6LoWPAN上运用IPSec协议保护IoT云连接中的安全具有重要意义.

1 IPSec

IPSec协议作为IPV6协议栈的一部分,由身份验证头部(AH)和封装安全载荷(ESP)和密钥交换协议(IKE)等组件组成,为IP通信提供了访问控制、身份验证、抗重演及加密等网络安全服务.其中身份验证头部安全性协议(AH)的服务主要采用HMAC/SHA和HMAC/MD5等算法通过散列函数产生的报文摘要校验值来支持数据完整性校验服务,并在保证包头的序列号在通信过程中的同一个窗口期为唯一值来防止重放攻击,并通过共享密钥来实现数据源身份认证服务.封装安全载荷ESP协议主要提供用来实现IP数据包或数据流的加密服务 可以支持DES、Triple DES、RC5等多种加密算法,并能提供数据源身份认证、数据完整性、抗重演攻击等功能.密钥交换协议IKE为通信双方提供密钥协商、密钥管理的机制.

IPSec协议为通信双方建立vpn通道,为保护两台主机之间、两个网关之间或主机和网关之间的数据通信服务,避免泄密.通信双方在正式通信前会先协商这次通信准备采用的安全策略包括加密算法、密钥及其生存期等,协商完成后把它保存在安全关系数据库(SAD)内,供今后IPSec通信时使用.通信时,IPSec可以采用隧道模式和传输模式两种模式进行传输数据,其中在隧道方式中,IPSec会先采用双方协商的算法加密原有整个IP数据包,然后加上新的IP包头形成一个新的数据报传输给对方,对方收到数据包后再用对应的算法进行解包,抽取出原有的IP包.而在传输方式中,IPSec会先从原有的ip包抽取出高层协议数据单元(PDU)数据出来,采用双方协商的算法加密,计算附加包头,并用原有的源IP及目的IP进行封装,传输给目的地.

2 IPSec在IoT云连接中的应用

图1 智能物件与OpenStack云连接示意图Fig.1 Connection between smart objects and OpenStack cloud

在物联网中,每个传感器就是一个信息源,不同类型的传感器所获得的信息内容和信息格式不同,相互之间进行资源共享及互操作存在着很大的困难.建立利用大规模的可扩展的云,由云主机承担感知数据的标准化加工、处理与储存任务,通过无线传感器,射频识别等智能设备搜集和整理数据和信息,并为应用提供统一的数据接入Portal.在这个结构中,大多数应用服务由云提供,一些实时性要求较高的由本地“传感云”高效地提供,实现数据共享和交换.其结构如图1所示:

图2 基于6LoWPAN的IPv6协议栈Fig.2 IPv6 protocol stack based on 6LoWPAN

在图1中,物联网中的智能物件如RFID、摄像头、温度传感器以及车载GPS等嵌入式设备等,通过有线、无线接入方式(如6LoWPAN、ZigBee、Wifi)连接到互联网中,扩展了信息系统获取物理世界信息的边界和能力.这些智能部件大多是低功耗资源受限,计算能力不足,容易受到拒绝服务攻击(Denial of Service,Dos),在途中的一些非IP物联网技术如ZigBee这类协议无法直接与基于IP协议的互联网相连[4],必须通过相关网关进行转换,将其转换为IP包,再通过IP网络传输给云端及其他IP终端.对于IP协议的智能物件中,在IEEE802.15.4 上引入6LoWPAN适配层,支持IPv6协议,其协议栈构如图2 所示,由于能耗受限的智能物件,内存大小及微控制器处理能力,无法承载标准的ip协议栈,因此,可以采用开源的uIP协议栈针对6LoWPAN适配层的特征进行裁剪及数据包头压缩[5].

6LoWPAN是运行于IEEE802.15.4链路上的一个低功耗网络(LLN),而IEEE802.15.4标准中规定了数据包最大传输单元只有127字节,而IPV6要求的最小MTU为1280字节,因此必须利用对6LoWPAN上的IPV6包头利用IPHC压缩技术进行压缩[6],从链路层导出 IP地址,缩减或删除某些冗余的协议字段以避免没必要的信息冗余,同理可以采用IPHC方法对IPSec头进行压缩,而ESP及AH有些功能重复,可以考虑只使用ESP进行认证及加密.压缩完的IPV6数据包还必须在6LoWPAN分片传输,可以考虑在6LoWPAN网关进行重组成标准IPV6包进入互联网传输给云端.而在传输数据的模式选择中,传输模式只加密原承载的高层协议数据单元,与隧道模式相比,少了新的IP包头的开销[7],适合于资源受限的物联网终端使用,故选择传输模式.

在云端拟采用OpenStack云平台,通过KeyStone PKI服务颁发CA证书完成用户及物件的鉴别、认证及加密任务.在云应用服务方面.OpenStack通过Customer Portal整合点接入用户的app,采集智能物件的数据及对智能物件进行交互,由于智能物件在处理能力、能耗要求以及通信带宽的限制,不建议采用SOAP、WSDLUDDI等重量级的Web服务机制,而表象化状态转换(Representational State Transfer,REST)是一种轻量的Web服务机制,适合智能物件使用,发送数据前,把数据或者资源利用JSON进行编码,通过HTTP方法发起请求,HTTP协议作为无状态的传输协议,完成请求的状态由请求自身提供,因此客户端可以不依赖与服务器端的状态,服务器也不依赖与客户端的状态,可以根据需要把状态及表示在客户端和服务器间进行转移.此类REST HTTP事务既可以传送传感器数据,也可以传输加密密钥,服务于下一次IPSec密钥协商.

3 IPSec轻量化的实现

图3 轻量化IPSec数据流示意图Fig.3 The diagram of lightweight IPSec data flow

如图2所示,轻量级 IPSec 协议位于网络层底部作为IPv6的一个安全协议,为上层提供安全服务,保证数据在网络中的传输安全.但在实际应用中,当智能终端有数据包要发送给云端时,IPv6 协议时可能不会使用到 IPSec 协议,而是直接通过交给下一层即6LoWPAN适配层来转发数据包.因此要对智能终端实现轻量级IPsec时,在网络层及6LoWPAN适配层之间插入一个流量过滤器(traffic filter)来分流这两层的数据流,如图3所示.在图3中,IPsec 设备驱动作为流量过滤器,过滤网络层的ipv6_input 及 ipv6_output 函数与6LoWPAN层的6LoWPAN_input及6LoWPAN_output之间的数据流[8].当网络层及6LoWPAN层之间数据流通过时, IPsec 设备驱动会先查询安全策略数据库(SPD),SPD中会指明对数据流的处理方式,分别是保护(Protect),丢弃(Discard)或者旁路(bypass).当处理方式是应用时,这个数据流将会被分发到 IPsec 引擎.接着,IPsec 引擎将从安全联盟数据库(SAD)检索此次通信对应的SA,结合安全策略数据库(SPD)的策略来对数据包进行加密后,发送给下一层.当处理方式是旁路时,则数据流将会直接传给下一层,不会经过 IPsec 引擎.当处理方式是丢弃时,这个数据包将会被丢弃.

在智能终端与云进行连接的实现中,我们主要采用了ESP的传输模式.如果只想从降低ESP的负荷来考虑,ESP可以只使用加密服务,但是如果弃用了完整性服务,则智能终端可能会受到主动攻击,数据包传输过程中可能被篡改.因在IPSec轻量化中已经裁减了AH协议,在ESP实现中必须提供完整性服务功能,结合保密性服务,增强智能终端对主动和被动攻击的抵御能力.另作为数据源的智能终端会发送 Seq 号,由接收端根据查询SAD数据库得到该会话的SA来决定是否进行处理以抵抗重放攻击.

在ESP传输模块的具体实现上,我们通过ipsec_encap_esp_pkt() 函 数 和ipsec_decap_esp_pkt()函数来实现对数据包进行封包及解包.

1)封包函数ipsec_encap_esp_pkt(ipv6_header *pkt, int *offset, int *len,sad_entry *sa)

ipsec_encap_esp_pkt函数负责把接收到的数据包pkt根据SAD中的sa策略封装 为ESP 协议数据包,其工作流程如图4所示.当IPsec 设备驱动从网络层接收到IPV6的数据包时, 会查询 SAD数据库,当查询到的SA规则为应用,需要ESP模块处理时,即进入封包的操作.ipsec_encap_esp_pkt首先提取IP包中提取中高层的数据内容; 接着根据 SAD查询到的SA规则判断是否进行加密,如果需要加密则根据SA查询到的加密规则进行处理,判断是否需要初始化向量(IV) ,如果是,则将IV加在在高层负载数据前 ;根据加密要求对数据进行填充对齐,并在 Pad Length 域中记录填充数据大小,然后进行加密.加密问题处理完成后,添加ESP 包头内容,ESP包头序列号 SN 和 SPI,并判断完整性认证数据是否符合认证算法对字节对齐的要求.最后添加ESP尾部,要根据ESP 头和 ESP 数据载荷整个部分生成 ICV添加到整个数据包后面,此时IPSec包封装工作完成,并把数据包传给6LoWPAN适配层层.

图4 IPSec封包流程图Fig.4 The flow diagram of IPSec data encapsulating

2)解包函数ipsec_decap_esp_pkt(ipv6_header *pkt, int *offset, int *len,sad_entry *sa)

ipsec_encap_esp_pkt函数负责把接收到的数据包pkt根据SAD中的sa策略解封装成原始的ip包,其工作流程如图5所示.当IPsec 设备驱动从6LoPWAN层接收到IPV6的数据包时, 会先判断是否需要进行分段重组,然后读取接收到的包SPI信息,从 SAD来查询本次通信对应的 SA;若没有找到对应可用的SA或者其策略为丢弃,则丢弃其数据包;若当查询到的SA规则为应用,需要ESP模块处理时,即进入解包的操作. 接着根据 SAD查询到的SA规则判断是否需要抗重放服务,如果需要则会检查包中的 Seq 域,判断是否在接收窗口范围内并为唯一包.如果该seq值不在窗口内或包不唯一,则将包丢弃.否则接着根据 SA 中指定的认证算法计算相应的 ICV 值,如果计算值不等于传入包中的ICV 的值,则认为完整性验证失败丢弃该包,否则认为完整性验证通过,继续采用SA 中的密钥、算法来进行解密,如果解密出来 Next Header 数据域中的数据为 59,表示没有下一包头,则丢弃该数据包;否则,解包完成,传递给网络层IPV6_INPUT函数进行处理.

图5 IPSec解包流程图Fig.5 The flow diagram of IPSec data decapsulating

4 结论

在IoT云连接中的应用中,在资源受限智能终端采用IP协议栈与外部进行通信,可轻量级IP协议栈基础上进行裁剪,并利用IPHC压缩技术进行压缩,从链路层导出 IP地址,缩减或删除某些冗余的协议字段以避免没必要的信息冗余,使之能运行在基于最大传输单元只有127字节的IEEE802.15.4链路的6LoWPAN低功耗网络(LLN)上,同理为了保护信息通信的安全,可以采用IPHC方法对IPSec头进行压缩,只使用ESP进行认证及加密.压缩完的IPV6数据包还必须在6LoWPAN分片传输,在6LoWPAN网关进行重组成标准IPV6包进入互联网传输给云端,满足了联网终端智能物件因其在处理能力较低、能耗要求以及通信带宽的限制,在和云端进行通信时,部署这个轻量级的IPSec VPN能够有效保护智能终端及云端的应用需求.

猜你喜欢

物件数据包密钥
二维隐蔽时间信道构建的研究*
幻中邂逅之金色密钥
打开话匣子的好物件
老物件
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
旧元素,新物件
密码系统中密钥的状态与保护*
C#串口高效可靠的接收方案设计
TPM 2.0密钥迁移协议研究
老物件,大乐趣