一、安全威胁
由于ZigBee是一种无线技术,因此安全性非常重要,因为黑客可以通过无线检测到这些数据包。想象您有一个智能门锁。如果黑客捕获了打开您的门的数据包,那么他可以重发该文件以打开您的门。这是很危险的。
在ZigBee的网络里面,面临的两种最为典型的安全威胁:
- 第一种是伪造。比如黑客捕获到无线报文,进行篡改之后,伪造一个假的报文,再发送到这个ZigBee网络中,从而去控制网络里的设备;
- 第二种是重播。捕获到这个报文后,不进行编辑,直接重新播放一下,
为了防止这种情况发生,ZigBee定义了许多安全功能。下面将会做简要介绍。
二、ZigBee安全
2.1 加密流程
APS层和网络层的加密流程,如下图所示:
它显示了如何在网络层中保护不安全的网络帧:首先,网络有效负载将被加密。之后,将在加密的有效负载之前添加安全标头。然后根据网络标头,安全标头和加密的有效负载来计算哈希值。最后,将32位哈希值附加到帧的末尾。如果更改了网络标头,安全标头和加密的有效负载中的任何字节,则哈希值将不同。我们将此值称为MIC(mandatory integrity control),是消息完整性检查的缩写。
2.2 加密算法
APS层和网络层的两个加密环节使用的都是AES128对称加密算法,这意味着需要使用相同的密钥进行加密和解密。
2.3 完整性检查
2.4 重播攻击保护
添加了帧计数器以防止重发攻击。让我们看看它是如何工作的。
在发送方
- 每发送一次Frame Counter的值都需要增加1;
- Frame Counter的值需要保存在non-volatile memory中,便于重启后恢复Frame Counter。
在接收方
- 首先,将记录接收到帧的节点的Eui64和Frame Counter的值;
- 来自同一节点的下一条消息的Frame Counter必须大于记录的Frame Counter值。如果此次的Frame Counter比上一次的小或者相等,该消息都将被视为重发并将被丢弃;
- 由于资源有限,接收方只保存所有邻居的Frame Counter。
由于Frame Counter是一个32位值,因此如果设备长时间保持运行状态,它可能会自动溢出。显然,如果帧计数器被覆盖,可能会出现问题。为防止这种情况发生,必须在溢出之前更新Network Key。如果更新了Network Key,帧计数器则可以再次从零开始。
对于End Device来说,它通常只需要保存其父节点的Frame Counter即可。
(注:任何相关问题,欢迎在文末技术交流QQ群中交流讨论。)