本文引自:https://blog.bluetooth.com/bluetooth-pairing-part-1-pairing-feature-exchange
蓝牙的Spec规格有三个主要架构层,从上往下依次是application,host and controller。其中host层有一个为配对和密钥分配定义方法和协议的安全管理模块(SM),相应的安全工具箱以及定义配对指令框架形式,框架结构以及超时限制的安全管理器协议(SMP)。SM采用密钥分配的方式执行无线电通信中的身份和加密功能。配对以建立密钥,然后就能用密钥来加密链路。然后执行传输特定的(transport specific)密钥分配来分享密钥。密钥可用来加密日后的重连,验证签名数据或者执行随机地址解析。
总的来说配对过程有3个阶段:
关于LE legacy pairing and LE Secure Connections,可能大部分人并不是很了解.简单来说,LE是蓝牙Spec4.0之后的主要特性之一,而蓝牙SPec4.2则继续对LE进行了升级,比如对物理传输添加了安全连接特性(Secure connections),升级了配对功能,在物理传输中采用了美国联邦信息处理(FIPS)许可的算法 (AES-CMAC and P-256 elliptic curve). 所以,为了加以区分,我们将Bluetooth 4.0 and 4.1 spec中的配对成为传统配对. Figure 1 为传统配对和安全连接都适用的配对流程图.
这一篇中,我们主要讨论第一阶段,即配对特性交换。配对就是安全特性的交换,包括IO功能,对于中间人保护的要求等。两台设备之间的配对信息交换是通过配对请求(pairing request) and 配对响应(pairing response)数据包实现的。这两种信息的内容如下图所示:
(1)code
(2)IO
IO,即input/output. IO功能结合在一起可生成这一字段的值。对于Input来讲,detail值列表如下:
对于Output来讲,detail值列表如下:
将input 和 Output整合起来,就有了以下矩阵,定义了蓝牙设备应有的IO能力,detail值列表如下:
注释1:因为没有配对算法可以使用“Yes/No”的Input和“NoOutput”的output,因此IO功能结果为“NoInputNoOutput”。
另外,从上面的矩阵,可以大致了解响应的IO功能,并从下表中选择合适的值,放置到Pairing request/response数据包。
(3)OOB data flag
OOB,即out-of-band,意为"带外"。采用外部通信方法交换一些配对过程中使用的信息。OOB没提可能是任何一种能够传输相应信息的其它无线通信标准,如NFC或者二维码。
.BF, “Bonding_Flags”
(4)BF(bonding flags)
绑定(Bonding),是配对发生之后的长期密钥交换,并将这些密钥储存起来以供日后使用,即在设备间创建永久的安全连接。配对机制是绑定的前提。
“MITM”
(5)“MITM”
MITM,即“Man-In-The_Middle”意为"中间人"。这一字段是1个比特位的标识,如果设备需要MITM保护,则设置为1.如果您对MITM有兴趣,请参考 the Bluetooth Core Specification v4.2, Vol1, Part A, 5.2.3.
(6)“SC”
SC,即“security connections”。这一字段是1个比特位的标识,设置为1,已请求低功耗安全连接配对.
可能的配对机制结果为:如果两台设备均支持SC,则采用SC;否则采用低功耗传统连接。因此这一标识是决定第二阶段配对方法的一项重要指标。
(7)“KP”
KP,即“keypress”。这一字段是1个比特位的标识,只用于万能钥匙(Passkey)进入协议,在其他协议中可忽略。万能钥匙进入是传统配对和安全连接的典型配对方法,因此这一部分将在后面进行单独讨论。
(8)“最大加密密钥规模(“Maximum Encryption Key Size”)”
最大加密密钥规模范围从7-16个八位字节。
(9)“发起者密钥分配和响应者密钥分配(“Initiator Key Distribution” & “Responder Key Distribution”)”
这两个字段定义如下。具体细节也将在后面进行单独讨论。
当配对特性的交换开始之后,发起者和响应者会通过配对请求和响应来交换彼此的信息。有了这些信息,发起者和响应者就能确认对方的IO能力(这是传统配对和安全连接都所需的),然后选择配对方法—Just Work,Passkey Entry, Numeric Comparison or Out of Band—to use in Phase2. 详细内容请见BLE SM(2): 配对方法和密钥生成(Pairing Method and Key Generation).