freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

BLE (低功耗蓝牙)协议入门-01
2023-10-10 02:02:16

本章介绍蓝牙协议(重点介绍:BLE)的基本特点、版本演进、协议的构成、等基础知识,本章重在了解,目的是对BLE协议有个大概的认知,即了解BLE协议栈的全貌。后续的章节会对每一部分单独进行详细的讲解。

00-蓝牙的历史

  • 蓝牙(英语:Bluetooth),一种无线通讯技术标准,用来让固定与移动设备,在短距离间交换资料,以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波,经由2.4至2.485 GHz的ISM频段来进行通信。1994年由电信商爱立信(Ericsson)发展出这个技术。它最初的设计,是希望创建一个RS-232数据线的无线通信替代版本。它能够链接多个设备,克服同步的问题。

  • 蓝牙技术目前由蓝牙技术联盟(SIG)来负责维护其技术标准,其成员已超过三万,分布在电信、电脑、网络与消费性电子产品等领域。IEEE曾经将蓝牙技术标准化为IEEE 802.15.1,但是这个标准已经不再继续使用。

  • 蓝牙技术联盟 (英语:Bluetooth Special Interest Group,缩写为SIG)拥有蓝牙的商标,负责制定蓝牙规范、认证制造厂商,授权他们使用蓝牙技术与蓝牙标志,但本身不负责蓝牙设备的设计、生产及贩售。
    image.png

  • 从上表演进史可以得出,4.0之前的版本演进主要在追求通信速度,3.0高速蓝牙达到了24Mbps;4.0及其之后的版本演进主要在追求低功耗/低成本等物联网IoT特性。

  • 我们常说的蓝牙4.0不等同于BLE,BLE只是蓝牙4.0的子集;蓝牙4.0是一个综合性协议规范。

  • 蓝牙4.0版本以后技术模式上分为低功耗蓝牙(BLE)和经典蓝牙(BR/EDR)两种、市场芯片多数为仅支持BLE的,也有两者都支持的(双模蓝牙芯片)。

  • 蓝牙芯片的三种功能配置:
    ble02-1.png

01-蓝牙协议栈

蓝牙协议栈由主机 + HCI(可选) + 控制器三大块组成,其中对于单芯片方案是没用HCI的。

  • 主机(Host) :主机部分由核心协议层(L2CAP、SDP、SMP、ATT)和核心规范(GAP、GATT)构成;
  • 控制器(Controller):此部分拆分为低功耗蓝牙(Vol 6: Low Energy Controller)和经典蓝牙(Vol 2: BR/EDR Controller)两个章节说明
  • HCI:此部分定义了主机和控制器之间通信的接口标准(Vol 4: Host Controller Interface),可以是UART、USB等通信方式。

ble02-2.png

  • 上图中红色部分是BR/EDR经典蓝牙的必选项,绿色部分是LE低功耗蓝牙必选项,蓝色部分是公共部分;当然经典蓝牙也可以具备绿色部分特性。HCI接口根据芯片架构有关,是可选项。
  • BLE协议栈的实现方式采用分层的思想:
    • 控制器部分包括:物理层(PHY)、链路层(LL)、控制接口层(HCI)
    • 主机部分包括:裸机链路控制及自适应协议层(L2CAP)、安全管理层(SMP)、属性协议层(ATT)、通用访问配置文件层(GAP),通用属性配置文件层(GATT)
  • 下图为一个经典BLE系统框架图,尔其中的  Host、 Controller就是BLE协议栈。
    ble02-3.png

02-物理层

  • BLE的物理层定义了如何使用无线电发射器/接收器来编码和解码用于传输和接收的数字数据,以及应用的其他无线电相关参数和属性。现阶段可以略过
  • 主要了解下Frequency Band
    • BLE在2400Mhz至2483.5 MHz的2.4GHz免授权频段内工作。BLE采用40个信道,每个信道间隔为2MHz,分为数据信道和广播信道;广播信道占用3个,用于发现设备、建立连接、广播数据;数据信道占用37个,用于已建立连接设备间的数据通信。建立连接的两个设备,必须同一时间处于同一信道上才能通信。
    • 其中37/38/39固定为广播信道,其余为数据信道。

ble02-4.jpeg

