上一章介绍了配对流程的第一阶段,剖析了配对第一阶段的配对请求包和配对响应包的各个字段的含义和使用。接下来就进入了ble配对的阶段二,在该阶段双方会根据阶段一中的配对信息选择合适的配对和认证方式,并且生成会后续链接加密的密钥。
下面再回顾下整个配对流程框架:
配对是为了建立密钥,密钥用来加密连接,发布密钥是为了共享密钥,用于加密重新连接、验证签名和随机地址解析,上图是蓝牙配对的整个流程图。
配对有三个阶段,两个阶段是必须使用的,第三阶段可选:
阶段一:Pairing Feature Exchange 交换配对特性
阶段二:(LE legacy pairing): Short Term Key (STK) Generation 传统配对方式,生成STK
阶段二:(LE Secure Connections): Long Term Key (LTK) Generation 安全配对方式, 生成LTK
阶段三:Transport Specific Key Distribution 发布密钥
本章我们主要来讲解配对的阶段二 首先双方会配对阶段一中的配对信息选择配对方式,配对方式主要有两种legacy pairing 和 secure pairing。如果双方都支持secure pairing则选择secure pairing,否则选择legacy pairing配对方式。
legacy pariing会在该阶段生成STK,这个是后续绑定和加密的关键。而STK则是通过TK来生成。legacy pairing的认证方式有:Just_Work, Passkey Entry, OOB这三种方式。
配对流程分析:
LP_CONFIRM_I = c1(TK, LP_RAND_I, Pairing Request command, Pairing Response command, initiating device address type, initiating device address, responding device address type, responding device address)
LP_CONFIRM_R = c1(TK, LP_RAND_R, Pairing Request command, Pairing Response command, initiating device address type, initiating device address, responding device address type, responding device address)
c1可以近似的认为就是AES算法
STK的计算公式如下:
STK = s1(TK, LP_RAND_R, LP_RAND_I)
下面分别是Just Works, passkey entry 和 OOB模式的配对流程图
Just Works 配对流程图, TK设置为0
passkey entry 配对流程图,TK为输入的pin code值
OOB配对流程图,TK为外部OOB数值
由上面三个流程图可以看出,上面三个流程最大的区别就是TK值的生成方式不同,其他没什么差异。
secure pairing与legacy paring不同, secure pairing在该阶段是直接生成LTK,而不是生成STK。secure pairing在该阶段使用的算法是公钥算法ECDH算法,而不是对称加密算法AES算法,是具备防窃听攻击的。关于ECDH的介绍可以参考我之前的博客。https://blog.csdn.net/hesuping/article/details/125760901?spm=1001.2014.3001.5501
DHKey = P256(SKa, PKb) = P256(SKb, PKa)
进入配对验证阶段,该阶段有三种方式,分别是Just Works模式,passkey entry模式,Numeric Comparison 模式和OOB模式。
secure pairing配对 Just Works模式配对流程图 secure pairing配对 Passkey Entry模式配对流程图
secure pairing配对OOB模式配对流程图
由上面三个流程图可以看出,上面三个流程最大的区别就是ra和rb的值生成规则不同。
该阶段主要是用来生成LTK,当然也会生成MACKey, LTK的生成和计算是依赖于上面生成的DHKey的, 流程如下:
在该阶段会互相交换MAC地址,生成LTK和MacKey,并且会生成Ea 和 Eb。LTK就是用来生成后续加密链路的session key的
额外补充一点,蓝牙支持一种交叉密钥派生的特性,简称CTKD,这种特性可以使用ble配对生成的LTK转化为BT配对的LinkKey,从而实现通过BLE的配对将其转化成BT的配对,这个特性用在蓝牙耳机、智能手表等产品上可以大幅提升产品的配对体验。当然也可以反过来,通过BT配对生成的LinkKey可以转化为BLE的LTK。这个特性后面会专门写一篇来介绍。
T配对的LinkKey,从而实现通过BLE的配对将其转化成BT的配对,这个特性用在蓝牙耳机、智能手表等产品上可以大幅提升产品的配对体验。当然也可以反过来,通过BT配对生成的LinkKey可以转化为BLE的LTK。这个特性后面会专门写一篇来介绍。
以上就是BLE配对流程的阶段二,在该阶段根据设备的配对特性,选择了不同的配对和鉴权方式,并且生成了对应的STK或者LTK,为后续链路的加密打下基础。
那后续的链路是如何加密的?我们会在下个章节来剖析。