技术分享 | 蓝牙协议安全(上)

IoT 11个月前 admin
215 0 0
技术分享 | 蓝牙协议安全(上)
蓝牙设备在日常生活中使用非常广泛,从手机、电脑到家用扫地机器人,无一不用到蓝牙协议进行通信,因此蓝牙协议的安全性变得十分重要。本系列文章将从蓝牙协议发展历程、协议规范、攻击面及历史漏洞等方面对蓝牙协议进行分析。

1

发展历程
蓝牙标准于1998年首次提出,其设计理念是成为统一的通用传输标准,实现各种设备的无线连接和互通,减少电缆的使用。经过二十年的发展,蓝牙已经成为无线通讯领域不可或缺的通信技术之一。目前,全世界有超过数十亿的蓝牙设备运行在现实生活中,并且这一数字仍在快速增长。
“蓝牙”这一技术名称来源于10世纪的丹麦国王哈拉尔·布鲁图斯(Harald Bluetooth)。哈拉尔国王以其卓越的沟通技巧和协调能力成功地统一了曾经对立的丹麦和挪威。同样,蓝牙技术的目标也在于统一不同设备间的通信方式,实现无线连接和互通。基于这一理念和历史故事,在一次无线通讯行业的会议上,英特尔公司的工程师 Jim Kardach 提出了将“Bluetooth”作为此项无线通讯技术标准的名称,这个建议最后被接受,成为了我们现在广为人知的蓝牙技术。
从蓝牙技术的首次提出至今,蓝牙标准经历1.0到5.0五个大版本的技术变迁,使用范围包括手机、电脑、游戏主机等设备间的数据传输,以及以低功耗为主打的物联网传输。
第一代蓝牙(1999~2003 年)共包括三个版本。
  • 蓝牙1.0版本作为早期版本存在产品兼容性以及一些安全问题,并未得到广泛使用。

  • 蓝牙1.1版本正式列入IEEE 802.15.1标准,作为早期版本,还存在容易受到同频率之间产品干扰的问题。

  • 蓝牙1.2版本解决1.0版本暴露出的安全性问题,同时引入了适应性跳频技术(AFH,Adaptive Frequency Hopping)、延伸同步连结导向信道技(eSCO,Extended Synchronous Connection-Oriented links)等技术来提高通信质量。

第二代蓝牙(2004~2007年)共包括两个版本。
  • 蓝牙2.0版本使用EDR(Enhanced Data Rate)是蓝牙设备的传输率达到3Mbps,同时支持了全双工模式。

  • 蓝牙2.1版本主要新增Sniff Subrating省电功能,通过将设备相互确认的讯号发送时间间隔从0.1s延长到0.5s,从而让蓝牙芯片的工作负载大幅降低。另外还引入了SSP 简易安全配对功能,使蓝牙设备配对更加方便快捷。

第三代蓝牙(2009年)主要引入了几个关键技术。
  1. 可选技术High Speed,可实现高达24Mbps的传输速率。

  2. AMP(Generic Alternate MAC/PHY),一种全新的交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。

  3. EPC 增强电源控制技术,降低空闲功耗;

  4. UCD 单向广播无连接数据技术,提高蓝牙设备的相应能力。

第四代蓝牙(2010到2014年)共包括三个版本。
  • 蓝牙4.0版本是第一个蓝牙综合协议规范,提出了低功耗蓝牙(BLE,Bluetooth Low Energy)、传统蓝牙和高速蓝牙三种模式。高速蓝牙主攻数据交换与传输,传统蓝牙以信息沟通、设备连接为重点,低功耗蓝牙以不需要占用太多带宽的设备连接为主,功耗较老版本降低了90%。蓝牙4.0还将芯片模式分为了单栈模式(Single Mode)和双栈模式(Dual Mode),单栈模式只能与蓝牙4.0互相传输数据,无法实现向下的兼容,双栈模式则可以向下兼容。在低功耗模式下,蓝牙4.0还把传输距离提升到100米以上。

  • 蓝牙4.1版本主要是针对物联网设备,提出了几个关键技术:1. 支持与LTE无缝写作,通过自动协调两者的传输信息,以确保协同传输,降低相互干扰。2. 允许开发人员或开发商自定义重新连接间隔,提供更高的灵活性和掌控度。3. 加入专用的IPv6通道,允许蓝牙设备通过联网的设备使用IPv6协议上网,满足物联网的应用需求。

  • 蓝牙4.2版本传输速率相对上一代提高了2.5倍,同时改善了传输速率和隐私保护程度,并支持6LoWPAN低速无线个域网标准,这样大部分智能家居产品可以抛弃相对复杂的WiFi 连接,改用蓝牙传输,实现更加快捷的互联互通。

