BLE 协议栈 安全管理协议(Security Manager Protocol, SMP)全解析-D

张开发
2026/4/17 12:34:31 15 分钟阅读

分享文章

BLE 协议栈 安全管理协议(Security Manager Protocol, SMP)全解析-D
目录概述1 SMP 核心定位 所属协议栈层级1.1 协议栈层级归属1.2 核心作用1.3 核心知识1.4 安全等级2 SMP 的核心设计原则配对的两种核心模式2.1 模式 1Just Works只管工作 / 自动配对2.2 模式 2Passkey Entry密钥输入 / 密码配对2.3 配对 ≠ 绑定3 SMP 核心核心流程配对Pairing完整流程3.1 阶段 1配对请求 配对响应Pairing Request Pairing Response3.2 阶段 2密钥生成与分发Key Generation Distribution3.3 阶段 3加密启动Encryption Start3.4 阶段 4绑定Bonding可选但推荐4 SMP 核心密钥体系BLE 安全核心5 SMP 安全机制的核心保障AES-128 加密概述BLE 蓝牙协议栈中核心的安全管理协议 (SMP)这是 BLE 实现蓝牙设备配对、加密、身份认证、数据安全传输的核心协议是 BLE 协议栈中主机层 (L2CAP 之上)的核心安全组件没有 SMP 就没有 BLE 的安全通信。1 SMP 核心定位 所属协议栈层级1.1 协议栈层级归属BLE 的完整协议栈从下到上分为物理层 (PHY) → 链路层 (LL) → L2CAP 层 → 安全管理协议 (SMP) → ATT/GATT 层 → 应用层.SMP 是BLE 主机 (Host) 侧的核心协议运行在L2CAP 逻辑信道之上独占 L2CAP 的固定 CID0x0006 逻辑通道SMP 向下通过 L2CAP 和链路层交互向上为 ATT/GATT 层提供安全能力所有 GATT 的读写 / 通知 / 指示的安全校验最终都由 SMP 完成。1.2 核心作用SMP 的唯一核心目标 为两个 BLE 设备之间的无线链路建立一套安全、可信、加密的通信机制具体实现 3 大核心功能设备间的配对 (Pairing)完成密钥协商、安全参数交换是安全链路的「建立过程」设备间的绑定 (Bonding)将配对过程中生成的所有安全密钥、身份信息永久存储在双方的非易失性存储器 (NV)中配对一次、永久生效下次连接无需重新完整配对直接快速加密链路加密与认证配对 / 绑定完成后基于协商的密钥对 LL 层的所有空中传输数据进行AES-128 加密同时对设备身份、数据完整性进行校验防止窃听、篡改、中间人攻击。SM核心功能:配对Pairing建立共享密钥的过程。身份验证Authentication确认对端设备的身份。加密Encryption使用AES-128算法加密数据。密钥分发Key Distribution交换用于加密和身份验证的密钥。1.3 核心知识SMP 是 BLE主机层的安全管理协议运行在 L2CAP 之上是 BLE 安全通信的核心SMP 核心功能配对、绑定、链路加密、身份认证目标是建立安全的无线链路配对分 2 种模式Just Works便捷无认证、Passkey Entry高安全需 PIN 码配对流程分 4 阶段请求响应 → 密钥生成 → 加密启动 → 绑定可选核心密钥体系128bitLTK (核心加密)、TK (临时配对)、IRK (隐私解析)、CSRK (防篡改)加密标准强制 AES-128 对称加密链路层全量加密硬件加速低功耗核心区别配对是过程绑定是配对后的密钥存储绑定后免重复配对。1.4 安全等级BLE定义了以下安全模式和安全等级安全模式等级描述模式1等级1无安全无加密模式1等级2未认证的加密加密但无MITM保护模式1等级3认证的加密加密且有MITM保护模式2等级1未认证的数据签名无加密模式2等级2认证的数据签名有MITM保护2 SMP 的核心设计原则配对的两种核心模式BLE 的配对设计了两种完全不同的配对模式所有的配对流程都基于这两种模式展开核心区别是「是否需要用户手动参与」「是否依赖预先约定的密钥」无优劣之分仅适配不同的应用场景2.1 模式 1Just Works只管工作 / 自动配对核心特征无用户交互、无 PIN 码、自动完成配对设备发起连接后无需用户输入任何密码、无需确认自动协商密钥并完成配对安全等级✅ 基础安全实现链路加密防止数据窃听无身份认证无法确认对方设备的合法性典型场景智能家居如蓝牙温湿度计、灯泡、穿戴设备快速连接追求「无感连接、极致便捷」对身份认证要求低的场景。2.2 模式 2Passkey Entry密钥输入 / 密码配对核心特征必须用户主动参与、需要 PIN 码校验配对过程中两台设备会生成随机数字6 位数字 Passkey用户需要在其中一台设备输入该密钥或确认两台设备的密钥一致安全等级✅✅✅ 高安全链路加密 强身份认证可以有效抵御「中间人攻击」能确认通信对端是合法设备而不是伪造的恶意设备典型场景蓝牙支付设备、门禁锁、医疗设备、蓝牙音箱 / 耳机防止被非法设备连接对数据安全、设备合法性要求高的场景。2.3 配对 ≠ 绑定配对 (Pairing)是「过程」是两台设备协商密钥、启动加密的一次性交互流程配对成功后如果不存储密钥本次连接断开后下次连接需要重新配对绑定 (Bonding)是「结果 存储」是配对成功后将密钥永久存储的操作绑定后密钥保存在设备中下次连接直接复用密钥无需重新配对✅ 关系绑定必须基于配对完成配对可以选择是否绑定。3 SMP 核心核心流程配对Pairing完整流程SMP 的配对是一个标准化的、分阶段执行的交互流程两台 BLE 设备区分「发起方 Initiator」和「响应方 Responder」通过空中交互 SMP 指令完成整个配对流程严格分为 4 个必选阶段按顺序执行缺一不可所有 BLE 设备的配对逻辑完全遵循这个标准流程3.1 阶段 1配对请求 配对响应Pairing Request Pairing Response由配对发起方如手机向响应方如蓝牙手环发送「配对请求」指令指令中携带核心安全参数自身支持的配对模式Just Works / Passkey Entry自身的加密算法能力固定为 AES-128BLE 标准密钥分发能力、身份认证等级等响应方收到请求后返回「配对响应」指令确认双方协商一致的配对模式和安全参数✅ 核心结果双方确定本次配对的核心规则参数不一致则直接终止配对。3.2 阶段 2密钥生成与分发Key Generation Distribution这是配对的核心核心阶段也是最关键的安全环节核心逻辑是两台设备基于「随机数 约定算法」共同生成多套加密密钥且双方的密钥完全一致核心是「Diffie-Hellman 密钥交换算法」BLE 强制标准。双方各自生成随机数通过空中交互后基于 DH 算法计算出临时共享密钥 (TK)基于 TK 进一步生成长期主密钥 (LTK, Long Term Key)—— LTK 是 BLE 链路加密的「核心密钥」后续所有数据加密都依赖 LTK同时生成配套的辅助密钥身份解析密钥 (IRK)、连接签名密钥 (CSRK) 等✅ 核心特性DH 算法的优势是「密钥在空中传输过程中永远不会明文暴露」即使被窃听也无法破解出最终的 LTK从根源保证密钥安全。3.3 阶段 3加密启动Encryption Start密钥协商完成后发起方向响应方发送「加密启动」指令携带加密相关参数双方基于已生成的LTK 主密钥启动 AES-128 硬件加密对 LL 层的所有空中数据包进行加密处理✅ 核心结果从这一刻开始两台 BLE 设备之间的所有无线通信数据都是密文传输第三方即使捕获空中数据包也无法解析出原始数据。3.4 阶段 4绑定Bonding可选但推荐这是配对的延伸流程也是 SMP 实现「免重复配对」的核心核心定义绑定 配对成功后将本次协商生成的所有密钥LTK、IRK、CSRK 等永久存储在双方的非易失性存储器Flash/NV中绑定是可选操作但几乎所有商用 BLE 设备都会开启绑定功能绑定的核心价值配对一次永久生效。下次两台设备再次建立 BLE 连接时无需重新执行完整的 4 阶段配对流程直接读取本地存储的密钥快速启动加密大幅提升重连速度、优化用户体验解绑操作删除双方存储的绑定密钥下次连接则需要重新配对。4 SMP 核心密钥体系BLE 安全核心SMP 的所有安全能力都基于一套标准化的密钥体系实现这套密钥是 BLE 安全的基石所有密钥均为128bit 长度AES-128 标准各司其职、缺一不可按功能优先级排序核心密钥如下加密后的数据包在链路层增加了MIC消息完整性检查和新的有效载荷格式密钥类型描述用途LTK长期密钥加密连接IRK身份解析密钥解析私有地址CSRK连接签名解析密钥数据签名EDIV和Rand加密分散参数与LTK一起标识加密连接1 LTK (Long Term Key长期密钥) - 「核心加密密钥」✅ 核心作用BLE 链路加密的唯一核心密钥配对生成后用于对 LL 层所有空中传输的数据进行 AES-128 加密和解密✅ 优先级最重要的密钥没有 LTK 就没有 BLE 的链路加密✅ 存储绑定后LTK 会被永久存储在双方设备中重连时直接复用。2 TK (Temporary Key临时密钥) - 「配对临时密钥」✅ 核心作用配对阶段的「过渡密钥」是生成 LTK 的基础由双方协商生成仅在配对过程中有效✅ 生命周期配对完成后TK 会被立即销毁不会存储仅用于密钥推导不参与实际的数据加密。3 IRK (Identity Resolving Key身份解析密钥)✅ 核心作用解决 BLE 设备的「隐私安全」问题BLE 设备的广播地址分为「公有地址」和「随机私有地址」✅ 工作逻辑绑定后的设备会使用「随机私有地址」广播防止被恶意追踪对方设备通过 IRK 可以解析该随机地址确认是已绑定的合法设备从而建立连接。4) CSRK (Connection Signature Resolving Key连接签名密钥)✅ 核心作用数据完整性校验 防篡改用于对 BLE 的「无连接广播数据」如广播包、扫描响应包和「连接态的控制指令」进行签名✅ 安全价值防止第三方恶意篡改空中传输的数据比如篡改蓝牙门锁的开锁指令、篡改蓝牙温度计的温湿度数据接收方通过 CSRK 校验签名发现篡改则直接丢弃数据。5 SMP 安全机制的核心保障AES-128 加密1) 加密算法强制标准 - AES-128BLE 协议栈的 SMP 模块强制规定使用 AES-128 对称加密算法这是蓝牙联盟的标准所有 BLE 设备必须遵循没有其他可选算法对称加密加密和解密使用同一套密钥LTK双方设备共用 LTK加密效率极高适合蓝牙的低功耗、高实时性场景128bit 长度密钥长度为 128 位破解难度极高目前商用场景下无暴力破解的可能性完全满足物联网设备的安全需求2) 加密范围链路层 (LL) 全量加密SMP 的加密是链路层级别的加密核心特点加密范围所有在空中传输的 BLE 数据包包括广播包、连接包、GATT 读写指令、通知 / 指示数据无一例外透明加密对上层协议ATT/GATT/ 应用层完全透明应用层无需关心加密细节只需要调用 SMP 的 API 触发配对加密和解密由 BLE 协议栈自动完成硬件加速几乎所有 BLE 芯片如 Nordic nRF52、TI CC2640、华为海思 BLE 芯片都内置 AES-128 硬件加密模块加密 / 解密不占用 CPU 资源不影响设备功耗完美契合 BLE 的「低功耗」核心设计理念。3) SMP 与 ATT 层安全的关联SMP 是「底层安全基石」ATT 层属性协议是「上层安全策略」两者协同实现 BLE 的完整安全SMP 负责链路层的加密和密钥协商解决「数据能不能安全传」的问题ATT 层负责基于 SMP 的加密链路设置访问权限如只读、只写、加密后可读写、绑定后可操作解决「谁能访问数据」的问题举例蓝牙门锁的「开锁指令」ATT 层设置为「加密后可写」只有完成 SMP 配对加密的合法设备才能发送开锁指令未加密的设备即使连接成功也无法写入该指令。

更多文章