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的老配对方式。

⚠️ 注意: 即使加密了,如果密钥交换过程被破解,加密等于白搭。蓝牙2.1之前的固定PIN码配对,就是个典型。

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+)
💡 避坑指南: 我曾经在项目中遇到一个坑——经典蓝牙的E0加密算法有已知弱点。如果产品需要过FIPS认证,E0是通不过的。建议新设计直接上蓝牙4.2+的AES-CCM。

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):双向加密通信,适合大规模设备网络
总结一下: 蓝牙安全架构的核心思路是「先配对、再加密、后通信」。配对阶段解决「你是谁」,加密阶段解决「你说的话别人看不懂」,通信阶段解决「你说的话没被改过」。这三步缺一不可。

我经常跟团队说一句话:蓝牙安全不是加个密码就完事了。你得从威胁模型出发,一层一层往上搭。物理层防窃听,链路层防篡改,应用层防滥用。每一层都有坑,每一层都得踩过才知道。

接下来的章节,我会带你深入每一层的细节。从配对协议到加密算法,从密钥管理到隐私保护——咱们一个一个啃。