第五代蓝牙(2016年至今)蓝牙5.0版本主要针对IoT物联网做了更多优化,包括提升了低功耗模式下的传输速率以及传输距离,支持室内导航,支持Mesh网状网络。Mesh网络可以将蓝牙设备作为信号中继站,从而实现更大物理区域的信号传输。蓝牙5.1版本加了测向功能和厘米级的定位服务,这项功能的加入使得室内的定位会变得更加精准。蓝牙5.2版本主要是增强ATT协议,同时优化连接速度和抗干扰能力。

2

核心系统
4.0之前的蓝牙通常被称为经典蓝牙(Classic Bluetooth),包括1.0提出的BR(Basic Rate,基础速率)以及2.0提出的EDR(Enhanced Data Rate,增强数据速率),BR/EDR用于表示与低功耗蓝牙BLE相对的传统蓝牙。
从使用场景来看,BR/EDR主要侧重于点对点的通信,连接性和传输速率是考虑的重点,而BLE侧重于低功耗的设计,在射频层和基带层上优化了多播和广播的支持。传统上Controller芯片只支持一种射频模式,但越来越多设备中也同时支持两种系统,以覆盖尽量多的使用场景。
技术分享 | 蓝牙协议安全(上)
蓝牙的核心系统架构包含一个Host和一个或多个Controller,Host可以理解为主核或者主板,运行主流的操作系统,例如Linux、Windows、Macos;而Controller可以看做是蓝牙芯片,运行的是裸机程序或者RTOS,主要功能是对射频信号进行编解码。Host和Controller之间通过标准的HCI接口(Host Controller Interface)进行通信,具体实现上可通过UART、USB等物理接口进行传输。核心系统中包含的组件和之间的关系如下图所示:
技术分享 | 蓝牙协议安全(上)
图 Core_v5.0, Bluetooth core system architecture
其中Host部分主要是基于L2CAP抽象出的逻辑信道实现应用层的协议和功能,涉及的关键组件和协议有:
  • Channel Manager:负责创建、管理和释放L2CAP channel。

  • L2CAP Resource Manager:负责管理PDU数据的顺序、调度、分片、重组等功能,是L2CAP核心功能的一部分。

  • SMP:Security Manager Protocol,实现BLE系统中的点对点安全认证功能,包括秘钥生成和认证等;BR/EDR系统的对应功能则在Controller的Link Manager中实现。

  • ATT:Atrribute Protocol,应用层attribute client和server之间的协议。

  • GATT:Generic Attribute Profile,表示ATT server或者client的功能,profile描述了服务和属性的层级结构,主要用于LE profile服务发现中。

  • GAP:Generic Access Profile,表示所有蓝牙设备通用的基础功能,比如传输层、协议、应用所使用的模式或流程等。GAP服务包括设备和服务发现、连接模式、安全认证和关联模型等。

  • SDP:Service Discovery Protocol,即服务发现协议,是蓝牙协议体系中的核心协议,是蓝牙系统重要组成部分,是所有用户模式的基础。通过这个协议,客户端程序可以发现哪些服务可用以及服务的特性是什么。

