您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 电子商务 > zigbeeAES加密实验
4.8对网络传输内容用AES加密AES(TheAdvancedEncryptionStandard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。AES是一个新的可以用于保护电子数据的加密算法。明确地说,AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换(substitutions)输入数据。Z-stack对Zigbee2007提供了全面的支持,功能之强大,性能稳定、安全性高。CC2530硬件支持128bit的AES加密算法,在协议栈中为了避开相同设备的干扰,和防止被其他设备监听,就必须采用这个技术将数据加密来提高数据的安全性。4.8.1实验目的与器材1)实验目的本实验将利用Z-Stack2007协议栈构建一个简单的无线传感网络,对网络上传输的数据用AES进行加密,并且通过抓包软件对加密之前和之后的数据进行分析对比。2)实验器材3个CC2530开发模块(1个终端节点,1个协调器,1个抓包节点);4.8.2实验原理与步骤本实验以SensorDemo为实例程序,说明如何对传输的数据进行AES加密。1)实验原理AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。Z-STACK中采用的是128bit的加密方式,并且在协议栈中实现了AES加密算法。因此,如果需要对数据进行加密,仅需要在协议栈的配置文件中提供一个密钥,并且使能AES加密即可。通过观察发现,加密后数据的长度和原始数据的长度是相关的。例如,当原始数据长度为1~15字节时,加密后的数据所对应的长度相同;当原始数据长度为16~31字节时,加密后的数据所对应的长度相同,以此类推。2)实验步骤1.创建密钥Z-STACK协议栈在配置文件f8wConfig.cfg定义了密钥:/*Defaultsecuritykey.*/-DDEFAULT_KEY={0x01,0x03,0x05,0x07,0x09,0x0B,0x0D,0x0F,0x00,0x02,0x04,0x06,0x08,0x0A,0x0C,0x0D}所以用户只需要修改-DDEFAULT_KEY的值就可以定义自己使用的密钥。2.将ZGlobals.c中的uint8zgPreConfigKeys=FLASE;修改为TRUE;如果这个值为真,那么默认的密钥必须在每个节点程序的配置文件中配置。如果这个值为假,那么默认的密钥只需配置到协调器设备当中,并且通过协调器节点发送给其他的节点。//Iftrue,preConfigKeyshouldbeconfiguredonalldevicesonthenetwork//Iffalse,itisconfiguredonlyonthecoordinatorandsenttoother//devicesuponjoining.uint8zgPreConfigKeys=TRUE;3.将f8wConfig.cfg文件中设置为-DSECURE=1使能AES加密/*Setto0fornosecurity,otherwisenon-0*/-DSECURE=1最后,到这里整个加密过程结束,值得注意的是,如果使用了加密算法后,网络中所有的设备都需要开启这个算法,而且各个设备中的KEY必须相同。否则后果是很严重的,这会导致你的网络不能正常通讯,因为没有加密的数据或者相同KEY加密,这些数据网络是不认识的,根本就不会传到网络层。加密算法开启以后,如果你需要修改代码,就必须改变你的KEY,或者是擦除一次你的flash,否则会出现不可逾期的错误,而且没有规律。通常的做法是擦除flash一次,这样可以保证和整个网络的KEY相同。4.8.3实验结果为了能截取到经过AES加密过的网络传输内容,下面需要三个节点进行实验:一个协调器,一个终端,一个抓包。下面为网络抓包后的结果,网络传输内容为“Y”,其十六进制表示为“59”。由于加密过程仅作用在各层的“有效数据段”中,所以只注重每层的数据段。1)终端,协调器都没加密终端,协调器都没加密时,mac层数据如图4-8-1所示图4-8-1终端,协调器都没有加密时,mac层抓包的数据终端,协调器都没加密时,网络层数据如图4-8-2所示图4-8-2终端,协调器都没有加密时,网络层抓包的数据终端,协调器都没加密时,应用层数据如图4-8-3所示图4-8-3终端,协调器都没有加密时,应用层抓包的数据2)终端,协调器都加密.:终端,协调器都加密时,mac层数据如图4-8-4所示图4-8-4终端,协调器都加密时,mac层抓包的数据终端,协调器都加密时,网络层数据如图4-8-5所示图4-8-5终端,协调器都加密时,网络层抓包的数据终端,协调器都加密时,应用层数据如图4-8-6所示图4-8-6终端,协调器都加密时,应用层抓包的数据3)MAC层有效数据分析如图4-8-7所示。图4-8-7MAC层有效数据分析4)网络层有效数据段分析如图4-8-8所示。图4-8-8网络层有效数据段分析5)应用层有效数据段分析如图4-8-9所示。图4-8-9应用层有效数据段分析通过分析以上的报文可以得出如下的结论:在进行加密之后,应用层的负载变为了加密后的格式,如上图所示。之后,加上网络层的帧头和相应的控制字段。交付给MAC层,MAC层再加上自己的帧头和控制字段将该数据包发送出去。因此,如果通信双方的密钥不同或者某方未使能加密,则无法进行通信,终端节点根本就无法与协调器建立连接,从而,达到了数据保护的目的。经过测试,还发现了关于AES配置的如下规律:1.若通信双方的任意一方未使能-DSECURE=1,则无法终端节点无法加入协调器的网络。2.若zgPreConfigKey=FALSE,无论双方设定的密钥(即DEFAULTKEY)是否相同,都可以进行通信,因为当zgPreConfigKey=FALSE时,整个加密的配置都将由协调器节点控制,并且由协调器发送给其他的终端节点或路由节点。3.若zgPreConfigKey=TRUE,如果双方设定的密钥不同,则无法进行通信。问题1:当设置zgPreConfigKey=FALSE时,理论上密钥由协调器节点发送给每个终端节点,你能否通过抓包观察这个过程?问题2:若zgPreConfigKey=FALSE,这样的加密过程是否是安全的?问题3:当双方设置的密钥不同时,为什么不能进行通信?你能否通过抓包解释这一现象?问题4:加密算法在协议栈的那一层实现?你是否可以使用自己的加密算法对数据进行加密?问题5:当数据量过大时,对数据的加密和解密是否会影响到整个网络的效率?
本文标题:zigbeeAES加密实验
链接地址:https://www.777doc.com/doc-2829790 .html