ZigBee协议栈中AES加密算法

转载 2013年12月02日 09:10:57

    Z-stackZigbee2006提供了全面的支持,功能之强大,性能稳定、安全性高,说到安全性是我们今天的主题。CC2430硬件支持128bitAES加密算法,在协议栈中为了避开相同设备的干扰,和防止被其他设备监听,我们就采用这个技术将数据加密来提高数据的安全性。

AESThe Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128192 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据 的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据。

Z-stack中采用的是128bit的加密,首先需要一个128bitkey,这个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加密算法的功能开启方法:

1.f8wConfig.cfg文件中设置为-DSECURE=1,这句话的意思是SECURE=1,这个变量在协议栈中作为if语句的条件使用,条件为真的语句中就是开启加密算法的函数。所以要使用第一步是要将这个参数设置为1

2.ZGlobals.c中的uint8 zgPreConfigKeys = FLASE;修改为uint8 zgPreConfigKeys = TRUE;

3.准备一个key,这个可以在函数nwk_global.c中修改:

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加密,这些数据网络是不认识的,根本就不会传到网络层。

加密算法开启以后,如果你需要修改代码,就必须改变你的key,或者是擦除一次你的flash,否则会出现不可逾期的错误,而且没有规律。通常的做法是擦除flash一次,这样可以保证和整个网络的key相同。

采用这个加密算法的好处是:如果一个网络在做实验,你再随便加入一个协调器或者路由或者终端对现有的网络状态不会造成影响,这样就可以进行多个并行实验了。

密码算法详解——AES(高级加密算法)

0 AES简介   美国国家标准技术研究所在2001年发布了高级加密标准(AES)。AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准。   根据使用的密码长度,AES最常见的...
  • Aeroleo
  • Aeroleo
  • 2015年11月09日 15:13
  • 13301

AES 对称加密算法 加密\解密实例

package com.soufun.com; import java.io.UnsupportedEncodingException; import java.security.InvalidKey...
  • QH_JAVA
  • QH_JAVA
  • 2015年08月17日 23:49
  • 1758

Java 加密 AES 对称加密算法

【AES】 一种对称加密算法,DES的取代者。 加密相关文章见: 【代码】 代码比较多,有一部分非本文章内容代码,具体自己看吧。 package com.uikoo9.util.encrypt; ...
  • uikoo9
  • uikoo9
  • 2014年06月01日 20:38
  • 74096

ZigBee协议栈中AES加密算法

原文地址:ZigBee协议栈中AES加密算法作者:大浪淘沙    Z-stack对Zigbee2006提供了全面的支持,功能之强大,性能稳定、安全性高,说到安全性是我们今天的主题。CC2430硬件支持...
  • u012951123
  • u012951123
  • 2013年12月02日 09:11
  • 559

C++ 128位 AES加密算法

AES 128 bit 加密
  • mrxyz098
  • mrxyz098
  • 2016年03月03日 16:15
  • 3317

aes加密算法的理解

高级加密标准(英语:Advanced Encryption Standard,缩写:AES) AES共有ECB、CBC、CFB、OFB、CTR五种模式 1、AES是基于数据块的加密方式,也就是说,每...
  • haohaojian
  • haohaojian
  • 2017年02月15日 14:20
  • 2137

AES加密算法的详细介绍与实现

AES简介高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具...
  • qq_28205153
  • qq_28205153
  • 2017年02月19日 08:53
  • 26464

AES加密算法入门

AES是一个对称密码算法。 AES支持五中模式:ECB,CBC,CFB,OFB,PCBC;支持三种填充:NoPadding,PKCS5Padding,ISO10126Padding。...
  • tricycle_lin
  • tricycle_lin
  • 2016年01月06日 23:26
  • 921

AES 双向加密算法 AESUtil

package com.xgh.encryption.algorithm.test; import java.security.SecureRandom; import javax.crypto....
  • down177
  • down177
  • 2015年02月10日 15:25
  • 841

DES 3DES AES Blowfish 对称加密算法比较

随着数据安全性要求的日益提升,我们越发需要将数据进行加密。在接下来的内容里,我将对比一些常用的对称加密算法:DES(Data Encryption),3DES(Triple DES),AES(Adva...
  • nightelve
  • nightelve
  • 2013年11月21日 19:11
  • 11652
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ZigBee协议栈中AES加密算法
举报原因:
原因补充:

(最多只允许输入30个字)