2. 蓝牙安全基础:协议栈安全架构、配对与绑定、加密与认证
好,咱们进入蓝牙安全这个核心话题。说实话,TWS耳机最怕什么?怕被窃听、怕被劫持、怕配对过程被人中间插一脚。我当年调试一款TWS耳机时,就遇到过手机连上后,声音偶尔断断续续,后来发现是加密协商环节出了点小问题。嗯,咱们今天就把这块彻底讲透。
2.1 蓝牙协议栈安全架构
蓝牙协议栈的安全,说白了就是分层防守。从底层到上层,每一层都有自己的职责。
- 物理层:跳频扩频(FHSS)。这玩意儿天生就有一定的抗干扰和防窃听能力。你想想看,79个信道(BLE是40个)每秒跳1600次,想抓完整的数据包?没那么容易。
- 链路层:负责加密和认证的底层操作。比如生成加密密钥、校验数据完整性。
- L2CAP层:负责安全策略的协商。比如决定用哪种加密算法、密钥长度是多少。
- 应用层:用户直接接触的配对界面、输入PIN码等。
核心要点:蓝牙安全不是某一层的事,而是从射频到应用的全链路防护。我在项目中见过有人只关注应用层配对,忽略了链路层加密配置,结果数据在空口被截获——这就像只锁了家门,窗户全开着。
2.2 配对与绑定机制
配对,就是两个蓝牙设备第一次见面时互相认识的过程。绑定,则是把这次认识的结果存下来,下次见面不用再重新认识。
蓝牙配对经历了几个阶段,我按时间线给你捋一捋:
| 配对方式 | 安全等级 | 适用场景 | 我的评价 |
|---|---|---|---|
| Legacy Pairing(传统配对) | 低 | 蓝牙2.0及以前 | 基本可以忽略,太老了 |
| Secure Simple Pairing (SSP) | 中 | 蓝牙2.1+EDR | 现在还在用,但不够安全 |
| LE Legacy Pairing | 低 | BLE 4.0/4.1 | 有漏洞,不建议 |
| LE Secure Connections | 高 | BLE 4.2+ | 推荐使用,TWS首选 |
SSP有四种关联模型,我重点说两个:
- Numeric Comparison:两边显示一个6位数字,你确认一下是否一致。这是最安全的,因为中间人攻击无法伪造双方屏幕上的数字。我习惯在TWS耳机充电盒上做个LED显示这个数字,用户体验不错。
- Just Works:啥也不显示,直接连。方便是方便,但安全性最低。TWS耳机从充电盒拿出来自动配对,用的就是这种。嗯,这里要注意——Just Works虽然不显示数字,但底层加密还是有的,只是防不了中间人攻击。
避坑指南:我曾经在项目中遇到一个问题——耳机和手机配对后,每次重连都要重新配对。查了半天,发现是绑定信息没正确写入非易失性存储器。绑定信息包括:链路密钥(Link Key)、设备地址、本地EDIV等。如果这些没存好,下次连接时设备会认为你是新设备。
2.3 加密与认证流程
加密,保证数据只有你和对方能看懂。认证,保证对方确实是你要连的那个设备,不是冒牌货。
咱们以LE Secure Connections为例,看看加密认证的完整流程:
1. 配对阶段(Pairing Phase)
- 双方交换IO能力、认证需求
- 协商密钥生成方法(Numeric Comparison / Just Works等)
2. 链路密钥生成(Link Key Generation)
- 使用ECDH(椭圆曲线Diffie-Hellman)生成共享密钥
- 这一步防中间人攻击
3. 传输密钥分发(Transport Key Distribution)
- 分发LTK(长期密钥)、IRK(身份解析密钥)、CSRK(连接签名解析密钥)
4. 加密建立(Encryption Establishment)
- 使用LTK生成会话密钥
- 启用链路层加密
5. 认证(Authentication)
- 双方互相验证对方是否持有正确的LTK
- 通过加密随机数挑战完成
这里有个关键点——LTK(长期密钥)是配对时生成的,存在本地。每次重连时,设备会用LTK重新建立加密连接,不需要再次配对。这就是绑定的意义。
注意:LE Legacy Pairing使用的是AES-CCM加密,但密钥生成过程有漏洞。我建议所有TWS项目都强制使用LE Secure Connections。怎么判断?看蓝牙芯片是否支持BLE 4.2及以上版本。如果不支持,赶紧换方案。
再说说加密密钥大小的问题。蓝牙支持7字节到16字节的加密密钥。你可能会想,那肯定选16字节啊。没错,但有个坑——有些老手机只支持7字节。我遇到过一款TWS耳机,强制要求16字节加密,结果连不上某款老安卓手机。最后加了兼容模式:优先16字节,如果对方不支持,降级到7字节。
最后提一下隐私功能。BLE支持随机地址(Random Address),设备每次广播时地址都变,防止被跟踪。TWS耳机应该开启这个功能。我习惯的做法是:耳机在配对状态使用静态随机地址,配对成功后使用可解析随机地址(Resolvable Random Address)。这样既防跟踪,又让手机能认出自己的耳机。
总结一下我的经验:蓝牙安全不是配完对就完事了。你要关注的是:配对方式选对(推荐Numeric Comparison或LE Secure Connections)、绑定信息存好(掉电不丢失)、加密密钥够长(至少128位)、隐私功能开启(防跟踪)。做到这四点,你的TWS耳机在安全方面就及格了。