低功耗蓝牙协议(BLE)初探:了解BLE协议的运作原理

BLE简介:

Bluetooth Low Energy (BLE) 是从蓝牙 4.0 开始引入的技术,又被称为 Bluetooth Smart。与经典的蓝牙相比,BLE 主要的特点是能够在维持相对低的功耗的同时实现通信。BLE因为其低功耗特性成为了物联网领域的一项重要技术,为大量的设备提供了长时间的运行期。

现代智能手机中的蓝牙芯片一般被设计为“双模”(Dual-mode),这意味着它可以同时支持经典蓝牙和BLE。像蓝牙耳机这种需要连续、低延迟、稳定的、高带宽的数据传输使用的就是经典蓝牙协议,而智能手环、智能灯泡、门锁等物联网设备使用的就是低功耗蓝牙协议。

传统蓝牙与BLE对比:

传统蓝牙 BLE
信道 79个信道 40个信道(37/38/39为广播信道)
发现/连接 查询 广播
连接延时 100ms 6ms
最大数据率 1-3Mbps 1Mbps
工作距离 10米 最远100米
最大输出功率 100mW 10mW
主要应用 无线播放、无线控制器 智能家居、穿戴设备

蓝牙协议架构分析:

下图就是蓝牙协议的架构,这个架构参考了OSI七层模型但又没完全OSI模型的所有层次,不过为了方便介绍,这里还是以OSI模型的框架进行介绍。

从下往上来说。

物理层 (Radio Layer)

  • Radio(射频层):将上层数据转换为信号发送出去,将接收的数据转换成信号返回给上层。

基带与链路控制层 (Baseband and Link Control Layer):

  • Baseband(基带层):对蓝牙通信的建立、维护和断开提供了基本机制(链路管理、数据处理和通信控制)
    • 管理蓝牙设备之间的连接过程,包括扫描可用设备、广播、配对和建立连接。它还管理连接的断开。
    • 实施蓝牙的跳频技术,使得蓝牙通信在2.4 GHz频段中能够减少干扰。在蓝牙通信过程中,设备会定期在多个频道之间跳转。

链路管理层 (Link Manager Protocol, LMP):

  • Link Manage(链路管理层):负责建立并管理蓝牙连接。

Attention: Baseband和LM都有建立和断开链接的功能不过需要注意的是Baseband处理的是物理电路的建立和断开。它确保无线电频率上的通信信号得以传输和接收。在这一层,数据被打包成合适的帧格式,并且有一定的流量控制以确保有效传输。而LM是在逻辑层面上处理连接的建立、管理和断开。这包括初始的设备查询、配对、身份验证、加密等。LM协商连接的详细参数,例如连接间隔、超时时间、角色切换等。

逻辑链路控制和适配协议层 (L2CAP)

  • L2CAP层(Logical Link Control and Adaptation Protocol):位于Baseband和高层协议之间,由于Baseband层对数据包的大小有限制,L2CAP层能够将较大的数据包分段为更小的数据包以进行传输,并在接收端重新组合这些数据包。所以L2CAP层的主要作用就是将高层数据进行封装打包成下层跟容易接收的形式。

高层协议:

  • RF COMM(Radio Frequency Communication):它是蓝牙协议栈中的一个传输协议,用于模拟串行数据通信。这意味着 RFCOMM 提供了一个虚拟的串行端口以实现无线通信。
  • OBEX(Object Exchange):主要用于设备间的结构化数据对象的交换。说白了就是用来传输数据(推送,如联系人、日历事件、图片等)。
  • PPP 和 BNEP:这是两个协议,PPP 是一个在直接连接的两个网络节点之间建立数据链路的协议(点对点连接)。BNEP 用于在两个蓝牙设备之间传输封装的网络数据包,可用于创建蓝牙个人局域网 (PAN)。这两个协议的上层是tcp\udp与ip协议这就比较好理解了,上层的网络数据由PPP/BNEPl来进行封装并实现点对点的传输。
  • AT modem commands主要作用是调制解调,应用场景如下:
    1. Hands-Free Profile (HFP) 和 Headset Profile (HSP):这两个配置文件定义了无线耳机、汽车套件和手机之间的通信。为了实现这些功能(如拨打电话、接听电话、调整音量等),手机和无线耳机/汽车套件之间会交换 AT 命令。
    2. 通信控制:通过 AT 命令,设备可以查询另一设备的状态、发起操作或配置设备。例如,检查电池电量、设置扬声器音量、拨打电话号码等。
  • TCS BIN(Telephony Control Protocol Specification Binary)设计用来支持蓝牙设备之间的语音和电话服务的建立和控制。TCS BIN 主要在**呼叫控制、多方通话、DTMF(双音多频)**等几个方面发挥作用。
  • SDP(Service Discovery Protocol):这个协议是蓝牙协议栈中的一个关键协议,设计用于在蓝牙设备之间的一个发现服务。其主要作用如下:
    1. 服务发现:当两个蓝牙设备首次配对时,SDP 用于查询和列出远程设备上可用的蓝牙服务。例如,一个手机可以查询耳机是否支持高级音频分发配置文件 (A2DP) 以进行立体声音频流。
    2. 获取服务属性:除了识别服务外,SDP 还提供关于每个服务的详细信息,如服务的版本、通道号、特定功能等。
    3. 动态服务发现:设备可能会在其生命周期内增加或减少蓝牙服务。通过 SDP,设备可以在任何时间动态地发现其他设备当前提供的服务。

应用程序:

  • Audio APP:音频传输,这个协议有点特殊它是直接通过Audio协议像基带层发送音频数据。
  • File APP:文件传输。
  • NW APP:网络数据传输。
  • Tel App:电话数据传输。
  • Mgmt App:设备管理、连接管理。

