TL;DR:蓝牙安全经历了 Legacy PIN → SSP(BT 2.1)→ Secure Connections(BT 4.1)→ LE Secure Connections(BT 4.2)四次大升级。本文系统梳理经典蓝牙与 BLE 的安全机制:密钥体系、配对流程、关联模型、加密算法、常见攻击(KNOB、BLURtooth、BIAS)及防护建议。适合嵌入式安全、蓝牙开发、IoT 安全从业者阅读。


一、蓝牙安全的演进路线

1999 BR/EDR 发布 Legacy PIN 配对(E22/E21) 2007 BT 2.1 SSP 安全简单配对(ECDH P-192) 2013 BT 4.1 Secure Connections(ECDH P-256) 2016 BT 4.2 LE Secure Connections 2020+ 持续补丁 KNOB/BLURtooth/BIAS 修复 蓝牙安全演进

二、经典蓝牙安全体系

2.1 密钥层级

PIN 或 SSP ECDH

Link Key 链路密钥
128 bit

Encryption Key Kc
8~128 bit

配对数据库

密钥 作用 长度 生命周期
Link Key(LK) 配对产物,用于认证和派生加密密钥 128 bit 半永久
Encryption Key(Kc) 每次加密会话派生 8~128 bit 每次连接
Combination Key 由双方地址和 PIN 派生 128 bit 半永久

2.2 安全模式

模式 描述 状态
Mode 1 不安全 已废弃
Mode 2 服务级安全 旧版
Mode 3 链路级安全 旧版
Mode 4 SSP 强制 当前主流

三、Legacy PIN 配对(已废弃)

3.1 流程

双方输入相同 PIN
    │
    ├─→ E22 算法 → Initialization Key(Kinit)
    ├─→ Kinit + BD_ADDR → Link Key
    └─→ 存储 LK,后续认证使用

3.2 致命缺陷

  • PIN 长度短(常见 4 位数字)
  • E22 可被离线暴力破解
  • 无 MITM 保护
  • 已被 SSP 完全替代

四、SSP:Secure Simple Pairing(BT 2.1+)

4.1 核心改进

引入 ECDH 密钥交换,取代固定 PIN:

设备 B 设备 A 设备 B 设备 A 计算共享 DHKey 执行关联模型 生成 Link Key 公钥 PKa 公钥 PKb IO 能力交换 确认值校验

4.2 四阶段流程

  1. 公钥交换:双方交换 ECDH 公钥,计算共享 DHKey
  2. 认证阶段 1:根据 IO 能力选择关联模型
  3. 认证阶段 2:用 DHKey 确认,防止 MITM
  4. 生成链路密钥:派生 Link Key,启动加密

4.3 四种关联模型

模型 适用场景 MITM 保护 典型设备
Numeric Comparison 双屏双输入 手机 ↔ PC
Passkey Entry 一屏一输入 手机 ↔ 手环
Just Works 无屏无输入 TWS 耳机
Out of Band NFC/二维码 车机/NFC 配件

MITM 警告:Just Works 不防中间人攻击,无屏设备是蓝牙安全的天然短板。

4.4 经典 SSP vs Secure Connections

特性 SSP(BT 2.1~4.0) Secure Connections(BT 4.1+)
椭圆曲线 P-192 P-256
哈希 SHA-256 SHA-256
密钥派生 简化 F5/F6 HMAC-SHA-256
强度 80 位左右 128 位

五、认证与加密

5.1 认证流程

Slave Master Slave Master 双向认证 LMP_au_rand(RAND 质询) 用 LK + RAND 计算 SRES LMP_au_sres(响应) 本地验证 SRES

5.2 加密算法

算法 引入版本 状态
E0 流密码 1.x 已不推荐
AES-CCM 4.1+ Secure Connections 当前推荐

E0 弱点:密钥流可被相关攻击,建议 Kc 有效长度 ≥ 7 字节。

AES-CCM 优势:AES-128 计数器模式 + CBC-MAC,同时提供加密和完整性。


六、BLE 安全机制

6.1 BLE 配对模式

模式 版本 特点
LE Legacy Pairing 4.0/4.1 类似经典 Legacy,TK 短,强度弱
LE Secure Connections 4.2+ 基于 ECDH P-256,与经典 Secure Connections 对齐

