金小艳,王忠春,范国林,吴晓嫣,周 凌
(1.中国电子科技网络信息安全有限公司,四川 成都 610041;2.北京市海淀区复兴路14号10分队,北京 100036)
随着终端智能化的发展,越来越多的终端设备接入网络,物联网得到快速发展。根据Gartner的2015年报告预测,2020年全球可传感设备达2 120亿个,接入物联网的设备数量将高达300亿个[1]。如此巨大的接入终端将带来了极大的安全隐患。物联网的安全问题成为制约物联网全面发展的重要因素。为促进物联网的安全发展,除了安全的物联网架构,还需要有效的认证协议。设计高效安全的认证协议是促进物联网发展、保证物联网安全性的重要措施。
在RFID、无线传感器网络等应用环境中,节点资源(包括存储容量、计算能力、通信带宽和传输距离等)受到比传统网络更加严格的限制。由于物联网中终端功能简单,携带能量少,攻击者有时会利用消耗节点能量的方式攻击物联网。耗尽攻击就是利用协议漏洞,通过持续通信的方式使节点能量资源耗尽[2]。
因此,安全认证技术更需要轻量化,因为协议涉及到通信过程,其消耗的资源(主要是功耗)远超过计算过程所消耗的资源。资源的严重受限使得传统的计算、存储和通信开销较大的安全协议技术无法应用,因此轻量级安全协议技术成为研究的热点[3]。基于轻量级安全协议设计物联网安全网关,完成物联网终端的安全接入和数据安全传输。
在3GPP TR45.820研究报告中,对NB-IoT的能量消耗进行了预估。在发射功率为+23 dBm(200 mW)的条件下,每天发送一次报文,报文长度为200个字节,终端处于链路损耗为-164 dB覆盖点情况时,电池可用年限为12.8年。由此可见,NBIoT的应用场景对终端的能量消耗有很高的要求,在安全协议的设计中要考虑终端计算资源、存储资源以及能量消耗的问题,尽可能采用计算资源消耗少的密码算法,以减少计算量。
在TR45.820报告中,NB-IoT的发送能量消耗 为 460 mW(external PA) 和 500 mW(internal PA),接收能量消耗为70 mW(PBCH、PDCCH、PDSCH)和80 mW(PSCH),发送消耗约是接收消耗的6~9倍。因此,认证协议的报文交互环节中要尽可能减少终端的发送过程。
基于以上考虑,安全协议主要采用对称密码体制实现身份认证、数据机密性保护、数据完整性保护。安全协议包括身份认证协议和安全数据传输协议。
身份认证协议是基于传输层协议之上的应用层协议,基于对称密码体制,采用“挑战—应答(Request-Answer)”交互机制实现双向认证。终端TE与网关GW之间必须共享密钥K,认证过程中使用的密钥必须通过密钥K、终端ID以及随机数生成。
当物联网终端启动认证流程时,物联网终端ID可以通过明文方式发送给网关。物联网终端和网关的算法过程需要使用轻量级分组密码算法,通过对随机数Rand和终端ID加密生成认证令牌AUTN来实现。物联网终端和网关之间的认证消息需要进行完整性保护,算法过程需要使用杂凑算法计算生成消息认证码MAC,进而通过MAC实现消息完整性保护。
在物联网终端TE和GW认证消息的交互过程中,会相互交换用于后续会话消息保护的密钥生成资源,即由物联网终端和网关生成的随机数Rand。物联网终端和网关可以通过Rand各自计算会话机密性密钥和会话完整性保护密钥。因此,认证后数据传输过程中使用的密钥不需要通过网络进行传输。
完整认证流程由4条消息交互组成,包括连接请求、认证请求、认证响应和认证通知,具体流程如图1所示。
图1 身份认证协议流程
(1)物联网终端生成随机数Rand,并将随机数和终端编号ID发送给安全网关,启动认证流程;
(2)安全网关收到连接请求消息后,检查ID是否合法,若合法则生成新的Rand和认证密钥,计算用于认证的AUTNGW令牌和MAC,利用认证密钥加密认证令牌AUTNGW,通过认证请求消息将加密的AUTNGW和MAC发送给物联网终端;
(3)物联网终端收到认证请求消息后,启动算法验证AUTNGW和MAC,若验证合法则利用随机数生成认证密钥,计算用于认证的AUTNTE和MAC,利用认证密钥加密认证令牌AUTNTE,通过认证响应消息将加密的AUTNTE和MAC发送给安全网关;
(4)安全网关收到认证响应后,启动算法验证AUTNTE和MAC,若通过验证则利用随机数、终端ID等信息生成会话完整性密钥和会话机密性密钥,同时生成会话ID,向物联网终端发送认证成功通知消息;
(5)终端收到认证通知消息后,利用随机数、终端ID等信息生成与网关一致的会话完整性密钥和会话机密性密钥。
安全传输协议是基于传输层协议之上的应用层协议。应用层数据在发送前需要进行加密保护和完整性保护。TE和GW利用轻量级分组密码算法(与认证过程中使用的算法一致),对应用层数据进行加密保护生成密文数据,密钥采用认证过程中通过算法生成的机密性会话密钥。同时TE和GW利用杂凑算法计算应用层数据消息认证代码MAC,密钥采用认证过程中通过算法生成的完整性会话密钥,具体流程如图2所示。
数据传输包含上行数据和下行数据。
(1)上行数据流程:物联网终端利用认证时生成的机密性会话密钥加密数据,用认证时生成的完整性会话密钥计算密文的MAC,把会话ID、密文和MAC组合发送给网关,网关收到后进行会话ID合法性判断、MAC检验和数据解密。
(2)下行数据流程:与上行数据流程类似,网关加密组装数据,终端检验MAC解密数据。
图2 数据传输协议流程
目前,业界对跨网数据的安全接入策略进行了广泛的研究,但网关技术仍然是一个基本的策略模型。网关技术具有有效的安全隔离,灵活的业务代理、成熟的技术积累等特点。[4]
物联网安全网关提供移动物联网与应用系统之间的安全连接能力,可支持物联网模组、终端的安全接入,支持端到端的安全通道构建,提供身份认证、鉴权、访问控制以及防火墙等安全功能。典型的组网应用方式如图3所示。
图3 物联网安全网关典型组网应用方式
物联网网关设备功能复杂,性能要求高。为了使物联网安全网关设备的硬件平台具有较大的可扩展、可升级、可维护等特点,需要从系统角度统一考虑和设计物联网安全网关设备硬件框架。物联网安全网关设备采用标准X86架构,物联网安全网关设备采用19英寸2U标准机柜设备形态。
2.2.1 功能组成
物联网安全网关可划分为安全服务、密钥管理、配置管理和基础支撑4个功能子系统,如图4所示。
(1)安全服务子系统
安全服务子系统实现物联网安全网关的安全功能,包括如下内容:
①安全认证:根据轻量级安全认证协议,实现物联网终端与网关的双向认证中服务器一侧的功能;
②安全传输:根据安全传输协议,实现物联网终端和物联网应用系统之间数据的加解密;
③防火墙:支持配置策略的包过滤,支持防火墙日志查询;
④权限管理:对物联网安全网关的管理访问权限按账户类型进行分级管理。
图4 物联网安全网关软件功能组成
(2)密钥管理子系统
密钥管理子系统实现认证密钥、会话密钥的管理功能,包括如下内容:
①认证密钥管理:实现认证密钥的生成、存储、销毁、备份、恢复及密钥周期管理功能;
②会话密钥管理:实现会话密钥生成、存储、销毁、备份、恢复及密钥周期管理功能。
(3)配置管理子系统
配置管理子系统给用户提供参数配置/查询、日志查询、系统维护等功能。
①Web管理代理:支持通过Web方式对设备参数进行配置管理、状态查询,并且提供Web服务;
②管理核心:接收并解析来自管理代理的命令,调用对应模块的管理支撑完成参数配置、状态查询等管理动作,并返回执行结果给管理代理。
(4)基础支撑子系统
基础支撑子系统为上层应用模块提供软硬件底层资源调用,包括如下内容:
①系统日志:记录网关设备硬件、软件和系统问题的信息,监视系统中发生的事件,分为管理日志、防火墙日志和系统状态日志;
②Web服务:通过HTTP协议与Web浏览器进行信息交互,接收浏览器请求,将对设备的状态查询或者参数配置的命令传给Web管理代理,将输出结果和Web网页的静态文本、图像等信息结合在一起传给浏览器显示;
③消息总线:为软件模块间的各类数据流通提供基础支撑;
④数据库:按照数据结构来组织、存储和管理海量的物联网终端信息;
⑤安全模块驱动:提供数据加解密、密钥注入及密钥管理的软件接口;
⑥linux底层支持:为其他软件模块提供必要的服务支撑,也提供其他通用外设的驱动程序。
图5 物联网安全网关软件分层结构
2.2.2 分层结构
按照软件工程设计思想,结合物联网安全网关软件功能需求特点,将物联网安全网关的应用软件设计为分层结构,使各个层次和模块相对独立,便于移植、升级和维护。按照分层的体系结构设计原则,物联网安全网关的软件系统分为上层控制、中间件层和底层支撑。系统分层体系架构如图5所示。
上层控制属于核心控制部分,主要包括web管理代理、管理核心、安全传输、安全认证、密钥管理和权限管理等模块,完成对终端接入认证、数据安全传输、各类密钥管理、配置参数查询及设置等功能。
中间件层包括数据库、web服务器、系统日志、消息总线及防火墙等模块,为上层控制软件提供一组标准而完整的API调用接口,使控制软件独立于操作系统和硬件平台,增强产品的开放性和可移植性。
底层支撑包括操作系统及对各种硬件资源的操作接口,为中间件层提供通用的基础功能支持。
物联网中需要解决的安全威胁数量庞大,并且与人们的生活密切相关。物联网安全必须是轻量级、低成本的解决方案。只有这种轻量级的思路,普通大众才可能接收。[5]
本文针对物联网中海量低功耗物联网终端的安全接入,提出基于轻量级安全协议的物联网安全网关实现方案。安全网关提供终端身份认证、密钥管理、会话管理、数据传输完整性以及数据传输机密性等功能,终端在长时间待机无人值守的环境下,为以最小代价安全接入到物联网提供了一种可行的技术途径。