zoukankan      html  css  js  c++  java
  • 代码控制ZigBee网络密钥的生成

    代码控制ZigBee网络密钥的生成

    关键词:ZigBee, 安全, networkkey,固定值,芯视频, EmberZnet, 建立网络, EmberZnet

    在开发zigbee设备的早期,工程师是比较希望各个环境相对稳定,这样便于调试,比如网络密钥,可以肯定每次建立网络都会生成一个完全不同的密钥,因此不利于调试。Zigbee 3.0的实现是每次建立网络都会使用一个随机生成的密钥,这样才比较安全,因此本例只是为了方便调试,在完成调试以后,请还原回更加安全的密钥生成机制。

    网络密钥是zigbee用来加密网络中所有数据的密钥,是保证Zigbee安全的重要信息,因此除了在调试阶段,请不要使用固定密钥。网络密钥是由Coordinator在建立网络的时候生成,这个部分的代码在silicon labs的协议栈(emberznet)中是可以修改的,本文介绍使用network creator 生成网络时,如何用代码控制密钥。

           这里以固定的网络密钥为例,这是一个16字节的密码, 用十六进制表示

    { BB BB BB BB BB BB BB BB  BB BB BB BB BB BB BB BB }。对应的代码在network-creator-security.c文件当中。

           找到函数emberAfPluginNetworkCreatorSecurityStart()。

           搜索到关键行注释: // Generate a random network key.

    这里的代码改为

      // Generate a random network key.

    #if 0

       status = emberAfGenerateRandomKey(&(state.networkKey));

    #else

        status = EMBER_SUCCESS;

        for (int i = 0; i < EMBER_ENCRYPTION_KEY_SIZE; i++)

        state.networkKey.contents[i] = 0xBB;

    #endif

     

      if (status != EMBER_SUCCESS) {

        goto kickout;

      }

    其他代码保护不变即可。

    代码生成以后,使用CLI指令建立网络,再读回密钥可以看到生成的密钥是否与预期一致,笔者验证的结果截图如下:

    以上表明,我们的设置是完全正确的,如果还需要更完整的代码,可以点击链接下载。如果有任何问题,欢迎给我们留言,或者直接在newbitbbs.com发贴讨论。

  • 相关阅读:
    node.js + expres 的安装
    ubuntu文件夹建立软链接方法
    $.ajax()方法所有参数详解;$.get(),$.post(),$.getJSON(),$.ajax()详解
    与 的区别
    ubuntu卸载软件命令,apt-get remove
    php中session机制的详解
    mysql中查询语句中的一个知识点说明
    Git忽略规则及.gitignore规则不生效的解决办法
    Linux中find常见用法示例
    Waiting for table metadata lock
  • 原文地址:https://www.cnblogs.com/newbit/p/zigbee_nwkkey_fixed.html
Copyright © 2011-2022 走看看