6.2 BLE 密钥层级

LE ECDH P-256

Long Term Key LTK

Session Key Diversifier

Initialization Vector

Session Key

密钥 作用
LTK 长期密钥,半永久存储
EDIV 加密 diversifier,用于识别 LTK
Rand 随机值,与 EDIV 一起派生会话密钥
SK 会话密钥,每次连接派生
IV 初始化向量

6.3 LE Secure Connections 关联模型

模型 说明
Numeric Comparison 双屏设备比对 6 位数字
Passkey Entry 一端显示,一端输入
Just Works 无 MITM 保护
OOB NFC 等外通道

七、CTKD:BR/EDR 与 BLE 共享 Link Key

双模设备如果 BR/EDR 和 BLE 各自独立配对,用户就要配对两次。蓝牙 4.2 引入的 CTKD(Cross-Transport Key Derivation,跨传输密钥派生) 允许在一侧完成 Secure Connections 配对后,派生出另一侧的密钥,实现“配对一次,双模共用”。

7.1 为什么需要 CTKD?

场景 无 CTKD 有 CTKD
手机连双模耳机 先 BR/EDR 配对,再 BLE 配对 配对一次,自动共用
用户体验 繁琐,易失败 一次确认,双模生效
密钥管理 两个独立数据库 统一派生,一致性强

7.2 CTKD 的两种方向

LE 传输

BR/EDR 传输

CTKD 派生

CTKD 派生

双模手机

双模耳机

Link Key

Link Key

LTK

LTK

方向 流程
BR/EDR → LE BR/EDR Secure Connections 配对 → 得到 Link Key → 派生 LE LTK / CSRK
LE → BR/EDR LE Secure Connections 配对 → 得到 LTK → 派生 BR/EDR Link Key

CTKD 只在 Secure Connections / LE Secure Connections 下可用,Legacy Pairing 不支持。

7.3 派生算法:h6

蓝牙规范使用 AES-CMAC 进行密钥派生:

h6(W, keyID) = AES-CMAC(W, keyID)
  • W:输入密钥(Link Key 或 ILK)
  • keyID:固定字符串标识符
从 BR/EDR Link Key 派生 LE 密钥
ILK  = h6(LinkKey, "1btd1")    // Intermediate Link Key
LTK  = h6(ILK,  "2le1")
CSRK = h6(ILK,  "2le2")
从 LE LTK 派生 BR/EDR Link Key
ILK     = h6(LTK, "1le1")
LinkKey = h6(ILK, "2btd1")

实际 keyID 字符串以蓝牙规范最新版为准,不同版本可能存在差异。核心思想是:用不同 keyID 做域分离。

7.4 完整流程示例(BR/EDR → LE)

双模耳机 双模手机 双模耳机 双模手机 1. BR/EDR Secure Connections 配对 生成共享 BR/EDR Link Key 2. CTKD 派生 LE 密钥 3. LE 直接使用 LTK 加密 交换 P-256 公钥 计算 DHKey Numeric Comparison 确认 ILK = h6(LinkKey, keyID1) LTK = h6(ILK, keyID2) 同样派生 LTK LE 加密连接

7.5 CTKD 与 HKDF 的关系

维度 CTKD h6 HKDF
原语 AES-CMAC HMAC
输入长度 固定 128 bit 任意
输出长度 128 bit 任意
用途 蓝牙跨传输短密钥派生 通用密钥派生
多轮扩展 需手动链式调用 Expand 阶段内置链式反馈

经典 SSP 的 F5/F6 基于 HKDF-SHA256,而 CTKD 的 h6 基于 AES-CMAC,两者不要混淆。

7.6 工程落地要点

  1. 只在 Secure Connections 下启用:Legacy Pairing 不支持 CTKD。
  2. keyID 必须严格匹配规范:错一个字符,派生结果完全不同。
  3. ILK 不要直接当密钥用:ILK 只是中间密钥,需再派生一次。
  4. 双模地址要关联:BR/EDR BD_ADDR 与 LE Public Address 通常应一致。
  5. 注意 BLURtooth 风险:CTKD 的便利也被 CVE-2020-15802 利用,见下节。

八、常见攻击与防护

8.1 攻击面总览

