蓝牙基础(五):蓝牙数据安全、可靠性、组成与处理流程

liwen01 2025.10.02

前言

WiFi、蓝牙都是使用无线电进行数据交互,但是无线电是不可靠的传输,它会反射、散射、折射、衍射还会相互干涉。从用户的体验来看,就是无线信号强度变弱,连接中断、掉线、音频卡顿、失真、配对困难、传输速率下降等

为解决无线通信中的各种问题,蓝牙模块在物理层、链路层、软件协议栈上都做了些不同的处理,使不可靠的无线传输逐渐地变为可靠的数据传输。

(一)无线通信中的不可靠性

无线信号通信中的不可靠性,一部分源自于无线信号衰减、干扰,另一部分源自于无线数据的数据安全。

(1)无线电信号衰减

信号从发射端传播到接收端过程中,强度逐渐减弱的现象称为信号衰减,衰减的原因有:

  • 自由空间路径损耗
  • 穿透损耗(Penetration Loss)
  • 多径效应(Multipath Fading)
  • 噪声干扰
  • 天线方向性与增益

(a)自由空间路径损耗

image

路径损耗是指电磁波从发射天线传播到接收天线的过程中,信号强度的衰减。

即使在没有障碍物、没有反射、没有散射的理想环境中,信号也会衰减,这种损耗就叫自由空间路径损耗。

(b)穿透损耗

穿透损耗是指电磁波在穿过某种物体(例如墙壁、窗户、门、地板等)时,由于能量的吸收、反射、散射和折射等作用,导致信号强度降低的现象。

常见的如在拥挤的地铁上,手机放在口袋中,无线耳机有时就会出现断断续续的情况,主要原因是因为无线电穿透人体后信号强度降低了,导致数据接收不稳定。

(c)多径损耗

在无线电波传播过程中,信号不仅会沿着直线路径从发射端传到接收端,还可能被周围的物体(如建筑物、墙壁、地面等)反射、折射、散射或绕射,形成多个路径同时到达接收端的现象,这就叫做多径传播(Multipath Propagation)。

而由于这些路径的长度不同、到达时间不同、相位不同,它们在接收端会叠加,有时候会相互增强,有时候却会相互抵消,产生信号的波动,这种现象造成的信号衰减就称为 多径损耗(Multipath Loss)

这也叫电磁波的干涉

 
上图中两个波 f(x) 与 g(x) 它们相互干涉形成了紫色的波 f(x)+g(x),改变 g(x) 的相位,可以看到相干波峰值被加倍或者被抵消为 0。在无线电信号中表示信号增强和衰减

(d)噪声干扰

蓝牙标准使用的是2.4 GHz ISM(Industrial, Scientific and Medical)频段。 这个频段是与Wi-Fi(2.4GHz)重合的。

除了WiFi,还有微波炉、ZigBee、LoRa、等各种设备都是运行在该频段,它们间相互干扰,对于蓝牙而言,就容易出现上面提到的:连接中断、掉线、音频卡顿、失真、配对困难、传输速率下降等问题。

(e)天线方向性与增益

方向性描述了天线把能量集中到某个方向的能力。

  • 如果一个天线把能量平均地向各个方向辐射,它被称为全向天线(Omnidirectional)。
  • 如果一个天线在某些方向上集中发射/接收,它被称为定向天线(Directional)。

全向天线:像一个灯泡,360° 辐射,适合覆盖大范围但距离较近的区域

定向天线:像手电筒,能量集中在一个方向,适合远距离通信

image

天线增益(Antenna Gain)表示天线将电磁能量聚焦到某个方向的能力,用来衡量信号强度的提升程度,通常单位是 dBi(相对于理想全向天线的增益)。

image

增益越高 → 信号在特定方向上越强 → 能传播得更远。

不同国家地区对电磁辐射的要求不一样,所以也不能简单粗暴地通过提升增益来提高信号。

(2)无线数据的数据安全

(a)配对与身份验证安全

主要体现在配对过程易受攻击

  • 蓝牙经典配对(Legacy Pairing),尤其是早期版本(如2.0及以前)中使用固定PIN码(如“0000”或“1234”)进行配对,容易被暴力破解。
  • 蓝牙低功耗(BLE)配对,虽然引入了Just Works、Passkey Entry、Numeric Comparison、Out-of-Band 等多种配对方法,但其中 Just Works 模式缺乏身份验证,容易受到中间人攻击(MITM)。

