干货 | ZigBee3.0 信任中心加解密

EEWorld

电子资讯 犀利解读

技术干货 每日更新

ZigBee方案:TI-ZStack
ZigBee协议栈版本:ZStack 3.0.1
在ZStack 3.0.1中虽然引入了Install Code的方式,但也保留了TC的概念,TC是Trust Center(信任中心)的概念,本章内容主要讲解的是TC的交换秘钥过程。

1. 非对称加密算法。
* 对称加密算法在加密和解密时使用的是同一个秘钥,而非对称加密算法用的是两个秘钥!

* 这两个秘钥分别是:公钥(Public Key)、私钥(Private Key)
公钥顾名思义就是公开的钥匙,也就是所有人都知道这个钥匙的内容。
私钥是只有通信相关人员才拥有的钥匙(比如一个ZigBee网络中的所有节点都可以拥有私钥,而其他网络无法知道这个私钥的内容)。

* 非对称性加密算法,比如AES

ZigBee设备加入网络后,必须得到私钥才能通信(用来解密数据包内容),这个私钥是由一个叫TC的设备(一般是协调器)颁发的。

颁发过程(或者称为:交换秘钥过程):TC设备拿着公钥(Public Key)通过非对称性算法对私钥(Private Key)进行加密,然后将加密后的数据包发给入网的设备,入网设备通过公钥和非对称算法把该数据包解密出来得到私钥,此后所有数据交互都使用私钥(Private Key)进行加密。

* 漏洞:由于公钥是全世界公开的,而非对称性算法AES也是全世界一致的,所以如果我们可以在交换秘钥的过程中捕获该数据包,就可以解密出私钥!

* 解密测试:
抓包工具抓取设备入网的前面几个步骤:设备发送beacon request查询可以加入的网络,得到回复后尝试进行关联请求(Association Request),得到网络的回复(Association  Response),然后非常重要的地方来了:Transport Key,这就是交互秘钥过程,这个数据包就是TC设备(比如协调器)用公钥(Public Key)和非对称性加密算法(AES)对私钥(Private Key)的加密数据包!

我们在抓包工具中把公钥配置进去,公钥在协议栈中可以找到,ZStack3.0.1是在文件nwk_globals.h中:
// ZigBee Alliance Pre-configured TC Link Key - 'ZigBeeAlliance09' (for Centralized networks)
#define DEFAULT_TC_LINK_KEY             { 0x5a, 0x69, 0x67, 0x42, 0x65, 0x65, 0x41, 0x6c,\
                                                               0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x30, 0x39 }
图:

抓包工具内嵌了非对称性加密算法了,所以在捕获交互秘钥的数据包后自动的解密出私钥(Private Key),然后后面所有的数据包都会自动私钥私钥进行解密!

可以看到所有交互信息都是明文了!

(0)

相关推荐