03-链路层(LL)

  • 低功耗蓝牙参考 《Core_v5.3.pdf》中 Part B: Link Layer Specification 章节部分,LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。LL层要做的事情非常多,比如具体选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去或者收回来,对数据进行怎样的解析则交给上面的GAP或者GATT。

  • 报文是链路层的基石,是BLE通信的基础设施,它包含四个字段:前导码、访问地址、协议数据单元(PDU)和循环冗余校验(CRC)。在广播、扫描或建立连接的过程中使用广播通道PDU 传输广播包。而用于与连接器件交换数据的数据包是通过数据通道PDU 传输的。链路层数据包的格式如图:
    ble02-5.jpeg

  • 广播包的报头与数据包的报头内容不同

    • 广播包的报头,包含了:PDU Type(4bit) 广播报文类型、RFU(1bit) 未使用、ChSel(1bit) 未使用、TxAdd(1bit) 发送地址类型、RxAdd(1bit) 接收地址类型、length(8bit) payload长度。
    • 数据包的包头,包含了:LLID(2bit)逻辑链路标识符、NESN(1bit)下一个预期序列号、SN(1bit)序列号、MD(1bit)更多数据、RFU(3bit)保留、length(8bit)长度。

04-HCI层

  • HCI (Host Controller interface), 为Host访问Controller提供一组标准的接口
  • 主要完成3个任务:
    • Host通过HCI发送命令给Controller
    • Controller通过HCI将事件发送给Host
    • 传递ACL Data(面向连接,在连接通道上进行数据传输)
  • 这里所说的接口既包括两个设备之间的物理接口,也包括逻辑接口。逻辑接口定义了命令、事件和数据的封包格式。而物理接口定义了主机和控制器之前如何传输这些数据。蓝牙规范定义了4种物理接口,3线 串口 、4线串口、HID、SDIO。这里不做过多介绍。

05-L2CAP层

  • L2CAP是个复用层,可以让低功耗蓝牙复用三条不同的信道。它也支持数据的分割和重组功能,使得较大的报文可以在底层无线电中传输。
  • 主要功能:屏蔽了控制器传输协议中的许多特性,方便高层协议的开发;报文分片和重组(SAR);流控、重传、报文完整性校验等。

ble02-6.png

06-SMP层

  • SMP(Secure manager protocol)。定义了蓝牙设备配对、认证、解密等行为的安全操作,SMP用来管理BLE连接的加密和安全的,如何保证连接的安全性,同时不影响用户的体验,这些都是SMP要考虑的工作。
  • 这一部分在后续“高阶”BLE安全研究过程中很重要。

07-ATT层

  • ATT(属性协议):定义了访问对端设备上数据的一组规则,是GATT规范的基础,也是低功耗蓝牙的基石。定义了Host端属性报文格式和报文类型。这一层的关键词是Attribute(属性)。一个属性其实就是一条数据,属性是BLE数据提供单元,也是蓝牙空中传播数据的最上层,BLE开发过程中接触最多的就是这一层。
  • ATT数据格式(本章简单了解即可)

ble02-8.png

08-GATT层

  • GATT(Generic Attribute Profile, 通用属性规范),自己本身不提供数据,而是将ATT层提供的属性组合起来构成的服务。通过ATT层可以读写对端设备的属性值,各个属性之间有什么联系各个属性之间怎么组合起来的,是由GATT层负责。服务是GATT层的关键字,服务由属性组成。
  • 一个BLE设备可以由多个服务组成,一个服务可以包含多个特征(characteristic),一个特征可以包含多个属性。GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑,但互联互通就会出问题。

09-GAP层

  • GAP(Generic Access Profile, 通用访问规范):定义了所有蓝牙设备的基础功能,设备间发现、连接、配对绑定的流程;蓝牙设备中四种角色;广播和扫描响应报文的格式;还有一些通用蓝牙参数定义,比如设备地址、名称、配对秘钥和设备的外观特征值,用于区分是什么设备,手机还是电脑;明确了作为一个低功耗蓝牙设备的基本需求,包含哪些层级以及如何协同工作的。 规范了一些通用的蓝牙参数:蓝牙设备地址、设备名称、配对秘钥、外观特征值(用于区分设备是手机还是电脑)。 其他详情可参考《Core_v5.3.pdf》中 Part C: Generic Access Profile章节部分。

参考:

蓝牙协议学习入门 - SeeDeer的博客

蓝牙技术联盟核心规范: http://www.bluetooth.com


九筒网络安全研究社,专注于汽车安全、车联网安全、IoT安全、工控安全领域的研究!

团队博客: 九筒网络安全研究社 - 团队博客

GitHub: https://github.com/9-tong

微信公众号:九筒网络安全研究社

CSDN: 九筒网络安全研究社 - CSDN

看雪论坛: 九筒网络安全研究社 - 看雪论坛

FreeBuf: 九筒网络安全研究社 - FreeBuf

腾讯开发者社区: 九筒网络安全研究社 - 腾讯云开发者社区

知乎: 九筒网络安全研究社 - 知乎


作者

author.png

# 无线安全 # BLE
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者