(b)加密与隐私问题

加密强度不足

  • 蓝牙使用对称加密(如E0(经典)AES-CCM(BLE)),但如果加密密钥协商过程被劫持或猜解,数据就可能被解密。
  • 部分BLE设备根本未启用加密或加密配置不当。

(C)协议层漏洞

蓝牙协议栈实现复杂,容易被发现安全漏洞。例如:

  • BlueBorne攻击:远程执行代码漏洞;
  • SweynTooth漏洞组:影响BLE协议栈的连接和安全过程;
  • BrakTooth攻击:针对蓝牙通信协议栈中的缓冲区管理漏洞。
  • 广播包攻击:攻击者可发送恶意广播包或利用UUID欺骗诱导设备连接错误的服务或特征。

为了解决无线网络的不可靠问题,蓝牙对信号进行了调制处理,在链路层将数据进行进一步的封装,然后再对数据进行加密、白化、FEC编码等操作,使蓝牙无线信号逐渐地变为可靠的数据传输方式。

(二)蓝牙的调制方式

无线信道(天线发射、接收)只能处理模拟信号,也就是连续变化的波(电磁波)。

调制的本质是把数字数据“转换”成可以在无线信道中传输的波形,比如频率、相位、幅度的变化。

对无线信号进行调制,是为了能高效、可靠地通过无线信道传输数据

在蓝牙设备中,不同工作模式下的调试方式都不一样。

模式调制方式速率备注
BR GFSK 1 Mbps 最基础的蓝牙模式
EDR π/4-DQPSK, 8DPSK 2 / 3 Mbps 提升数据速率的经典蓝牙模式
BLE 1M GFSK 1 Mbps BLE 默认模式,低功耗
BLE 2M GFSK 2 Mbps BLE 高速模式
BLE Coded GFSK + FEC 编码 125/500 kbps BLE 长距离模式(低速高可靠)

(1)GFSK(高斯频移键控)调制方式

使用场景:BR、LE 1M/2M PHY

特点

  • 抗干扰能力较好(频移调制易区分)
  • 实现简单,适合低功耗设备
  • 频谱利用效率中等

使用它的原因

  • 早期蓝牙(BR)注重简单实现与稳定性
  • 低功耗蓝牙(LE)强调低功耗与低复杂度,GFSK非常适合;

(2)π/4-DQPSK(π/4-差分四相位键控)

使用场景:EDR(2 Mbps)

特点

  • 比GFSK传输速率更高
  • 相邻符号差分编码,便于相位变化检测
  • 对于接收器的相位同步要求较低

使用它的原因

  • 为了在保持较好误码率的同时提升传输速率,引入相位调制;
  • π/4偏移设计避免了相位跨越 180°,提升解调稳定性;

(3) 8DPSK(8相位差分键控)

使用场景:EDR(3 Mbps)

特点

  • 使用8种相位,单符号携带3 bit信息
  • 频谱效率更高,但误码率较高

使用它的原因

  • 为了进一步提高速率;
  • 但对噪声敏感,接收机设计复杂,因此只用于短距离高带宽应用;

(4)LE Coded (带前向纠错的LE编码)

使用场景:LE Long Range(远程模式,1M PHY编码)

调制:GFSK + FEC(前向纠错)

特点

  • 传输速率变慢(125 kbps / 500 kbps)
  • 增强抗干扰性和通信距离(最长可达1公里)

使用它的原因

  • 用于低速、远距离、可靠性高的场景(如IoT、Beacon)

(三)蓝牙链路层数据包格式

这里介绍的是蓝牙链路层的数据包格式,其中BR与EDR链路层数据包格式是相似的,但它们与 BLE 在链路层的数据包格式却差异很大

(1)BR 数据包格式

image

(a)Access Code(接入码)

所有蓝牙数据包的开头都有一个接入码。这个码由主设备分配,是从设备同步和识别主设备的关键部分。接收端通过匹配 Access Code 来判断该包是否是发送给自己的。

Access Code 的长度为 72 bit,主要作用是:

  • 唤醒接收设备;
  • 实现设备识别;
  • 提供同步信息(位对齐和时钟同步)。