攻击 描述 影响 缓解
KNOB Attack 强制 Kc 有效长度=1 字节 加密可被秒破 升级栈到最小 7 字节
BLURtooth 跨模态密钥混淆(CTKD 滥用) 链路密钥被覆盖 升级到 BT 5.1+,可禁用 CTKD
BIAS 配对绕过,旧 LK 重用 冒充已知设备 强制重新认证
BlueBorne LMP 协议栈 RCE 无需配对远程执行 补丁升级
PIN 爆破 Legacy PIN 暴力破解 老设备被破解 弃用 Legacy

8.2 KNOB Attack 详解(2019)

原理

  1. 攻击者在 LMP 加密密钥大小协商时注入 Max Key Size = 1
  2. 双方接受后,Kc 实际只有 8 bit 强度
  3. 抓包离线爆破分钟级破解

防护

  • 升级到支持最小 7 字节的蓝牙栈
  • Core Spec 5.0+ 已修正该漏洞

8.3 BLURtooth(2020)

原理:BLURtooth 本质是 CTKD 的方向滥用。攻击者诱使目标设备在一侧(如 LE)与自己完成配对,然后利用 CTKD 在另一侧(如 BR/EDR)派生新的 Link Key,覆盖原有链路密钥,从而夺取 BR/EDR 连接的控制权。

防护

  • 升级到 BT 5.1+:引入 CTKD 权限控制,设备可拒绝跨传输覆盖
  • 禁用 CTKD:若业务不需要双模共用密钥,可在栈配置中关闭
  • 跨传输派生前要求用户明确确认
  • 避免无 MITM 保护的配对模式作为 CTKD 入口

8.4 BIAS(2020)

原理:利用蓝牙认证过程中“单向认证”的弱点,冒充已配对设备。

防护

  • 强制双向认证
  • 禁用旧 Link Key,定期重配对
  • 升级到支持 Secure Connections 的栈

九、安全配置最佳实践

9.1 通用设备

  • 强制 SSP + Secure Connections
  • 禁用 Just Works(除无屏设备外)
  • Kc 最小长度强制 ≥ 7 字节,敏感场景 ≥ 16 字节

9.2 无屏外设(TWS 耳机等)

  • 使用 Just Works + Secure Connections
  • 出厂预置 Link Key 或 OOB 备选
  • 限制可发现时间,减少攻击窗口

9.3 车机/手机

  • Numeric Comparison + 用户二次确认
  • 定期清理旧配对
  • 禁止 Legacy Pairing

9.4 工业/医疗设备

  • OOB(NFC/二维码)+ AES-CCM
  • 安全启动 + 密钥安全存储
  • 定期密钥轮换

十、调试与观察

10.1 查看配对密钥(Linux)

# 查看本地保存的配对密钥
sudo cat /var/lib/bluetooth/<本地BD_ADDR>/<对端BD_ADDR>/info

# 查看加密状态
hcitool enc <handle>

10.2 抓包分析

# Wireshark 过滤 LMP 认证
btlmp.opcode == 0x0017  # LMP_au_rand

# 过滤 HCI 配对事件
bthci_evt.code == 0x33  # User Confirmation Request

10.3 关键检查项

  • 是否启用 Secure Connections?
  • 加密密钥长度是否 ≥ 7 字节?
  • 是否支持 Legacy Pairing fallback?
  • 无屏设备是否使用 Just Works?
  • 配对数据库是否有防篡改/校验?

十一、总结

  1. 蓝牙安全四代演进:Legacy PIN → SSP → Secure Connections → LE Secure Connections。
  2. SSP 是分水岭:引入 ECDH,取代固定 PIN,但 Just Works 不防 MITM。
  3. Secure Connections 是底线:P-256 + AES-CCM,所有新设备都应启用。
  4. BLE 安全独立发展:LE Secure Connections(BT 4.2+)与经典对齐。
  5. CTKD 是双模便利与风险的结合:配对一次双模共用,但也被 BLURtooth 利用,BT 5.1+ 可通过权限控制缓解。
  6. 近年攻击都在利用旧模式或弱配置:KNOB/BLURtooth/BIAS 都针对 Legacy、短密钥或缺乏双向认证的场景。
  7. 配置建议:强制 Secure Connections、限制 Just Works、谨慎启用 CTKD、定期重配对、安全存储密钥。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