我是靠谱客的博主 纯情向日葵,最近开发中收集的这篇文章主要介绍ZigBee Security 基础知识第一章 ZigBee Security 基础知识,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

欢迎转载,请注明作者:石韧
http://blog.csdn.net/stonerme/article/details/53406530

第一章 ZigBee Security 基础知识

本文主要阐述ZigBee安全相关的概念,介绍ZigBee安全相关的基础知识,建议初学者好好理解这一部分的概念。


【正文】

1.1 ZigBee Security 架构

在ZigBee协议栈架构中,安全是一个重要的关注点,ZigBee使用IEEE 802.15.4中基本的安全元素,比如:Advanced Encryption Standard (AES) 加密和Counter with CBC-MAC (CCM) 安全模型。它涉及如下安全:
• 128-bit AES 加密算法
• 美国国家标准与技术研究院认同的安全
• 定义密钥Key的类型 (Link key, Network key)
• 定义密钥Key的创建和维护
• 密钥Key能被硬链接到应用中
• CCM* (Unified/simpler mode of operation)
• Trust Center
• 应用层可以定制安全
在ZigBee协议栈架构中,如下图所示,安全服务提供者(Security Service Provider)模块与应用层和网络层相互作用。即ZigBee在应用层和网络层实现对消息的安全加密。目前,ZigBee支持一种标准安全(Standard Security),在很早的ZigBee版本中支持限制性安全(Residential Security) 和高级安全(High Security),现在已经被弃用。
• 安全服务提供(Security Service Provider)模块与应用层和网络层相互作用。
• ZigBee在网络层和应用层实现对消息的加密。
• ZigBee目前仅支持一种安全模式:标准安全模式。
这里写图片描述
Zigbee协议栈架构

1.2 Network Layer Security

本节描述了网络层安全(Network Layer Security)包含的相关概念。网络层安全属于标准安全,其不依赖于应用层,可以直接运行在ZigBee节点上。所有经ZigBee认证的设备都必须使用网络层安全,它提供一种基本的访问控制方法,用来控制节点是否允许其加入到某一特定的ZigBee网络。与网络层安全对应的是APS Layer Security(应用层安全)。

1.2.1 Network Key

网络安全使用Network Key来对消息进行加密和解密。当设备成功加入ZigBee网络并被认证之后,该设备会对Network Key进行备份,并使用这个Network Key对网络消息进行加密和解密。每一个Network Key对应一个序列码(Sequence Number)。因此用序列码来识别某一个特定的Network Key。当Network Key更新时,序列码会增加1。序列码的好处是可以让设备识别当前的加密消息中使用了哪个Network Key。序列码的范围是0-255,当到达255之后,再从0开始计数。
• 所有的ZigBee相关的Key的长度都是128 Bit。
• 所有加入安全网络中的设备都拥有一个对Network Key的备份。

1.2.2 Hop by Hop security

ZigBee的网络安全是基于逐跳(Hop by Hop)原理,每个路由在转发和处理数据包之前需要认证这个加密数据包是否有效。认证过程是先对安全数据包进行解密,然后验证数据包的完整性。在发送数据包给下一跳目标之前,路由使用其自己的网络参数(如源地址和帧数)重新对数据包进行加密。如果没有这种保护机制,黑客可以relay一个消息到网络中,并被路由到其他设备,因此造成网络资源的消耗。使用逐跳安全使得路由能阻止企图恶意消耗网络带宽的行为。
• 网络层的逐跳(Hop by Hop)安全对应与APS层的端到端(End-to-End)安全。

1.2.3 Package security

网络层的安全数据包结构如下:
这里写图片描述

1.2.3.1 Auxiliary Header

辅助头(Auxiliary Header)包含一系列数据,包括Key的类型,序列码(如果是Network Key的话),发送安全数据包节点的IEEE地址和帧数(Frame Counter)。接收安全数据包节点使用辅助头的这些数据来进行认证和解密数据包。

1.2.3.2 Authentication and Encryption

ZigBee使用128位的对称加密密钥(AES-128)来加密所有在网络层传输的数据。网络头和辅助头是以明文发送,但都经过认证的。而网络层的负载(Payload)同时被认证和加密。AES-128用来创建一个对整个消息的网络部分(包括NWK头、AUX头和Playload)的Hash运算,并将结果附加到消息的末尾,即Message Integrity Code(MIC,4个字节)。MIC用于对消息进行认证,以确保其没有被修改。接收节点在收到该消息后,对消息进行Hash运算得到新的MIC值,并将其与消息末尾的MIC值进行对比,如果相同,则代表消息是一个有效安全数据包,如果不相同,则接收节点会忽略这个消息。

1.2.3.3 The Network Security Frame Counter

Frame Counter(帧数)包含在辅助头里面,用来避免Replay Attacks(重放攻击)。所有的设备都有自己的发送数据的帧数,并同时维护它们的相邻设备(Route)和子设备的帧数。当设备发送一个数据包时,发送帧数会增加1。接收设备接收数据包时,验证这个数据包的帧数是否在之前接收的数据的数据帧基础上增加1。如果这个帧数没有增加1,那么这个数据包被默默丢弃。如果接收设备不是最终的目的节点,只是一个路由设备,则数据包将被解密并被修改为该路由设备的帧数,然后重新加密并发送到下一跳。
帧数是一个32 bit的数,在帧数到达最大值(0x80000000)之前,Network Key能被更新。如果本地设备的帧数大于0x80000000,帧数会被复位到0。
• 重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(Freshness Attacks),是指攻击者发送一个目的主机已接收过的包,特别是在认证的过程中,用于认证用户身份所接收的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的安全性。

