该密钥称为Network Key。由于它是一种对称加密算法,因此同一ZigBee网络中的所有设备都将使用相同的Network Key。
在网络安全标头中,添加了“帧计数器”的字段和加密信息节点的源Eui64,以防止重发攻击。还添加了密钥序列号以支持Network Key更新。
APS层的安全性,是端到端安全性。在APS层,是节点A加密好了之后一直得等到达目的地(节点C)之后才去解密。这中间的加密/解密密钥(Link Key)只要A和C两个知道,B不知道这个密钥,不能去进行加密解密,所以B不关心通信的内容。在这种情况下,我们可以有很多的Link Key,只要通信的双方知道即可。
网络层的安全性,是逐跳安全性。A加密好了在发给C的过程中要经过B,B收到这个报文后要先解密再加密,加密完了之后再发给下一跳。由于所有的中间节点都要参与解密和重新加密的过程,所以所有的节点都必须使用相同的Network Key。
路由器节点需要解密该消息,然后对其进行加密,然后替换安全标头中的信息,再将其发送出去。如果解密失败,该消息将立即被丢弃。
这样的好处是可以尽快丢弃攻击消息。
Network Key是一个16字节的八位位组。通常,它是在网络创建时由协调器随机生成的。当新设备加入网络时,它们必须获得Network Key的副本。
在ZigBee网络中,将Network Key分发给新设备的角色称为Trust Center。有两种典型的安全模型,即集中式安全网络和分布式安全网络。
在集中式安全网络中,只有一个Trust Center,通常是协调器。所有新设备将从协调器获取Network Key。
在分布式安全网络中,没有一个固定的Truster Center,也就是说每个路由器都是一个Trust Center。新设备可以从每个路由器父节点那里获取Network Key。
Distributed Security Model目前主要就是在飞利浦的Touch Link上在使用。ZigBee 3.0中最主要的还是Centralized Security Model的模式。
由于需要将Network Key从一个设备传输到另一台设备,因此在传输过程中需要对密钥值进行加密。此加密在应用程序层中完成。我们稍后再讨论。
(注:任何相关问题,欢迎在文末技术交流QQ群中交流讨论。)