Controller部分中更多是逻辑链路和物理链路的管理,包括:
  • Device Manager:基带(baseband)中控制设备行为的模块,主要负责不与传输直接相关的部分,比如查询周围蓝牙设备,连接蓝牙设备,切换蓝牙设备的状态(discoverable/connectable),以及修改蓝牙名称、属性等。

  • Link Manager:负责创建、修改和释放逻辑链路(logical links)以及对应的逻辑传输(logical transports),并更新设备之间对应物理链路(physical links)的相关参数。在BR/EDR系统中,与对端的Link Manager通过LMP协议(Link Manager Protocol)进行通信;在BLE系统中则使用的是LL协议(Link Layer Protocol)。

  • Baseband Resource Manager:负责管理所有到射频媒介的访问。在链路层中,有两种类型的“连接”:

    ① SCO:Synchronous Connection Orientated,实时窄带数据传输,如电话音频等,无重传

    ② ACL:Asynchronous Connection-Less,异步无连接,用以其他所有数据的传输

  • Link Controller:负责对指定物理信道(逻辑链路和逻辑传输)的蓝牙数据进行编解码。

3

协议栈
为了降低网络设计及软件的难度,通信协议一般采用分层的结构,各层协议之间既相互独立又相互高效的协调工作,蓝牙协议也不例外,接下来我们分别对传统蓝牙BR/EDR和低功耗蓝牙BLE的协议栈进行分析。

a

传统蓝牙BR/EDR协议栈

传统蓝牙协议栈BR/EDR和OSI七层模型的对应关系如下图所示:
技术分享 | 蓝牙协议安全(上)
图 Bluetooth BR/EDR Protocol Stack
  • BE/EDR Radio和Baseband and Link Control层对应OSI物理层,负责射频媒介的管理和物理信道数据的编解码

  • Link Manager Protocol (LMP)、L2CAP、RFCOMM和PPP层对应OSI链路层,负责通信链路的创建、销毁及数据传输

  • 基于蓝牙实现的UDP、TCP、IP层对OSI模型网络层、传输层、会话层的混合层。

核心协议

  • BR/EDR Radio,无线电层是蓝牙规范的最低定义层。其中BR模式是强制性的,而EDR模式是可选的。该层定义了在2.4GHz ISM频带中工作的蓝牙收发器设备的要求。BR/EDR实现了1600跳/秒的FHSS技术,它以伪随机方式在79个指定的蓝牙信道上跳跃。每个蓝牙信道的带宽为1 MHz,每个频率位于(2402+k)MHz,其中k=0,1,…78。BR和EDR模式的调制技术分别为GFSK和差分相移键控(DPSK),波特率为1 Msymbol/s。蓝牙BR/EDR无线电使用时分双工(TDD)拓扑,其中数据传输在一个方向上可同时发生。

  • Link Manager Protocol (LMP),LMP层主要负责不同蓝牙设备之间的链路设置和链路配置。这些过程包括通过生成、交换和检查链接和加密密钥来建立安全功能,如身份验证和加密。此外,该层控制蓝牙无线电设备的功率模式和占空比以及蓝牙单元的连接状态。

  • L2CAP,给较高层协议屏蔽了较低层协议的细节,可向更高层协议提供面向连接和无连接的服务,这包括协议复用能力、分段和重组操作以及组抽象。

  • SDP,发现服务是蓝牙框架的一个重要方面,是构建在L2CAP之上基础协议。。服务发现协议(SDP)为应用程序提供了一种查询服务和服务特性的方法,随后可以在两个或多个蓝牙设备之间建立连接。

  • RFCOMM,RFCOMM通过L2CAP提供串行端口仿真。RFCOMM通过蓝牙基带模拟RS-232控制和数据信号,并为使用串行接口作为传输机制的更高层服务提供传输能力。RFCOMM还提供到一个设备的多个同步连接,并支持到多个设备的连接。

  • OBEX,对象交换(OBEX)协议是由IrDA开发的用于交换对象的会话级协议。OBEX协议提供了类似于HTTP的功能,但方式更简单。OBEX协议为客户端提供了连接到服务器的可靠传输。它还提供了表示对象和操作的模型。

  • HCI,HCI为BR/EDR无线电、基带控制器和链路管理器提供命令接口。它是一个用于访问蓝牙基带功能、硬件状态和控制寄存器的单一标准接口。

