1. 蓝牙通信安全威胁分析:中间人攻击、数据窃听、重放攻击、设备伪造、密钥泄露风险
BLE(Bluetooth Low Energy)通信在未经加密或仅使用传统 Legacy Pairing 时,面临多种安全威胁。攻击者可通过低成本硬件(如 nRF52840 Dongle)在广播、扫描、连接、数据传输各阶段实施以下五类攻击。理解每种威胁的原理与攻击面,是后续选择 Keystore 加密方案的前提。
BLUETOOTH_ADVERTISE、BLUETOOTH_CONNECT、BLUETOOTH_SCAN 等运行时权限。权限适配是加密通道建立的前置条件,但不在本章展开。
1.1 中间人攻击(Man-in-the-Middle, MITM)
攻击者在两台蓝牙设备(如手机与传感器)之间插入虚假连接,同时扮演“外围设备”与“中央设备”,实时转发(或篡改)未加密的协议数据单元(PDU)。在 BLE Legacy Pairing(Just Works)中,因为没有认证密钥,攻击者仅需监听配对过程的临时密钥(TK)即可完成劫持。
1.2 数据窃听(Eavesdropping)
BLE 工作在 2.4GHz ISM 频段,未加密的数据包在空中以明文传输。攻击者通过 BLE 嗅探器(如 Wireshark + nRF Sniffer)即可捕获所有 Attribute Protocol(ATT)读写请求和响应。窃听在 Legacy Pairing 中尤其严重:即使使用了 STK(Short Term Key),若 TK 在配对过程中被泄露(如固定为 000000),则 STK 可被计算,后续链路加密形同虚设。
| 攻击阶段 | 抓包内容示例 | 信息泄露风险 |
|---|---|---|
| 广播扫描 | 设备名称、UUID、制造商数据 | 设备类型泄露,可被定位追踪 |
| 配对过程 | TK/STK、LTK、IRK | 长期密钥泄漏,后续所有会话被破解 |
| 数据传输 | 传感器读数、令牌、用户输入 | 敏感数据(心率、地理坐标、支付信息)泄露 |
1.3 重放攻击(Replay Attack)
攻击者先记录一次合法的加密数据包(如“解锁门”指令),然后在任意时刻重放该数据包,使接收方再次执行相同操作。BLE 协议在链路层使用 Packet Counter 和 IV 防止重放,但在应用层未使用计数器或时间戳时,攻击者仍可能在协议栈外重放。
// 典型重放场景:BLE 锁
// 合法数据包(加密后):0x01 0x02 0x03 0x04 0x05 0x06 ... (静态指令)
// 重放时直接发送完全相同的字节序列,锁端未做防重放校验 -> 开锁
// 防护:每次指令加入单调递增序列号,并在接收方验证序列号是否大于上次记录。
1.4 设备伪造(Spoofing / Impersonation)
攻击者通过嗅探获得合法设备的蓝牙 MAC 地址(可修改),使用已公开的 Identity Resolving Key(IRK)或直接复制设备广播数据,伪造一个与原设备同名的“克隆设备”。用户手机无法区分真假连接,将敏感数据发送给攻击者。
- MAC 地址欺骗:BLE 4.2 前使用静态随机地址,攻击者可直接拷贝。
- 广播数据克隆:若设备未在广播中包含数字签名或认证字段,伪造非常容易。
- 配对后冒充:若 LTK 已被窃取,攻击者可成功完成后续连接加密协商。
1.5 密钥泄露风险(Key Leakage)
蓝牙密钥(LTK、IRK、CSRK)通常存储在设备的 NVRAM 或系统密钥池中。在 Android 上,Legacy 方式使用 BluetoothDevice.setPairingConfirmation 等 API 时,密钥可能以明文形式传入应用内存。此外,以下场景都可导致密钥泄露:
- 应用内存 dump:调试工具(如 Frida、Xposed)可读取 Java/Kotlin 堆中的密钥 byte[]。
- 文件系统未加密:SharedPreferences 或 SQLite 中明文存储 LTK。
- 日志泄漏:
Log.d输出密钥字节(常见于调试阶段)。 - 备份恢复:ADB backup 或云备份包含密钥文件。
1.6 五种威胁的防护优先级概述
| 威胁 | 当前 Android BLE 原生防护 | 本课程 Keystore 加密增强点 | 优先级 |
|---|---|---|---|
| 中间人攻击 | LE Secure Connections (BLE 4.2+) | 应用层签名 + 会话密钥预置 | ⭐⭐⭐ |
| 数据窃听 | 链路层 AES-CCM 加密 | 应用层全包加密(包含 ATT 头部) | ⭐⭐⭐ |
| 重放攻击 | Packet Counter(链路层) | 应用层单调序列号 + MAC | ⭐⭐ |
| 设备伪造 | Resolvable Private Address + IRK | 应用层 RSA/ECDSA 数字签名 | ⭐⭐ |
| 密钥泄露 | 系统密钥存储(TEE/StrongBox 有限支持) | Keystore 硬件级加密 + 访问控制 | ⭐⭐⭐⭐ |