BLE 与经典蓝牙免配对直连的秘密:CTKD 跨传输密钥派生机制深度解析
文章目录
- BLE 与经典蓝牙免配对直连的秘密:CTKD 跨传输密钥派生机制深度解析
- 前言
- 一、总体认识:一条横切能力链
- 1.1 一句话定性
- 1.2 硬前提:LE Secure Connections
- 1.3 双通路:标准与自研并存
- 二、构建链:宏加载与配置覆盖陷阱
- 2.1 宏加载链
- 2.2 两个构建期陷阱
- 三、通路 A:标准 Fast Pair 完整时序
- 3.1 全流程时序
- 3.2 SC 开关三态保护:一个精妙的兼容性设计
- 3.3 ACL 满时的 pending 重放
- 四、通路 B:自研命令协议编排
- 4.1 setup 状态机与两个缺口
- 五、密钥派生数据链路:四层分层
- 5.1 双向派生:两个方向都有接口证据
- 5.2 派生密钥回调载荷(三层同构)
- 5.3 一个"能力存在但无人使用"的发现
- 六、双耳密钥一致性:TWS 场景的密钥同步
- 6.1 双耳密钥同步时序
- 6.2 一致性对象矩阵
- 6.3 角色切换场景
- 6.4 异常恢复评估
- 七、扩展指导
- 7.1 常见定制修改清单
- 7.2 最小验证代码:监听派生事件
- 八、排错清单与缺口总账
- 8.1 高频问题排查
- 8.2 缺口总账与最小完善方案
- 总结
前言
用过 TWS 耳机的人都有这个体验:手机靠近耳机弹出配对窗,点一下"连接",之后经典蓝牙的音频通道就通了——没有 PIN 码、没有确认弹窗、没有等待。这背后的功臣就是 CTKD(Cross-Transport Key Derivation,跨传输密钥派生):蓝牙核心规范定义的机制,让一次 LE Secure Connections 配对派生出的 LTK 可以转换为 BR/EDR Link Key(或反向),实现"BLE 配对完成 → 经典蓝牙免配对直连"。
但 CTKD 在实际固件里不是一个模块,而是一条横切能力链:构建宏决定编译 → 闭源 SMP 执行密码学派生 → 闭源 GAP 上报派生事件 → 开源应用编排层负责"让手机连得上经典蓝牙"。理解这条链,才能回答一系列实战问题:为什么 Fast Pair 之后手机还要显式配对?为什么 LE Audio 配置会顺手打开 CTKD?为什么从耳能免配对加入 TWS?
本文基于 BES best1702 系列 TWS 耳机固件(IBRT 架构)的源码梳理,覆盖:
- CTKD 的协议本质与硬前提(LE Secure Connections)
- 构建期宏加载链与"配置覆盖"的经典陷阱
- 双通路编排:标准 Fast Pair(GFPS)与自研命令协议
- 密钥派生的四层数据链路:谁是闭源的、谁可定制
- 双耳密钥一致性:TWS 场景下的密钥同步与角色切换
- 五个已知缺口与最小完善方案、高频排错清单