文章目录
- 前言
- Security in BLE
- Pairing and Bonding
- 第一阶段
- 第二阶段
- 第三阶段
- Pairing methods
- LE Legacy Connections (All Bluetooth versions)
- LE Secure Connections (Bluetooth version 4.2 and later)
- privacy
- An Overview of the Different Security Keys
- Security Modes and Levels
前言
任何系统最常见的一些安全问题包括:
- Authentication / 身份验证:身份验证证明对方就是他们声称的身份。因此,如果您要连接到 BLE 设备,您需要确保实际连接的是感兴趣的设备——而不是其他一些伪装成该设备的恶意设备。
- Integerity / 完整性:完整性确保我们收到的数据不会被未经授权的设备损坏和篡改。
- Confidentiality / 机密性:机密性涉及确保数据不会被未经授权的用户或设备读取。
- Privacy / 隐私:隐私与通信的私密性有关,以及第三方是否能够跟踪我们的设备——尤其是通过其蓝牙地址。
这些是与适用于任何系统的安全性相关的一些普遍问题。这些问题中的每一个的重要性取决于产品的应用程序和用例。
基于上述问题,恶意设备或人员可能会实施不同类型的攻击。其中一些包括:
- Passive Eavesdropping / 被动窃听:这描述了恶意设备何时侦听两个设备之间的通信,并且能够理解数据——通常是在数据被加密的情况下获得对加密密钥的访问。
- Active Eavesdropping / 主动窃听:这也称为Man-In-The-Middle (MITM) (MITM) 中间人攻击。在这次攻击中,恶意设备冒充两个设备(外围设备和中央设备)。然后它可以拦截他们之间的通信,路由通信信息以便他们没有意识到攻击正在发生,甚至可能将数据注入数据包。
- Privacy and Identity Tracking / 隐私和身份跟踪:在这种攻击中,设备和用户通过蓝牙地址进行跟踪——可能会泄露他们的位置并将其与他们的行为相关联。
Security in BLE
BLE 中的安全性由架构的安全管理器 (SM) 层处理。 如下图所示:
安全管理器定义用于在两个设备之间生成和交换密钥的协议和算法。它涉及五个安全功能:
- Pairing / 配对:在两个设备之间创建共享密钥的过程。
- Bonding / 绑定:在每一侧(中央和外围设备)创建和存储共享密钥的过程,以用于设备之间的后续连接。
- Bonding / 身份验证:验证两个设备共享相同密钥的过程。
- Encryption / 加密:对设备之间交换的数据进行加密的过程。BLE 中的加密使用 128 位 AES 加密标准,它是一种对称密钥算法(意味着使用相同的密钥来加密和解密双方的数据)。
- Message Integrity / 消息完整性:对数据进行签名,并在另一端验证签名的过程。这超出了计算 CRC 的简单完整性检查。
蓝牙规范随着时间的推移不断发展以提供更强大的安全措施。对于 BLE 尤其如此,它在 4.2 版中引入了 LE Secure Connections (LESC) 的概念。LESC 在配对过程中使用椭圆曲线 Elliptic-curve Diffie-Hellman (ECDH) 协议(本章稍后介绍),与早期版本的蓝牙中使用的方法相比,这使得通信更加安全。
蓝牙 4.2 还引入了 legacy connections 这一术语,它统称为早期规范版本定义的配对方法。但需要注意的是,蓝牙 4.2 及更高版本仍支持 legacy connections。
我们将在接下来的部分中介绍这些方法之间的差异。安全管理器解决了以下不同的安全问题:
- Confidentiality via encryption: 通过加密保密。
- Authentication via pairing & bonding:通过配对和绑定进行身份验证。
- Privacy via resolvable private addresses:通过可解析的私人地址保护隐私。
- Integrity via digital signatures:通过数字签名的完整性。
在 BLE 中,主设备是安全程序的发起者。从机(响应者)可以通过向主机发送安全请求消息来请求启动安全过程,但是由主机发送正式启动安全过程的数据包。为了更好地理解安全性在 BLE 中的工作原理,我们需要了解两个重要的概念: pairing 和 bonding。
安全管理器 (SM) 使用 key distribution approach / 密钥分发方法 在无线电通信中执行身份验证和加密功能。这意味着每个设备都会生成并控制它分发的密钥,没有其他设备会影响这些密钥的生成。密钥的强度与分发设备内部实现的算法一样强大。
安全架构的设计特性使得响应设备的内存和处理要求可以低于发起设备的内存和处理要求。
配对操作用以建立可用于加密链接的密钥,然后共享这些密钥,通过执行传输特定的密钥分发机制。这些密钥可用于在未来的重新连接中加密链接、验证签名数据和随机地址解析。
配对是一个三阶段的过程。前两个阶段是必要的,之后可能是一个可选的传输特定密钥分发阶段(见图 2.1):
- 第 1 阶段:配对功能交换(Pairing Feature Exchange)
- 第 2 阶段:LE 传统配对(LE legacy pairing):短期密钥 (STK) 生成
- 第 2 阶段:LE 安全连接(LE Secure Connections):长期密钥 (LTK) 生成
- 第 3 阶段:传输特定密钥分发(Transport Specific Key Distribution)
首先,让我们回顾一下显示安全过程的序列图:
配对是阶段 1 和 2 的组合。结合由过程的阶段 3 表示。 需要注意的一件重要事情是,阶段 2 是 LE Legacy Connections 和 LE Secure Connections 之间唯一不同的阶段。
设备应首先在配对特征交换中交换身份验证要求和 IO 能力,以确定在阶段 2 中应使用以下哪种方法,但传统连接和安全连接各有不同的配对方法。
- Just Works
- Passkey Entry
- Out Of Band (OOB)
- Numeric Comparison (Only for LE Secure Connections)
有些方法具有相同的名称,但它们之间交换的过程和数据不同,具体我们会在下文介绍。使用的配对方法是根据第一阶段两个设备之间交换的功能确定的。
从配对功能交换中检索到的Authentication requirements / 认证要求 还确定是使用 LE 安全连接还是 LE 传统配对。与之对应,执行阶段 3 以分发传输特定密钥,例如身份解析密钥 (Identity Resolving Key,IRK) 值和身份地址信息。无论阶段 2 使用何种方法,阶段 1 和阶段 3 都是相同的。
阶段 1 和阶段 2 可以在加密或未加密的链路上执行,阶段 3 只能在使用以下方法加密的链接上执行:
- 使用 LE 传统配对时在阶段 2 中生成的 STK 或者
- 使用 LE 安全连接时在阶段 2 中生成的 LTK 或者
- 使用 BR/EDR 配对生成的共享链接密钥(参见第 2.3.5.7 节)。
Pairing and Bonding
配对是一种临时安全措施,不会跨连接持续存在。每次两个设备重新连接并希望加密它们之间的连接时,配对都必须启动和完成。为了在后续连接中扩展加密,必须在两个设备之间进行绑定。
让我们更详细地回顾一下不同的阶段:
第一阶段
在这个阶段,Slave可以请求开始配对过程,Master通过向 Slave发送 pairing request 来启动配对过程,然后 Slave以 pairing response 进行响应。配对请求和配对响应消息代表每个设备支持的特性以及每个设备的安全要求,两者通过交换对方信息协商出双方都支持的特性进行加密。这些消息中的每一个都包括以下内容:
- Input Output (IO) capabilities:显示支持、键盘支持、是/否输入支持。
- Out-Of-Band (OOB)。
- Authentication requirements:包括 MITM 保护要求、绑定要求、安全连接支持。
- 设备支持的最大加密密钥大小。
- 每个设备请求使用的不同安全密钥。
此阶段两台设备之间交换的信息决定了所使用的配对方法。下表显示了交换的 IO 功能(在两个配对设备上)的不同组合以及所选择的配对方法:
第二阶段
如前所述,第二阶段因使用的方法而异:LE secure connections 或者 LE legacy connections。
让我们解释一下这两种方法在此阶段有何不同:
- 传统连接:在传统连接中,使用两个密钥:临时密钥 (Temporary key,TK) 和短期密钥 (shorterm key,STK)。TK 与 两个设备之间交换的其他随机值一起运算以生成 STK。
- 安全连接:在安全连接中,配对方法不涉及在两个设备之间通过无线方式交换密钥。相反,这些设备利用 ECDH 协议来生成一个公钥/私钥对。然后设备仅交换公钥,并从中生成称为长期密钥 (long term key,LTK) 的共享密钥。
使用 ECDH 的 优势 在于它可以防止窃听者找出共享密钥——即使他们捕获了两个公钥。 —— 点击这里学习更多
第三阶段
第三阶段代表绑定过程,这是一个可选阶段,用于避免启用安全通信通道时候,每次都需要在每个连接上重新配对。
绑定的结果是每个设备都存储了一组密钥,这些密钥可以在每个后续连接中使用,并允许设备跳过配对阶段。这些密钥通过使用第二阶段产生的密钥加密的链接在两个设备之间交换。
Pairing methods
传统连接和安全连接各有不同的配对方法。有些方法具有相同的名称,但它们之间交换的过程和数据不同。使用的配对方法是根据第一阶段中两个设备之间交换的功能确定的。
LE Legacy Connections (All Bluetooth versions)
正如我们之前提到的,在传统连接中,短期密钥 (STK) 是由临时密钥 (TK) 和两个随机生成的值输入算法生成的。
- Just Works:在此方法中,TK 设置为 0。显而易见,此方法是所有方法中最不安全的(在所有蓝牙版本中)。
- Out of Band (OOB):在这种方法中,TK 通过 BLE 以外的技术在两个设备之间交换 - near field communication(NFC) 是主要技术。这种方法可以使配对过程更加安全,特别是如果使用的非 BLE 技术提供更强的安全性。这是传统配对方法中最安全的方法。
- Passkey:在这种方法中,TK 是一个六位数字,由最终用户在设备之间传输。例如,它可以手动输入到其中一个设备中。这里的缺陷是设备需要一些最小的 IO 功能,例如设备显示或者键盘输入能力,因此它的使用可能会受到限制。
LE Secure Connections (Bluetooth version 4.2 and later)
- Just Works:在这种方法中,每个设备的公钥以及其他生成的值通过 BLE 在两个设备之间进行交换。
- Out of Band (OOB):在此方法中,值通过 BLE 以外的介质交换。如果使用的介质是安全的,那么这会使连接更加安全。
- Passkey:在此方法中,使用相同的六位数字,六位数字可以由用户输入到每个设备中,或者其中一个设备会生成它供用户手动输入到另一个设备中。
- Numeric Comparison:此方法与上述 justworks 方法的工作原理相同,但在最后增加了一个额外的步骤进行确认。这个额外的步骤可以防止 MITM 攻击。这是所有方法中最安全的配对方法。
更多资料,您可以通过查看Bluetooth 5 specification
document(BLUETOOTH CORE SPECIFICATION Version 5.2 | Vol 3, Part H,Appendix C)中提供的消息序列图,详细了解不同的配对方法以及每种方法的工作原理。
privacy
隐私是用户关注的另一个主要问题,必须认真对待。每个蓝牙设备都有一个地址,如果不小心采取措施,这个地址可以用来跟踪用户。幸运的是,BLE 提供了隐私功能来防止此类漏洞。
设备可以为其蓝牙地址使用频繁更改的私有地址,只有受信任的设备才能解析该地址。在这种情况下,受信任的设备是绑定设备。
随机私有地址是使用称为身份解析密钥 (IRK) 的密钥生成的,该密钥在第三阶段的两个绑定设备之间进行交换。这样,对端设备就可以访问 IRK 并解析随机地址。
An Overview of the Different Security Keys
不同安全密钥的概述 在不同的安全程序中使用了许多密钥和变量。让我们一一回顾它们。
- 临时密钥 (Temporary Key,TK):临时密钥 (TK) 的生成取决于所选的配对方法。每次配对过程发生时都会生成 TK。TK 仅用于传统连接。
- 短期密钥 (Short Term Key,STK):此密钥由设备之间交换的 TK 生成。每次配对过程发生时都会生成 STK,并用于加密当前连接中的数据。STK 仅用于传统连接。
- 长期密钥 (LongTerm Key,LTK):此密钥在传统连接的安全过程的第三阶段和 LE 安全连接的第二阶段期间生成和存储,是一个 128 位密钥,用于为加密连接生成贡献 session key。它存储在绑定的两个设备中的每一个上,并用于两个设备之间的后续连接。
- 加密多样化(Encrypted Diversifier,EDIV) 和 随机值(Random Number ,Rand):这两个值用于创建和识别 LTK。它们也会在绑定过程中储存起来。
- 身份解析密钥 (Identity Resolving Key,IRK):用于解析随机私有地址。该密钥对于每个设备都是唯一的,因此主设备的 IRK 将存储在从设备端,而从设备的 IRK 将存储在主设备端。
- 连接签名解析密钥(Connection Signature Resolving Key,CSRK):该密钥存储在两个绑定设备中的每一个上,用于对数据进行签名并验证附加到另一端数据的签名。
- 随机数 (Rand) 是一个 64 位存储值,用于识别 LE 传统配对期间分发的 LTK。每次分发一个唯一的 LTK 时都会生成一个新的Rank。
Security Modes and Levels
BLE 中有两种安全模式:安全模式 1 和安全模式 2。安全模式 1 与加密有关,而安全模式 2 与数据签名有关。
以下是每种模式的不同级别:
Security Mode 1
- Level 1:无安全性(无身份验证和无加密)
- Level 2:未经身份验证的加密配对
- Level 3:经身份验证的加密配对
- Level 4:经身份验证的 LE 安全连接与加密配对
Security Mode 2
- Level 1:未认证配对与数据签名
- Level 2:认证配对与数据签名 根据所使用的配对方法,链接被视为已认证或未认证。
回顾第一阶段配对部分下列出的表格,我们可以看到,对于每个条目,它列出了该方法是否被视为已验证或未验证。两个设备之间的链路仅在一种安全模式下运行,但可以在该模式内的不同级别运行(不同的特性可能需要不同的安全级别)。
例如:1. 一种特性可能需要 Level 1(无安全性)进行读取访问。2. 相同的特性可能需要Level 3 才能进行写访问。3. 另一个特性可能需要Level 4 进行读写访问。
注意:iOS 不允许需要特殊权限(例如配对、身份验证或加密)来发现服务和特征。相反,它要求服务器仅限制访问或特征(characteristics)的权限以触发配对。可在此处下载的 iOS 蓝牙指南文档。