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

手把手教你:分析安全连接的密钥分发阶段

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

一、前言

上一篇介绍了链接层的指令LL_START_ENC_RSP,这个指令是链接层的最后一条指令,之后就是第三阶段,密钥的分发阶段,也称之为绑定阶段。

本篇属于理论篇,因为第三阶段的内容属于加密的的内容,无法通过抓包进行查看,所以这里就不展示抓包的内容了。

备注:此过程属于配对第三阶段

二、阅读说明

1、泰凌微芯片使用者。

2、蓝牙 spec学习者

三、正文

1、密钥分发时序图

2、蓝牙spec中关于第三阶段密钥分发解释

从上面可以看出,在安全连接中,第三阶段下发的信息,并没有讲第2小节中的时序图里面所有的信息全部进行下发,尤其是没有将长期密钥LTK下发给对方,这就是安全连接和传统配对在第三阶段最大的一个区别,传统配对是会下发长期密钥LTK的。

从蓝牙spec中可以看到,在此阶段的时候,会下发IRK,彼此的MAC地址,还有CSRK给到对方,如果有用到CSRK那么就会下发,如果没有用到那就不会下发。

具体决定下发什么,需要看第一阶段中的配对请求(Pairing Request)和配对响应(Pairing Response)指令,里面有一个字段是会标识的,如下:配对请求(Pairing Request)

配对响应(Pairing Response)

Initiator Key Distribution中的内容

EncKey:如果该字段置1,那么对于传统配对,则需要使用加密信息命令(Encryption Information command)下发长期密钥LTK,并且接下来要使用主机标识命令(Master Identification command)下发EDIV和Rand,如果是安全连接,则忽略该字段。

IdKey:如果该字段置1,那么需要使用身份信息命令(Identity Information command)下发IRK,并且接下来需要使用身份地址信息命令(Identity Address Information)下发彼此的MAC地址和类型。

SignKey:如果该字段置1,那么需要使用签名信息命令(Signing Information command)下发CSRK。LinkKey:该字段忽略,我没用到过。

3、主从机的Initiator Key Distribution主机的Initiator Key Distribution

从上图可以看出主机对该字段都置位了,说明都可以下发。

从机的Initiator Key Distribution

从上图可以看出从机只有IRK被置位了

所以综合主机和从机的Initiator Key Distribution信息,可以知道主从机在第三阶段交互的指令为身份信息命令(Identity Information command)和身份地址信息命令(Identity Address Information)。

4、身份信息命令(Identity Information command)

从上图可以看出,IRK为16字节。

5、身份地址信息命令(Identity Address Information)

从上图可以看出该命令的字段关键信息分为2个,一个是AddrType也就是地址类型,另一个是BD_ADDR,也就是设备地址。

四、结尾

本篇主要讲解了安全连接的第三阶段,主从机互相发送了哪些命令给到对方。下一篇讲解安全连接的重连。

相关推荐