一、前言
上一篇介绍了链接层的加密流程,本篇将介绍链接层的第一条指令LL_ENC_REQ。备注:此过程属于配对第二阶段。
二、阅读说明
三、正文
1、LL_ENC_REQ指令的位置
2、LL_ENC_REQ在蓝牙 spec中的解释
- Rand:64 bitsEDIV:16 bitsSKDm:主机的会话密钥分散因子IVm:主机的初始化向量
3、空中LL_ENC_REQ数据包
- Rand:0EDIV:0SKDm:2433915225196834084IVm:2919232755
因为当前属于第一次配对的加密流程,所以Rand和EDIV都为0,而SKDm是用来产生会话密钥的,需要和结合SKDs相结合,这个SKDs是在从机的LL_ENC_RSP指令中的,当两则结合之后需要和LTK使用AES-CCM来产生会话密钥,而会话密钥则是用来加密数据和解密数据的。
SKD生成方法:
会话密钥生成方法:
图中的encryption 是 AES128算法,如下公式:
SK = e(STK,SKD)
备注:大家关于SKD这块和SK的计算方法详细的可以参考如下的文章:手把手教你:解析 BLE 链路层 LL_ENC 指令与会话密钥生成原理
四、结尾
本篇讲解了配对第二阶段LL_ENC_REQ指令,并介绍了里面相关的字段的函数,下一篇将介绍第从机回复指令LL_ENC_RSP。
阅读全文
126