首页 > 其他分享 >蓝牙5.4的几个新特性

蓝牙5.4的几个新特性

时间:2023-10-31 10:38:07浏览次数:32  
标签:5.4 GATT 蓝牙 特性 广播 加密 属性 客户端

前述文章《蓝牙5.4引入PAwR,电子价签迎来新机遇》中我们介绍了蓝牙5.4的PAwR特性,该特性的引入使得电子价签领域迎来了新的机遇,但其实蓝牙5.4一共引入了4个特性,本文将逐一进行介绍后面3个特性。

首先来回顾一下蓝牙5.4的几个新特性:

1) 支持带响应的周期性广播(PAwR)

PAwR是一个新的BLE逻辑传输层,是一种支持无连接的、双向的、一对多的、一种低功耗拓扑技术。

2) 支持带加密的广播数据(EAD)

该特性提供了一种标准化的方法来加密广播包中的数据,加密后的广播数据只能被拥有相同密钥的设备解密。广播包的加密是需要两个设备建立gatt连接之后,才会生成加密广播包的密钥。

3) 支持标记安全等级(GATT)

设备现在可以支持使用GATT安全等级特性来表示设备的安全模式和安全等级。

4) 支持选择动态广播编码(CSSA)

当发送BLE扩展广播的时候,现在可以选择使用哪种Codec编码方式来发送。

PAwR特性上一篇文章已经介绍过,本文主要介绍支持加密的广播数据(EAD)、LE GATT 安全级别特征、广播编码选择这三个特性。

1. 加密广播(EAD)特性介绍

加密广播特性为广播包、扫描响应包和EIR数据包中的加密数据传输提供了一种标准化的、普遍适用的机制,并安全地共享相关的加密密钥材料。这使得无连接通信可以用于一对多或一对一场景中的安全应用程序数据传输。

加密广播特性的实现基于BLE的广播通道,类似于经典蓝牙,您可以参考蓝牙核心规范以了解更多详细信息。

1.1 共享密钥材料

共享密钥材料的传输需要广播方设备,该设备可以接收连接请求命令并建立GATT连接。广播方扮演GAP外围设备角色,并且该设备的GATT服务中需要包含GAP服务。

蓝牙5.4规定了一个新的特征,称为Encrypted Data Key Material,该特征为加密广播数据的接收者共享密钥材料提供了基础。加密数据密钥材料特征包含一个24字节的值,由16字节的会话密钥和8字节的IV值组成。GATT客户端只能通过加密和验证的GATT连接读取该值,因此广播设备和所有打算成为加密广播数据接收者的设备必须已经配对。该特性不允许写入,还可以支持GATT指示,但只能通过安全链接。

当外围设备与中央设备建立连接后,当设备的密钥材料产生变化时,外围设备可以使用GATT指示命令通知中央设备。

蓝牙5.4的几个新特性_客户端

图 1 客户端读取加密数据密钥

 

蓝牙5.4的几个新特性_安全等级_02


图 2 服务器端发起加密数据密钥指示

如果设备需要容纳多个加密密钥材料值,加密数据密钥材料特性可以不用包含在GAP服务中,可以直接包含在自定义的服务中。


1.2 广播数据加密

为了保证数据的安全传输,所有需要进行安全传输的数据都必须首先封装在适当的AD结构中。通过将需要加密的多个AD结构集合连接成一个序列,可以支持加密多个AD结构。实际上,进行加密的正是这个AD结构序列,其中可能包含一个或多个AD结构。

1.3 加密数据传输

蓝牙5.4引入了一种新的广播类型,可通过加密来保护需要保密的数据。一个广播包可以包含一个或多个加密类型的数据,这些加密数据AD类型会被包含在适当的数据包中,而已经加密的AD类型则不会以原始纯文本形式出现在数据包中。其他未加密的AD类型可能会包含在包含加密数据AD类型的数据包中。

