本文目录导读:

针对蓝牙低功耗的劫持风险,防御需要从身份认证、加密通信、物理层防护和用户习惯四个维度入手,以下是具体的防范措施:
核心机制:LE Secure Connections(蓝牙5.0+)
这是最根本的防线,相比老旧的 LE Legacy Pairing,它强制使用 Elliptic Curve Diffie-Hellman (ECDH) 密钥交换。
- 防中间人攻击: 在配对过程中,双方会生成公钥并交换,如果劫持者试图插入中间,由于没有私钥,无法计算最终的共享密钥。
- 启用方法: 确保设备固件和主机协议栈支持
LE Secure Connections,在配对流程中,选择Numeric Comparision或Out-of-Band (OOB)密钥分发方式,而不是Just Works(Just Works 默认假设无MITM)。
严格的身份认证与绑定
- 非对称密钥绑定: 劫持往往发生在配对或重连阶段,设备应存储对端的 Identity Resolving Key (IRK) 和签名密钥,未绑定且未通过认证的设备,直接拒绝连接或限制其权限(仅限不可见广播,不响应数据通道)。
- 防止重放攻击: 每次连接都生成新的 Session Key,劫持者即使截获了上一轮连接的数据包,也无法用于新的连接。
数据链路层加密
- 必须启用加密: 所有数据通道的PDU(协议数据单元)都必须通过AES-CCM加密和MIC(消息完整性校验),劫持者无法伪造或篡改加密后的数据包。
- 密钥更新: 定期或在特定事件后(如收到异常MIC错误)触发
LL_ENC_REQ更新连接密钥(LTK,长期密钥),避免长期使用同一密钥导致被破解。
物理层与攻击载荷防御
- 跳频序列攻击: 劫持者如果通过发送全频段干扰来强制设备重新同步,然后设备可能同步到恶意的跳频模式。应对: 使用蓝牙规范规定的自适应跳频,并随机化初始跳频种子,不要发送NOP(无操作)指令,保持数据流以降低同步窗口。
- 广播劫持(Beacon劫持):
- 静态广播报文: 劫持者可以冒充一个已知Beacon。防御: 广播数据必须携带可变字段(如时间戳或滚动计数器)并进行数字签名,接收端校验签名,拒绝无签名或签名过期的报文。
- 连接性广播: 使用
Connectable Undirected广播类型时,攻击者可以用高功率发射器抢在受害者之前响应。防御: 在广播数据中嵌入 OOB(带外) 或通过QR码、NFC交换的随机数,周边设备必须出示该随机数才能建立连接。
应用层与固件加固
- 最小化攻击面: 关闭不使用的GATT服务(特别是DIS,设备信息服务)、特征值(Characteristic)和Advertising类型,仅暴露必要的读写特性,且写特性必须经过用户确认或授权。
- 固件签名与双端校验: 劫持者可能通过OTA(空中下载)利用,或通过植入恶意代码修改设备行为,固件必须用私钥签名,设备启动时校验公钥签名,且配对时服务器与客户端都应交换Nonce(一次性随机数)来确认对方是固件本身,而非模拟器。
- 超时与异常处理: 如果连接建立后,加密完成超时、MIC连续出错或密钥协商重复失败,立即断开连接并进入错误状态,需要物理重置或用户干预。
用户端与部署策略
- 拒绝“Just Works”: 除非绝对必要(如低价值传感器)并且没有私密数据,否则永远不要选择
Just Works配对方式,它完全无法防御中间人劫持。 - 使用高熵PIN码: 如果使用Legacy配对,必须使用6位以上包含数字和字母的PIN码,随机PIN远比固定“0000”安全。
- 位置与射频隔离: 在人员密集或高风险区域(如支付终端、门禁),降低设备的发射功率(TX Power),限制通信距离(比如低于1米),增加劫持者物理介入的难度。
- 带外认证(OOB): 利用NFC、二维码或超声信道交换配对密钥,劫持者无法同时监听蓝牙和NFC信道,这是对抗远程劫持的最强手段之一。
定期审计与漏洞跟踪
- 使用专业工具(如 Wireshark + Ubertooth 或 nRF Sniffer)抓取实际连接过程,验证是否出现了非预期的LL_REJECT_IND或密钥协商失败。
- 关注蓝牙核心规范的安全公告(如 BLEEDINGBIT, Sweyntooth 等CVE),及时更新蓝牙栈固件。
防御步骤优先级
- 强制启用 LE Secure Connections (ECDH密钥交换 + Numeric Comparision)。
- 所有数据通道使用 AES-CCM 加密 + MIC。
- 拒绝未绑定设备的高权限操作(如写特征值、读取隐私数据)。
- 广播数据包含签名并启用 OOB 认证。
- 用户端避免使用 0000 密码,关闭 Just Works。
通过以上链路层+应用层+物理层的组合措施,可以将蓝牙LE的劫持风险降到极低水平。