(b)Header(包头)

包头携带的是控制信息,该控制信息控制着链路层的逻辑和通信协议流程,并且为了增加可靠性,会进行 3 次重复发送 + 多比特纠错。

总长度是 54 bit ,是由 18bit 的信息重复 3 次构成。

包含字段有

  • AM_ADDR(Active Member Address):用于标识从设备;
  • Type:包类型(如:DM1、DH1 等);
  • Flow:流控制位;
  • ARQN:确认请求;
  • SEQN:顺序控制;
  • HEC(Header Error Check):校验头部。

(c)Payload(负载)

负载中包含实际的数据内容。不同的 BR 包类型支持不同长度的 Payload(如 DM1、DH1、DM3、DH3、DM5、DH5),总的长度范围是0 ~ 2745 bit

主要结构有

  • Payload Header(有效载荷头);
  • Payload Body(有效载荷体);
  • CRC(循环冗余校验,为可选)

(d)调制方式

在 BR 数据包中,所有的字段和数据都是使用 GFSK 调制方式。

(2)EDR 数据包格式

image

EDR 链路层数据包中包含了 6 个组成部分,使用了两种不同的调制模式。

(a)Access Code(接入码) 与 Header(头部)

BR 与 EDR 在Access Code(接入码) 与 Header(头部) 部分是完全相同的。

它们使用相同的数据结构,以及它们都是采用 GFSK 调制方式。

(b)Guard(保护间隔)

Guard 是 EDR 独有的部分,因为 EDR 使用两种调制模式。

EDR 数据部分使用 DPSK(差分相移键控)调制,而前面的部分用的是 GFSK(高斯频移键控),中间需要一点间隔时间(guard time)切换调制方式,避免误码。

Guard 的作用就是为后续使用不同调制方式的部分做准备,避免调制冲突。

(c)Sync(同步)

Sync(同步)的作用是为了接收端的解调器可以正确解码 DPSK 信号。

Sync 字段有特定比特图案,帮助接收端锁定时钟与相位,对准 DPSK 调制的起始点。

(d)Enhanced Data Rate Payload(增强速率载荷)

该部分是承载实际数据内容的部分。

它使用 π/4-DQPSK 或 8DPSK 调制技术,以更高的速率(2 Mbps 或 3 Mbps)传输数据,相比基本速率的 GFSK 更快。

  • π/4-DQPSK:每个符号传输 2 比特。
  • 8DPSK:每个符号传输 3 比特。

(e)Trailer(结尾段)

Trailer 是 EDR 数据包中用于“优雅地收尾”DPSK 调制段的符号填充区,确保收发双方同步、调制状态切换顺畅,并不承载实际业务数据。

它的具体符号由控制逻辑决定,长度也不是固定的。

(3)BR 与 EDR 数据包格式的区别

对比项BREDR
调制方式 全程 GFSK GFSK(前导)+ DPSK(数据)
数据率 1 Mbps 2 Mbps 或 3 Mbps
结构复杂度 简单 复杂(多字段用于调制转换)
新增字段 Guard、Sync、Trailer
应用 基本数据传输、语音 高速音频、更快文件传输

因为 EDR 对带宽的要求比较高,所以在一个数据包中,它使用了两种调制方式。

为了两种调制方式能更好地同步,所以新增加了Guard、Sync、Trailer 字段。

整体而言,BR 与 EDR 在链路层中的数据包格式是相似的。

(4)BLE 数据包格式

image

这是 蓝牙5.0及以上在低功耗通信中引入的一种编码方式,用于扩展通信距离(Long Range 功能)。

它使用前向纠错(FEC)和编码因子 S=2 或 S=8 进行低速率的高可靠通信。

BLE 整个数据包可分为两个部分:

  • FEC Block 1:固定长度、使用 S=8编码
  • FEC Block 2:可变长度、使用 S=2或S=8编码,具体由 CI 决定。

(a)Preamble(前导码)

用于接收端的频率同步和位同步,固定长度为10bit(1010101010),编码后为80 µs,它固定使用 S=8 编码 。

它主要用于无线同步,帮助接收端完成:自动增益控制(AGC)、解调器定时同步、滤波器稳定。

(b)Access Address(接入地址)

