社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 106|回复: 1

[原创] ZigBee3.0 信任中心加解密

[复制链接]

22

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-4-17 15:43:57 | 显示全部楼层 |阅读模式
本帖最后由 IoT_College 于 2018-4-19 16:49 编辑

NBIOT、ZigBee、OpenWrt、语音设别、AI等IoT行业和技术的交流学习可以加入QQ群: 575036716

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),然后后面所有的数据包都会自动私钥私钥进行解密!

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





此内容由EEWORLD论坛网友IoT_College原创,如需转载或用于商业用途需征得作者同意并注明出处



回复

使用道具 举报

882

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-4-17 16:19:28 | 显示全部楼层
学习


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-4-26 09:57 , Processed in 0.078288 second(s), 17 queries , Redis On.

快速回复 返回顶部 返回列表