跳转到主要内容

蓝牙配对系列第五篇:传统配对(Legacy Pairing):Out of Band

judy 提交于

<p><strong>作者:任凯&nbsp;蓝牙技术联盟亚太区技术项目经理</strong></p>

<p>在之前的蓝牙配对系列博文中,提到了PassKey和Numeric Comparison等配对方法。今天我会介绍另外一种方法,即Out of Band,OOB。</p>

<p>OOB关联模型适用于使用带外(out of band)机制来发现设备、以及交换或传送将在配对过程中使用的加密信息等场景。OOB对于开发者来说是一项灵活的选择,能够让他们定义自己的配对机制,因此安全级别取决于带外保护功能。今天就让我们一起来深入探讨吧!</p>

<p><strong>1. 第1阶段 - 配对特性交换</strong></p>

<p>在我的博文《蓝牙配对系列第四篇》中,有一个类似于表1的表格。这是配对请求/响应(Pairing request/response)的框架结构。在该表中,有一名为“OOB数据标志”(OOB Data Flag)的字段,长度为1个字节。</p>

<p>Table 1, 配对请求/响应</p>

<p><img alt="配对请求/响应" data-entity-type="file" data-entity-uuid="cbe0d055-a7c6-48ba-a601-27af47f0ed8b" src="/sites/default/files/inline-images/%E8%A1%A81_0.png" /></p>

<p>表1</p>

<p>关于“OOB数据标志”的定义,请参考表2。</p>

<p>Table 2, OOB数据标志位定义</p>

<p><img alt="表2" data-entity-type="file" data-entity-uuid="7005c426-6c49-40bc-9ca9-7f9546a98c2b" src="/sites/default/files/inline-images/%E8%A1%A82_0.png" /></p>

<p>表2</p>

<p>OOB数据标志定义了用于指示OOB认证数据是否可用的值。</p>

<p><strong>2. 低功耗传统配对</strong></p>

<p>当两台蓝牙设备都使用低功耗传统配对时,这一过程就很容易理解。有关传统配对方法选用的详细信息,请查看表3。我已经在此表中对选用OOB的单元格进行了黄色标注, 这样就一目了然:</p>

<ul>
<li>如果使用OOB进行配对,两台设备必须设置其OOB数据标志;</li>
<li>如果其中一台设备设置了OOB数据标志,而另一台设备未设置,则两台设备都需要检查在表1中“AutheReq”字段中的MITM标志(表1中绿色高亮部分)。如果其中任何一台设备设置了MITM标志,则可通过IO Capabilities与配对方法的映射来选择配对方法。有关映射的详细信息,请参阅蓝牙5核心规格、第3卷、H部分、表2.8。</li>
<li>其他情况,则使用“直接连接(Just Works)”方法配对。</li>
</ul>

<p>Table 3,OOB配对规则速查表</p>

<p><img alt="OOB配对规则速查表" data-entity-type="file" data-entity-uuid="4799a026-f9e4-4208-ab71-2e1db9a2cc6d" src="/sites/default/files/inline-images/%E8%A1%A83_0.png" /></p>

<p>表3</p>

<p>Picture 1 OOB配对流程图</p>

<p><img alt="OOB配对流程图" data-entity-type="file" data-entity-uuid="92e93c89-7bc9-43b8-bd8a-feb1cc4caaf7" src="/sites/default/files/inline-images/%E5%9B%BE1_0.png" /></p>

<p>图1</p>

<p>在图1中,高亮标注的部分与《蓝牙配对系列第三篇》传统配对的PassKey相同。之后,两台设备的安全管理器(Security Manager)将:</p>

<p>首先,创建两边的随机值Mrand和Srand。之后,带外机制可用于交换信息,例如设备地址和128位临时密钥(TK)值,以助于设备发现。正如我在第三篇“传统配对—PassKey”中所解释的,TK值是由伪随机数引擎产生的128位随机数,引擎应符合蓝牙核心规格的要求。</p>

<p>第1步</p>

<p>通过公式c1计算Mconfirm和Sconfirm&nbsp;,对于任何加密工具箱,均可参阅蓝牙5核心规格、第三卷、H部分、第2.2节。</p>

<p>第2步</p>

<p>交换Mconfirm、Sconfirm和Mrand。</p>

<p>第3步</p>

<p>响应设备通过发起设备传送的Mrand值来再次执行Mconfirm的计算,来验证计算出的值与Mconfirm值是否一致。</p>

<ul>
<li>如果响应设备计算得出的Mconfirm值与发起设备发来的Mconfirm值不匹配,则配对过程会中止,响应设备会发送原因代码为“确认值失败(Confirm Value Failed)”的配对失败指令。</li>
<li>如果响应设备计算得出的Mconfirm值与发起设备发来的Mconfirm值相匹配,则响应设备会向发起设备发送Srand。</li>
</ul>

<p><img alt="发起" data-entity-type="file" data-entity-uuid="0a5da45c-2e46-4ddd-a808-f38d8544dd6c" src="/sites/default/files/inline-images/0.gif" /></p>

<p>发起设备通过响应设备传送的Srand值来再次执行Sconfirm的计算,来验证计算出的值和Sconfirm值是否一致。</p>

<ul>
<li>如果发起设备计算得出的Sconfirm值与响应设备发来的Sconfirm值不匹配,则配对过程或被中止,发起设备会发送原因代码为“确认值失败(Confirm Value Failed)”的配对失败指令。</li>
<li>如果发起设备计算得出的Sconfirm值与响应设备发来的Sconfirm值相匹配,则发起设备会计算出短期密钥(Short Term Key,简称STK ),并通知控制器(Controller)启用加密。</li>
</ul>

<p><strong>3. OOB的简便之处</strong></p>

<p>目前,低功耗蓝牙已经成为智能手机和平板电脑的标准配置。设备间采用蓝牙进行连接的方法也是多种多样的 。在这些方法当中,还有一种通过蓝牙连接设备的常用方法就是使用NFC进行“一键配对”。由于NFC的传输范围非常有限,一些开发者在设备之间借助NFC确保两台设备正确地进行配对。因此,NFC可以为OOB配对提供良好的通信接口。当使用OOB进行配对时,用户的体验略有不同。例如,用户的智能手机和手环两台设备都具有低功耗蓝牙和NFC接口。用户先让两台设备相接触,然后会看到配对选项。如果选择“是”,则配对成功。所以这是一种一键式的体验,交换的信息在两台设备中都能使用,是不是超酷呢?</p>

<p>文章来源:<a href="https://mp.weixin.qq.com/s?__biz=MzA4MTg3MTg2Mg==&amp;mid=2651236811&am…;蓝牙技术联盟</a></p>