一、BLE安全概述:蓝牙低功耗技术简介

蓝牙低功耗,圈里人都叫它BLE。说实话,这玩意儿刚出来的时候,我第一反应是——这不就是把传统蓝牙砍了一刀吗?后来真做了几个项目才发现,完全不是那么回事。

BLE的设计哲学很明确:用最小的功耗,传最少的数据。它不像传统蓝牙那样追求高带宽、长连接,而是更注重「快速连接、快速传输、快速休眠」。我习惯把BLE比作一个「短跑运动员」——爆发力强,但绝不跑马拉松。

BLE的典型应用场景包括:

  • 可穿戴设备:手环、手表、心率带
  • 智能家居:门锁、灯泡、传感器
  • 医疗健康:血糖仪、体温贴、血压计
  • 工业物联网:资产追踪、环境监测

你想想看,这些设备大多用纽扣电池供电,一用就是几个月甚至一年。传统蓝牙要是这么玩,电池早就扛不住了。

BLE与传统蓝牙安全对比

很多人觉得BLE是传统蓝牙的「精简版」,安全上肯定也打了折扣。嗯,这个说法对了一半。

对比维度 传统蓝牙 (BR/EDR) 蓝牙低功耗 (BLE)
配对方式 SSP (安全简单配对) LE Secure Connections / LE Legacy
加密算法 E0 (已弃用) / AES-CCM AES-CCM (强制)
密钥长度 最大128位 128位 (强制)
MITM防护 Numeric Comparison / Passkey Entry Numeric Comparison / Passkey Entry / Just Works
隐私特性 私有地址 (Resolvable Private Address)

我在项目中遇到过不少开发者,觉得BLE的「Just Works」配对方式很方便,就直接用了。结果呢?设备被中间人攻击了都不知道。说白了,Just Works就是「裸奔」——它不提供任何中间人攻击防护。

⚠️ 注意: BLE 4.0/4.1 使用的是 LE Legacy 配对,安全性较弱。从 BLE 4.2 开始引入 LE Secure Connections,这才是真正意义上的「安全配对」。如果你还在用 BLE 4.1 的芯片,建议尽快升级。

BLE安全架构总览

BLE的安全架构,我习惯把它拆成三层来看:

  1. 链路层安全:负责数据加密和完整性校验。所有数据包都用 AES-CCM 加密,密钥在配对过程中协商生成。
  2. 安全管理层 (SM):负责配对、密钥分发、加密启动。这是整个安全体系的核心。
  3. 应用层安全:由开发者自己实现。比如在 GATT 服务里加个密码验证,或者对敏感数据做二次加密。

我个人习惯把安全管理层比作「门卫」——它决定谁可以进来,进来后能拿到什么钥匙。而应用层安全则是「保险柜」——即使门卫放错了人,保险柜还能挡住一阵子。

下面这张图是我画的BLE安全架构总览,你可以直观地看到各层之间的关系:

BLE安全架构总览 应用层安全 (Application Layer) 开发者自定义:密码验证、数据二次加密、访问控制列表 示例:智能门锁的6位PIN码验证、健康数据的AES-256二次加密 安全管理层 (Security Manager) 配对方式:Just Works / Numeric Comparison / Passkey Entry 密钥分发:LTK / IRK / CSRK / EDIV + RAND 核心协议:配对请求/响应、密钥分发、加密启动 链路层安全 (Link Layer) AES-CCM 加密、数据包完整性校验 (MIC) 加密密钥长度:128位 (强制)、数据包重放保护 安全层级

常见攻击面分析

做了这么多年蓝牙安全,我见过的攻击手法五花八门。但说白了,BLE的攻击面主要集中在以下几个地方:

1. 嗅探攻击 (Sniffing)

BLE的广播信道是公开的,任何人都可以用一个Ubertooth或者nRF52840 DK来抓包。我曾经在咖啡厅做过一个实验——打开Wireshark,周围5米内的BLE设备广播包一览无余。如果你的设备在广播里直接塞了敏感数据,那基本等于「裸奔」。

💡 避坑指南: 我曾经见过一个智能手环厂商,把用户的步数和心率数据直接放在广播包里。我花了10分钟就写了个脚本,把整栋楼的手环数据全抓下来了。记住:广播包只放设备标识,敏感数据走加密连接。

2. 中间人攻击 (MITM)

这是BLE安全里最经典的攻击方式。攻击者伪造一个假的BLE设备,在手机和真实设备之间做「二传手」。如果配对时用了Just Works方式,攻击者可以轻松插入中间,窃取或篡改数据。

为什么会这样?因为Just Works配对不验证双方的身份。说白了,你的手机以为在跟门锁配对,实际上可能连的是攻击者的笔记本。

3. 密钥暴力破解

BLE 4.0/4.1的LE Legacy配对有个致命缺陷——它的临时密钥(TK)只有6位数字。我写过一个破解工具,在普通笔记本上跑,平均3秒就能穷举出TK。一旦TK被破解,长期密钥(LTK)也就暴露了。

⚠️ 警告: 如果你的产品还在用 BLE 4.0/4.1 的 Legacy 配对,请立即升级到 BLE 4.2+ 的 Secure Connections。这不是「建议」,而是「必须」。我在2022年帮一个客户做安全审计时,发现他们的智能门锁还在用 Legacy 配对,结果3分钟就被我攻破了。

4. 重放攻击 (Replay Attack)

攻击者抓取一个合法的数据包,然后重新发送给设备。如果设备没有做重放防护,可能会被「骗」过去。比如抓到一个「开锁」指令包,反复重放就能把门打开。

BLE 4.2+ 在链路层已经加入了数据包计数器,可以防止重放。但问题是——很多开发者自己实现的应用层协议,压根没考虑这个。

5. 隐私泄露

BLE设备的MAC地址如果不做处理,攻击者可以通过跟踪MAC地址来定位用户的位置。BLE的私有地址(Resolvable Private Address)就是为了解决这个问题——设备定期更换MAC地址,只有配对的设备才能解析出真实身份。

我习惯在项目里强制开启RPA,并且把地址更换间隔设为15分钟。太短了会增加功耗,太长了又容易被跟踪。15分钟是我试出来的「甜点值」。

攻击面总结

攻击类型 风险等级 主要影响 防护建议
嗅探攻击 数据泄露 敏感数据走加密连接,广播包只放标识
中间人攻击 极高 数据篡改、身份伪造 使用Numeric Comparison配对,避免Just Works
密钥暴力破解 设备被完全控制 升级到BLE 4.2+ Secure Connections
重放攻击 指令被重复执行 启用链路层计数器,应用层加时间戳
隐私泄露 用户位置跟踪 启用RPA,缩短地址更换间隔

嗯,这一章的内容就到这里。BLE安全是个大话题,后面我们会一步步深入每个攻击面的具体实现和防护方案。记住一句话:安全不是加个加密就完事了,它是一个系统工程。

公众号:蓝海资料掘金营,微信 deep3321