一、前言
原本这一章节用来讲解安全连接的,不过考虑到重连这块的内容未进行讲解,故该篇先讲解重连相关的流程。
二、阅读说明
1、泰凌微芯片学习者。
2、蓝牙协议学习者
三、正文
1、重连流程讲解
1.1、重连流程示意图
流程解释:
- 主机和从机进行再次连接,从机首先发起Security Request命令给到主机,要求主机开始走加密流程,主机收到从机发出的Security Request命令之后,开始走链接层加密流程,关于连接层加密流程的示意图如第2小节所示。
1.2、Security Request命令讲解
上图是Security Request命令的数据格式,其中AuthReq字段内容如下:
当主机收到该命令之后,会去本地取得当前LTK的安全属性,如果当前的安全属性和AuthReq字段里面的安全属性相一致,则开始下一阶段,发起链接层加密请求也就是第2小节的内容,如果不一致则重新开始进行配对,
2、连接层加密流程示意图
上图是链接层加密流程示意图,关于里面的命令我在之前的文章中有详细的讲解,本次只需要注意LL_ENC_REQ命令。LL_ENC_REQ命令格式如下图所示:
在该命令中会携带Rand和EDIV字段,从机通过该字段可以找到保存在本地的长期密钥LTK,只有找到了LTK,后续从机和主机的通信才能正常的加解密。
四、结尾
本篇结合蓝牙协议讲解了重连的流程,下一篇将讲解下重连的抓包数据。
我写了一个合集,不依赖 Nordic、泰凌、瑞萨等厂商商用 BLE 协议栈,从无线底层链路层入手,从零手写 BLE 广播扫描逻辑,拆解蓝牙广播包、信道切换、射频调度、广播数据解析完整流程,适合想吃透 BLE 底层、自主开发蓝牙工具、规避商用协议栈授权限制的嵌入式开发者。
114