长度为 32 bits,编码后为 256 µs 。 每个连接事件中唯一的 32 bit地址。

同时,也用于标识连接和广播事件,如果是广播,通常固定为:0x8E89BED6(广播包)

(c)CI(Coding Indicator)

长度为 2 bits(编码后 16 µs)

作用

  • 指示 FEC Block 2 使用的编码因子 S;
  • S=2 → 高速传输;S=8 → 高可靠传输(更适合远距离或低信噪比)。

(d)TERM1(终止字段1)

长度为 3 bits,编码后 24 µs

作用是:FEC Block 1 的结尾标记,用于接收端同步恢复。

(e)PDU(Protocol Data Unit)

该部分为链路层实际的数据,长度为:1~255 Byte

(f)CRC(循环冗余校验)

CRC 是用作链路层校验,长度为 24 bits,编码后为 24 × S µs

CRC 确保 PDU 数据的完整性。

(g)TERM2(终止字段2)

长度为:3 bits(编码后为 3 × S µs) 它是FEC Block 2 的结尾标志

(5)BLE 与 EDR 数据包格式格式的区别

项目BLEEDR
用途定位 低功耗、低速、远距离通信(如IoT、穿戴设备) 面向高速数据传输(如音频、文件传输)
调制方式 GFSK + FEC(S=2或S=8) GFSK(前导段) + π/4-DQPSK or 8DPSK(有效载荷段)
FEC FEC Block 1 和 Block 2 不支持FEC,依靠ARQ重传机制
同步机制 使用 Preamble + Access Address + Coding Indicator + TERM 使用 Access Code 进行同步
速率 较低,S=8时只有 ~125 kbps,S=2时为 ~500 kbps 2 Mbps(π/4-DQPSK)或 3 Mbps(8DPSK)
复杂度 结构复杂,字段多、时序明确,适配纠错和冗余 结构较简单,强调速率优先
适用场景 IoT、低功耗传感器、BLE广播、远距离设备通信 蓝牙耳机、音频传输、大文件传输
控制字段 有 CI(Coding Indicator)指示调制编码 无明确调制指示字段
数据段 属于 FEC Block 2,编码后传输 直接使用DPSK调制方式传输

(四)蓝牙数据处理流程

在上面链路层数据包格式中,我们看到 BR 与 EDR 的包格式是相似的,它们的数据处理流程也是相似。

它们都有 HEADER 和 PAYLOAD 部分,在数据处理流程中,这两部分又存在差异。

(1)BR/EDR Header 数据处理流程

image

Header 从生成到被接受被解析,需要经过下面一个流程:

TX header → HEC generation → whitening → FEC encoding → RF interface(发送)

→ RF interface(接收)→ decoding → de-whitening → HEC checking → RX header

(a)HEC generation(Header Error Check 生成)

在蓝牙 BR/EDR 模式中,链路层包头是18 bit(3字节中的前18位),蓝牙协议为其添加 8 bit的 HEC 校验码,用于 检测头部是否在传输过程中出现比特错误。

HEC generation 的目的:

  • 检测链路层包头的传输错误
  • HEC 只保护 header(18 bit),payload 的错误校验由 CRC24 来完成
  • HEC 检查是早期过滤机制,快速检测非法包,节省解码资源
  • HEC 校验失败时,蓝牙设备不会处理该包(例如不会回应 ACK)

HEC 有专门的生成算法,对于接收方,接到 Header 后按算法校验即可。

(b) Whitening(数据白化)与 de-whitening

Whitening 是一种数据随机化处理技术,目的是避免数据中出现长时间的 0 或 1 序列,以改善频谱分布、降低误码率,提高抗干扰能力。

数据白化的目的:

  1. 减少长时间不变的比特模式(如 00000 或 11111)

    • 长时间重复比特会导致载波频偏检测困难,降低接收端灵敏度。
  2. 改善频谱平坦性

    • 数据白化使得信号在频域上能量分布更均匀,降低干扰和串扰。
  3. 避免信道的系统性偏差被数据“触发”

    • 如:调制器某些位模式会引起失真或功率峰值。

Whitening 的工作原理:

发送端:蓝牙使用 线性反馈移位寄存器(LFSR) 生成伪随机序列,并将其与原始数据进行 按位异或(XOR),从而达到扰动的目的。

