快速配置算法
Z-stack对Zigbee2006提供了全面的支持,功能之强大,性能稳定、安全性高,说到安全性是咱们今天的主题。CC2430硬件支持128bit的AES加密算法,在协议栈中为了避开相同设备的干扰,和防止被其余设备监听,咱们就采用这个技术将数据加密来提升数据的安全性。安全
AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。AES 是一个新的能够用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它能够使用12八、192 和 256 位密钥,而且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不一样,对称密钥密码使用相同的密钥加密和解密数据。经过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据。网络
在Z-stack中采用的是128bit的加密,首先须要一个128bit的key,这个KEY不一样,加密出来的内容也不一样在Z-stack中是经过DEFAULT_KEY="{0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x 0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0D}"这种方式来定义的。函数
在Z-stack中已经在协议栈中实现了这个加密算法,若是须要使用直接开启这个服务就能够了,下面咱们主要将Z-stack的加密算法的开启。性能
Z-stack1.4.3加密算法的功能开启方法:ui
1.将f8wConfig.cfg文件中设置为-DSECURE=1,这句话的意思是SECURE=1,这个变量在协议栈中做为if语句的条件使用,条件为真的语句中就是开启加密算法的函数。因此要使用第一步是要将这个参数设置为1。加密
2.将ZGlobals.c中的uint8 zgPreConfigKeys = FLASE;修改成uint8 zgPreConfigKeys = TRUE;spa
3.准备一个key,这个能够在函数nwk_global.c中修改:3d
CONST byte defaultKey[SEC_KEY_LEN] = { #if defined ( APP_TP ) || defined ( APP_TP2 ) // Key for ZigBee Conformance Testing 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x67, 0x45, 0x23, 0x01, 0xEF, 0xCD, 0xAB #else // Key for In-House Testing 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F #endif };
若是使用了加密算法后,网络中全部的设备都须要开启这个算法,并且各个设备中的key必须相同。不然后果是很严重的,这会致使你的网络不能正常通信,由于没有加密的数据或者相同key加密,这些数据网络是不认识的,根本就不会传到网络层。code
加密算法开启之后,若是你须要修改代码,就必须改变你的key,或者是擦除一次你的flash,不然会出现不可逾期的错误,并且没有规律。一般的作法是擦除flash一次,这样能够保证和整个网络的key相同。
采用这个加密算法的好处是:若是一个网络在作实验,你再随便加入一个协调器或者路由或者终端对现有的网络状态不会形成影响,这样就能够进行多个并行实验了。
___By Nazs_X