LoRaWAN介绍9 安全

“引到永生,那门是窄的,路是小的,找著的人也少。”–《马太福音》

 

安全对于物联网设备来说很重要,因为他们经常部署在重要的基础设施中。同时,节点在物理上是分布式系统,无线信道很容易被攻击者监听,这些给安全带来更多的挑战。

LoRaWAN使用了双重128AES加密机制,以提供安全的通信机制,达到安全的3个要素:保密性、完整性和可用性。

1 双密钥的来源

在《LoRaWAN介绍7 入网》中提到,LoRaWAN使用2 个密钥:NwkSKey和AppSKey,它们分别对应用层数据和MAC协议帧加密。

那么,这2个密钥是怎么来的呢?

如果是ABP模式,这2个密钥是在Server和End Nodes双方同步配置。

如果是OTAA模式,这2个密钥是按如下公式计算出来的:

NwkSKey=aes128_encrypt(AppKey,0x01|AppNonce|NetID|DevNonce|pad16)

AppSKey=aes128_encrypt(AppKey,0x02|AppNonce|NetID|DevNonce|pad16)

现在,一起检查下这2个密钥的安全性。

首先,AppKey是Server和End Nodes的根密钥(至关重要),双方共同拥有,并且不曾参与通信交换,因此攻击者无法通过窃听无线电而破解。

Server回复AppNonce和NetID给End Nodes时,使用了基于AppKey的128AES加密,攻击者可以窃听无线电,但很难破解该密文。

剩下DevNonce,我们在后续分析它的安全,以及如果防范攻击。

2 双重加密逻辑

首先,FRMPayload(可以是应用数据,也可以是MAC命令)的明文,通过128AES加密,生成密文。细心的人会发现,为什么Key依赖于FPort的值呢?因为,FPort=0,代表MAC命令,使用NwkSKey密钥;FPort=1~255,代表应用数据,使用AppSKey密钥。这是为了取得信息“保密性”。

然后,基于NwkSKey,生成CMAC(Cipher-based MessageAuthentication Code,基于密文消息认证码),取最后4字节做为MIC(Message Integrity Code,消息完整码)。这是为了取得信息“完整性”。

因为双方都具备相同的2个Key,而128AES是对称加密机制,Server和End Nodes都可以有效使用该机制。即达到信息的“可用性”。

加密过程如下图所示:


对密码学熟悉的人们会发现,FRMPayload的加密不具备“完整性”,换一句话说,网络层虽然无法破解应用密文,但可以篡改应用密文,而接收方无法查觉。在LoRaWAN的Server架构中,NS(Network Server)负责网络层,一般情况下认为它是可信设备;如果对安全要求非常高的系统,那么需要在FRMPayload中内嵌MAC(消息认证码),来确保完整性。

3 防止重播攻击

我们回到OTAA的入网申请Join Request数据帧,此时,因为End Nodes没有办法生成2个Key,所以Join Request是以明文发送的,这可以被攻击者窃取。

想象这样一个场景,某Nod#A发送Join Request帧,Server回复Join Accept帧,双方都生成2个Key,准备进行正常的网络通信。此时,攻击者重播窃取的Join Request帧,Server回复Join Accept并生成新的Key。错误出现了:该Node#A(持旧Key)和Server(持新Key),会因为Key不一致导致通信失败。

为防止上述重播攻击,LoRaWAN要求Server保存上一次通信的DevNonce,仅当Node完成第一次UPLINK后,才能删除上一次DevNonce。这样,攻击者一旦重播Join Request帧,Server发现DevNonce是相同的,拒绝回复。

有一个疑问,攻击者为什么不“伪造”Join Request帧呢?不是明文吗?

我们看Join Request帧是受“完整性”保护的,如下:

camc=aes128_cmac(AppKey,MHDR | AppEUI | DevEUI| DevNonce)

MIC=cmac[0…3]

攻击者没有AppKey,它发送“伪造”的Join Request帧,Server检测发现MIC错误,将会拒绝回复!

4 管理密钥

对于ABP入网机制,因为NwkSKey和AppSKey都是直接存储在End Nodes,特别小心,千万不要基于公开的信息来生成这2个Key,如:DevAddr,攻击者可以窃取该值。

AppKey是根密钥,千万要小心保管!现代的加密机制,可靠度很高,暴力破解的难度非常大,大部分漏洞出在密钥上(密钥等于用户名、使用简单密钥、密钥泄露、基于公开信息生成等)。如果不保管好钥匙,再精致牢固的锁,也会被窃贼轻易打开!

文章来源:程序园

说明:LPWA物联网应用站(LPWAP.com)通过公开互联网收集、整理并转载有关LPWA物联网应用解决方案,以供广大LPWA应用开发者和爱好者共同学习交流和参考运用到实际生产生活中。本站所有转载的文章、图片、音频、视频等资料的版权归版权所有人所有并衷心感谢您的付出,由于本站采纳的非本站原创文章及图片等内容无法一一联系确认版权者,如果本网所选内容的文章原创作者认为其作品不宜放在本站,请及时通过以下留言功能通知我们采取适当措施,避免给双方造成不必要的经济损失。如果您希望保留文章在本站,但希望文章末尾提供对作者的致谢或者产品、网站交换链接的,也请将需求写入以下留言栏中,谢谢您的支持。让我们共同努力,打造万物互联的未来美好生活!

您的留言或需求: