LoRa联盟最新白皮书:可为IoT应用供应商提供完整的端对端加密
这是最近LoRa联盟官方发布的第6份白皮书,主题是安全,由GEMALTO、ACTILITY和SEMTECH一同提供,总体来说技术性较强,翻译难免有不妥之处,还请大家见谅。
介绍
LoRaWAN 是一种低功耗广域网络协议,可以为IoT、M2M、智慧城市和工业应用等场景提供低功耗、可移动、安全的双向通信。LoRaWAN协议为低功耗进行了优化,并且为可支持数以百万计设备的大型网络结构进行了特别设计。LoRaWAN的特点是可以支持冗余操作、定位、低成本和低功耗等应用场景。
安全是所有应用场景的基本前提,所以从一开始在LoRaWAN协议中就对安全性进行了设计。然而安全包含众多方面,尤其是LoRaWAN的加密机制需要特殊的解释。所以此白皮书将会对当前LoRaWAN协议的安全性进行说明。首先会针对协议中的安全属性进行阐述,然后呈现具体的实现细节,最后对一些LoRaWAN安全性上的设计进行解释。
LoRaWAN?安全属性
LoRaWAN的安全性设计原则要符合LoRaWAN的标准初衷,即低功耗、低复杂度、低成本和大扩展性。由于设备在现场部署并持续的时间很长(往往是数年时间),所以安全考虑一定要全面并且有前瞻性。LoRaWAN安全设计遵循先进的原则:标准的采取,算法的审查,以及端到端的安全机制。接下来我们会对LoRaWAN安全性的基本特性进行描述:包括双向认证、完整性校验和保密机制。
双向认证作为网络连接的过程,发生在LoRaWAN终端节点与网络之间。这确保只有真正的和已授权的设备才能与真实的网络相连接。
LoRaWAN的MAC和应用消息是“生来”经过认证、完整性保护和加密的。这种保护和双向认证一同确保了网络流量没有改变,是来自一个合法的设备,而不是“窃听者”,或者“流氓”设备。
LoRaWAN安全性进一步为终端设备和服务器之间的数据交换提供了端对端的加密机制。LoRaWAN是为数不多的支持端对端加密的IoT网络技术。传统的蜂窝网络中,加密发生在空中接口处,但在运营商的核心网络中只是把它当做纯文本来传输的。因此,终端用户还要选择、部署和管理一个额外的安全层(通常通过某种类型的VPN或应用层加密如TLS来实现)。但这种方法并不适合应用在LPWAN技术中,因为这会额外地增加网络功耗、复杂性和成本。
安全策略
之前提到的安全机制依赖于经过完备测试和标准化的AES加密算法。加密社区已经对这些算法进行了多年的研究和分析,并且被美国国家标准技术研究所认定为适用于节点和网络之间最佳的安全算法。LoRaWAN使用AES加密语句,并结合多个操作模式:用于完整性保护的CMAC、用于加密的CTR。每一个LoRaWAN终端具有一个唯一识别的128位AES Key(称为AppKey)和另外一个唯一标识符(EUI-64-based DevEUI),二者都应用于设备识别过程。EUI - 64标识符的分配要求申请人从 IEEE 登记机关获得组织唯一标识符 (OUI)。同样地,LoRaWAN网络由LoRa 联盟分配的24位全球惟一标识符进行标定。
安全应用的负载
LoRaWAN? 应用负载的端对端加密发生在终端设备和服务器之间。完整性保护由跳频来实现: 空中跳频通过LoRaWAN提供的完整性保护,网络和服务器之间的跳频通过使用安全传输方案如HTTPS和VPNS来实现。
双向认证:
空中激活证明了终端设备和网络都具有AppKey的概念。这通过将一个AES-CMAC(使用AppKey)装载到设备的加入请求和后端接收器得到证明。两个会话秘钥接着进行相互认证,一个用来提供完整性保护和LoRaWAN MAC指令和应用程序负载(NwkSKey)的加密,另一个用来提供端对端应用负载(AppSKey)的加密。NwkSKey装载在LoRaWAN网络是为了验证数据包的真实性和完整性。从网络运营商的角度AppKey和AppSKey可以被隐藏,所以破解应用负载是不可能实现的。
数据完整性和隐私保护:
LoRaWAN通信使用两个会话秘钥进行保护。每个负载由AES-CTR加密,并且携带一个帧计数器(为了避免数据包回放),一个消息完整性代码(MIC)和AES-CMAC(为了避免数据包被篡改)。下图是LoRaWAN包结构示意图。
安全性事实与谬论
LoRaWAN?设备的物理安全:
AppKey和衍生而来的会话秘钥会持续的保存在LoRaWAN设备中,它们的安全性依赖于设备的物理安全。一旦设备受到物理损害,这些秘钥存在防篡改存储器中从而受到保护,并且很难提取。
密码学:
一些资料指出LoRaWAN?密码只使用了XOR而并非AES。事实上,如之前所提到的,AES用在了标准化CTR模式,这利用了XOR加密操作(还有CBC等许多其他模式)。这通过给每个分组密码分配一个唯一的AES码强化了AES算法。
会话秘钥分布:
由于AppSKey 和NwkSKey从同一个AppKey生成,可以说如果LoRaWAN运营商获得了AppKey,它能够推导出AppSKey从而解码网络。所以为了避免这种情况的发生,服务器要对AppKey的存储进行管理,双向认证和密钥推导的过程可以由运营商以外的实体进行操作。为了给运营商额外的灵活性,LoRaWAN接下来的新版本协议(1.1)会定义两个主秘钥,一个用于网络(NwkKey),一个用于应用(AppKey)。
后端接口安全:
后端接口包括网络和应用程序服务器之间控制和数据信号。HTTPS和VPN技术用于保护这些关键的基础设施元素之间沟通的安全性。
实现和部署安全:
LoRa联盟一直在确保其协议和架构规范的安全性,但是解决方案的总体安全性还要依赖于具体的实现和部署方式。所以安全问题需要各个环节的配合,制造商、供应商、运营商都需要参与当中。
注解
1 AES – 一种高级加密标准。这是一个基于对称密钥的加密算法,允许消息加密和身份认证。
2 CMAC - 基于暗码的消息认证码。
3 CTR - 计数器模式加密标准。一种依赖于计数器的数据流加密AES算法的操作模式。
4 AES-CMAC - 基于暗码的消息认证码,使用AES加密算法提供消息的完整性和真实性。
5 CBC是AES算法的一种操作模式,依靠一个初始化向量和前序的数据块进行数据流的加密。
最后这个图是LoRa联盟给出的全球部署情况图,LoRa联盟现阶段有超过400个会员,全球有超过150个正在进行的部署计划,并且有34个运营商的加入。