BLE Host解析:BLE SM(4):低功耗安全连接(SC):数值比较

本文引自:https://blog.bluetooth.com/bluetooth-pairing-part-4

 

在前一章节,概述了<采用万能钥匙配对方法的低功耗传统配对>。在Bluetooth 4.2版本中,引入了低功耗安全连接(SC)。它采用符合联邦信息处理保准(FIPS)的算法--椭圆曲线(ECDH)算法来生成密钥。并且引入了一种全新的关联模型:数值比较(Numeric comparison).

今天,我们来一起深入一览:

1. 第一阶段--配对特性交换

回顾一下“BLESM(1)”的内容。表一是pairing request/response分组定义。在“AUthreq”字段中,有一个名为“SC”的位。如果设备支持低功耗安全连接配对,则SC字段应该设置为1,

否则,设置为0。如果两个设备都支持低功耗安全连接配对,则应该使用低功耗安全连接配对,否则使用传统配对。

*表一 pairing request/response

BLE Host解析:BLE SM(4):低功耗安全连接(SC):数值比较_第1张图片

* 位顺序是从LSB到MSB

因此,两个设备要通过SC配对,则必须设置“SC”为1,以告知对等设备我具备安全连接的能力“”。

 

2. 第二阶段--密钥生成算法选择

 

完成配对特性交换之后,发起设备和响应设备应确定使用何种密钥生成方法。这里是密钥生成方法的C语言编码实例:

if ((1 == OOB_Flag_Initiator) || (1 == OOB_Flag_Responder)) {

runOOBMethod();

} else if ((0 == MITM_Flag_Initiator) || (0 == MITM_Flag_Responder)) {

runJustWorksMethod();

} else {

checkIOCapablities();

}

表2列出了数值比较发起设备和响应设备的IO功能。当发起设备和响应设备都具有显示屏和“是/否”的IO功能、或显示屏和键盘的IO功能时,则使用数值比较

关联模型。

* 表2 数值比较的IO能力映射

BLE Host解析:BLE SM(4):低功耗安全连接(SC):数值比较_第2张图片

* “-”表示适用于其他密钥生成方法,而非数值比较

3. 第三阶段--验证

密钥生成之后,配对进入阶段3,即身份认证阶段。目的是保护连接不受中间人攻击(MITM),同时生成即将用于加密连接链路的密钥

在公钥交换中,每个设备生成自己的椭圆曲线(ECDH)公私密钥对,其中包含私钥和公钥。

 

  • SKa, private key of initiating device
  • PKa, public key of initiating device
  • SKb, private key of responding device
  • PKb, public key of responding device

* 图1 数值比较的认证过程

 

 

 

BLE Host解析:BLE SM(4):低功耗安全连接(SC):数值比较_第3张图片

通过发起设备将PKa发送到响应设备来启动配对。随后,响应设备恢复自己的PKb。交换公共密钥后,设备即可开始计算Diffie-Hellman(椭圆曲线)密钥。

在上图中可以看到,Diffie-Hellman(椭圆曲线)密钥计算是在1b结束后开始的。

 

随后,每个设备选择一个128位随机数,此值将用于防止重放攻击(replay attacks)。

 

  • Na, 128-bit random nonce of initiating device.
  • Nb, 128-bit random nonce of responding device.
  •  

 

下一步,响应设备计算提交Cb,其通过Nb,PKa,PKb和0计算得出。请看图1中的步骤3.

 

步骤4,响应设备必须在接收到发起设备的Na之前共享Cb。

 

步骤5,发起设备必须在接收到响应设备的Nb之前共享其Na。

 

步骤6,发起设备接收到响应设备的Nb之后,必须检查来自响应设备的Cb。

 

此时发起设备和响应设备已经知晓对等设备的公共密钥和随机数。发起设别可以确认来自响应设备的提交(Cb)。在这一节点上的失败意味着存在攻击者

或者其他传输错误,且会导致配对过程终止,如步骤6a。

 

 

 

 

4. 第四阶段-长期密钥

 

验证成功之后,两个设备会开始计算将用于链路加密的长期密钥(LTK)。

这是配对和重新连接的最后一部分:在不同的关联模型中,通过不同的方法来验证对等设备并防止MITM攻击。

 

由于LTK计算对于任何低功耗安全连接关联模型都是十分常见的。因此在下一篇中,会展开detail 讨论。

 

5. 总结

根据用户体验和便利性的考量,与Passkey Entry方法相比,数值比较只需要两个按钮:YES和NO,以指示两台设备之间的6位确认制是否匹配,而不需要从0到9的数字键盘,因此可谓一项简化硬件IO能力的改进。同时数值比较仅适用于低功耗安全连接,可针对窃听和MITM提供更高一层的保护

 

因此,你如果正在着手开发一款非常注重隐私,需要对蓝牙低功耗链路提供高度保护的产品,这将是一个不错的选择。

 

 

 

你可能感兴趣的:(蓝牙,物联网)