作者:任凯 蓝牙技术联盟亚太区技术项目经理
在之前的蓝牙配对系列博文中,提到了PassKey和Numeric Comparison等配对方法。今天我会介绍另外一种方法,即Out of Band,OOB。
OOB关联模型适用于使用带外(out of band)机制来发现设备、以及交换或传送将在配对过程中使用的加密信息等场景。OOB对于开发者来说是一项灵活的选择,能够让他们定义自己的配对机制,因此安全级别取决于带外保护功能。今天就让我们一起来深入探讨吧!
1. 第1阶段 - 配对特性交换
在我的博文《蓝牙配对系列第四篇》中,有一个类似于表1的表格。这是配对请求/响应(Pairing request/response)的框架结构。在该表中,有一名为“OOB数据标志”(OOB Data Flag)的字段,长度为1个字节。
Table 1, 配对请求/响应
表1
关于“OOB数据标志”的定义,请参考表2。
Table 2, OOB数据标志位定义
表2
OOB数据标志定义了用于指示OOB认证数据是否可用的值。
2. 低功耗传统配对
当两台蓝牙设备都使用低功耗传统配对时,这一过程就很容易理解。有关传统配对方法选用的详细信息,请查看表3。我已经在此表中对选用OOB的单元格进行了黄色标注, 这样就一目了然:
- 如果使用OOB进行配对,两台设备必须设置其OOB数据标志;
- 如果其中一台设备设置了OOB数据标志,而另一台设备未设置,则两台设备都需要检查在表1中“AutheReq”字段中的MITM标志(表1中绿色高亮部分)。如果其中任何一台设备设置了MITM标志,则可通过IO Capabilities与配对方法的映射来选择配对方法。有关映射的详细信息,请参阅蓝牙5核心规格、第3卷、H部分、表2.8。
- 其他情况,则使用“直接连接(Just Works)”方法配对。
Table 3,OOB配对规则速查表
表3
Picture 1 OOB配对流程图
图1
在图1中,高亮标注的部分与《蓝牙配对系列第三篇》传统配对的PassKey相同。之后,两台设备的安全管理器(Security Manager)将:
首先,创建两边的随机值Mrand和Srand。之后,带外机制可用于交换信息,例如设备地址和128位临时密钥(TK)值,以助于设备发现。正如我在第三篇“传统配对—PassKey”中所解释的,TK值是由伪随机数引擎产生的128位随机数,引擎应符合蓝牙核心规格的要求。
第1步
通过公式c1计算Mconfirm和Sconfirm ,对于任何加密工具箱,均可参阅蓝牙5核心规格、第三卷、H部分、第2.2节。
第2步
交换Mconfirm、Sconfirm和Mrand。
第3步
响应设备通过发起设备传送的Mrand值来再次执行Mconfirm的计算,来验证计算出的值与Mconfirm值是否一致。
- 如果响应设备计算得出的Mconfirm值与发起设备发来的Mconfirm值不匹配,则配对过程会中止,响应设备会发送原因代码为“确认值失败(Confirm Value Failed)”的配对失败指令。
- 如果响应设备计算得出的Mconfirm值与发起设备发来的Mconfirm值相匹配,则响应设备会向发起设备发送Srand。
发起设备通过响应设备传送的Srand值来再次执行Sconfirm的计算,来验证计算出的值和Sconfirm值是否一致。
- 如果发起设备计算得出的Sconfirm值与响应设备发来的Sconfirm值不匹配,则配对过程或被中止,发起设备会发送原因代码为“确认值失败(Confirm Value Failed)”的配对失败指令。
- 如果发起设备计算得出的Sconfirm值与响应设备发来的Sconfirm值相匹配,则发起设备会计算出短期密钥(Short Term Key,简称STK ),并通知控制器(Controller)启用加密。
3. OOB的简便之处
目前,低功耗蓝牙已经成为智能手机和平板电脑的标准配置。设备间采用蓝牙进行连接的方法也是多种多样的 。在这些方法当中,还有一种通过蓝牙连接设备的常用方法就是使用NFC进行“一键配对”。由于NFC的传输范围非常有限,一些开发者在设备之间借助NFC确保两台设备正确地进行配对。因此,NFC可以为OOB配对提供良好的通信接口。当使用OOB进行配对时,用户的体验略有不同。例如,用户的智能手机和手环两台设备都具有低功耗蓝牙和NFC接口。用户先让两台设备相接触,然后会看到配对选项。如果选择“是”,则配对成功。所以这是一种一键式的体验,交换的信息在两台设备中都能使用,是不是超酷呢?
文章来源:蓝牙技术联盟