Zigbee Smart Energy安全加密机制

来源:互联网 发布:ppt mac版如何加页码 编辑:程序博客网 时间:2024/05/19 18:46

ZSE用于电表和智能家电,属于工业产品了,由此可以猜想它比ZLL或者ZHA更严格的加密机制。实际在ZSE规范中确实用到了Certificate(数字证书)和Installation Code(安装码)等安全机制来确保传输的数据不被破解。

 

ZSE中安全相关机制和名词:Installation Code,Pre-ConfigureLink Key,  Network Key,Product CA(产品证书),CBKE,Trust Center Link Key ,ApplicationLink Key。

 

InstallationCode:安装码,在产品生产时写到设备里的,可以是随机或根据自定义规则生成。它是由8个无符号数值组成,前6个字节是自己定义,后面2个字节是前面6个字节的CRC16校验码,可以校验这个InstallationCode是否正确,给用户展现的方式是以十六进制大端的方式打印出来。例如:70 76 75 5b ef 7a 3e 34 ,其中0x3e34是0x70,0x76,0x75,0x5b,0xef,0x7a的CRC16校验码,一般在设备标签上打印出来,为了方便看,一般打印出来的样式是:7076 755b ef7a 3e34 。Installation Code故名思议就是安装设备到Coordinate时用的,把Installation Code和MAC地址添加到Coordinate,然后设备才能做下一步的动作。一般Installation Code会打印在设备外壳或者直接从设备中读出,这样只知道自己买的这个设备的installation Code就只能添加自己的设备到zigbee网络,也可以避免设备加入别人家的网络。

 

Pre-ConfigureLink Key:预置链接key,是由installation code使用MMO-HASH算法推导出的16个字节的数值序列。当把Coordinate得到新设备的InstallationCode后会推导出Pre-Configure LinkKey,连同新设备的MAC地址加入device table,表示这个设备可以加入coordinate了。相对于Installation Code在zigbee网络传输中起作用的实际是Pre-Configure Link Key。当新设备和Coordinate关联成功后会发送Network Key给新设备,此时就是用Pre-ConfigureLink Key来加密这个传输过程。

 

NetworkKey:当设备和Coordinate关联成功后,Coordinate会发送Network Key给设备。它由Coordinate随机产生。Network Key用于NWK层的数据传输加密,在Trust Center Link Key产生时也用它来加密。

 

ProductCA:产品证书。在ZSE网络中,Coordinate和新添加的设备双方使用各自的Certificate产生一个Trust CenterLink Key ,这个过程叫做CBKE(Certificate-BasedKey Establishment),基于证书的key的建立。双方所使用的证书在产品经过ZSE认证后提供相关信息向第三方公司Certicom购买的。产生Trust Center Link Key的算法都是由Certicom以库的形式提供,所有ZSE协议栈都是用这个算法库。为了开发测试及一些安全性上的考虑,Certicom把证书分为两种,一种是用于开发测试的证书称为Test CA,另一种是用于正式产品的称为ProductCA。

从Certicom购买的这个证书就是Product CA,所有上市的ZSE产品用的都是产品证书。Test CA和Product CA并不兼容,它只能用于开发测试。Product CA的安全性高于Test CA,使用Ubiqua等软件经行抓包时如果是Test CA可以分析出数据帧里的Attribute,但采用Product CA只能解析出是哪个Cluster,里面的Attribute由于更高的加密特性无法解析出。由于每个Product CA都与一个MAC地址绑定关联,所以每个Product CA都不一样。

 

TrustCenter Link Key:在CBKE过程中产生的Key,用于设备和Coordinate通信时APS层的加密。由Trust Center(即coordinate)使用双方的Certificate计算出的随机值,每次计算出的值不相同。由于CBKE只在第一次入网时经行,所以TrustCenter Link Key会被保存到NV供以后使用。

 

Application Link Key:在CBKE之前,Application Link Key的值是Pro-Configure Link Key,新加入的设备收到Coordinate发送的Network key就是用ApplicationLink Key来解密,因为是新设备自己的Pro-ConfigureLink Key,所以新设备能够解开数据包得到NetworkKey,才能继续经行下一步的入网动作。在CBKE成功之后,Application Link Key会被替换为TrustCenter Link Key用于加密APS层,因为它的安全性更高。

 

ZSE网络安全机制作用流程:

第1步:Joining Node发出入网请求,Coordinate回应Network Key。因为Joining Node的Installation Code和MAC地址已经添加到了Coordinate, 所以Coordinate会使用Joining Node的Pre-Configure Link Key加密这次通讯,JoiningNode也能解开数据包得到Network Key。

 

第2步:Joining Node继续入网流程,使用自己的证书发起KeyEstablish过程,当Trust Center检查过证书没问题时会计算出Trust Center Link Key发送给Joining Node在此期间使用Network Key加密。Joining Node收到Trust Center Link Key后会替换原来的Pro-ConfigureLink Key作为Application Link Key。

 

第3步:当获得新的Application Link Key后,在需要高安全性的情况下例如Meter  Cluster功能就会用Application Link  Key来加密APS层,NWK层使用Network Key加密。在安全性要求不高的功能例如Time Cluster就只有NWK层的加密。

 

以上纯属个人理解,可能有误,欢迎指正。

0 0
原创粉丝点击