b

低功耗蓝牙BLE协议栈

低功耗蓝牙BLE协议栈与OSI七层模型的对应关系如下图所示:
技术分享 | 蓝牙协议安全(上)
图 Bluetooth LE Protocol Stack
  • Bluetooth LE PHY物理层与OSI物理层直接对应

  • LL(Link Layer)链路层与L2CAP层与OSI数据数据链路层对应

  • BLE更高层提供应用层服务、设备模型、连接管理和安全控制功能,与OSI网络层及以上层的混合层对应

BLE相对于BR/EDR要简单许多,可以分为三层。最下层控制层包括Bluetooth LE PHY、LL以及Controller端的HCI接口。Host层包括Host端HCI接口、L2CAP、ATT(attribute protocol)、GATT(generic attribute profile)、SMP(security manager protocol)、GAP(generic access profile)。
技术分享 | 蓝牙协议安全(上)
  • Bluetooth LE PHY,空中接口在与Wi-Fi相同的未经许可的2.4 GHz工业、科学和医疗(ISM)频带中运行。LE PHY空中接口还包括以下特征:

     ① 工作射频(RF)在2.4000 GHz至2.4835 GHz(包括2.4000 GHz)的范围内。

     ② 信道带宽为2MHz,工作频带分为40个信道,k=0,1,…,39,第k个信道的中心频率为2402+k×2MHz。

      a. 使用[0, 36]范围中的信道来发送用户数据分组。

      b. 广告数据分组在信道37、38和39中发送。

     ③ 实现了高斯频移键控(GFSK)调制方案。

     ④ 使用跳频扩频(FHSS)来减少干扰并对抗衰落信道的影响。跳频之间的时间可以从7.5ms到4s不等,并在每个外围设备的连接时设置。

     ⑤ 对于规范版本4.x兼容的设备,必须支持1 Mbps的吞吐量。在1Mbps的数据速率下,传输是未编码的。

     ⑥ 可选地,符合蓝牙核心规范5.1版的设备支持以下附加数据速率:

      a.以500 kbps或125 kbps的比特率进行编码传输

      b.以2Mbps的比特率进行非编码传输

  • LL,LL执行类似于OSI模型的介质访问控制(MAC)层的任务。在蓝牙中,LL直接与Bluetooth LE PHY交互,并管理无线电的链路状态,以将设备的角色定义为中心、外围设备、广告器或扫描器。

  • HCI,可以分为两个部分,Host侧HCI接口和Controller侧HCI:

     ① 控制器侧的HCI处理主机和控制器之间的交互。HCI定义了用于传输和接收分组数据的一组命令和事件。当从控制器接收数据包时,HCI在控制器处提取原始数据以发送到主机。

     ② 主机侧的HCI处理主机和控制器之间的交互。HCI定义了用于传输和接收分组数据的一组命令和事件。当传输数据时,HCI将原始数据转换为数据包,将其从主机发送到控制器。

  • L2CAP,L2CAP根据在ATT和SMP层指定的链路配置,将来自蓝牙LE更高层的数据封装成标准蓝牙LE分组格式用于传输,或者在接收时从标准Bluetooth LE LL分组中提取数据。

  • ATT,ATT在基于GATT的配置文件中的客户端和服务器之间传输属性数据。ATT定义了客户机-服务器体系结构的角色。这些角色通常对应于链路层中定义的中心和外围。通常,无论设备是中央设备还是外围设备,设备都可以是客户端、服务器或两者。ATT还将数据组织成如图所示的属性。

