蓝牙解析(part11):BLE SM(1): 配对特性交换(Pairing Feature Exchange)

来源:互联网 发布:c语言中sleep函数后面 编辑:程序博客网 时间:2024/04/27 22:00

     本文引自:https://blog.bluetooth.com/bluetooth-pairing-part-1-pairing-feature-exchange

 

蓝牙的Spec规格有三个主要架构层,从上往下依次是application,host and controller。其中host层有一个为配对和密钥分配定义方法和协议的安全管理模块(SM),相应的安全工具箱以及定义配对指令框架形式,框架结构以及超时限制的安全管理器协议(SMP)。SM采用密钥分配的方式执行无线电通信中的身份和加密功能。配对以建立密钥,然后就能用密钥来加密链路。然后执行传输特定的(transport  specific)密钥分配来分享密钥。密钥可用来加密日后的重连,验证签名数据或者执行随机地址解析

总的来说配对过程有3个阶段:

  • Phase 1: 配对特性交换(Pairing Feature Exchange)
  • Phase 2: 低功耗传统配对 (LE legacy pairing): 生成短期密钥(Short Term Key (STK) Generation)
  • Phase 2: 低功耗安全连接 (LE Secure Connections):生成长期密钥( Long Term Key (LTK) Generation)
  • Phase 3: 传输特定的秘钥分配 (Transport Specific Key Distribution)
       关于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 为传统配对和安全连接都适用的配对流程图.

Figure 1_Pairing Flowchart

   这一篇中,我们主要讨论第一阶段,即配对特性交换。配对就是安全特性的交换,包括IO功能,对于中间人保护的要求等。两台设备之间的配对信息交换是通过配对请求(pairing request) and 配对响应(pairing response)数据包实现的。这两种信息的内容如下图所示:

Table 1_Pairing Request_Response

(1)code

Screen Shot 03-25-16 at 02.43 PM

(2)IO

       IO,即input/output. IO功能结合在一起可生成这一字段的值。对于Input来讲,detail值列表如下:

IO Capabilities

对于Output来讲,detail值列表如下:

Output Capabilities

将input 和 Output整合起来,就有了以下矩阵,定义了蓝牙设备应有的IO能力,detail值列表如下:

Local Output Capacity

注释1:因为没有配对算法可以使用“Yes/No”的Input和“NoOutput”的output,因此IO功能结果为“NoInputNoOutput”。

另外,从上面的矩阵,可以大致了解响应的IO功能,并从下表中选择合适的值,放置到Pairing request/response数据包。

Value

(3)OOB data flag

OOB,即out-of-band,意为"带外"。采用外部通信方法交换一些配对过程中使用的信息。OOB没提可能是任何一种能够传输相应信息的其它无线通信标准,如NFC或者二维码

.OOB Data FlagBF, “Bonding_Flags”

(4)BF(bonding flags)

绑定(Bonding),是配对发生之后的长期密钥交换,并将这些密钥储存起来以供日后使用,即在设备间创建永久的安全连接。配对机制是绑定的前提

Bonding Flags“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”)”

这两个字段定义如下。具体细节也将在后面进行单独讨论。

Screen Shot 03-25-16 at 02.41 PM

当配对特性的交换开始之后,发起者和响应者会通过配对请求和响应来交换彼此的信息。有了这些信息,发起者和响应者就能确认对方的IO能力(这是传统配对和安全连接都所需的),然后选择配对方法Just Work,Passkey EntryNumeric Comparison or Out of Band—to use in Phase2. 详细内容请见BLE SM(2): 配对方法和密钥生成(Pairing Method and Key Generation).

1 0
原创粉丝点击