介绍
ZigBee被认为是一种安全的通信协议。其安全架构补充了IEEE 802.15.4标准提供的安全服务。ZigBee提供的安全服务包括安全密钥建立、安全密钥传输、通过对称加密的帧保护、以及安全的设备管理。
但是,其安全功能基于某些固有的假设:
•ZigBee采用“开放信任”模式; 即,协议栈层之间彼此信任,并且产生帧的那一层负责保护产生的帧。
•安全服务仅以加密方式保护不同设备之间的接口。
•相同设备上的不同堆栈层之间的接口是非加密的。
•密钥在传输期间不会发生无意中的泄露情况。(例外情况是在新设备的预配置期间,可能会在不受保护的情况下发送单个密钥。)
•几乎完美的随机数生成器的可用性。
•防篡改硬件的可用性。
考虑到这些假设,本文将会探讨ZigBee标准提供的安全模型,用于安全通信的各种密钥、ZigBee建议的密钥管理方法以及其他固有的安全机制,如身份验证,重放攻击保护等。
ZigBee安全模型
ZigBee标准支持两种类型的安全模型,如下面的图1所示,主要区别在于它们如何允许新设备进入网络以及它们如何保护网络上的消息:
图1:ZigBee安全模型
集中安全模型:是一个复杂但应该是最安全的模型,涉及第三个逻辑设备和信任中心(网络协调员)。信任中心负责:
•配置和验证加入网络的路由器和终端设备;
•生成用于跨网络加密通信的网络密钥;
•定期或根据需要切换到新的网络密钥。因此,如果攻击者获取网络密钥,它将在到期前具有有限的生命周期;
•为每个设备加入网络时建立唯一的信任中心链接密钥,以便与信任中心进行安全通信,以及维护网络的整体安全性。
分布式安全模型:简单但安全性较低。此模型仅支持路由器和终端设备。路由器构成分布式网络,负责注册其他路由器和终端设备。路由器向新加入的路由器和终端设备发布网络密钥(用于加密消息)。网络中的所有节点使用相同的网络密钥来加密消息。此外,所有节点在注册到网络之前预先配置有链接密钥(用于加密网络密钥)。
ZigBee安全密钥
在ZigBee标准中使用三种类型的对称密钥(每个长度为128位)。
网络密钥:用于广播通信,由NWK和ZigBee的APL应用该密钥。每个节点都需要网络密钥才能与网络上的其他设备安全通信。信任中心生成网络密钥并将其分发给网络上的所有设备。网络上的设备通过密钥传输(用于保护传输的网络密钥)或预安装来获取网络密钥。有两种不同类型的网络密钥:标准(在开放时发送网络密钥)和高安全性(已加密的网络密钥)。网络密钥的类型控制网络密钥的分发方式; 并可以控制网络帧计数器的初始化方式。但是,该类型不会影响消息的安全性。
链接密钥:用于单播通信,由ZigBee协议栈的APS应用。设备通过密钥传输(密钥加载密钥用于保护传输的链路密钥),密钥建立(基于“主”密钥和其他网络参数)或预安装(例如,在工厂出厂安装)。通常,使用带外方法(例如,产品包装中的QR码)预先配置与信任中心相关的链接密钥,而节点之间的链接密钥由信任中心生成并使用网络密钥加密。将其发送到节点。
ZigBee定义了两种类型的链接密钥; 全局和唯一(可以依次为两种类型 - 第一种是信任中心链接密钥;密钥在信任中心和设备之间建立,第二种是在信任中心以外的网络中的两个设备之间建立的应用程序链接密钥)。链接密钥的类型决定了设备如何处理各种信任中心消息(APS命令),包括是否应用APS加密。
此外,每个节点还可以具有以下预先配置的链接密钥,该密钥将用于导出信任中心链接密钥(导出是通过基于证书的密钥建立协议(如果已启用SE安全性),APS请求密钥方法) ,Touchlink调试,或使用Matyas-Meyer-Oseas哈希函数来完成的):
•默认的全局信任中心链路密钥由ZigBee联盟定义。如果应用程序在加入时未指定其他链接密钥,则默认值为5A 69 67 42 65 65 41 6C 6C 69 61 6E 63 65 30 39(ZigBeeAlliance09)并由设备使用或支持。
•分布式的安全的全局链路密钥,是一种用于从同一厂商的设备之间交互的制造者特有的密钥。
•安装码是预配置的链接密钥。所有ZigBee设备都可以包含唯一的安装码,一个由16位循环冗余校验(CRC)保护的128位随机数字。信任中心可能要求每个新设备使用唯一的安装码来加入集中式安全网络,并且安装码必须与先前在带外信任中心输入的代码(即QR代码)匹配。验证安装码后,加入设备和信任中心使用Matyas-Meyer-Oseas(MMO)哈希函数从安装码派生唯一的128位信任中心链接密钥
•Touchlink预先配置链接密钥。
主密钥:构成两个设备之间长期安全性的基础,仅由APS使用。其功能是保持对称密钥建立协议(SKKE)中两个节点之间的链路密钥交换机密。设备通过密钥传输(密钥加载密钥用于保护传输的主密钥),预安装或用户输入的数据(如PIN或密码)获取主密钥。
密钥管理
如上所述,ZigBee的一个特征是,它具有多种密钥管理机制:
•预安装:制造商将密钥安装到设备本身。用户可以使用设备中的一系列跳线(在预先安装了多个密钥的设备中)选择一个已安装的密钥。
•密钥建立:这是一种基于主密钥生成链接密钥的本地方法。ZigBee网络的不同安全服务使用从单向函数(使用链接密钥作为输入)派生的密钥,以避免由于服务之间的不需要的交互而导致的安全漏洞。使用不相关的密钥可确保不同安全协议的执行的逻辑分离。该密钥建立基于SKKE(对称密钥建立) 协议。通信中涉及的设备必须拥有主密钥,该密钥可能是通过预安装或密钥传输或用户输入获得的。
•密钥传输:网络设备向信任中心发出请求,要求将密钥发送给它。此方法适用于在商业模式下请求任何三种类型的密钥,而在住宅模式下,信任中心仅保留网络密钥。信任中心使用密钥加载密钥来保护主密钥的传输。
另外,在集中式模型中,可以使用基于证书的密钥建立协议(CBKE)来分发密钥。CBKE提供了一种机制,可以根据制造时存储在两个设备中并由证书颁发机构(CA)签名的证书与信任中心协商对称密钥。
ZigBee协议栈安全措施
IEEE 802.15.4 提供了抵御来自其他网络的干扰的鲁棒性,并使用具有128位密钥长度(16字节)的AES(高级加密标准)来 实现:
•数据安全性 - 通过加密数据有效负载和执行
•数据完整性 - 使用 消息完整性代码(MIC)或消息验证代码(MAC)实现 ,该代码附加到要发送的消息中。此代码可确保附加的MAC头和有效负载数据的完整性。(它是通过使用128位密钥加密IEEE MAC帧的部分而创建的)
在IEEE 802.15.4 MAC帧中,仅当帧控制字段的安全启用子字段打开时,才启用辅助安全头。这个特殊的头有3个字段:
•安全控制指定了网络提供的保护类型。它是设置全局安全策略的地方。安全级别的选择决定了密钥的长度和要加密的内容。即,每个安全级别提供一定程度的帧加密和完整性检查。ZigBee为NWK和APS层定义了8种不同的安全级别,如下图2所示。
图-2:ZigBee安全级别
•帧计数器是由当前帧的源给出的计数器,以保护消息不被重放攻击。
•密钥标识符指定了用于需要了解的节点通信的密钥类型所需的信息。
IEEE 802.15.4安全材料(如密钥,帧计数和安全级别)存储在访问控制列表(ACL)中。ACL用于防止未经授权的设备加入网络。ACL存储在MAC PAN信息库(PIB)中,并且与其他MAC属性类似的被访问和修改。每个访问控制列表(ACL)存储要与之通信的节点的地址,Security Suite(AEC-CTR,AES-CCM-64,AES-CCM-128等),密钥:AES算法中使用的128b密钥,上一个初始向量(IV)和重放计数器(最后一个IV由源和目的地的重放计数器用作消息ID以避免重放攻击)。虽然IEEE 802.15.4提供了安全措施,但它并未指定如何管理密钥或应用的身份验证策略的类型。这些问题由ZigBee管理。ZigBee标准支持以下可选安全服务:
•加密/解密 -ZigBee帧可以选择使用安全套件AES-CCM *进行保护,以提供数据机密性,数据认证和数据完整性。AES-CCM *是AES(高级加密标准)的微小变体,具有修改的CCM模式(具有CBC-MAC的计数器)。
下面的图3显示了AES-CCM *在数据身份验证和机密性方面的作用。在发送器端,128位数据块形式的明文进入AES-CCM *。AES-CCM *的职责是加密数据并生成相关的MIC,该MIC与帧一起发送到接收器。接收器使用AES-CCM *对数据进行解密,并从接收到的帧中生成自己的MIC,以便与接收到的MIC进行比较(数据完整性)。与CRC相比,MIC提供更强的真实性保证。CCM *生成的MIC用于检测故意的和未经授权的数据修改以及意外错误。
CCM *被称为通用操作模式,它结合了数据加密,数据认证和数据完整性。CCM *仅提供加密和完整性功能,如上图2所示。该过程中使用的随机数是一个13字节的字符串,使用安全控制,帧计数器和辅助头的源地址字段构建。MIC的大小可以是32位,64位或128位。
图-3:AES-CCM *在数据认证和机密性方面的作用
•重放攻击保护:ZigBee网络中的每个节点都包含一个32位帧计数器,该计数器在每次数据包传输时递增。每个节点还跟踪它所连接的每个设备(节点)的上一个32位帧计数器。如果节点从具有与上一个接收的帧计数器值相同或更小的帧计数器值的相邻节点接收到分组,则丢弃该分组。此机制通过跟踪数据包并在节点已接收它们时丢弃它们来启用重放攻击保护。帧计数器的最大值可以是0XFFFFFFFF,但是如果达到最大值,则不能进行传输。帧计数器重置为0的唯一时间是更新网络密钥。
•设备认证:ZigBee标准支持设备认证和数据认证。设备认证是确认将网络加入为真实的新设备的行为。新设备必须能够接收网络密钥并在给定时间内设置适当的属性来进行身份验证。设备认证由信任中心执行。住宅和商业模式的认证程序不同。
在住宅模式下,如果加入网络的新设备没有网络密钥,信任中心会通过不受保护的链路发送网络密钥,这会导致安全漏洞。如果新设备已具有网络密钥,则必须等待从信任中心接收虚拟(全为零)网络密钥,作为身份验证过程的一部分。新设备不知道信任中心的地址,并使用此接收消息的源地址来设置信任中心地址。然后,加入设备被认为是用于住宅模式的认证。
相反,在商业模式中,信任中心从不通过未受保护的链路将网络密钥发送到新设备。但是,如果新设备没有与信任中心的共享主密钥,则可以在商业模式下发送不安全的主密钥。在新设备接收到主密钥之后,信任中心和新设备启动密钥建立协议(SKKE)。新设备与信任中心建立链接密钥的时间有限。如果新设备无法在超时期限结束之前完成密钥建立,则新设备必须离开网络并再次重试关联和身份验证过程。确认新链接密钥后,信任中心将通过安全连接将网络密钥发送到新设备。现在认为加入设备已经过商业模式的认证。
此外,ZigBee还支持加入时的设备唯一身份验证,例如Touchlink调试 - 这是一种易于使用的接近机制,用于将设备调试到网络中。该方法通过Touchlink'发起者'确定目标设备(待委托)的接近度以及协商/传输网络参数来工作。
安全无线(OTA)固件升级:OTA更新允许制造商添加新功能,修复其产品中的缺陷,并在识别出新威胁时应用安全补丁。但是,如果协议未提供充足的保护,或者设备制造商未使用所有可用的安全措施,则OTA更新也会代表潜在的安全漏洞。ZigBee设备和相关的硅平台提供多层安全性,以更新现场设备,并确保未更新恶意修改代码映像:
•首先,ZigBee标准提供了一种通过使用唯一密钥加密隔空传输所有镜像的方法。
•其次,该标准提供了一种用另一个唯一密钥对OTA镜像进行签名的方法。
•第三,镜像可以在制造期间被加密,使得仅最终产品包含用于解密它的密钥。
•最后,镜像可以存储在芯片上存储器中,该存储器配置为禁用调试回读功能,防止使用标准调试工具进行逆向工程,这是其他解决方案的常见漏洞。
在OTA升级期间,一旦设备接收到加密镜像,其安全引导加载程序将对镜像进行解密,验证签名,然后更新设备。此外,每次设备启动时,引导加载程序都会检查活动镜像的有效性。如果镜像无效,则引导加载程序会阻止它更新并返回使用先前已知的正常镜像。因此,将快速检测到镜像损坏,并且系统操作员可以采取行动。
基于逻辑链路的加密:另一个关键的安全工具是能够在网络中的一对设备之间创建应用级安全链路。这是通过在一对设备之间建立一组唯一的AES-128加密密钥来管理的。这允许网络中任何两个设备之间的逻辑安全链路,从而支持网络中的一对设备与许多其他设备之间的“虚拟专用链路”。此措施限制了获取网络密钥的攻击者拦截或注入其他设备将采取行动的消息的能力。
运行时密钥更新:定期或在需要时,信任中心主动更改网络密钥。信任中心生成一个新的网络密钥,并通过使用旧网络密钥对其进行加密,将其分发到整个网络中。更新后,所有设备将在短时间内继续保留旧网络密钥,直到网络上的每个设备都切换到新网络密钥。此外,设备在接收新网络密钥时将其帧计数器初始化为零。
网络干扰保护:在低成本的ZigBee节点中,由于成本或节点大小的限制,使用带选择滤波器可能是保护网络不受干扰的一种选择。然而,ieee802.15.4和ZigBee网络的基本特性,如低射频传输功率、低占空比和CSMA/CA信道接入机制,有助于降低ZigBee无线网络对附近其他系统的影响,反之亦然。提高ZigBee网络共存性能的途径有两种:协同性和非协同性。
在协同方法中,ZigBee网络和其他网络(例如,IEEE 802.11b / g网络)的某些操作被一起管理。每当一个网络处于活动状态时,另一个网络将保持非活动状态以避免数据包冲突。在该方法中,ZigBee网络和其他网络之间必须存在通信链路以实现和管理协作。
非协同方法是任何ZigBee网络可以遵循的程序,可以在不知道附近干扰无线设备的操作机制的情况下提高其共存性能。该方法基于检测和评估干扰并尽可能避免干扰。可以在ZigBee无线网络中使用的一些非协同方法包括:
•具有冲突避免的载波侦听多路访问(CSMA / CA)
•类似DSSS的信号扩频技术允许所需信号具有处理驻留在相同频带中的任何干扰的增益的优点。因此,信号扩展通常改善了网络对干扰源的鲁棒性
•动态RF输出功率控制 - 根据信道条件和节点之间的距离调整发射器的RF输出功率。降低发射器输出功率可降低与附近其他无线设备的干扰,但信号接收方更容易受到干扰。
•网状网络和位置感知路由 - 如果网络中的某个路由器节点始终存在强干扰,将频繁导致数据包传递到下一跳失败,则网状网络可以选择另外的路径来承载到最终目的地的消息,避免路由器靠近主要干扰源。这有时被称为路径多样性。在位置感知路由中,在计算链路成本函数时,可以考虑关于可能的高干扰区域的信息(如果已知)。以这种方式,尽可能地将分组业务流引导远离高干扰区域。但是干扰源仍然影响由高干扰区域内的节点发起或打算发送的传输
•频率信道选择 - 当所需信道中的干扰信号的能量不可接受时,改变频率信道可以是解决干扰问题的简单方法。ZigBee提供频率捷变功能,允许整个网络在干扰时改变信道。如果已知附近网络中的干扰信号的操作频率和带宽,则可以相应地选择ZigBee网络的频率信道以最小化干扰信号的影响。这被称为通道对齐。
•自适应分组长度选择 - 基于信道条件。减小分组的大小通常被认为是在存在干扰的情况下改善PER的方式。一般而言,较小的分组在干扰源出现在同一频率信道之前具有更好的接收目的地址的机会。但是,一些实验表明减少数据包长度并不总能带来更好的PER性能。
结论
尽管ZigBee在设计时考虑了安全性,但仍需要进行权衡以保持设备的低成本,低能耗和高兼容性。它允许在同一设备上的不同层之间重复使用相同的密钥,并允许在设备到设备的基础上实现端到端安全性,而不是在两个通信设备上的特定层对(甚至是应用程序对)之间实现)。此外,对于设备的互操作性,ZigBee对给定网络上的所有设备和设备的所有层使用相同的安全级别。尽管如此,这些措施也不可避免导致安全风险。因此,负担在于开发人员解决这些问题,并包括检测和处理错误,丢失密钥同步,定期更新密钥等的策略。
虽然本文探讨了ZigBee提供的基本安全功能,但下一篇文章ZigBee 安全:渗透测试篇(第1部分)将会探讨可以在支持ZigBee的设备上执行的各种攻击以及可用于执行评估的工具。
参考
[1] ZigBee规范文件053474r20。由ZigBee联盟提供。
[2] http://www.libelium.com/security-802-15-4-zigbee/
[3] http://www.embedded-computing.com/embedded-computing-design/zigbee-evolution-continues-with-wireless-iot-security-updates
[4] ZigBee无线网络和收发器 - Shahin Farahani
[5] 最大化ZigBee网络的安全性 - 恩智浦