技术分享 | 蓝牙协议安全(上)
设备属性表示为:
 ① 属性句柄是由服务器分配的16位标识符值,以使客户端能够引用这些属性。
 ② 属性类型是由Bluetooth SIG定义的通用唯一标识符(UUID)。例如,UUID 0x2A37表示心率测量。
 ③ 属性值是可变长度字段。与关联的UUID和包含属性值的服务记录的服务类决定属性值字段的长度。
 ④ 属性权限是与每个属性关联的权限值集。这些权限指定属性的读写权限,以及读写权限所需的安全级别。
  • GATT,GATT为所有基于GATT的概况提供了参考框架。GATT封装了ATT,并负责协调蓝牙LE链路中的配置文件交换。配置文件包括信息和数据,如句柄分配、UUID和一组权限。

对于实施GATT配置文件的设备:
 ① 客户端是向服务器发起命令和请求的设备。客户端可以接收响应、指示和通知。
 ② 服务器是接受来自客户端的传入命令和请求的设备。服务器向客户端发送响应、指示和通知。
GATT使用客户端-服务器架构。角色不是固定的,而是在设备启动定义的过程时确定的。当过程结束时,将释放角色。
GATT中使用的术语包括:
 ① 服务(Service),用于完成特定功能或特性的数据和相关行为的集合
 ② 特性(Characteristic ),服务中使用的值以及适当的权限
 ③ 特性描述(Characteristic descriptor),相关特征行为的描述
 ④ GATT客户端(GATT-Client),GATT客户端向服务器发起命令和请求,并可以接收服务器发送的响应、指示和通知
 ⑥ GATT服务端(GATT-Server),GATT服务器接受来自客户端的传入命令和请求,并向客户端发送响应、指示和通知
  • SMP,SMP应用安全算法来加密和解密数据包。一旦建立连接,该层就定义了对应于中央和外围设备的启动器和响应器。

  • GAP,GAP指定了设备的角色、模式和过程。它还管理连接建立和安全性。GAP直接与应用程序配置文件和服务(App)层接口。

4

总结
本文主要从蓝牙发展历史、核心系统架构以及传统蓝牙和低功耗蓝牙协议栈等方面对蓝牙基础知识做了一个简要的介绍,后续我们将在《蓝牙协议安全(下)》中继续介绍蓝牙攻击面及模糊测试相关技术,敬请期待!
参考资料
[1] https://www.bluetooth.com/wp-content/uploads/2021/04/CN-2021-Bluetooth_Market_Update.pdf
[2] https://zhuanlan.zhihu.com/p/37725574
[3] https://evilpan.com/2021/07/10/bluetooth-sec/
[4]https://www.mathworks.com/help/bluetooth/ug/bluetooth-protocol-stack.html#responsive_offcanvas
[5] Bluetooth 5.0 specification https://www.bluetooth.org/DocMan/handlers/DownloadDoc.ashx?doc_id=421043
技术分享 | 蓝牙协议安全(上)
为了更好的探索与分享前沿趋势和技术研究内容,云起无垠发起并运营了GPTSecurity知识社区,致力打造成一个汇聚GPT、AIGC和LLM在安全领域应用的知识库,共同推动安全领域智能革命的发展。
欢迎来到 GPTSecurity!共建知识库(点击跳转)
· GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以找到关于GPT/AIGC/LLM最新的研究论文、博客文章、实用的工具和预设指令(Prompts)。
· Github地址:https://github.com/mo-xiaoxi/GPTSecurity
技术分享 | 蓝牙协议安全(上)
扫描添加小云 加入GPTSecurity交流群
技术分享 | 蓝牙协议安全(上)

更多阅读

技术分享 | 蓝牙协议安全(上)
技术分享 | 蓝牙协议安全(上)
技术分享 | 蓝牙协议安全(上)
技术分享 | 蓝牙协议安全(上)
技术分享 | 蓝牙协议安全(上)
技术分享 | 蓝牙协议安全(上)
技术分享 | 蓝牙协议安全(上)
技术分享 | 蓝牙协议安全(上)

原文始发于微信公众号(云起无垠):技术分享 | 蓝牙协议安全(上)

版权声明:admin 发表于 2023年5月24日 下午3:07。
转载请注明:技术分享 | 蓝牙协议安全(上) | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...