ai里做的图片方网站上不清楚,平台制作网站公司,网站程序源代码,肇庆网站建设方案外包【蓝牙系列】蓝牙5.4到底更新了什么#xff08;2#xff09;
一、 背景 上一篇文章讲了蓝牙5.4的PAwR特征#xff0c;非常适合应用在电子货架标签#xff08;ESL#xff09;领域#xff0c; 但是实际应用场景中看#xff0c;只有PAwR特性是不够的#xff0c;如何保证广…【蓝牙系列】蓝牙5.4到底更新了什么2
一、 背景 上一篇文章讲了蓝牙5.4的PAwR特征非常适合应用在电子货架标签ESL领域 但是实际应用场景中看只有PAwR特性是不够的如何保证广播数据的安全性如何动态调节广播的编码方式以达到最优的功耗。 这就需要用到本章需要介绍的蓝牙5.4的几个新特性。
下面再回顾下蓝牙5.4的几个新特性
支持带响应的周期性广播PAwR
PAwR是一个新的BLE逻辑传输层是一种支持无连接的、双向的、一对多的、一种低功耗拓扑技术。
支持加密的广播数据EAD 该特性提供了一种标准化的方法来加密广播包中的数据加密后的广播数据只能被拥有相同密钥的设备解密。 当然广播包的加密是需要两个设备建立gatt连接之后才会生成加密广播包的密钥。 LE GATT 安全级别特征 设备现在可以使用GATT 安全级别特性来表示设备的安全模式和安全等级 动态广播编码选择CSSA 当发送BLE扩展广播的时候现在可以选择使用哪种Codec编码方式来发送。 上一篇文章已经介绍PAwR特性没有看过的朋友建议先看看上一篇文章。 本章主要介绍支持加密的广播数据EAD、LE GATT 安全级别特征、广播编码选择这三个特性。
二、 加密广播EAD
1. 加密广播背景 蓝牙设备经常使用广播、扫描响应包或者经典蓝牙EIR包来发送应用数据所以对广播数据进行加密是很有必要的。蓝牙5.4之前并没有一个明确的标准来满足这部分的需求基于连接的加密和认证流程在蓝牙中是有规定的但是这种基于广播的无连接的加密和认证之前是没有做规定的。 加密是通过算法将未认证的第三方数据转化成固定编码的不可直接解析的密文。 通过加密可以防止窃听者攻击。 加密算法使用一个或多个密钥来加解密数据。一些算法还会是用到一个初始的IV值作为输入这个IV 值通常被称为密钥的材料。 加密的数据应该包含这个密钥材料这样接收方才可以正常的解密该数据。密钥材料的共享需要安全地完成这样才能保证未经授权的设备不能获取到。 CCM是CBC‑MAC块密码模式的计数器。它与 128 位块密码如 AES一起使用来加密和验证消息。身份验证是通过包含一个计算出的消息认证码 (MAC) 来实现的蓝牙核心规范将其称为 MIC消息完整性检查。
2. 加密广播介绍
2.1 加密广播优势 加密广播特性提供了一种标准化的、普遍适用的机制用于广播包、扫描响应包和 EIR 数据包中传输加密数据并安全地共享相关的加密密钥材料。这意味着无连接通信现在可以用作一对多或一对一拓扑中的安全应用程序数据传输机制。
2.2 技术实现 下面介绍的加密广播的特性的实现是基于 BLE上的广播通道的 经典蓝牙也是类似的具体可以参考蓝牙核心规范里面有详细介绍。
2.2.1 共享密钥材料 共享密钥材料的传输需要广播方设备可以接收连接请求命令并且建立GATT连接。 广播方扮演GAP外围设备角色并且该设备的GATT服务中需要包含GAP服务。 现在蓝牙5.4规定了一个新的特征称为 Encrypted Data Key Material 新特性为加密广播数据的接收者共享密钥材料提供了基础。 加密数据密钥材料特征包含一个 24 字节的值该值由 16 字节的会话密钥和 8 字节的 IV 值组成。 GATT 客户端只能通过加密和验证的GATT连接读取该值因此广播设备和所有打算成为加密广播数据接收者的设备必须已经配对。不允许写入特性。该特性还可以支持 GATT 指示但只能通过安全链接。 当外围设备与中央设备建立连接后当设备的密钥材料产生变化的时候外围设备可以使用GATT指示命令来通知中央设备。 如果设备需要容纳多个加密密钥材料值加密数据密钥材料特性可以不用包含在GAP服务中可以直接包含在自定义的服务中。
2.2.2 广播数据的加密 任何要安全传输的数据都必须首先封装在适当的 AD 结构中。 支持加密多个 AD 结构这是通过首先将需要加密的 AD 结构集合连接成一系列 AD 结构来实现的。加密的正是这个一个或多个 AD 结构的序列。
2.2.3 加密数据的传输 蓝牙5.4为加密广播新增加了一个广播类型可以用来通过加密需要保护的数据一个广播包中可以有一个或多个 加密类型的数据。 加密数据 AD 类型随后包含在适当的数据包中。那些已加密的 AD 类型不以其原始纯文本形式包含在这些数据包中。其他未加密的 AD 类型可能包含在包含加密数据 AD 类型的数据包中。 除了密文有效载荷外加密数据 AD 结构的数据字段还包含一个 40 位随机化器字段和一个 32 位消息完整性检查(MIC)。下图显示了一个示例广播负载其中包含两种已加密并封装在加密数据 AD 类型中的 AD 类型ESL 和本地名称和一种未加密的 AD 类型标志。 Randomizer 字段包含一个 5 字节的随机数该随机数是根据蓝牙核心规范中规定的随机数要求生成的。每次有效载荷值发生变化时都必须生成一个新的随机发生器值。 Randomizer值用于制定CCM 算法所需的随机数。 假设使用的是随机设备地址只要设备更改其地址Randomizer 字段也必须更改。这会导致广播数据包的内容在设备地址更改时更改从而降低窃听者跟踪设备的能力。 使用加密广播数据功能的配置文件负责定义如何预共享由会话密钥和 IV 组成的加密密钥材料。如前所述加密数据密钥材料特性是为此目的提供的它可以包含在通用访问配置文件 GATT 服务中也可以包含在某些其他服务中具体取决于其他与配置文件相关的考虑因素例如设备角色。
三、 LE GATT 安全等级特征
1. GATT相关基础介绍 通用属性配置文件 (GATT) 提供了一种方法通过该方法可以在由 GATT 服务、特性和描述符组成的结构中表示设备数据和功能。 GATT服务、特征、描述符这三个类型每个都是一个属性attribute属性是在属性表中宏定义的属性表中的每一个属性都有一个唯一的标识符这个标识符称为句柄handle。 设备使用称为属性协议 (ATT) 访问对端蓝牙设备属性表中的属性遵循各种 GATT 程序定义的规则例如特征值读取和特征值写入。 GATT 定义了两个角色GATT客户端和GATT服务端。 GATT 客户端向 GATT 服务器发送 ATT 命令命令分为需要响应的和不需要响应的。 GATT 服务器接受并处理从 GATT 客户端接收到的命令和请求。 GATT 服务器也可以向 GATT 客户端发送各种类型的 ATT PDU命令包括通知和指示通知是不需要响应的指示是需要响应确认的。 属性表中的每个属性都包含一组属性权限。属性权限定义了客户端对该属性的访问类型例如读特征值的能力以及在授予该访问权限之前可能需要条件。例如一个属性的权限可能表明客户端可以读取它的值但只能通过经过身份验证和加密的链接。属性权限也适用于ATT 服务器及其使用通知和指示与客户端的通信 。 ATT PDU 通过GATT连接传输的。通常在建立连接后GATT 客户端会先执行服务发现流程来发现涉及服务、特征和描述符及其相关属性例如句柄值、类型和权限来确定设备属性表的内容。需要注意的是属性权限不限制客户端执行发现过程的能力。 如果客户端尝试访问某个属性但不满足相关属性权限的条件则属性协议定义了几个要返回的错误代码以向客户端设备指示访问请求被拒绝以及拒绝的原因。示例包括加密不足、身份验证不足和加密密钥大小不足
2. GATT 安全和用户体验 当客户端尝试访问该属性时会检查该属性的权限。如果不满足属性权限所规定的安全条件将拒绝客户端访问并在ATT_ERROR_RSP PDU 中返回包含错误代码的响应 。 当服务器拒绝访问某个属性时通常不会直接断开GATT连接。此时客户端通常会升级安全等级来达到访问标准。例如如果尝试读取特征值导致返回加密不足错误则客户端可能会通过启动配对流程配对完成后就可以使用加密链路来访问只是此时需要用户重发上次访问失败的数据。 正式由于不满足访问安全权限导致错误就算客户端升级了安全等级也会导致用户需要手动重发该数据 这就非常影响用户的体验然而直到 5.3 版的蓝牙核心规范依然没有提供此安全错误处理策略的替代方案 。 当然这也是蓝牙5.4 支持 GATT安全级别特征的意义所在。
3. 关于 LE Gatt 安全等级特征 蓝牙核心规范 5.4 版定义了一个称为LE GATT 安全级别特征 (SLC) 的新特征。 SLC 特性允许客户端确定 GATT 服务器安全条件如果要授予对所有 GATT 功能的访问权限则必须满足这些条件。更重要的是它允许在访问GATT 使用的属性之前确定这一点。这种提前检查访问要求可以提供更好的用户体验因为不会因安全级别问题导致应用程序流临时中断。
3.2.2 技术实现 设备可以在GAP服务中包含 SLC 特性, 客户端在发现服务的时候发现该特征值后就会根据该特征值的安全条件来选择合适的安全级别 比如发起配对。
BLE的安全配对模式和等级如下 安全模式1 无安全不加密 不鉴权加密的不鉴权配对加密的鉴权配对BLE的安全连接 加密的鉴权配对 安全模式2 带数字签名的不鉴权配对带数字签名的鉴权配对 安全模式3 无安全不加密 不鉴权 使用不鉴权的Broadcast_Code 使用鉴权的Broadcast_Code 客户端通过读取其值并根据安全级别要求字段指示的值评估当前安全模式和级别来使用 SLC 特性。如果发现当前的安全模式和级别不足以允许服务器支持的所有 GATT 功能此时客户端应用程序将采取措施来解决这个问题通常是调用程序来升级链接安全性.
四、 动态广播编码选择CSSA
1. 背景介绍 蓝牙 LE 物理层定义了三种变体统称为PHY。这三个 PHY 分别称为 LE 1M、LE 2M 和 LE Coded。 使用 LE Coded PHY 时前向纠错 (FEC) 算法和模式映射器将根据配置应用于传输前的有效载荷。这导致附加的纠错数据被包含在传输的数据包中。使用 FEC 算法可以保证在距离发射端比较远的设备也可以正确的接收数据也就是具有较低的信噪比。 Coded PHY 编码有两种方式根据配置S2或者S8可以控制生成多少纠错数据以及将通讯距离增加到什么程度。
如下图比较了这三种PHY 2. 动态广播编码选择介绍 那蓝牙5.4更新的新特性 动态广播编码选择CSSA 跟之前的又有什么区别呢 虽然之前Host端已经定义了如何使用HCI接口来发送命令来改变Control端的编码但是在蓝牙5.4之前当扩展广播选择LE CODEC编码的时候是不能指定S的值是选择2还是选择8 也不能进行动态的切换。 而蓝牙5.4更改了 HCI 命令以允许在使用 LE 编码 PHY 时指定 FEC 参数 S 的值 。
HCI命令如下图 五、 总结 蓝牙核心规范 5.4 版在 PAwR 中添加了一项重要的全新双向无连接功能使在广播数据包中安全地广播机密数据成为可能。除了这些相当大的改进之外使用 GATT 的应用程序现在可以在处理属性安全要求时提供比以前更好的用户体验并且设备可以在使用LE Coded PHY 进行扩展广播时对重要参数 (S) 进行控制。 总的来说蓝牙5.4版本是一次不大不小的更新这些新的特性比较明确的应用场景就是电子货架标签这也是蓝牙技术联盟想要获取的一块市场。 当然这些特性也可以嵌入到其他的蓝牙产品中来提高产品的用户体验。