,,,
(1.陆军装甲兵学院 信息通信系,北京 100072;2.73630部队)
随着智能设备的普及和信息技术的高度发展,人们对电子设备的自动化、智能化有了更高的需求,物联网作为新一代信息技术的重要组成部分,正踏上高速发展的快车道,逐步融入我们的生活。如图1所示,目前已有的移动蜂窝网络、蓝牙、ZigBee、WiFi等无线通信技术,已经不能很好地满足物联网设备M2M通信模式远距离、低功耗、多节点的需求[1],在这种情况下,低功耗广域网(Low-Power Wide-Area Network,LPWAN)技术应运而生。
图1 无线技术性能对比
LoRa是Semtech公司在2013年发布的基于扩频调制的无线通信技术[2],是目前发展较为成熟的LPWAN技术之一,主要应用于物联网终端节点,具备超长距离扩频通信、抗干扰性强、功耗极低等性能。LoRa技术采用线性啁啾扩频(Chirp Spread Spectrum,CSS)调制,不同的扩频因子(Spreading Factor,SF)之间呈正交性[3],这种调制方式的信道容量接近香农理论极限[4],同时在抗阻塞和选择性方面也具有明显优势,突破了传统窄带通信无法同时兼顾距离、抗干扰和功耗的技术瓶颈,并且在数据传输过程中集成了扩频调制和前向纠错,成为低速率、低功耗、远距离传输和对可靠性要求较高的应用场景的最佳选择。
随着LoRa试点与日俱增,LoRaWAN应用已扩展至全球范围[5],从个体运营者到大型企业,从简单的实验室平台到大型工业项目,LoRaWAN经受着不同用户群体、应用场合、外界环境的考验,凭借大容量、全球统一标准、低成本、高灵活性的特点成为非授权频段物联网运营的首选方案。
根据LoRa联盟公布的数据[6],截止至2017年末,荷兰皇家KPN电信集团已在全国范围内部署LoRa网络,成为世界上第一个在全国范围内普及物联网的国家;美国运营商Senet在美国110多个城市进行网络搭建试点,覆盖面积超过12 500平方公里。在国内,2016年初由中兴联手LoRa联盟成立中国LoRa应用联盟(China LoRa Application Alliance,CLAA),旨在推动国内LoRa网络建设和产业链发展;八月科技(AUGTEK)京杭大运河完成了284个LoRa基站的建设,覆盖了1300 km的流域,成为国内覆盖面积最大的LoRa网络。这些大规模物联网都是基于LoRaWAN运行的,其安全性能直接影响着系统的可靠性。
安全是物联网技术应用推广的基本前提,2017年度发生的多起无人机黑飞、安防摄像头远程非法控制、智能玩具数据泄露等事件为我们敲响了安全的警钟[7],这些为我们生活带来舒适和便利的智能产品如果使用稍有不慎,就有可能成为信息安全泄露的罪魁祸首,安全将成为物联网产业的尖锐问题。
LoRa作为物联网技术标准的有力备选方案,其安全性建设是重中之重,LoRaWAN白皮书中大量篇幅都在叙述通信的安全机制[8],包括双向认证、信息完整性校验、数据加密算法、密钥管理机制等方面,同时结合LPWAN的技术特点,兼具低功耗、低成本和良好扩展性的设计,支持数以百万计的节点设备联网。然而LoRaWAN尚处在发展初期,还有很多不完备的地方,如双向认证存在遭受DOS攻击的可能、密钥管理过分依赖节点设备物理安全等[13],一旦其安全漏洞遭到黑客攻击,将会面临巨大的信息安全威胁。全面分析LoRaWAN协议内容,了解目前相关参考文献中LoRaWAN安全性研究的情况,从而提供改进性建议,对LoRa技术的普及、LPWAN健康生态环境的构建、物联网技术的推进都具有重要意义。
本节对LoRaWAN 1.0.3协议正式版本[9]的内容作详细介绍,主要从网络架构、通信模式、帧结构、密钥分类、激活方式、加密方式6个方面对协议进行简要说明。
LoRaWAN网络架构整体上分为4层,由下至上分别为终端节点、LoRa网关、网络服务器、网络应用。如图2所示,单一网关采用单跳星型拓扑结构,对比于MESH等其他拓扑结构,星型拓扑结构具有延时小、易扩展、容量大、可靠性高的特点[7],终端节点与网关之间为半双工通信,可以同时与多个网关相连,网关作为透明中继连接终端节点和网络服务器,服务器上可以注册多个应用,用来与终端节点进行通信。
图2 LoRaWAN网络架构
LoRaWAN协议将通信模式分为Class A、Class B、Class C三类,所有的通信设备必须满足Class A以符合基本的通信标准。
Class A:终端节点在传输上行数据后会打开两个下行数据接收窗口RX1、RX2,RX1的频率和波特率与上行数据一致,RX2的频率与波特率可由MAC命令配置。开窗时间RECEIVE_DELAY1和RECEIVE_DELAY2可由MAC指令修改。Class A是功耗最低也是最基本的通信模式,其数据传输是突发式的,服务器和用户应用无法预知通信时间。
Class B:在终端节点传输上行数据后,除了打开RX1、RX2接收窗口外,还会开放额外的窗口SLOT,用于接收下行数据,该模式下网关会周期性向所有终端节点发送同步信号BEACON,终端节点会根据BEACON的时间信息进行开窗,以克服Class A中通信时间无法预知的不足。
Class C:在终端节点传输上行数据之外的时间均处于接收状态,在上行数据发送后,RX1接收窗口正常开窗,其余空闲时间均处在RX2窗口接收范围内,该模式可最小化通信丢包率,但功耗最大。
三类通信模式对比图如图3所示。
图3 LoRaWAN通信模式
LoRaWAN上下行数据帧结构基本一致,均分为前导码(Preamble)、PHY头(PHDR)、PHY头校验码(PHDR_CRC)、PHY负载(PHYPayload)4个部分,上行数据比下行数据多了CRC校验码。其中,Preamble用于LoRa接收机信道检测,PHDR包含数据报速率、信道等信息,PHDR_CRC负责校验信息传递的正确性。PHYPayload由MAC头(MHDR)、消息部分、完整性校验(MIC)组成,其中MHDR按位分为版本号(Major)、保留位(RFU)、消息种类(MType)。消息部分分为MAC负载(MACPayload)、入网请求(Join-Request)、入网应答(Join-Response)三种消息类型,MACPayload可进一步分为上下行认证消息及非认证消息4种,由MType进行区分,如图4所示。
图4 PHY负载结构
为保证网络安全可靠,LoRaWAN共设有6种密钥,分别是设备地址(DevAddr)、设备标识(DevEUI)、根密钥(AppKey)、应用标识(AppEUI)、网络会话密钥(NwkSKey)和应用会话密钥(AppSKey),这些密钥在终端节点和网络服务器间共享,分别应用于入网激活、设备寻址、信息加密等过程,是确保网络安全可靠的关键。
DevAddr由32位组成,用来标识节点设备,其中DevAddr[31:25]为NwkID,用来标识网络,DevAddr[24:0]为NwkAddr,用来标识设备在该网络中的地址,该地址可由网络管理者修改。
DevEUI是一个遵循IEEE EUI-64标准的64位标识,用来标识全球唯一的终端节点ID。
AppEUI是一个遵循IEEE EUI-64标准的64位标识,用来标识全球唯一的应用ID。
AppKey由128位组成,是LoRaWAN加密算法的根密钥,网络服务器和OTAA模式下的终端节点用之产生NwkSKey和AppSKey。
NwkSKey由AppKey等信息经AES-128计算产生,用于FRMPayload传递MAC指令时加解密信息,以及信息的完整性校验。在OTAA模式下,NwkSKey是动态变化的,ABP模式下NwkSKey是固定不变的。
AppSKey由AppKey等信息经AES-128计算产生,用于FRMPayload传递一般信息时加解密信息,以及信息的完整性校验。在OTAA模式下,AppSKey是动态变化的,ABP模式下AppSKey是固定不变的。
终端节点首先需要激活入网才能够进行通信,激活入网的方式有两种:空中激活(Over-The-Air Activation,OTAA)和手动激活(Activation By Personalization,ABP),两者的入网过程和密钥管理方式不同,适用于不同的应用场合。
(1)空中激活
在空中激活模式下,终端节点需要向网络服务器发送入网请求,网络服务器需要向终端节点发送入网请求应答,入网激活流程如图5所示,在入网过程中,由终端节点向网络服务器发送入网请求,当检测信息符合入网条件时,网络服务器向终端节点发送入网请求应答,终端节点通过入网应答中的AppNonce或DevNonce生成NwkSKey和AppSKey,并存储在终端节点中作为此次入网通信的AES密钥,由于AppNonce、DevNonce具有随机性,终端节点每次入网通信的密钥都不同,从而可以有效避免重放攻击,保证了通信的可靠性。
图5 OTAA入网流程
(2)手动激活
在手动激活模式下,终端节点直接配置与网络服务器相一致的DevAddr、NwkSKey、AppSKey,直接与网络服务器进行通信,不需要入网激活,且NwkSKey、AppSKey不再由AppKey动态计算产生。整个通信过程中DevAddr、NwkSKey、AppSKey始终存储在终端节点中固定不变。ABP是一种简单的入网机制,适合于建立小型私人网络等安全性要求不高的场合。
LoRaWAN采用双层AES-128加密算法,在OTAA模式的入网激活阶段,网络服务器的入网请求应答采用电码本(Electronic Code Book,ECB)模式的AES-128加密算法,正常通信时的消息帧采用计数器(Counter,CTR)模式的AES-128加密算法。
(1)Join-Response加密算法
LoRaWAN协议针对Join-Response的AES-128加密算法类似ECB模式,首先将Join-Reaponse与MIC码进行“或”运算,之后将加和后的信息按照k=ceil(len(Join-Response|MIC)/16)分成k组,对每组使用根密钥(AppKey)进行加密处理,最后将k组加密结果进行“或”运算得到最终的加密数据,整个加密过程如图6所示。
图6 Join-Response加密流程
(2)FRMPayload加密算法
LoRaWAN协议针对FRMPayload的AES-128加密算法相当于CTR模式,首先根据k=ceil(len(PRMPayload)/16)将原始数据FRMPayload分成k组,然后对CTR计数器Ai(i=1,…,k)进行填充,Ai的帧结构如图7所示,其中Dir是数据传递的方向,0代表上行数据,1代表下行数据,FCntUp和FCntDown分别是上行数据和下行数据计数器,对每一个分组进行AES-128加密处理得到Si,再将每块分组的加密数据进行或运算得到S,S与pad16补齐过的FRMPayload进行“异或”运算,最后将运算结果截短至原FRMPayload长度L,即得到最后的加密数据,整个加密过程如图8所示。
图7 CTR计数器帧结构
图8 FRMPayload加密流程
LoRa技术的发展大体上可分为三个阶段:第一阶段进行基础设施建设和试点运行工作,主要研究技术方案的可行性;第二阶段为现行方案提供技术完善,增加系统的稳定性、安全性、可靠性;第三阶段为大规模应用推广,普及商用。目前LoRa技术在国外市场主要处于第二、三阶段,近年来随着一些国家LoRa技术在全国范围内应用推广,LoRaWAN的安全性研究引起了高度重视,涌现出许多优秀的研究成果,国内LoRa技术的研究开始于2016年CLAA的成立,目前主要工作停留在第一阶段,有关安全性研究还未全面展开。本文对有关LoRaWAN安全性的一些研究成果进行介绍。
Emekcan Aras指出[10],尽管LoRa采用的CSS调制具有很强的抗干扰性,但是如果恶意设备采用相同扩频因子和通信频段发送信号,一样可以达到干扰通信的作用,而且这个过程无需专用设备,一般的LoRa通信产品就可以实现,并提出如果终端节点通过UART、SPI等接口传递密钥信息,则利用专用的外围设备(如FTDI)就可以介入相应接口并窃取密钥信息。除此之外,参考文献还指出LoRaWAN的数据包格式中没有基于时间的标签信息,这为重放攻击和虫洞攻击留下了隐患。
SimoneZulian指出[11],LoRaWAN在OTAA模式入网申请-应答机制存在安全漏洞,协议中并没有规定网络服务器DevNonce记录的具体数量,并指出如果DevNonce记录数量不合适,则有可能导致正确的入网请求和应答遭到拒绝,为此作者用严谨的数学方法推导出DevNonce记录的最佳数量。之后通过理论分析指出,为使终端节点在整个工作周期内保持可靠性,网络服务器应记录所有的DevNonce,而且为避免出现重复性,提出将DevNonce由原来的16位扩展至24或32位。
Ramon Sancheziborra和Jaehyu Kim等人[12-13]分析了LoRaWAN组网通信过程中密钥更新机制存在的安全漏洞,其中对比分析了其他可能应用的安全协议架构,结合LoRaWAN通信速率以及带宽的限制,提出了一种基于EDHOC架构的轻量级密钥更新机制,使得密钥可以在资源开销较小情况下得到及时更新,提出即便是安全性能较高的OTAA模式也存在AppKey得不到有效更新的漏洞,同时提出一种双重密钥激活入网方案,在激活入网的第一阶段使用原始密钥NwkKey和AppKey,在第二阶段使用原始密钥产生的会话密钥NwkSKey和AppSKey,入网后使用会话密钥进行通信,原始密钥将被更新,之后的会话将使用更新的密钥,并用实验与原方案在收包成功率、延时、能耗等性能方面做了对比。
很多参考文献都对LoRaWAN协议作了详细的分析和研究,提出了其存在的安全漏洞,并介绍安全可行的方案,但仍有一些局限性:第一,漏洞分析缺乏整体性、系统性的研究过程,目前已有比较完善的信息安全研究框架,但现有参考文献对LoRaWAN的安全性分析却没有基于这些成熟的框架,也没有从系统角度对安全漏洞进行分类,这使得漏洞研究工作不具备整体性、系统性;第二,将研究重点偏向安全方案设计,对提出的安全漏洞没有应用具体硬件设备进行实验验证,对理论分析的验证不充分、不具体,这使得漏洞分析工作不彻底、不深入。未来对LoRaWAN的安全性研究应从以上两点分析入手,从全局角度考虑系统安全漏洞,并将重点放在实验验证方面,通过具体的硬件平台验证安全漏洞的风险性以及安全方案的可行性,提供真实、详细的实验数据。