接收端:只需要使用相同的 LFSR 初始化参数,对接收到的数据再次 XOR,即可恢复原始数据(de-whitening)。

数据经过白化之后,也就不会存在多个连续的 0 或是多个连续的 1 了。

(c)FEC encoding(前向纠错编码)

FEC(前向纠错编码)是一种在发送数据时添加冗余信息的技术,以便接收端即使在数据传输中出现部分比特错误,也可以检测并纠正错误,而不必请求重传。

在蓝牙 BR/EDR 模式中,FEC 主要用于增强链路的可靠性,特别是在噪声大、信号弱的环境下。

在 BR/EDR中, FEC encoding 的使用范围是:

数据部分使用 FEC编码类型
Access Code 1/3 Rate FEC
Header 1/3 Rate FEC
Payload 可选 1/3 或 2/3 Rate FEC,或不使用

蓝牙支两种 FEC 编码方式:

  • 1/3 Rate FEC(重复编码)
  • 2/3 Rate FEC(卷积编码)

具体编码细节这里不做介绍了,对应于接收端,它需要做的是解码。

(d)RF Interface(射频接口)

RF Interface(射频接口) 是蓝牙协议栈的物理层(PHY)部分,负责将经过编码和调制的数据转换为无线电信号(电磁波)进行无线传输,并在接收端完成反向过程。

RF Interface 发送端的主要任务有:

  • 接收调制后的比特流
  • 载波调制(如 GFSK、π/4-DQPSK、8DPSK)
  • 频率选择/跳频控制
  • 发射功率控制
  • 模拟信号处理(上变频、放大)
  • 通过天线发送 RF 信号

RF Interface 接收端的主要任务有:

  • 接收天线接收电磁波
  • 低噪声放大器(LNA)放大接收信号
  • 下变频器(Mixer)将 RF 信号转换为中频/基带
  • 滤波器去除带外干扰
  • 模数转换(ADC)并送入基带处理模块

RF Interface 还需要控制发送与接收模式的切换,蓝牙 RF 与 与WiFi 一样,都是半双工工作模式,不能同时收发数据,它们是时分复用的模式。

(2)BR/EDR Payload 数据处理流程

image

在 BR/EDR中,包头与负载数据的处理方式大致是相同的,但也存在差异。

在同一个数据包中,为啥要做两种不同的数据处理方式呢?这背后的设计逻辑是:

  • Header 是整个包的导航信息必须保证极高的可靠性,因此强制使用 FEC 和 HEC,即便牺牲带宽。
  • Payload 是实际数据内容,容许根据场景权衡可靠性 vs 吞吐率,因而 FEC 可选、支持加密、带 CRC、长度灵活。

较大区别的是数据加密和CRC校验

(1)CRC → E0

先计算 CRC,再进行 E0 加密

加密流程

  • 计算 CRC:对原始数据计算 循环冗余校验(CRC),并附加到数据末尾。
  • 加密(E0 流密码):使用 E0 流密码(E0 Cipher) 对整个数据包(包括 CRC)进行加密。

解密流程

  • 解密(E0 流密码):先用 E0 算法解密整个数据包(包括 CRC)。
  • 校验 CRC:解密后再进行 CRC 校验,以验证数据是否正确。

优点:

  • 保护了 CRC 校验码,如果数据被篡改,解密后 CRC 可能不匹配,从而检测到篡改。
  • E0 是流加密,适用于低时延数据传输。

缺点:无法抵御主动篡改攻击(bit flipping 攻击)

  • 由于 E0 是流密码(类似于 XOR),攻击者可能可以篡改加密数据,使得解密后仍然通过 CRC 校验。
  • 举例:攻击者可以修改密文中的特定位,使得解密后仍然是一个有效的数据包。

(1)AES-CCM → CRC

先加密数据,再计算 CRC

加密流程

  • AES-CCM 加密:使用 AES-CCM(AES 计数器模式 + CBC-MAC)对原始数据进行加密。
  • 计算 CRC:对加密后的数据计算 CRC 校验,并附加到数据末尾。

解密流程

  • CRC 校验:先进行 CRC 校验,以检测传输过程中是否发生错误。
  • AES-CCM 解密:对数据进行 AES-CCM 解密,恢复原始数据并验证 MIC(消息完整性码)