1.2.3.4 Unencrypted Network Data

所有正常的网络数据包均需要有网络安全(Network Key)和有效的帧数(Frame Counter)。 但有一种情况下是例外,当设备加入网络的过程中,此时设备没有Network Key。 在这种情况下,入网设备的消息依靠它的父节点来中转,直到它完全加入到网络并且已经认证。因此,任何其他的消息,如果在被接收时,没有网络层的安全,将被默默丢弃。

1.3 APS Layer Security

本小节描述了ZigBee APS层安全相关内容。

1.3.1 End-to-End Security

APS安全使用端对端的安全,当在网络中来发送安全的消息,除了源节点和目的节点之外没有其他节点能解密这个消息。这与网络层提供的逐跳(Hop by Hop)安全不同。APS安全使用分享的Key,只有源节点和目的节点知道这个Key,因此提供端对端的安全。
APS安全和网络安全可以同时对消息进行加密,在这种情况下,先使用APS安全对消息进行加密,然后使用网络安全进行加密。
APS层的安全数据包结构如下:
这里写图片描述

APS安全中使用的Key被称为Link Key。两个设备进行通信时,需要先建立Link Key之后才能发送APS安全数据。ZigBee网络中共有两种类型的Link Key:Trust Center Link Key和Application Link Key。

Trust Center Link Key是一种特殊的Link Key,两个通信的设备中有一个设备是Trust Center。协议栈使用Trust Center Key来发送和接收Trust Center的APS命令消息,应用层也可以使用这个Trust Center Link Key来发送APS加密数据消息。
所有的网络中的设备必须有Link Key。在Trust Center Network中,设备必须有Trust Center Link Key;在Distributed Trust Center Network中被称为Distributed Trust Center Link Key。

Application Link Key是网络中两个节点之间建立的分享Key,并且这两个节点都不是Trust Center。它对于应用层消息来讲是一种可选的安全机制。当一个设备和不同的设备进行通信的时候,该设备可以拥有不同的Application Link Key。
设备可以通过两种方式获取Application Link Key:
• 设备预先设置Application Link Key。
• 向Trust Center发送一个申请 Application Link Key的请求,Trust Center同时将Application Link Key发送给它和另一个设备。
当请求Application Link Key时,设备向Trust Center发起一个请求,发送过程中使用 Trust Center Link Key进行加密。对这两个设备而言,Trust Center扮演第三方角色,Trust Center收到请求之后,同时给发起者和响应者发送Application Link Key,并分别以各自的Trust Center Link Key对该Key进行加密,之后它们之间就能进行安全的通信。请求建立一个Application Link Key的过程如下图:
这里写图片描述

1.3.3 Unencrypted APS Data

APS层的安全是独立于网络层的安全,即两者之间是单独的,没有任何联系。在协议栈中,当一些特定的安全消息(APS commands)发送或来自于Trust Center时需要APS层的安全。APS安全对于应用层来说是可选择的。应用层的消息在APS层不会自动加密,当接收者发现消息没有APS加密时,也不会被忽略。当消息没有APS层加密时,应用可以选择接受或拒绝该消息。例如:SE 规范中描述ZigBee簇消息必须要有APS层安全。

1.4 Trust Center Network

Trust Center Network即Centralized security network,它是由ZigBee coordinator形成,且其承担Trust Center的功能.。每个节点加入到这个网络需要被Trust Center认证之后才能进行其他的网络相关的操作。一个安全的网络中,认证是由Trust Center(Trust center)授权。所有的设备加入网络时是临时的,直到联系上Trust Center,并Trust Center决定是否允许新的设备加入到网络中。新设备的父节点在Trust Center和新加入节点之间,作为中转的角色。直到新设备完全加入并且已经被认证,才意味着成功加入到安全的网络,之后只有经认证的消息能发送到该设备。
在一个新设备加入网络时,Trust Center完成以下三件事情:
1) 发送当前Network Key的备份, 由新设备的父节点转发给该新设备。
2)当不允许新设备加入网络时,发送一个命令给新设备的父节点,从网络中移除该新设备。
3) 忽略父节点的请求。如果父节点在2秒之内没有接收到Trust Center发来的Network Key,父节点默默地从网络中移除该设备。
一旦新设备拥有了Network Key,则表明它已经完全加入到网络,因此能跟网络中的其它设备进行通信。当要对新设备进行认证的时候,需要Trust Center进行操作。而两个正常的设备之间发送消息是不需要Trust Center参与。

1.5 Distributed Trust Center Networks

Distributed Trust Center Networks 即Distributed security network,其由ZigBee router创建的网络,因此网络中没有Trust Center。每个新设备加入到网络时,是由其父节点认证。在这种网络中,任何路由可以批准和认证想加入网络的新设备。这提供一种简单的入网机制,但以较少的安全网络的代价。
• 使用Distributed Trust Center network还是Trust Center network在网络形成时就已经确定,网络建立之后,无法进行更换。

1.6 ZigBee Key的思维导图

这里写图片描述
欢迎转载,请注明作者:石韧
http://blog.csdn.net/stonerme/article/details/53406530

最后

以上就是纯情向日葵为你收集整理的ZigBee Security 基础知识第一章 ZigBee Security 基础知识的全部内容,希望文章能够帮你解决ZigBee Security 基础知识第一章 ZigBee Security 基础知识所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部