除了密文有效载荷外,加密数据AD结构的数据字段还包括一个40位的随机化器字段和一个32位的消息完整性检查(MIC)。下图展示了一个示例广播负载,其中包含两种已加密并封装在加密数据AD类型中的AD类型(ESL和本地名称)以及一种未加密的AD类型(标志)。

Randomizer字段包含一个5字节的随机数,按照蓝牙核心规范中的要求生成。每次有效载荷值发生变化时,都需要生成一个新的随机发生器值。Randomizer值用于生成CCM算法所需的随机数。

如果使用的是随机设备地址,只要设备更改其地址,Randomizer字段也必须更改。这会导致在设备地址更改时广播数据包的内容也会更改,从而降低窃听者跟踪设备的能力。

蓝牙5.4的几个新特性_蓝牙_03

图 3 带加密数据AD类型的广播负载

配置文件负责定义如何预共享由会话密钥和IV组成的加密密钥材料,以使用加密广播数据功能。加密数据密钥材料特性可以包含在通用访问配置文件GATT服务或其他一些服务中,具体取决于与配置文件相关的其他考虑因素,例如设备角色。

2.安全等级(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 客户端会先执行服务发现流程,来发现涉及服务、特征和描述符及其相关属性(例如句柄值、类型和权限),来确定设备属性表的内容。需要注意的是,属性权限不限制客户端执行发现过程的能力。

蓝牙5.4的几个新特性_数据_04

图 4 服务、特征和描述符

如果客户端尝试访问某个属性,但不满足相关属性权限的条件,则属性协议定义了几个要返回的错误代码,以向客户端设备指示访问请求被拒绝以及拒绝的原因。示例包括加密不足、身份验证不足和加密密钥大小不足等。

2.1 GATT 安全和用户体验

当客户端尝试访问该属性时,会检查该属性的权限。如果不满足属性权限所规定的安全条件,将拒绝客户端访问,并在ATT_ERROR_RSP PDU中返回包含错误代码的响应。

当服务器拒绝访问某个属性时,通常不会直接断开GATT连接。此时,客户端通常会升级安全等级,来达到访问标准。例如,如果尝试读取特征值导致返回加密不足错误,则客户端可能会通过启动配对流程,配对完成后,就可以使用加密链路来访问,只是此时需要用户重发上次访问失败的数据。

正是由于不满足访问安全权限导致错误,就算客户端升级了安全等级,也会导致用户需要手动重发该数据,这就非常影响用户的体验,然而,直到 5.3 版的蓝牙核心规范依然没有提供此安全错误处理策略的替代方案。当然,这也是蓝牙5.4 支持 GATT安全级别特征的意义所在。

2.2 关于 LE GATT 安全等级特征

蓝牙核心规范 5.4 版定义了一个称为LE GATT 安全级别特征 (SLC) 的新特征。SLC 特性允许客户端确定 GATT 服务器安全条件,如果要授予对所有 GATT 功能的访问权限,则必须满足这些条件。更重要的是,它允许在访问GATT 使用的属性之前确定这一点。这种提前检查访问要求可以提供更好的用户体验,因为不会因安全级别问题导致应用程序临时中断。

设备可以在GAP服务中包含 SLC 特性,客户端在发现服务的时候,发现该特征值后,就会根据该特征值的安全条件,来选择合适的安全级别,比如发起配对。

2.3 BLE的安全配对模式和等级

安全模式1:无安全(不加密 不鉴权);加密的不鉴权配对;加密的鉴权配对;BLE的安全连接,加密的鉴权配对;

安全模式2:带数字签名的不鉴权配对;带数字签名的鉴权配对;

安全模式3:无安全(不加密 不鉴权);使用不鉴权的Broadcast_Code;使用鉴权的Broadcast_Code;

客户端通过读取其值并根据安全级别要求字段指示的值评估当前安全模式和级别来使用 SLC 特性。如果发现当前的安全模式和级别不足以允许服务器支持的所有 GATT 功能,此时客户端应用程序将采取措施来解决这个问题,通常是调用程序来升级链接安全性。

3. 动态广播编码(CSSA)特性介绍

蓝牙 LE 物理层定义了三种变体,统称为PHY。这三个 PHY 分别称为 LE 1M、LE 2M 和 LE Coded。

使用 LE Coded PHY 时,前向纠错 (FEC) 算法和模式映射器将根据配置应用于传输前的有效载荷。这导致附加的纠错数据被包含在传输的数据包中。使用 FEC 算法可以保证在距离发射端比较远的设备也可以正确的接收数据(也就是具有较低的信噪比)。

Coded PHY 编码有两种方式,根据配置S=2或者S=8,可以控制生成多少纠错数据,以及将通讯距离增加到什么程度。

如下图比较了这三种PHY:

蓝牙5.4的几个新特性_蓝牙_05

图 5 不同PHY下数据对比

虽然之前Host端已经定义了如何使用HCI接口来发送命令,来改变Control端的编码,但是在蓝牙5.4之前,当扩展广播选择LE CODEC编码的时候,是不能指定S的值是选择2还是选择8, 也不能进行动态的切换。 而蓝牙5.4更改了 HCI 命令,以允许在使用 LE 编码 PHY 时指定 FEC 参数 S 的值。

HCI命令如下图:

蓝牙5.4的几个新特性_数据_06

图 6 HCI命令

3. 总结

蓝牙核心规范 5.4 版在 PAwR 中添加了一项重要的全新双向无连接功能,使在广播数据包中安全地广播机密数据成为可能。除了这些相当大的改进之外,使用 GATT 的应用程序现在可以在处理属性安全要求时提供比以前更好的用户体验,并且设备可以在使用LE Coded PHY 进行扩展广播时对重要参数 (S) 进行控制。

总的来说,蓝牙5.4这些新的特性,比较明确的应用场景就是电子价签,这也是蓝牙技术联盟想要获取的一块市场。当然这些特性也可以嵌入到其他的蓝牙产品中,来提高产品的用户体验。

原厂SoC支持方面,Nordic nRF52系列SoC、Silicon Labs EFR32BG22、EFR32xG24系列SoC都可以直接蓝牙5.4。蓝牙模块方面,信驰达科技基于nRF52840、nRF52833、nRF52832、nRF52811、nRF52810系列蓝牙无线模块、基于EFR32BG22、EFR32BG24、EFR32MG24系列蓝牙无线模块都可以支持蓝牙5.4。

关于信驰达

深圳市信驰达科技有限公司(RF-star)是一家专注于物联网射频通信方案的高新技术企业,车联网联盟(CCC)和智慧车联产业生态联盟(ICCE)会员,通过ISO9001和IATF16949质量体系认证。2010年成立之初即成为美国TI公司官方授权方案商,之后陆续得到Silicon Labs、Nordic、Realtek、Espressif、ASR、卓胜微等海内外知名芯片企业的认可和支持。公司提供物联网无线模块和应用方案,包括BLE、Wi-Fi、UWB、Zigbee、Thread、Matter、Sub-1G、Wi-SUN、LoRa等。

标签:5.4,GATT,蓝牙,特性,广播,加密,属性,客户端
From: https://blog.51cto.com/u_15965754/8102118

相关文章

  • CVE-2020-0022 蓝牙漏洞复现
    CVE-2020-0022参考连接:CVE-2020-0022蓝牙漏洞初探(上)一个bug引发的血案-安全客-安全资讯平台(anquanke.com)CVE-2020-0022“BlueFrag”漏洞分析(bestwing.me)Diff-3cb7149d8fed2d7d77ceaa95bf845224c4db3baf^!-platform/system/bt-GitatGoogle(googlesource.co......
  • 监控易101:全方位解读运维的核心功能与特性
      在数字化时代,企业IT环境的复杂性日益增加,给运维工作带来了前所未有的挑战。面对这一情况,监控易作为一款一体化运维监控管理平台,凭借其全面的监控覆盖、智能的告警机制、强大的数据分析工具以及灵活的扩展能力,赢得了众多企业的青睐。接下来,我们将深入探讨监控易的各大核心功能......
  • MySQL8.0新特性之:不可见列
    概念描述  从MySQL8.0.23版本开始,MySQL支持不可见列(invisiblecolumns),在之前版本中MySQL对所有列都是可见的,所谓不可见列就是指在正常默认查询中不会显示出来,用select*from语句是无法查询出不可见属性的列的。使用场景  1. 隐藏字段:刻意隐藏不想展示的字段,比如备注,敏感值,关......
  • MySQL8.0新特性之:不可见索引
    概念描述  MySQL从8.0版本开始支持不可见索引(invisibleindex)也可叫隐式索引,隐形索引或者隐藏索引。不可见索引是不被MySQL优化器使用的,但是优化器会正常维护它。使用场景非主键上的索引使用测试删除索引对性能的影响,而无需进行破坏性更改(通常对于大表来说,删除或者重建索引的影响......
  • AH6971-9V-15v电压升降12V2A芯片解决方案:参数特性和应用领域
    9V-15V升降12V2A芯片解决方案:参数特性和应用领域随着科技的发展,各种智能设备的需求在不断增长,而电源作为智能设备的重要组成部分,其稳定性和效率直接影响着设备的性能。在此背景下,9V-15V升降12V2A芯片解决方案应运而生。参数特性:宽输入电压范围:5V~35V,能够适应多种电源环境。高效......
  • SpringBoot3特性——错误信息Problemdetails
    SpringFramework6实现了HTTPAPI规范RFC7807的问题详细信息。在本文中,我们将学习如何在SpringBoot3RESTAPI(使用SpringFramework6)中处理异常,并使用ProblemDetailsAPI提供错误响应。详见https://www.sivalabs.in/spring-boot-3-error-reporting-using-proble......
  • LCD液晶防干扰段码显示屏驱动芯片VK1C21A/B/C/D/DA/E/EA具备显示效果好,静电耐压高等优
    产品型号:VK1C21A/B产品品牌:永嘉微电/VINKA封装形式:SSOP48/LQFP48可定制裸片:DICE(COB邦定片);COG(邦定玻璃用)产品年份:新年份原厂,工程服务,技术支持! 概述:VK1C21A/B是一个点阵式存储映射的LCD驱动器,可支持最大128点(32SEGx4COM)的LCD屏,也支持2COM和3COM的LCD屏。单片机可通过......
  • Flutter/Dart第18天:Dart特性之可调用对象
    Dart官方文档:https://dart.dev/language/callable-objects重要说明:本博客基于Dart官网文档,但并不是简单的对官网进行翻译,在覆盖核心功能情况下,我会根据个人研发经验,加入自己的一些扩展问题和场景验证。可调用对象:Dart实例如果实现了call()方法,那么实例就可以像函数那样被调用,这......
  • 重磅更新!Sermant 1.2.0 release版本新特性速览
    10月,Sermant社区正式发布了1.2.0release版本,距离上一次的大版本发布仅三个月。本次新版本带来了多个令人兴奋的新特性,主要包含SermantAgent框架能力的优化和提升以及新增了流量标签透传插件,将极大地提升用户和开发者的体验,帮助大家将Sermant运用到更多的流量治理场景中。(Sermant......
  • Java8新特性
    Stream流可以说是Java8新特性中用起来最爽的一个功能了,有了它,从此操作集合告别繁琐的for循环。但是还有很多小伙伴对Stream流不是很了解。今天就通过本篇,一起深入了解下如何使用它。Java8Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合进行链状流式的操......