BLE 之配对绑定讲解

關鍵字 :BLE配对绑定

一、安全概念

安全是一个相当复杂的过程和讨论课题,对很多人来说就好比是一个黑匣子。只需要了解某一种技术是“安全”的,就可以满足大多数人的需求了。然而,如果要深入去理解BLE 的安全性,那么必须要做好充分的学习准备。

二、实现安全性

为了保证 BLE 的绝大多数安全特征,需要完成两件事:首先,设备必须互相配对,其次,连接一旦加密,设备必须分配用于加密、保障隐私并对信息进行验证的密钥。只要密钥被保存下来,设备就处于绑定状态了。

配对和绑定是实现蓝牙射频通信安全的一种机制,可将其等同于安全管理(SM),而 SM 则定义了蓝牙通信的安全框架,它使用密钥分发方法在无线电通信中执行身份和加密功能,这意味着每个设备生成并控制它分配的密钥,其他设备不会影响这些密钥的生成。里面涉及了安全架构、密码工具箱、配对协议(关键)等。配对绑定实现的是链路层的安全,对应用部分的数据传输做特殊处理的,无论有没有配对绑定,发送或接收应用数据的方式是一样的。目前绝大多数应用都是选择加密,实现蓝牙通信安全,配对绑定是一个标准化的过程,存放于蓝牙协议栈中,其安全性可靠,用户可简单地用上安全的蓝牙通信。


三、配对概念

配对过程几乎涉及所有的安全环节,需要事先决定。它的目的是确定两台设备的每一端的功能是否准备好配对,然后再决定是否可以互相通信配对简单包括为:配对能力交换、设备认证、密钥生成、连接加密、密钥分发等过程。

在两个未提供安全性的设备之间如果希望做一些需要安全性的工作,首先必须彼此配对。配对主要涉及到两台设备的身份认证、链路加密以及后面的密钥分配,这可使得两台设备在第二次重连时能获得更快的安全启动速度。所以配对就是为了建立密钥,然后使用密钥对链接进行加密,然后执行一个传输特定的密钥分配来共享密钥,这些密钥可用于在未来的重连中加密链接、验证签名数据和随机地址解析。配对包含三个不同的阶段:配对信息交换链路认证密钥分配。

下图为配对的基本流程:


图一

设备应首先交换认证要求和 IO 能力,在配对特性交换中确定下列哪一种方法在配对阶段中使用:

  • Just Works
  • Numeric Comparison(Only For LE Secure Connections)
  • Passkey Entry
  • Out Of Band(OOB)

下面为各个方式的讲解:

1、Numeric Comparison(数值比较),数值比较仅适用于低功耗安全连接,而不适用于传统配对。因此这是一个较新的关联模型。由于两个设备会在其各自的屏幕或 LCD显示屏上显示相同的六位数值,并确保它们匹配并点击或单击每个设备上的相应按钮。这不是为了防止中间人(MITM)攻击,而是为了识别对方的设备。


2、Just Works (不鉴权,直接使用),显然,并非所有设备都有显示器,如耳机或扬声器。因此,Just Works 方法可能是最流行的方法。从技术上讲,它与数值比较相同,但六位数值设置为全零。如果你正在执行MITM攻击,则“数值比较”需要一些即时数计算,但Just Works不提供MITM保护,通常应用于鼠标、键盘中。


3、Passkey Entry(密码输入)。使用密钥输入,会在一个设备上显示一个六位数的值,并将其输入到另一个设备中。 如果发起设备和响应设备都满足一定的 IO 功能,它们就可以选择低功耗传统配对(Legacy Pairing)的 Passkey Entry 方法。如果发起设备和响应设备的 IO 功能都不具备显示功能,但都是“仅有键盘(Keyboard Only)”,那么用户就需要确保发起设备和响应设备之间的临时密钥是相同的,这是 Passkey Entry 进入的一个特例,常见于键盘应用。

4、Out Of Band (OOB),即非蓝牙的传输方式,如 NFC。Apple Watch是这个配对方法的一个很好的示范。另一个例子是在具有 NFC 功能的耳机和配对电话之间使用 NFC。LE 使用的配对过程和经典蓝牙的安全简单配对相同,设备需要确定输入和输出能力(即 IO 能力),以下列表为输入输出能力列表:
  • 无输入无输出
  • 仅有显示屏
  • 显示屏+选择“是/否”
  • 仅有键盘
  • 键盘+显示屏

这一过程会通过使用配对请求消息在设备之间进行通信,从设备发出的第一个安全信息即为配对请求消息,该消息就包含有以上关键信息,以上为配对特性的交换过程。通过以上过程后,下一步就是进行密钥分配了,一旦连接加密了,主机与从机之间就可以分发一些秘密信息。通过蓝牙核心规范可知,主要有 5 个密钥需要共享,这些密钥传输时一次比一次安全。密钥分类如下:

  • 临时密钥(Temporary Key:TK)
  • 短期密钥(Short Term Key:STK)
  • 长期密钥(Long-Term Key:LTK)
  • 身份解析密钥(Identity Resolving Key:IRK)
  • 连接签名解析密钥(Connecting Signature Resolving Key:CSRK)

配对过程也包含了安全密钥共享,但是这一过程仅仅时由启动加密到得到短期密钥(STK)为止。后续的密钥共享过程则需要绑定来实现。


四、绑定概念

绑定无非是将密钥及相关身份信息保存到安全数据库中,如果设备不保存这些值,它们虽能匹配,但却不能绑定。只要当中某一个设备不保存,重新连接后,只有一个设备拥有 LTK,因此加密的启动将会失败。在现实中,也很少会有只配对不绑定的设备。同样的,如果配对的两个设备生成了 LTK 及其他机密信息,并且将 LTK 及其他机密信息保存到芯片 FLASH 等永久化存储设备中,那么我们就可以说这两台设备绑定成功。配对和绑定时两个不同的概念,配对更强调特性交换、认证以及密钥生成,而绑定则更强调密钥保存。一旦两个设备绑定成功,那么两个设备断开重连时,主机就可以发起加密流程,从而更快的相互连接和使用配对生成的 LTK 对后续连接进行加密。加密连接只能由主机发出,而不能由从机发起,从机只能发起加密请求。


五、总结

以上内容为 BLE 配对与绑定的概念讲解,配对绑定过程的内容其实很多,过程也比较复杂,感兴趣的朋友可以通过详细理解蓝牙核心协议规范进行更深入的学习。


六、参考资料

【1】低功耗蓝牙开发权威指南.pdf

【2】Core_v5.2.pdf

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論

许建

许建

2022年5月25日
低功耗蓝牙开发权威指南能发一份嘛,QQ:2468115685@qq.com,感激不尽