BLE SMP详解
1、BLE安全与安全管理协议(SMP)概述
1.1. 现代物联网生态系统中的BLE技术
低功耗蓝牙 (Bluetooth Low Energy, BLE) 技术凭借其极低的功耗和在智能手机等设备中的广泛支持,已成为现代物联网 (Internet of Things, IoT) 生态系统的基石技术之一 。从个人消费领域的健康追踪器、智能手表等可穿戴设备和智能家居产品,到对安全性要求极高的医疗监护和工业控制系统,BLE 的应用无处不在 。这种广泛的应用渗透,使得 BLE 通信的安全性不再仅仅是一个可选功能,而是保障数据完整性、用户隐私乃至人身安全的核心要求。

1.2. 安全管理器协议 (SMP):核心安全引擎
在 BLE 协议栈的体系结构中,SMP 位于主机 (Host) 部分,是专门负责处理所有安全相关任务的协议 。它定义了设备间建立信任关系、生成和分发加密密钥以及最终建立安全通信链路的完整流程。可以说,SMP 是 BLE 安全的“门卫”,管理着用于保护链路的加密密钥的整个生命周期。

1.2.1. 安全要素:机密性、完整性、认证与隐私
安全管理器协议 (Security Manager Protocol, SMP) 的核心目标是为 BLE 通信提供一套全面的安全服务。这些服务围绕四个基本安全属性构建。
- 机密性 (Confidentiality): 通过对链路层数据进行加密,防止未经授权的第三方(即“被动窃听者”)读取通信内容。
- 完整性 (Integrity): 确保数据在传输过程中未被篡改。这通常通过消息完整性校验码 (Message Integrity Check, MIC) 或数据签名机制来实现 。
- 认证 (Authentication): 验证通信对端设备的身份,以有效抵御主动的中间人攻击 (Man-in-the-Middle, MITM) 。
- 隐私 (Privacy): 防止不受信任的设备通过蓝牙地址等信息追踪特定设备及其用户的物理位置。这主要通过地址随机化等隐私机制实现 。
1.2.2. BLE面临的安全问题
配对过程和 BLE 的主要安全问题通常是被动窃听、中间人 (MITM) 攻击和身份跟踪。
- 被动窃听: 第三台设备监听两个配对设备之间交换的数据的过程。
- MITM 攻击: 指第三台设备(我们将其称为恶意设备)冒充其他两个合法设备,以欺骗这些设备连接到它。在这种情况下,GAP Central 和 GAP 外围设备都将连接到恶意设备,而恶意设备又会路由其他两个设备之间的通信。这给合法设备一种错觉,即它们是直接相互连接的,而实际上它们的连接已被破坏。这种设置不仅允许恶意设备拦截所有正在发送的数据,还允许它在通信中注入虚假数据或在数据到达预期接收者之前将其删除。
- 身份跟踪:指恶意实体能够将 BLE 设备的地址与特定用户相关联,然后根据 BLE 设备的存在对该用户进行物理跟踪。

