在通信阶段使用NetKey,AppKey和DevKey。
Network Key:用来在Network Layer加密通信数据。NetKey是16字节。NetKey使用随机数产生方式,避免冲突。NetKey属于Configuration Client维护的NetKey List(12bits NetKey Index),可以多达4096个NetKey。可以通过Config NetKey Add的Message来给Node分配NetKey。
Application Key:用来在Upper Transport Layer加密通信数据。在Provisioning结束后,进入Configuration过程,添加AppKey并且把AppKey和具体的Model绑定。一个Model可以有251个AppKey。APPKey是16字节。AppKey使用随机数产生方式,避免冲突。APPKey属于Configuration Client维护的APPKey List(12bits AppKey Index),可以多达4096个AppKey。可以通过Config AppKey Add的Message来给Node分配AppKey。
NetKey Index(12bits)+AppKey Index(12bits)=24bits,使用3个字节表达。
Device Key:Configuration Client(比如Provisioner)通过这个密钥来管理Node,同时发布更新的网络信息和Application Key。
Configuration message通过这个Key来加密信息。
一个节点可以有一个Device Key,多个AppKey,多个NetKey,如下图所示:
Session Key:Provisioning过程使用到这个Key,在Provisioning的交换公开密钥获得ECDHSecret以及认证通过后,通过k1算法获得Session
Key。然后,Provisioner和Device用这个Session Key交换Provisioning Data。