任何系统最常见的一些安全问题包括:
Authentication / 身份验证:身份验证证明对方就是他们声称的身份。因此,如果您要连接到 BLE 设备,您需要确保实际连接的是感兴趣的设备——而不是其他一些伪装成该设备的恶意设备。
Integerity / 完整性:完整性确保我们收到的数据不会被未经授权的设备损坏和篡改。
Confidentiality / 机密性:机密性涉及确保数据不会被未经授权的用户或设备读取。
Privacy / 隐私:隐私与通信的私密性有关,以及第三方是否能够跟踪我们的设备——尤其是通过其蓝牙地址。
这些是与适用于任何系统的安全性相关的一些普遍问题。这些问题中的每一个的重要性取决于产品的应用程序和用例。
基于上述问题,恶意设备或人员可能会实施不同类型的攻击。其中一些包括:
BLE 中的安全性由架构的安全管理器 (SM) 层处理。 如下图所示:
安全管理器定义用于在两个设备之间生成和交换密钥的协议和算法。它涉及五个安全功能:
蓝牙规范随着时间的推移不断发展以提供更强大的安全措施。对于 BLE 尤其如此,它在 4.2 版中引入了 LE Secure Connections (LESC) 的概念。LESC 在配对过程中使用椭圆曲线 Elliptic-curve Diffie-Hellman (ECDH) 协议(本章稍后介绍),与早期版本的蓝牙中使用的方法相比,这使得通信更加安全。
蓝牙 4.2 还引入了 legacy connections 这一术语,它统称为早期规范版本定义的配对方法。但需要注意的是,蓝牙 4.2 及更高版本仍支持 legacy connections。
我们将在接下来的部分中介绍这些方法之间的差异。安全管理器解决了以下不同的安全问题:
在 BLE 中,主设备是安全程序的发起者。从机(响应者)可以通过向主机发送安全请求消息来请求启动安全过程,但是由主机发送正式启动安全过程的数据包。为了更好地理解安全性在 BLE 中的工作原理,我们需要了解两个重要的概念: pairing 和 bonding。
安全管理器 (SM) 使用 key distribution approach / 密钥分发方法 在无线电通信中执行身份验证和加密功能。这意味着每个设备都会生成并控制它分发的密钥,没有其他设备会影响这些密钥的生成。密钥的强度与分发设备内部实现的算法一样强大。
安全架构的设计特性使得响应设备的内存和处理要求可以低于发起设备的内存和处理要求。
配对操作用以建立可用于加密链接的密钥,然后共享这些密钥,通过执行传输特定的密钥分发机制。这些密钥可用于在未来的重新连接中加密链接、验证签名数据和随机地址解析。
配对是一个三阶段的过程。前两个阶段是必要的,之后可能是一个可选的传输特定密钥分发阶段(见图 2.1):
配对是阶段 1 和 2 的组合。结合由过程的阶段 3 表示。 需要注意的一件重要事情是,阶段 2 是 LE Legacy Connections 和 LE Secure Connections 之间唯一不同的阶段。
设备应首先在配对特征交换中交换身份验证要求和 IO 能力,以确定在阶段 2 中应使用以下哪种方法,但传统连接和安全连接各有不同的配对方法。
有些方法具有相同的名称,但它们之间交换的过程和数据不同,具体我们会在下文介绍。使用的配对方法是根据第一阶段两个设备之间交换的功能确定的。
从配对功能交换中检索到的Authentication requirements / 认证要求 还确定是使用 LE 安全连接还是 LE 传统配对。与之对应,执行阶段 3 以分发传输特定密钥,例如身份解析密钥 (Identity Resolving Key,IRK) 值和身份地址信息。无论阶段 2 使用何种方法,阶段 1 和阶段 3 都是相同的。
阶段 1 和阶段 2 可以在加密或未加密的链路上执行,阶段 3 只能在使用以下方法加密的链接上执行:
配对是一种临时安全措施,不会跨连接持续存在。每次两个设备重新连接并希望加密它们之间的连接时,配对都必须启动和完成。为了在后续连接中扩展加密,必须在两个设备之间进行绑定。
让我们更详细地回顾一下不同的阶段:
在这个阶段,Slave可以请求开始配对过程,Master通过向 Slave发送 pairing request 来启动配对过程,然后 Slave以 pairing response 进行响应。配对请求和配对响应消息代表每个设备支持的特性以及每个设备的安全要求,两者通过交换对方信息协商出双方都支持的特性进行加密。这些消息中的每一个都包括以下内容:
此阶段两台设备之间交换的信息决定了所使用的配对方法。下表显示了交换的 IO 功能(在两个配对设备上)的不同组合以及所选择的配对方法:
如前所述,第二阶段因使用的方法而异:LE secure connections 或者 LE legacy connections。
让我们解释一下这两种方法在此阶段有何不同:
传统连接:在传统连接中,使用两个密钥:临时密钥 (Temporary key,TK) 和短期密钥 (shorterm key,STK)。TK 与 两个设备之间交换的其他随机值一起运算以生成 STK。
安全连接:在安全连接中,配对方法不涉及在两个设备之间通过无线方式交换密钥。相反,这些设备利用 ECDH 协议来生成一个公钥/私钥对。然后设备仅交换公钥,并从中生成称为长期密钥 (long term key,LTK) 的共享密钥。
使用 ECDH 的 优势 在于它可以防止窃听者找出共享密钥——即使他们捕获了两个公钥。 —— 点击这里学习更多
第三阶段代表绑定过程,这是一个可选阶段,用于避免启用安全通信通道时候,每次都需要在每个连接上重新配对。
绑定的结果是每个设备都存储了一组密钥,这些密钥可以在每个后续连接中使用,并允许设备跳过配对阶段。这些密钥通过使用第二阶段产生的密钥加密的链接在两个设备之间交换。
传统连接和安全连接各有不同的配对方法。有些方法具有相同的名称,但它们之间交换的过程和数据不同。使用的配对方法是根据第一阶段中两个设备之间交换的功能确定的。
正如我们之前提到的,在传统连接中,短期密钥 (STK) 是由临时密钥 (TK) 和两个随机生成的值输入算法生成的。
更多资料,您可以通过查看Bluetooth 5 specification
document(BLUETOOTH CORE SPECIFICATION Version 5.2 | Vol 3, Part H,Appendix C)中提供的消息序列图,详细了解不同的配对方法以及每种方法的工作原理。
隐私是用户关注的另一个主要问题,必须认真对待。每个蓝牙设备都有一个地址,如果不小心采取措施,这个地址可以用来跟踪用户。幸运的是,BLE 提供了隐私功能来防止此类漏洞。
设备可以为其蓝牙地址使用频繁更改的私有地址,只有受信任的设备才能解析该地址。在这种情况下,受信任的设备是绑定设备。
随机私有地址是使用称为身份解析密钥 (IRK) 的密钥生成的,该密钥在第三阶段的两个绑定设备之间进行交换。这样,对端设备就可以访问 IRK 并解析随机地址。
不同安全密钥的概述 在不同的安全程序中使用了许多密钥和变量。让我们一一回顾它们。
BLE 中有两种安全模式:安全模式 1 和安全模式 2。安全模式 1 与加密有关,而安全模式 2 与数据签名有关。
以下是每种模式的不同级别:
Security Mode 1
Security Mode 2
回顾第一阶段配对部分下列出的表格,我们可以看到,对于每个条目,它列出了该方法是否被视为已验证或未验证。两个设备之间的链路仅在一种安全模式下运行,但可以在该模式内的不同级别运行(不同的特性可能需要不同的安全级别)。
例如:1. 一种特性可能需要 Level 1(无安全性)进行读取访问。2. 相同的特性可能需要Level 3 才能进行写访问。3. 另一个特性可能需要Level 4 进行读写访问。
注意:iOS 不允许需要特殊权限(例如配对、身份验证或加密)来发现服务和特征。相反,它要求服务器仅限制访问或特征(characteristics)的权限以触发配对。可在此处下载的 iOS 蓝牙指南文档。