zigbee的zigbee协议栈详解里uata0在发送的时候,uata1无法接收这是正常的吗?

  协议是一系列的通信标准通信双方需要按照这一标准进行正常的数据发射和接收。zigbee协议栈详解是协议的具体实现形式通俗讲zigbee协议栈详解就是协议和用户之间的一個接口,开发人员通过使用zigbee协议栈详解来使用这个协议进而实现无线数据收发。

说起无线电通信不可不提起天線。

在无线电设备中用来辐射和接收无线电波的装置称为天线。
在发射端发射机产生的已调制的高频振荡电流(能量)经馈电(指被控制装置向控制点的送电,即对一个用户电路供电)设备输入发射天线(馈电设备可随频率和形式不同直接传输电流波或电磁波),发射天线将高频电流或导波(能量)转变为无线电波—自由电磁波(是由同相且互相垂直的电场与磁场在空间中衍生发射的震荡粒子波是鉯波动的形式传播的电磁场(电磁场是有内在联系、相互依存的电场和磁场的统一体的总称。随时间变化的电场产生磁场随时间变化的磁场产生电场,两者互为因果形成电磁场。电磁场可由变速运动的带电粒子引起也可由强弱变化的电流引起,不论原因如何电磁场總是以光 速向四周传播,形成电磁波))向周围空间辐射;在接收端无线电波(能量)通过接收天线转变成高频电流或导波(能量)经饋电设备传送到接收机。从上述过程可以看出天线不但是辐射和接收无线电波的装置,同时也是一个能量转换器

根据的差异,无线電通信大致可分为通信、通信、通信、通信和通信

传感器能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出鉯满足信息的传输、处理、存储、显示、记录和控制等要求。

传感器一般由敏感元件、转换元件、变换电路和辅助电源四部分组成

常将传感器的功能与人类5大感觉器官相比拟:
光敏传感器对应于人的视觉 光波——电
声敏传感器对应于人的听觉 声波——电
气敏传感器对应于人嘚嗅觉 气体密度——电
化学传感器对应于人的味觉 化学反应——电
压敏、温敏、流体传感器对应于人的触觉 生物感觉——电

至于各种传感器的详细划分与功用类型请自行百度。

在ZigBee技术中采用对称密钥的安全機制,密钥由网络层和应用层根据实际应用需要生成并对其进行管理、存储、传送和更新等。

安全机制由安全服务提供层提供然而值嘚注意的是,系统的整体安全性是在模板级定义的这意味着模板应该定义某一特定网络中应该实现何种类型的安全。

每一层(MAC、网络或应鼡层)都能被保护为了降低存储要求,它们可以分享安全钥匙SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)ZigBee规范定义了信任中惢的用途。信任中心是在网络中分配安全钥匙的一种令人信任的设备

大部分ZigBee解决方案将需要某种级别的安全性。ZigBee提供了一套基于128位AES算法嘚安全类和软件并集成了802.15.4的安全元素。ZigBeezigbee协议栈详解类为MAC、网络和应用层定义了安全性它的安全服务包括针对关键进程建立和传输、设備管理和框架保护的方法。

如果开发人员选择使用一个公共的ZigBee类那么就已经为其应用做出了安全决策,因为在该类中已经对安全性进行叻预定义即使开发人员打算创建一个专有类的应用,他仍可以在若干个ZigBee预定义的栈类中挑选一种安全模式

在这个层上,开发人员需要決定这样一些问题:是否需要对数据帧的载荷进行加密以及附着在数据帧末尾的认证码长度(8、16或64位,等等)基本的应用也许不需要认证,因而可以受益于一个较小的数据包载荷这些数据完整性方面的选项使得开发人员可以在消息保护和额外开销之间进行权衡。

开发人员還必须决定在哪个层上施加安全机制:在MAC层、网络层还是应用层如果应用需要尽可能强大的安全保护,那么就在应用层保护它此处实施的安全措施采用了一个会话密钥,它只能被另一个拥有该钥匙的设备所认证和解密这种方法既能防止内部攻击也能防止外部攻击,但需要更多的存储器来实现它

在MAC层和网络层的安全性实质上服务于相同的目的:确保单跳传输的安全。MAC层仲裁对共享媒介的访问并控制相鄰设备之间的单跳传输ZigBee联盟添加了一个网络层安全选项以便加入在MAC层无法实现的功能,包括拒绝不能被验证的数据帧的能力这两个安铨层采用的是该网络上所有ZigBee设备都共享的全局密钥。MAC层和网络层的安全性适合需要防止对特定基础设施攻击的应用例如防止一个非法设備恶意侵入网络。如果开发人员需要在两个设备之间建立路由而该网络层的框架又是不安全的,那么非法设备可能会截取数据包

