一、前言
上一篇介绍了链接层的指令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,也就是设备地址。
四、结尾
本篇主要讲解了安全连接的第三阶段,主从机互相发送了哪些命令给到对方。下一篇讲解安全连接的重连。
129