1.概念

配对是指“Master和Slave通过协商确立用于加(解)密的key的过程。指的是下图中的第7部分。
蓝牙配对过程分析

2.配对方法

Master和Slave有两种可选的配对方法:legacy pairing和Secure Connections。从命名上看,前者是过去的方法,后者是新方法。选择的依据是:当Master和Slave都支持Secure Connections(新方法)的时候,则使用Secure Connections。否则,使用legacy pairing。

3.配对过程

配对过程如图所示,主要由下面四部分完成:
蓝牙配对过程分析

3.1.Pairing Feature Exchange

用于交换双方有关鉴权的需求(authentication requirements),以及双方具有怎么的人机交互能力(IO capabilities)。其中最重要的是IO capabilities exchange。
蓝牙配对过程分析
IO的能力可以归纳为如下的六种:
NoInputNoOutput
DisplayOnly
NoInputNoOutput1
DisplayYesNo
KeyboardOnly
KeyboardDisplay
上述的IO能力决定了后续的鉴权方式。

3.2.Public key exchange

两个设备之间交换Public key。 一旦设备收到对端设备的公钥,它就可以开始计算Diffie Hellman密钥(DHKey)。耗时较多,应该尽早开始,以便用户交互可以隐藏计算时间。 在步骤8之前不需要DHKey。
当 Public key的长度大于DM1包的长度时,要使用专门的PDU来进行数据发送。
蓝牙配对过程分析

3.3.Authentication

通过SMP协议进行实际的配对操作,根据阶段1 “Feature Exchange”的结果,有三种鉴权方法可选:

3.3.1.OOB鉴权:

如果双方都支持OOB鉴权,则选择该方式(优先级最高)。由配对的双方,在配对过程之外,额外的交互一些信息,并以这些信息为输入,进行后续的配对操作。这些额外信息也称作OOB(out of band),OOB的交互过程称为OOB protocol。
蓝牙配对过程分析

3.3.2.MITM鉴权:

(man-in-the-middle)authentication,由两者方法:
Numeric Comparision方式鉴权:两个设备自行协商生成6个数字,并显示出来(要求两个设备具有显示能力),用户比较后进行确认(一致,或者不一致,要求设备有简单的yes or no的确认能力)。
蓝牙配对过程分析
Passkey Entry,通过输入配对码的方式鉴权。
蓝牙配对过程分析

3.3.3.Just Work:

Just Work,不需要用户参与,两个设备自行协商。

3.4.DHKey Checks

一旦设备完成鉴权过程,并且DHKey计算已完成,则检查生成的DHKey值。 如果成功,则两个设备都将完成向用户显示关于该过程的信息,否则控制器向主机发送消息以通知其停止显示该信息。
蓝牙配对过程分析

当配对过程完成后,link key就可以从DHKey中计算得到,并用做后续交互过程的输入(KEY + 明文 => 加密数据),通过HCI_Link_Key_Notification来通知host。
蓝牙配对过程分析

经过上述过程后,双方已经产生了加密key,因而可以建立加密的连接。加密连接建立后,可以互相传送一些私密的信息,例如Encryption Information、Identity Information、Identity Address Information等。