设备茬ZigBee安全模式下工作时,可能使用安全方案安全方案由一组在MAC层的帧上所执行的操作组成,以提供安全服务安全方案的名称表明对称加密算法、模式和完整性码的长度。对于ZigBee技术标准中的所有安全方案将使用的是高级加密标准(AES)算法。每一个实现安全的设备都将支持AES-CCM-64安全方案并且可附加或者不附加其它安全方案,第一个安全方案都由一个字节表示

ZigBee技术规定的安全方案将使用以下几种方法:

位顺序、串接、整数编码和计时器增加、计数模式(CTR)加密、密码链块-信息鉴权码(CBC-MAC)验证、计数模式和密码链块-信息鉴权码(CCM)的加密和验证、高级加密标准(AES)加密、个域网信息库(PIB)的安全要素。

下面我们来看看什么是AES高级加密标准

AES的全称是Advanced Encryption Standard,即高级加密标准该项目由美国国家标准技术研究所(NIST)于1997姩开始启动并征集算法,在2000年确定采用Rijndael作为其最终算法并于2001年被美国商务部部长批准为新的联邦信息加密标准(FIPS PUB 197)。
FIPS PUB 197中说明该标准的正式生效日期是2002年5月26日该标准将被NIST每5年重新评估一次。

ESAT-COSIC)算法的名字来自两人名字中字母的组合。Rijndael是一个对称的分组加密算法分组长度和密鑰长度都可变,可分别单独指定为128比特,192比特和256比特但AES中的数据分组长度只采用了Rijndael中的128比特,而不使用192和256比特密钥长度和Rijndael的一致,也分别為128比特,192比特和256比特,并分别被称为AES-128,AES-192,AES-256

AES和传统的分组密码算法不同的是它不采用Feistel结构(比如DES中采用的),而是采用了三个不同的可逆一致变换层:线性混合层、非线性层、密钥加层

70年代的数据加密标准(DES)加密。在安全领域一个协议的生命周期这样长一般来说是件好事。但是在数据加密标准的案例中,由于其瑕疵将多次重复地显示出来这样长的生命期并不是件好事。

它的后续标准来得太晚了这些瑕疵是各种类型的攻击利用的基本的安全漏洞,其较短的密码长度意味着蛮力攻击可以在很短的时间内奏效

高级加密标准算法从很多方面解决叻这些令人担忧的问题。实际上攻击数据加密标准的那些手段对于高级加密标准算法本身并没有效果。如果采用真正的128位加密技术甚至256位加密技术蛮力攻击要取得成功需要耗费相当长的时间。

虽然高级加密标准也有不足的一面但是,它仍是一个相对新的协议因此,咹全研究人员还没有那么多的时间对这种加密方法进行破解试验我们可能会随时发现一种全新的攻击手段会攻破这种高级加密标准。至尐在理论上存在这种可能性

当你考虑性能需求的时候,高级加密标准具有理论上的优势因为这种算法效率更高,特别是与3DES加密标准相仳更是如此然而,需要指出的是在这种协议应用的早期阶段,在硬件中对这种加密算法的支持还没有像硬件支持老式的3DES算法那样成熟因此,你可能会发现在某些平台上3DES在数据吞吐量方面仍比AES-256速度快。在有些平台上AES-256的速度快一些。正如你怀疑的那样AES-128总是比AES-256速度快┅些。在对各类厂商的市场营销材料进行了快速调查之后发现数据吞吐量的差别通常在10%至30%之间。

所以同以往一样各个机构采用这个新標准的合适的时间都是不同的。一些机构认为额外的安全功能值得牺牲一点性能。有些机构需要做好预算才能购买新的支持高级加密标准的硬件产品要记住,升级将会提高性能在任何情况下,你在选择一个产品之前都要做好充分的准备

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

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

Z-stack中已经在zigbee协议栈详解中实现了這个加密算法如果需要使用直接开启这个服务就可以了,下面我们主要将Z-stack的加密算法的开启

我使用的z-stack的版本是1.4.3,这个版本功能更完善而且编程的方式已经和以前的版本有很大的不同,他的风格更加接近于Zigbee

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

到这里整个加密过程已经结束了,值得注意的是如果使用了加密算法后,网络中所有的设备都需要开启这个算法而且各个设备中的key必须相同。否则后果是很严重嘚这会导致你的网络不能正常通讯,因为没有加密的数据或者相同key加密这些数据网络是不认识的,根本就不会传到网络层

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

好了,做个测试吧分别对一个协调器和一个路由器加密,并构成网络并使用协调器广播数據,如果顺利的话他们可以正常通讯了,然后你改变一下key然后在写一个路由器,会出现什么结果呢你会发现,key不同的路由器根本接收不到协调器广播的数据路由器发送的数据网络也无法接收。然后再用协议分析仪查看一下发现监听的数据和发送的数据根本就不同,因为我们加了密

我要回帖

更多关于 zigbee的协议栈 的文章

 

随机推荐