ZigBee安全协议分析

(整期优先)网络出版时间:2023-10-25
/ 2

ZigBee安全协议分析

胡浩

江汉大学 人工智能学院

摘要:ZigBee作为短距离无线通信的代表,其安全协议依然遵循现代密码学的基本原理,本文首先概述了Zigee安全协议,然后描述了ZigBee安全协议的各个阶段,包括配对阶段、身份认证与协商阶段、通信安全保护阶段,最后描述了ZigBee的设备安全。

关键字: ZigBee安全协议认证与加密,设备安全

  1. ZigBee安全协议概述

ZigBee 是一种安全的短距离无线通信系统,ZigBee安全协议提供了基本的安全功能。包括安全密钥创建、安全密钥传输、对称加密帧保护和安全设备管理,ZigBee安全协议流程经历了三个阶段,包括配对阶段、身份认证与协商阶段、通信安全保护阶段。

  1. ZigBee配对阶段

配对用于在协调器节点和路由器或者终端节点之间形成关联。ZigBee支持对称密码体系,支持以下几种配置[1]

(1)配置密钥:通过预配置的方法,将128bit共享密钥预配置在节点间。

(2)配置口令:用户在节点间上输入相同的口令。口令经过口令变换算法变换为128bit的共享密钥。

(3)配置bootstrap:从bootstrap获取口令,节点获取到bootstrap发送的口令,基于口令变换为 128bit的共享密钥。

(4)不配置任何信息:节点间直接配对,无需输入。

第一种配置方式无需输入和输出设备,是最方便的配置方式,也是ZigBee推荐的方式,第二种配置方式需要输入和输出设备,增加了成本,但可以证明用户在现场以强化安全,第三种方式需要额外的节点信任的第三方bootstrap,使网络更加复杂,但是若网络节点很多(ZigBee理论上支持4K的节点),则前两种方案网络中的共享密钥或口令为n*(n-1)/2(假设n为网络的节点数)[1],密钥或口令数量极大,密钥或口令安全管理困难,而使用第三种配置方案,则口令数为n,大大减少了口令数,简化了口令的安全管理。第四种配置最为简单,对用户最友好,实际网络中大量使用,但极易受到中间人[1]攻击。在使用该配置时应小心谨慎,应该施加限制以便实现配对安全,比如在配对时,强制要求用户正确的按特定按键或者按键组合(按键次序必须正确)。当然只有用户确认对端节点在很近距离的时候(ZigBee作为短距离无线通信系统,其传输距离为数米或者数十米[2]),才进入这种配对状态。

通过四种配置,节点间安全的获得了共享密钥。

  1. 身份认证与协商阶段

ZigBee配对配置完成之后,节点间通过配置的共享密钥进行身份认证,考虑到ZigBee的带宽,身份认证可以是单向或者双向的,使用基于对称密码体系中常用的挑战和应答方式进行身份认证。下面以节点间的双向认证为例描述ZigBee的身份认证和安全参数协商。

节点间首先进行双向身份认证,认证采取挑战应答方式。为防止重放攻击,认证携带随机数、时间戳或者序列号,由于ZigBee没有时间同步,因此采用序列号方式,ZigBee在身份认证的同时协商安全参数以提高效率,减少节点间交互的次数,协商的安全参数包括协商加密算法、报文认证算法、加密密钥和报文认证密钥。加密算法和报文认证算法的协商基于节点双方的安全能力,通常节点双方向对方指示自己支持的安全能力,双方通过交互,协商出安全性最高的算法。加密密钥和报文认证密钥从密钥协商算法(简化的ECDH算法)得到的主密钥推演而来。

为适应新的安全威胁,部分厂商在自定义的私有协议中,协调器节点还可以配置白名单,只有白名单中的设备才能建立关联。相应的,协调器节点也可配置黑名单,当认证失败次数超过阈值时加入黑名单。还有部分厂商在私有协议中支持简化版的隐私保护机制,协调器节点节点和路由器或者终端节点间建立关联之后,协调器节点给路由器节点或者终端节点分配临时ID。路由器节点或者终端节点在下次关联协调器节点时使用该临时ID作为节点身份。

  1. 通信安全保护阶段

身份认证和安全参数协商完成之后,进入到安全保护阶段,节点间基于协商的安全参数(密码算法、密钥等)对通信进行安全保护。节点支持密钥更新机制[2],会话密钥都设置了有效期,当会话密钥到期时,节点间进入密钥更新流程,用到期的会话密钥和其他参数产生新的会话密钥并加密传输,以更新节点之间的会话密钥。到期的会话密钥应该及时销毁。

  1. 设备安全

除了上面描述的三个阶段,为了提高ZigBee节点抵抗攻击的能力,节点应满足一定的设备安全要求,包括安全存储、安全执行等方面。然而考虑到节点为资源十分受限的设备,其计算能力、存储能力和带宽都极为有限,且需要综合考虑节点的低功耗,设备安全不是必选项而是可选项。实际上,大部分厂商在节点上没有实现设备安全。

安全存储:重要信息的安全存储可以防止重要信息泄露或篡改。重要信息包括共享密钥、口令、用户身份、安全上下文(包括加密和报文认证算法、主密钥和会话密钥)等。节点存储不同用户的数据时,支持不同用户数据的安全访问控制机制(比如CL、ACL、ABAC

[3])。

安全执行:当节点执行安全功能(包括加密、解密、身份和报文认证等)时,应该保证在安全环境中执行。应该支持bootstrap安全启动。

参考文献

[1] 现代密码学(第5版) 杨波 清华大学出版社 2017

[2] 嵌入式系统译丛:ZigBee无线网络与收发器 (美)法拉哈尼(ShahinFarahani) 著 北京航空航天大学出版社 2010

[3] 信息安全技术 杜学绘 任志宇 科学出版社 2021