蓝牙配对(paring)和绑定(bonding)的概念及流程详解
蓝牙配对(paring)和绑定(bonding)的概念及流程详解
基本概念
二者都是在蓝牙链路(LL)层实现的一种射频通信安全机制,需要注意的是,不经过配对和绑定蓝牙双方也是可以进行数据传输的。也就是说配对和绑定只是在蓝牙连接明文传输的基础上实现了加密传输,且由于是在LL层实现的数据加密,因此对于应用层来说是无感的、透明的。
配对(paring):包括配对能力交换、设备认证以及STK(short-term Key)生成、加密连接及机密信息分发等过程,配对的目的有三个:加密连接、认证设备、生成密钥
绑定(Bonding):由配对状态中生成的LTK,配对双方将这个LTK保存起来,那么这两个设备再次重连的时候,就可以跳过配对流程,直接使用LTK对蓝牙连接进行加密传输,这种状态称为绑定状态。
因此可以看出,在大多数情况下,这两者组合起来使用,即绑定是配对后的状态。
配对-绑定流程
阶段1:配对特征交换,包含Paring Request、Paring Respone,在这个过程中完成OOB data flag、IO capability等信息交换
阶段2:通过SMP (security manger protocol)完成配对认证。根据IO能力和是否存在OOB,存在以下几种配对方式:Just work、Numeric comparison、Passkey、OOB。
分为legacy paring和sc paring流程。
legacy paring:设备通过TK生成确定数,如果这个确认数相同,则认证通过,生成STK;
sc paring:通过Diffie-Hellman算法生成LTK
- 阶段三:秘密信息分发(Key Distribution)。连接加密后,主次机会进行秘密信息分发,包括IRK、identity address等
总结
如上所述,如果配对的两个设备生成了LTK及其他秘密信息,并且把LTK及其他秘密信息保存到Flash等永久化存储设备中,那么我们就可以说这两个设备绑定成功。换句话说,paring和bonding是两个不同的概念,paring更强调认证和密钥生成,而bonding更强调密钥保存。一旦两个设备bonding成功,那么这两个设备断开再次重连的时候,主机就可以发起加密流程,从而使用paring生成的LTK对后续的连接进行加密。