2、BLE安全的演进:从传统配对到安全连接
BLE 安全设计的核心在于其必须在提供强大加密保障与在资源受限设备(如低功耗、有限处理能力的传感器)上运行之间取得平衡。这种固有的张力解释了其协议设计中的许多权衡,例如,早期版本中存在像“直接连接 (Just Works)”这样便捷但安全性较低的配对选项。随着物联网应用的深入,最初的这种设计权衡变得不可接受 。市场的需求推动了 BLE 标准的演进:必须在保持低功耗特性的同时,集成更高效且更安全的加密技术。这一需求直接促使蓝牙技术联盟 (Bluetooth SIG) 在蓝牙 4.2 规范中引入了基于椭圆曲线迪菲-赫尔曼密钥交换的“LE 安全连接 (LE Secure Connections)” 。因此,SMP 的整个发展历程可以被视为在不断演变的安全威胁格局下,持续重新平衡安全性与资源消耗之间关系的过程。
2.1. LE 传统配对 (Bluetooth v4.0/4.1):初始框架
在蓝牙 4.2 规范发布之前,LE 传统配对 (LE Legacy Pairing) 是 BLE 设备间建立加密连接的唯一方法 。该机制的核心是一个双密钥体系,由临时密钥和短期密钥构成:
- 临时密钥 (Temporary Key, TK): 这是一个 128 位的密钥,其值由配对过程中选择的关联模型(配对方法)决定。TK 仅在配对阶段使用,作为生成短期密钥的基础 。
- 短期密钥 (Short Term Key, STK): 这是一个 128 位的会话密钥,由 TK 和通信双方生成的两个随机数(Mrand 和 Srand)通过特定的加密函数 s1 计算得出,即 STK = s1(TK, Srand, Mrand)。STK 用于加密当前连接会话的数据 。
2.2. 传统配对的固有漏洞
尽管传统配对机制在当时提供了一定的安全保障,但其设计存在严重缺陷,使其在现代安全标准下被认为是过时且不安全的。
- 被动窃听漏洞: 攻击者可以相对容易地破解 STK,从而解密整个通信会话。
- 直接连接 (Just Works): 在此模式下,TK 被固定设置为 0 1。这意味着 STK 的生成仅依赖于公开传输的两个随机数。攻击者只需嗅探到这两个随机数,就可以轻易地计算出 STK,从而使加密形同虚设。
- 密码输入 (Passkey Entry): 在此模式下,TK 是一个 6 位的数字,其熵值极低(约 20 位)。攻击者在嗅探到配对交换过程后,可以通过离线暴力破解的方式,在极短时间内遍历所有一百万种可能的 TK 值,从而计算出正确的 STK 并解密会话 。
- 中间人攻击 (MITM) 漏洞: 传统配对协议,尤其是在“直接连接”模式下,缺乏对交换的公共参数进行身份验证的机制。这使得攻击者可以冒充通信双方,在它们之间转发数据,从而进行主动的中间人攻击 。
2.3. LE 安全连接 (LESC) 的引入 (Bluetooth v4.2)
为了彻底解决传统配对的严重安全缺陷,蓝牙 4.2 规范引入了名为“LE 安全连接 (LE Secure Connections, LESC)”的全新配对机制 。LESC 现已成为现代 BLE 设备强制要求的安全标准。它具有向后兼容性,即支持 LESC 的设备仍可与仅支持传统配对的旧设备连接,但如果通信双方都支持 LESC,则必须使用 LESC 进行配对 。LESC 最根本的改变在于摒弃了脆弱的 TK/STK 模型,转而在配对的第二阶段直接生成一个强大且持久的长期密钥 (Long Term Key, LTK),用于链路加密 。
2.3.1 椭圆曲线迪菲-赫尔曼 (ECDH) 的核心作用
LE Secure Connections 使用椭圆曲线 Diffie-Hellman (ECDH) 建立共享机密,从而显着降低中间人 (MITM) 攻击的风险。
主要优点:
- 更强的加密(128 位 AES-CCM)
- 通过 ECDH 密钥协议进行窃听保护
- MITM 保护(与经过身份验证的配对方法结合使用时)
2.3.2. ECDH 的工作原理
ECDH 遵循几个简单的步骤。ECDH 使用非对称加密,这意味着不是使用相同的密钥进行解密和加密,而是使用两个密钥, 即私钥和公钥 。这些是 BLE 中 ECDH 的主要步骤
1. 密钥对生成:
- 每个 BLE 设备使用椭圆曲线(通常为 P-256)生成私钥和公钥 。
2. 密钥交换:
- 设备通过无线方式交换其公钥 。
3. 共享密钥计算:
- 每台设备使用其私钥和另一台设备的公钥来计算相同的共享密钥 。
- 由于椭圆曲线的数学性质 ,这是可能的。
- 重要的是,即使有人窃听了公钥交换,他们也无法在没有访问任一私钥的情况下计算共享密钥 。
4. 密钥对生成
- 每个设备(例如 A 和 B)生成:
- 私钥 (保密)
- 使用椭圆曲线方程(通常是 P-256 曲线)的相应公钥 。曲线上的已知基点。
5. 公用密钥交换
- 设备通过 BLE 链路交换公钥 。
- 这发生在配对特征交换阶段 。
6. 共享密钥计算
- 每个设备使用自己的私密密钥和另一台设备的公钥来计算共享密钥 :
- 由于椭圆曲线的特性,两台设备都可以计算相同的 256 位共享密钥 ,而无需通过无线方式发送。
从传统配对到 LESC 的转变,标志着 BLE 安全理念的根本性变革——从一个存在设计缺陷的自定义对称密钥协商协议,转向了一个基于标准且经过广泛验证的公钥密钥协商协议。这反映了蓝牙标准在安全设计上的成熟,即认识到设计自定义加密协议充满风险,而依赖于经过学术界和工业界严格审查的标准化加密原语才是确保安全性的可靠途径。
| 特性 | LE 传统配对 (Legacy Pairing) | LE 安全连接 (LE Secure Connections) |
|---|---|---|
| 蓝牙规范版本 | 4.0, 4.1 | 4.2 及更高版本 |
| 核心加密方法 | 自定义对称密钥协商 | 椭圆曲线迪菲-赫尔曼 (ECDH) 公钥密钥协商 |
| 配对生成的密钥 | 临时密钥 (TK) 和短期密钥 (STK) | 长期密钥 (LTK) |
| 抗被动监听能力 | 弱 (在 Just Works 和 Passkey 模式下可被破解) | 强 (基于 ECDH, 即使在 Just Works 模式下也安全) |
| 抗中间人攻击能力 | 弱 (仅在 OOB 模式下安全) | 强 (在 Passkey, Numeric Comparison, OOB 模式下均提供认证) |
| 主要漏洞 | TK 阈值过低,导致 STK 易被暴力破解 | 依赖于关联模型提供认证,Just Works 模式仍无 MITM 保护 |
3、SMP的核心原则
3.1. 配对与绑定–>临时安全与持久信任
配对 (Pairing): 指的是为当前连接会话生成和交换密钥以建立加密链路的过程。一旦设备断开连接,为该会话生成的密钥(如 STK)通常会被丢弃。配对提供的是一种临时的、会话级别的安全性。
绑定 (Bonding): 是指在配对成功后,将生成的长期密钥(如 LTK、IRK、CSRK)存储在设备的非易失性存储器中的行为。绑定在两个设备之间建立了一种持久的信任关系。当已绑定的设备再次连接时,它们可以直接使用存储的密钥来快速恢复加密会话,而无需重复完整的配对过程 。设备是否进行绑定由配对请求/响应包中的 Bonding Flags 字段决定。
3.2. 加密工具箱–>密钥与函数
SMP 的运作依赖于一套明确定义的密钥和加密函数
3.2.1. 密钥层级及作用对比
| 密钥 | 缩写 | 大小 | 作用范围 | 主要功能 |
|---|---|---|---|---|
| 临时密钥 | TK | 128 位 | 传统配对过程 | 作为生成 STK 的基础,值由配对方法决定。 |
| 短期密钥 | STK | 128 位 | 单个传统配对会话 | 用于加密传统配对成功后的当前连接。 |
| 长期密钥 | LTK | 128 位 | 绑定设备的所有连接 | 用于加密当前及后续所有连接,是实现机密性的核心密钥。 |
| 身份解析密钥 | IRK | 128 位 | 绑定设备 | 用于生成和解析可解析私有地址 (RPA),是实现隐私保护的核心。 |
| 连接签名解析密钥 | CSRK | 128 位 | 绑定设备 | 用于对未加密的数据进行签名和验证,提供数据来源认证和完整性保护。 |
3.2.2. 核心加密函数
- 传统配对函数:
- c1: 确认值生成函数。该函数使用 TK、随机数以及设备信息(如地址、I/O 能力)作为输入,生成一个 128 位的确认值。双方通过交换确认值来验证彼此是否拥有相同的 TK,而无需直接暴露 TK 。
- s1: STK 生成函数。该函数使用 TK 和双方的随机数 (Mrand, Srand) 来生成 128 位的 STK 。
- LE 安全连接函数:
- f4: LESC 确认值生成函数。它使用 AES-CMAC 算法,结合双方的公钥和随机数生成确认值,以验证密钥交换过程的完整性 。
- f5: LESC 密钥生成函数。它以 ECDH 共享密钥和随机数为输入,通过基于 AES-CMAC 的密钥派生函数 (KDF) 生成 LTK 和 MacKey 。
- f6: LESC 校验值生成函数。在认证阶段 2 用于生成校验值,进一步确认配对的完整性 。
- g2: 数字比较值生成函数。它使用双方的公钥和随机数来生成一个 6 位数字,该数字在数字比较 (Numeric Comparison) 配对方法中显示给用户以供确认 。
3.3. 安全模式和级别
蓝牙规范定义了一个正式的安全层级结构,以量化连接的安全性。其中,安全模式 1 是最常用和最核心的模式,它定义了四个安全级别 。
| 安全级别 | 描述 | 实现方式 (配对方法) | MITM 保护 |
|---|---|---|---|
| 级别 1 | 无安全 | 无需配对 | 否 |
| 级别 2 | 未认证配对加密 | Just Works (传统或 LESC) | 否 |
| 级别 3 | 认证配对加密 | Passkey Entry 或 OOB (传统配对) | 是 |
| 级别 4 | 认证的 LE 安全连接配对加密 | Passkey Entry, Numeric Comparison, 或 OOB (LESC) | 是 |
每个 BLE 连接都始于级别 1,然后根据所采用的配对方法升级到更高级别 ,需要注意下面这个问题。
这些安全级别不仅仅是描述性的标签,它们是可以在通用属性配置文件 (GATT) 层强制执行的规则。这在配对过程和应用层数据访问之间建立了一个直接的因果联系。开发者可以(并且应该)在应用设计中规定,只有当连接达到特定的安全级别时,才允许访问敏感数据。
例如,一个 GATT 特征(Characteristic)可以被设置为“读取需要认证加密”(即级别 3 或 4)。当客户端尝试读取该特征时,BLE 协议栈会检查当前链路的安全级别。如果级别不足(例如,链路是级别 2,但特征要求级别 3),协议栈将拒绝该请求并返回“认证不足”的错误 。这个机制可以将 SMP 建立的安全保障与应用程序的数据访问策略具体地联系起来,但如果开发者未能正确配置 GATT 权限,那么在配对过程中建立的安全性对于保护应用数据而言将毫无意义,这是一个常见的实现陷阱
3.4. 配对三阶段
配对是一个三阶段过程。前两个阶段始终使用,之后可以选择进行特定于传输的密钥分发阶段,如下图所示:
- 第一阶段:配对特征交换
- 第二阶段(LE 传统配对):短期密钥(STK)生成
- 第二阶段(LE 安全连接):长期密钥 (LTK) 生成
- 第三阶段:运输特定密钥分发