BLE协议介绍:

上图是BLE协议的架构,这里的协议不多就直接从下往上的一个一个介绍

  • Physical Layer(PHY):作为协议栈中的最低层,一共定义了40个信道(其中三个广播信道,37个数据传输的信道),负责无线电信号的发送和接收。
  • Link Layer(LL):为BLE设备之间的通信提供了基础的链路功能,当两个BLE设备决定建立持续连接时,LL负责初始化、维护和断开这些连接。也就是说LL规定了蓝牙设备是如何建立连接的。LL操作基于状态机,其中主要的状态包括就绪、广播、扫描、初始化和连接。
  • L2CAP:这一层在上面的蓝牙协议由说过,就是对上层的数据进行封装以便于下层进行数据传输。
  • ATT:该协议是BLE设备用于存储和访问数据的协议。ATT定义了一种结构化的方法来组织和访问数据,这些数据以"属性"的形式存储。每个属性都有一个唯一的句柄、一个UUID(Universally Unique Identifier)来标识其类型、权限、值以及其他可能的元数据。在ATT中,存在两种设备角色:服务器和客户端。服务器存储属性,而客户端请求或修改这些属性。ATT定义了一系列的操作,使客户端能够与服务器交互。这些操作包括读、写、查找属性等。其中每个属性都可以设置不同的访问权限,如只读、只写或加密读写。这确保了数据的安全性和完整性。
  • GATT:该协议为ATT的访问提供了一个通用且具有结构化的的方法来组织和访问数据。
  • SM:顾名思义安全管理协议主要负责BLE设备间的配对和绑定过程,以及安全性相关的功能。其中配对是一个过程,其中两个BLE设备交换安全密钥以建立受保护的连接。绑定则是一个更长期的过程,其中密钥被持久化存储在设备中,以便将来可以重新建立安全连接,而无需再次配对。
  • GAP:该协议定义了设备之间如何发现、连接和进行安全认证。

BLE协议运行流程解析:

在BLE中设备可以分为两类:中心设备、周边设变。我们将智能手表,智能门锁这类体积较小功耗较低的设备称为周边设备。对于手机这类具有相对较强运算能力的设备称为中心设备。

BLE的连接过程:

在上面的传统蓝牙与BLR对比表中有写到BLE的连接方式是以广播的形式进行连接。周边设备在没有与中心设备连接时会持续对外进行广播,而广播的状态可以分为四种:

  • ADV_IND:常见的广播状态,表示可以被连接,可以被扫描。
  • ADV_DIRECT_IND:表示只能被特定的设备进行连接。
  • ADV_NONCONN_IND:表示既不可以被连接也不可以被扫描
  • ADV_SCAN_IND:表示只允许被扫描,不可以连接。

当中心设备接收到广播中周边设备的广播信号时,就会发送一个SCAN_REQ信号,中文直译就是发了一个扫描请求包,如果周边当前设备可以被扫描,并且接收到了这个扫描请求包之后,就会向扫描请求包的发送方返回一个SCAN_RSP包,这个包里面一般是含有设备的生产厂商、版本号这类设备信息。中心设备接收到这些信息后会大概判断,比如如果中心设备使用的是米家的APP,接收到周边设备返回的厂家信息发现是华为的设备可能就会忽视掉这个广播信息,而如果周边设备返回的信息显示是小米生态链中的设备就会发送一个CONNECT_REQ包,向周边设备发起连接,连接成功后,周边设备在与主设备断开连接之前不再发起广播连接其他设备。此时中心设备被称为主设备,被连接的周边设备称为从设备。

连接成功后:

在设备连接成功后,刚开始设备之间的信息传输都是以明文的方式进行传输,接下里会进入配对阶段,在配对开始的时候两个设备都会生成一个短期的密钥。这种短期的密钥(Short Term Key, STK)生成方式有四种:

  • Just Works:这是最简单的配对方法,适用于没有显示屏或输入能力的设备,例如一些传感器或智能灯泡。在这种方法中,双方不需要共享任何用户输入的PIN或数字。然而,由于缺乏用户干预,这种方法对中间人攻击(MITM)是脆弱的。
  • Passkey Entry:在这种配对方法中,一个设备显示一个六位数字(Passkey),另一个设备的用户需要手动输入这个数字来确认。这提供了一定程度的防护 against MITM攻击,因为攻击者需要知道或拦截这个Passkey来进行攻击。
  • Numeric Comparison:适用于双方设备都有显示屏的场景。在配对过程中,两个设备都会显示一个相同的六位数字。用户需要在两个设备上确认这些数字是否匹配。如果匹配,配对过程会继续。这种方法也提供了防护 against MITM攻击的能力。
  • OOB(Out of Band)配对:在这种方法中,设备使用一个与Bluetooth通信无关的通道或方法来交换或获取密钥信息。例如,可以通过NFC(近场通信)来交换配对信息。当用户将两个设备的NFC部分贴合在一起时,这些设备可以快速交换其加密信息。

在确定好密钥后下一步进入了加密阶段,此时设备两个设备都有了相同的短期密钥,然后双方根据固定的算法生成一个长期密钥。之后两个设备就会将明文的数据通过长期密钥进行加密,加密之后再进行传输。下一步就是绑定阶段,再绑定阶段中设备会将长期密钥存储起来,下次连接时直接使用之前生成的长期密钥进行密文传输。

关于BLE协议初探这篇文章的内容到这里就结束了,之后会更新一些物联网设备蓝牙协议分析的实操。

猜你喜欢

转载自blog.csdn.net/weixin_46175201/article/details/133221552