1. 蓝牙安全概述:蓝牙技术发展史、蓝牙安全威胁模型、蓝牙安全架构总览
1.1 蓝牙技术发展史:从电缆替代到万物互联
聊蓝牙安全,得先知道这技术是怎么来的。
1994年,爱立信想解决一个很实际的问题:设备之间连根线太麻烦了。于是他们搞了个短距离无线通信技术,取名「蓝牙」——致敬那位统一丹麦和挪威的国王哈拉尔·蓝牙。说白了,这名字本身就带着「连接」的寓意。
我入行那会儿,蓝牙还是1.1版本。传输速率只有723kbps,连传个MP3都费劲。但那时候大家已经很兴奋了——终于不用被线缆绑着了。
来看看蓝牙的几个关键节点:
| 版本 | 发布时间 | 核心变化 | 安全相关 |
|---|---|---|---|
| 1.0/1.1 | 1999-2001 | 基础规范,速率723kbps | 无强制安全机制 |
| 2.0 + EDR | 2004 | 增强速率,最高3Mbps | 引入简单配对 |
| 2.1 + EDR | 2007 | 安全简单配对(SSP) | 抗中间人攻击 |
| 3.0 + HS | 2009 | 高速,借用Wi-Fi | 沿用SSP |
| 4.0 | 2010 | 低功耗蓝牙(BLE) | AES-CCM加密 |
| 4.2 | 2014 | LE安全连接 | ECDH密钥交换 |
| 5.0/5.1/5.2 | 2016-2020 | 长距离、广播扩展 | LE隐私增强 |
| 5.3/5.4 | 2021-2023 | 周期性广播、加密广播 | PAwR加密 |
嗯,这里要注意。蓝牙4.0是个分水岭。之前是经典蓝牙(BR/EDR),之后是低功耗蓝牙(BLE)。两者安全机制完全不同。我在项目中见过不少工程师把两者混为一谈,结果出了安全漏洞。
1.2 蓝牙安全威胁模型:你的设备正在被谁盯着?
做安全,首先得知道敌人是谁。
蓝牙的威胁模型,我总结为四大类:
1.2.1 窃听(Eavesdropping)
蓝牙是无线信号,在空中飘着。只要在通信范围内,任何人都能抓包。我当年调试一个蓝牙键盘,用Ubertooth抓了一下,明文按键直接暴露——那款产品用的还是蓝牙2.0的老配对方式。
1.2.2 中间人攻击(MITM)
攻击者假装是设备A跟设备B通信,同时假装是设备B跟设备A通信。两边都被蒙在鼓里。
为什么会这样?因为蓝牙配对时,如果用户不验证数字或数值,攻击者就能插进来。我曾经测试过一款智能门锁,配对时没有强制用户确认6位数字,结果用一块树莓派就完成了MITM攻击——门锁被远程打开了。
1.2.3 身份追踪(Tracking)
蓝牙设备广播自己的MAC地址。你想想看,如果MAC地址不变,商家就能追踪你的移动轨迹。这就是为什么蓝牙4.0引入了随机地址——但实现不好照样被追踪。
1.2.4 拒绝服务(DoS)
蓝牙的物理层和链路层都很脆弱。连续发送干扰包,就能让设备断开连接。我见过一个智能家居项目,蓝牙网关被DoS攻击后,所有传感器都离线了——安全系统直接瘫痪。
1.3 蓝牙安全架构总览:分层防御
蓝牙的安全机制是分层设计的。每一层解决不同的问题。
我个人习惯把蓝牙安全架构画成三层:
- 物理层安全:跳频扩频(FHSS)。蓝牙在79个频道(BLE是40个)之间每秒跳1600次。攻击者要同时监听所有频道,成本很高。但这不是加密,只是增加窃听难度。
- 链路层安全:配对、认证、加密。这是蓝牙安全的核心。包括密钥生成、加密算法、完整性校验。
- 应用层安全:由Profile和Application自己实现。比如蓝牙支付,会在应用层再加一层TLS。
说白了,链路层是地基,应用层是房子。地基不牢,房子再漂亮也没用。
1.3.1 经典蓝牙(BR/EDR)安全架构
经典蓝牙的安全基于一个叫「链路密钥」的东西。配对时生成,之后每次连接都用它来认证和加密。
关键组件:
- 配对:传统配对(PIN码)、安全简单配对(SSP)
- 认证:基于挑战-响应机制,防止重放攻击
- 加密:E0流密码(已过时)、AES-CCM(蓝牙4.2+)
1.3.2 低功耗蓝牙(BLE)安全架构
BLE的安全机制比经典蓝牙更现代。它从4.0开始就强制使用AES-CCM加密。
关键组件:
- 配对:Just Works、Passkey Entry、Numeric Comparison、Out of Band
- 密钥分发:LTK(长期密钥)、IRK(身份解析密钥)、CSRK(连接签名密钥)
- 加密:AES-128 + CCM模式
- 隐私:可解析随机地址(RPA)
嗯,这里有个容易混淆的点。BLE的「配对」不等于「绑定」。配对是临时建立加密连接,绑定才是把密钥存下来。很多开发者只做了配对没做绑定,结果每次重连都要重新配对——用户体验差,安全性也打折扣。
1.3.3 蓝牙5.x新增安全特性
蓝牙5.0之后,安全方面主要加了:
- LE安全连接(LE Secure Connections):使用ECDH密钥交换,抗量子计算攻击(目前还扛得住)
- 加密广播(Encrypted Advertising):广播数据也可以加密了,防止被嗅探
- PAwR(Periodic Advertising with Responses):双向加密通信,适合大规模设备网络
我经常跟团队说一句话:蓝牙安全不是加个密码就完事了。你得从威胁模型出发,一层一层往上搭。物理层防窃听,链路层防篡改,应用层防滥用。每一层都有坑,每一层都得踩过才知道。
接下来的章节,我会带你深入每一层的细节。从配对协议到加密算法,从密钥管理到隐私保护——咱们一个一个啃。