3.4.1. 阶段一:配对特性交换
这是配对过程的起始阶段,由发起方 (Initiator) 向响应方 (Responder) 发送一个 Pairing Request 消息,响应方则回复一个 Pairing Response 消息 。此阶段的所有通信都是未加密的 。这些消息中包含了决定后续配对方式和安全级别的关键信息 :
- I/O 能力 (I/O Capability): 定义了设备的输入输出能力,如 DisplayOnly (仅显示)、NoInputNoOutput (无输入无输出) 等 。
- OOB 数据标志 (OOB Data Flag): 表明设备是否拥有通过带外 (Out-of-Band) 通道获取的数据 。
- 认证要求 (AuthReq): 这是一个至关重要的位字段,包含了多个标志位:
- Bonding Flags: 请求是否进行绑定 。
- MITM: 请求中间人攻击保护 。
- SC: 表明设备是否支持 LE 安全连接 。
- Keypress: 表明在密码输入模式下是否支持按键通知 。
- 最大加密密钥长度 (Maximum Encryption Key Size): 设备支持的最大密钥长度,范围为 7 到 16 字节 。
- 发起方/响应方密钥分发 (Initiator/Responder Key Distribution): 指明设备计划在第三阶段分发哪些密钥(LTK, IRK, CSRK) 。
3.4.2. 阶段二:认证与密钥生成
这是配对过程的加密核心,链路加密密钥在此阶段生成 。该阶段的具体流程因使用的是传统配对还是 LESC 而有显著不同。
-
对于 LE 传统配对:
- 根据第一阶段交换的能力,确定关联模型并建立 TK。
- 双方交换 Pairing Confirm 和 Pairing Random 消息以验证 TK 的一致性 。
- 使用 s1 函数生成 STK,并使用 STK 加密链路 。
-
对于 LE 安全连接:
- 双方交换各自的 ECDH 公钥 。
- 各自独立计算出相同的 ECDH 共享密钥。
- 使用选定的关联模型(如数字比较)对交换过程进行认证,以抵御 MITM 攻击。
- 使用 f5 函数从共享密钥派生出 LTK,并使用 LTK 加密链路 。
3.4.3. 阶段三:传输特定密钥分发
此阶段是可选的,仅在第一阶段请求了绑定时才会执行 。执行此阶段的前提是,链路必须已经使用第二阶段生成的密钥(传统配对的 STK 或 LESC 的 LTK)进行了加密 。在此阶段,双方会交换在第一阶段声明要分发的密钥,通常包括:
- 身份信息 (IRK) 及其对应的身份地址。
- 签名信息 (CSRK)。
- 在传统配对中,LTK 也是在此阶段分发的;而在 LESC 中,LTK 已在第二阶段生成 。
第一阶段的未加密特性是一个经过计算的风险,但同时也构成了一个重要的攻击向量。一个主动的中间人攻击者可以拦截并修改 Pairing Request/Response 消息,例如,通过将 SC 标志位清零来禁用安全连接,或修改 I/O 能力来强制使用安全性较低的配对方法。如果一个支持 LESC 的发起方发送的请求被攻击者拦截,攻击者可以将 SC 位置为 0 再转发给响应方。响应方会误认为发起方不支持 LESC,从而也以不支持 LESC 的方式回应。最终结果是,两个完全有能力使用 LESC 的设备被迫降级到使用脆弱的传统配对协议 。这揭示了整个配对过程的安全性依赖于第一阶段未受保护的特性交换的完整性,这是一个显著的架构弱点。
4、安全性比较分析
配对方法的选择并非任意,而是由一个确定性算法根据第一阶段交换的 I/O 能力和认证要求来决定的 。本章将对每种方法进行详细的机制和安全性分析。
4.1. 直接连接 (Just Works)
机制: 无需用户交互,设备可能会弹出一个确认框(例如,“是否要配对?”)。
传统配对环境: 极不安全。TK 为 0,导致被动窃听轻而易举,且完全没有 MITM 保护 。
LESC 环境: 由于 ECDH 的使用,能有效抵御被动窃听。然而,由于用户无法验证他们正在连接的设备的真实性,因此仍然无法提供 MITM 保护 。
使用场景: 适用于没有任何输入输出能力的设备 (NoInputNoOutput),如智能灯泡或简单的环境传感器 。
4.2. 密码输入 (Passkey Entry)
机制: 一台设备显示一个 6 位随机数,用户需要在另一台设备上手动输入此数字 。
安全性: 提供经认证的 MITM 保护,因为攻击者无法获知通过带外方式(即用户视觉和手动输入)传输的密码 。在 LESC 中,安全性得到极大增强,密码的每一位都被用来认证 ECDH 公钥交换过程,使其比传统配对中的实现更为稳健 。
使用场景: 一方有显示能力,另一方有键盘输入能力的设备组合,例如将手机与蓝牙键盘配对 。
4.3. 带外 (Out of Band, OOB)
机制: 认证数据(传统配对中的 TK 或 LESC 中的其他加密材料)通过一个独立的通信渠道(如 NFC)进行交换 。
安全性: 被认为是最安全的方法,但其前提是 OOB 通道本身必须是安全的。BLE 连接的安全性继承了 OOB 通道的安全性。如果 OOB 通道能抵抗窃听和 MITM 攻击,那么 BLE 链路也将同样安全 。在传统配对中,它支持完整的 128 位 TK,是唯一安全的传统配对选项 。
使用场景: 配备了第二通信通道的设备,如支持 NFC 的智能手机和外设 。
4.4. 数字比较 (Numeric Comparison) (仅限 LESC)
机制: 这是 LE 安全连接引入的新方法。通信双方设备上会同时显示一个相同的 6 位数字,用户只需在两台设备上确认“是”或“匹配”即可 。
安全性: 提供经认证的 MITM 保护。这个 6 位数字是使用双方的公钥和随机数通过 g2 函数生成的。如果存在中间人攻击,攻击者将处于两个独立的 ECDH 交换的中间,导致两台设备上计算并显示的数字不同,用户会因此拒绝配对 。
使用场景: 双方都具有显示能力和至少“是/否”输入能力的设备,例如两部智能手机之间的配对 。
一个设备所具备的 I/O 能力为其所能达到的最高安全级别设定了硬性上限。产品设计者出于成本考虑而省略一个显示屏或一个按钮的决定,可能会将该设备永久性地锁定在最不安全的配对方法(如 Just Works)中,无论其固件多么先进。这是因为配对关联模型是根据双方 I/O 能力矩阵确定性地选择的 。当一个设备的 I/O 能力为 NoInputNoOutput 时,与大多数其他设备配对时都会默认采用 Just Works 方法 。而 Just Works,即使在 LESC 下,也无法提供任何 MITM 保护 。因此,在硬件层面做出的设计决策(例如,为了节省成本而设计一个“无头”传感器)会产生直接且不可逆的加密后果:该设备将永远无法执行认证配对。这揭示了一个 关键的三阶效应:物联网产品的物理物料清单 (BOM) 和工业设计与其网络安全态势紧密相连。工程师必须认识到,增加一个简单的显示屏或按钮不仅仅是一个用户体验特性,更是一个解锁更高信任级别的安全使能特性。
| 配对方法 | 机制 | 所需 I/O | 用户交互 | 抗被动监听 (LESC) | 抗 MITM 攻击 |
|---|---|---|---|---|---|
| Just Works | 自动配对,可能需要用户确认 | 至少一方为 NoInputNoOutput | 低 (确认) | 是 | 否 |
| Passkey Entry | 一方显示 6 位数,另一方输入 | 一方有显示,一方有键盘 | 高 (输入) | 是 | 是 |
| Out of Band | 通过 NFC 等其他信道交换数据 | OOB 信道 (如 NFC) | 取决于 OOB 渠道 | 是 | 是 (若 OOB 安全) |
| Numeric Comparison | 双方显示相同 6 位数,用户确认 | 双方均有显示和确认能力 | 中 (确认) | 是 | 是 |
5、注意事项
要构建安全的 BLE 设备,开发人员应该:
- 默认使用 LE 安全连接 - 避免传统配对
- 除非绝对必要,否则避免 Just Works。
- 绑定后加密 GATT 数据。
- 实现 MAC 随机化以抵抗跟踪。
- 避免以明文形式广播个人或设备识别信息。
这些做法共同有助于保护支持 BLE 的产品中的数据完整性和用户匿名性 。
6、总结及展望
6.1.蓝牙安全总结
本文章系统性地分析了 BLE 安全管理器协议的演进、原理和实践。核心结论如下:
- 从传统配对到 LE 安全连接的演进是根本性的安全飞跃。 基于 ECDH 的 LESC 从根本上解决了传统配对在抗被动窃听方面的脆弱性。
- BLE 安全是一个多层次的体系。 一个连接的最终安全性取决于硬件 I/O 能力、协议配置(配对方法)和应用层(GATT 权限)的共同作用。仅仅依赖协议本身是不够的。
- 遵循最佳实践至关重要。 强制使用 LESC、选择认证配对方法、保护存储的密钥以及在 GATT 层强制执行安全策略,是构建安全 BLE 产品的基本要
6.2.蓝牙安全的未来展望
蓝牙安全标准在持续演进,同时新的漏洞也在不断被研究和发现。开发者和制造商必须保持警惕,及时应用安全更新。
展望未来,一个重要的长期挑战是向后量子密码学 (Post-Quantum Cryptography, PQC) 的过渡。当前 LESC 使用的 ECDH P-256 算法虽然能抵抗传统计算机的攻击,但对于未来的量子计算机而言是脆弱的。像 NIST 这样的标准组织已经在积极制定 PQC 标准 。为了在量子时代保持长期安全,整个无线通信生态系统,包括蓝牙,最终将需要采用这些新的抗量子算法。**这不仅是协议层面的挑战,也对资源受限的嵌入式设备在性能和功耗方面提出了新的要求 。**为实现平稳过渡,行业需要提前规划,并推动具有加密敏捷性(即能够轻松切换加密算法)的系统架构 。
7、蓝牙相关文章推荐
(一)蓝牙的发展历史
(二)蓝牙架构概述-通俗易懂
(三)BLE协议栈协议分层架构设计详解
(四)BLE的广播及连接-通俗易懂
(五)图文结合-详解BLE连接原理及过程
8、相关参考
- https://www.bluetooth.com/wp-content/uploads/Files/Specification/HTML/Core-54/out/en/host/security-manager-specification.html
- https://dev.ti.com/tirex/explore/node?node=A__AZlepia.Y63S3T6v-0IjMA__SIMPLELINK-ACADEMY-CC23XX__gsUPh5j__LATEST
- https://academy.nordicsemi.com/courses/bluetooth-low-energy-fundamentals/lessons/lesson-5-bluetooth-le-security-fundamentals/
- https://www.cnblogs.com/RunningSnails/p/17744996.html
3535





