• 正文
  • 相关推荐
申请入驻 产业图谱

手把手教你:分析安全连接的重连过程

08/17 08:54
149
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

一、前言

上一篇介绍了安全连接的密钥分发过程,本篇将解释安全连接的重连过程。

该篇也是安全连接的最后一篇,虽然关于BLE安全连接方面还有很多的内容,比如数字比对,按键输入,OOB等内容还没有介绍到,不过总体来说,该合集已经将安全连接的大体的脉络和流程梳理清晰了,其他的读者如果有兴趣或者实际工作中用到了可自行研究,我在这里就不一一进行介绍了。

如果将来实际的项目中有遇到,我也会考虑继续编写安全连接方面的内容,不过到目前为止,现在的也已经够用,闲话不多说,本篇开始安全连接的最后一篇。

备注:此过程属于配对完成之后的重连过程。

二、阅读说明

1、安全连接学习者。2、蓝牙 spec学习者

三、正文

1、主机主动发起安全配对请求

上图中Host A和LL A代表的是主机,HostB和LL B代表的是从机,如果是主机发起重新,那么就由主机发起LL_ENC_REQ指令给到从机。

2、LL_ENC_REQ指令

2.1、蓝牙spec中的解释

如上图所示,LL_ENC_REQ中包含了4个字段,其中有Rand,EDIV,SKDm和IVm。

2.2、LL_ENC_REQ抓包指令

由上图可以看出,Rand和EDIV都为0,当SKDm和IVm都是有值的,那为什么Rand和EDIV都为0呢。

其一是因为在配对第三阶段密钥下发的时候,根本就没有下发关于Rand和EDIV的相关指令,其二是因为安全连接当中不需要用到该参数,该参数是用在传统配对(Legacy)中的,关于该描述见蓝牙spec,如下:

而为什么要下发关于SKDm和IVm的值,是因为SKDm的值需要和从机的SKDs的值相结合起来生成SDK,之后SDK再和LTK一起用加密算法生成会话密钥SK,如下:

备注:安全连接第三阶段下发密钥的文章如下,有兴趣的读者可以查阅手把手教你:分析安全连接的密钥分发阶段

3、从机发起重连

如上图所示,从机先发起加密请求Security Request,然后主机进行判断,如果当前已经有LTK,且符合Security Request里面的要求,最后一点是当前的链路不是加密链路,那么主机就会开始进行加密,也就是发送LL_ENC_REQ指令给到从机,该流程可以参考1小节,关于主机是否需要走1小节的链路层时序,我们可以参考如下的流程图:

如果都符合重连的要求,那么最后会走到上图中的箭头的地方,也即是开始链路层的的加密了,参考1小节中的时序。

4、Security Request命令

如上图所示是Security Request的解释,之前的文章中有解释,这里就不再进行赘述.

四、结尾

本篇主要讲解了安全连接的重连过程,是安全连接的最后一篇,感谢大家的阅读。

相关推荐