优点:更高的安全性、更强的抗篡改能力

  • AES-CCM 包含 MIC(消息完整性码),可以防止数据被篡改。
  • 即使攻击者篡改了加密数据,MIC 校验会失败,数据包会被丢弃。- 比 E0 更安全,因为 MIC 机制可抵御比特翻转攻击。

缺点:计算开销较高

  • 需要额外计算 MIC,并进行 AES 计算,相较于 E0 流密码有更高的计算成本。
  • 但 BLE 设备通常是低功耗设备,AES-CCM 经过优化,可在硬件层面高效执行。

(3)BLE Uncoded PHYs 数据处理流程

image

这里我们介绍的是BLE PDU(数据负载)部分的数据处理流。

BLE的PDU又因为数据是否使用FEC编码而区分为:BLE Uncoded PHYs 和 BLE coded PHYs

BLE Uncoded PHYs

image

BLE 使用的加密,就是上面介绍的AES-CCM → CRC,白化过程也相似,不同的是调制模式和 RF 模块 ,这部分前面也已有介绍。

数据加密部分,BLE 与 EDR 之间的区别:

对比项BLEEDR
加密算法 AES-CCM(128-bit) E0 stream cipher(40/56/128bie)
密钥长度 固定 128 位(强安全性) 最长 128 位,早期设备可能是 40 或 56 位
安全管理协议 SMP(Security Manager Protocol) HCI、LMP、Link Manager
加密层级 仅加密 链路层 Payload 加密整个 Baseband 层(基本带帧结构)
加密启动时机 连接建立后,主设备发起加密请求 连接建立期间协商密钥,立即启用加密
抗攻击能力 强(AES 标准,使用随机数生成密钥) 中等偏弱(E0 被认为不够强)
防重放攻击 有(Nonce + Packet Counter) 无明显防重放机制
是否支持认证 支持,使用配对和绑定机制 支持,使用 PIN 码等验证方式

AES-CCM 与 E0 加密的区别

特性AES-CCME0
标准 NIST 标准对称加密算法 蓝牙自定义流密码
安全性 被广泛认为是安全的 已经被研究界攻击过多次
用途 BLE / Zigbee / LoRa 等标准 仅用于蓝牙 EDR Baseband 层

(4)BLE coded PHYs 数据处理流程

image

BLE coded PHYs 与 BLE Uncoded PHYs 的区别是多加了FEC encoding 和 Pattern mapper 步骤。

(a)FEC encoding

LE Coded PHY 使用的是一种称为 (3,1) 确定性卷积码(deterministic convolutional code),也被称作 Rate 1/3 卷积编码。

核心特征:

  • 输入1比特,输出3比特
  • 编码增大了冗余,从而提升解码的鲁棒性
  • 多出的比特可以被接收方用于纠错

(b)Pattern Mapper

Pattern Mapper 的目的是将 FEC 输出的比特流映射为更长的符号序列(spreading pattern)以增强信号可靠性。

  • 增加了冗余度,
  • 提高了在远距离和低信噪比情况下的解码成功率

Pattern Mapping 的规则

  • 每一个比特都被映射为一个预定义的symbol pattern

这些符号不是新的信息位,而是用来占据无线信道,提高解码器从噪声中恢复原始比特的能力

具体 Pattern Mapping 表

蓝牙规范定义了一个固定的映射表:

FEC 比特S=2 映射符号模式(2bit)S=8 映射符号模式(8bit)
0 01 00001111
1 10 11110000

对于 S=2:

  • 0 ➜ 01
  • 1 ➜ 10

对于 S=8:

  • 0 ➜ 00001111
  • 1 ➜ 11110000
其它部分的工作原理与前面 EDR 的相似,这里就不再重复了。

结尾

蓝牙模块为了使不可靠的无线信号变为可靠的无线数据通信,在数据包、数据处理流程、信道、协议栈等等方面都做了很多处理。

这里主要介绍了蓝牙信号的干扰,链路层各模式下的数据包组成、数据处理流程,下一章我们将介绍蓝牙的传输层 HCI 。

 

------------------End------------------
如需获取更多内容
请关注 liwen01 公众号
posted @ 2025-11-04 08:28  liwen01  阅读(168)  评论(0)    收藏  举报