安全管理协议(SMP):配对流程、密钥生成与防中间人攻击——蓝牙面试核心考点精解
一、SMP 核心知识点高频考点解析
1.1 SMP 在蓝牙安全体系中的定位
考点:SMP 的功能与协议栈位置
解析:
SMP(Security Manager Protocol,安全管理协议)是蓝牙核心规范中负责设备配对、密钥生成与安全连接的关键协议,位于协议栈的 L2CAP 层之上,通过 HCI 接口与控制器交互。其核心目标是:
身份认证:验证设备身份,防止中间人攻击(MITM)
密钥生成:动态生成加密密钥(STK/LTK)
密钥分发:安全传输IRK/CSRK等敏感数据
安全升级:支持从Legacy Pairing到Secure Connections的演进
真题示例:
问题:以下哪个协议负责蓝牙设备的配对和密钥生成?
A. L2CAP
B. SMP
C. GATT
D. SDP
答案:B(SMP 是蓝牙安全管理的核心协议)
1.2 配对流程与核心阶段
考点:配对的三个阶段及关键交互
解析:
SMP 配对分为三个核心阶段:
阶段 1:能力交换(Capability Exchange)
- 交换参数:IO能力(5种类型)、OOB支持、认证要求
- 决定配对方法:Just Works/Passkey/Numeric Comparison/OOB
大厂真题:
华为2023校招真题:“当Initiator的IO能力为KeyboardOnly,Responder为DisplayOnly时,应使用哪种配对方法?”
答案:Passkey Entry(响应端显示6位码,发起端输入)
阶段2:认证与密钥生成
①Legacy Pairing(蓝牙4.1前)
②Secure Connections(蓝牙4.2+)
核心改进:
椭圆曲线加密:使用P-256曲线生成DHKey
双向认证:Numeric Comparison提供可视化确认
强密钥:直接生成128位LTK,无需STK过渡
阶段3:密钥分发
分发密钥类型:
密钥 | 长度 | 作用 | 是否必选 |
---|---|---|---|
LTK | 128-bit | 链路加密 | √ |
IRK | 128-bit | 解析私有地址 | △ |
CSRK | 128-bit | 数据签名 | △ |
EDIV+RAND | 64-bit | 快速重连 | △ |
安全策略:
AES-CCM加密:所有密钥分发过程强制加密
双向确认:Key Distrib字段协商分发内容
绑定存储:成功分发后建立绑定关系37
1.3 四大配对方法对比
方法 | MITM防护 | 适用场景 | 安全强度 | 操作复杂度 |
---|---|---|---|---|
Just Works | × | 耳机/手环 | ★☆☆☆☆ | 零操作 |
Passkey Entry | √ | 键盘+显示设备 | ★★★☆☆ | 用户输入6位码 |
Numeric Comparison | √ | 手机/平板 | ★★★★☆ | 用户确认数字 |
OOB | √ | 支付设备/门禁 | ★★★★★ | 近场通信辅助 |
OPPO 2023真题:“智能门锁与手机配对时,为何推荐OOB+Numeric Comparison组合?”
答案:OOB提供初始信任锚点,Numeric Comparison防中间人攻击,双重保障支付级安全
真题示例:
问题:SMP 配对中,ECDH 算法的作用是?
A. 生成随机数
B. 计算共享秘钥
C. 验证设备名称
D. 压缩传输数据
答案:B(ECDH 用于生成双方的共享秘钥)
1.4 密钥类型与用途对比
考点:IRK/LTK/STK 的区别与应用场景
解析:
密钥类型 | 全称 | 长度 | 生成方式 | 主要用途 |
---|---|---|---|---|
IRK | 身份解析密钥 | 16 字节 | 设备出厂预存或配对时生成 | 设备绑定(存储在安全数据库)、签名验证 |
LTK | 长期密钥 | 7~16 字节 | 配对时通过 ECDH 生成 | 链路层加密(LL 层数据加密) |
STK | 短期密钥 | 16 字节 | 配对时临时生成 | 连接层完整性校验(防止数据篡改) |
CSRK | 证书签名密钥 | 16 字节 | 带外数据(OOB)提供 | 增强防中间人攻击(仅安全模式 4) |
真题示例:
问题:以下哪个密钥用于蓝牙设备的长期绑定?
A. LTK
B. STK
C. IRK
D. CSRK
答案:C(IRK 是设备绑定的核心密钥,存储后可用于快速重连)
1.5 安全模式与配对方法
考点:安全模式 1/4 的区别及配对方法适用场景
解析:
安全模式 1(传统安全模式)
- 特点:配对在 L2CAP 层进行,支持三种配对方法:
- Just Works:无用户交互(风险高,适合低安全设备如耳机)。
- 数字比较:双方显示 6 位数字,用户确认匹配(如智能手表配对)。
- 带外数据(OOB):通过 NFC 等外带通道传输密钥(高安全场景)。
- 防攻击:不强制防中间人攻击(MITM),需显式启用。
安全模式 4(LE 安全连接)
- 特点:配对在链路层(LL)进行,强制使用椭圆曲线加密(ECDH),默认启用 MITM 保护。
- 配对方法:仅支持数字比较和 OOB,不支持 Just Works(提升安全性)。
真题示例:
问题:以下哪种配对方法支持防中间人攻击?
A. Just Works
B. 数字比较(安全模式 4)
C. 带外数据(OOB)
D. B 和 C
答案:D(安全模式 4 的数字比较和 OOB 方法强制 MITM 保护)
1.6 防中间人攻击(MITM)机制
考点:MITM 保护的核心原理与验证步骤
解析:
SMP 通过以下步骤实现 MITM 保护(以数字比较为例):
- 生成签名哈希(H):双方用共享秘钥(DHKey)和 IRK 计算哈希值 H。
- 用户确认数字(X):计算 X = H 的低 6 位十进制数,用户需在两设备上看到相同 X。
- 随机数校验(R):交换随机数 R 和 R',确保双方未被中间人篡改数据。
真题示例:
问题:SMP 如何防止中间人攻击?(多选)
A. 使用椭圆曲线加密(ECDH)
B. 用户确认配对码(数字比较)
C. 验证设备 IRK 签名
D. 仅允许带外数据配对
答案:ABC(ECDH 确保密钥安全生成,数字比较和 IRK 签名防止中间人伪造)
二、历年真题深度解析
2.1 单选题:SMP 配对阶段
题目:SMP 配对中,协商配对方法和加密算法是在哪一阶段?(2024・高通嵌入式面试题)
A. 密钥生成阶段
B. 配对请求阶段
C. 连接加密阶段
D. 身份认证阶段
答案:B
解析:在第一阶段的Pairing Request
和Pairing Response
中,双方协商配对方法(如数字比较)、加密算法(AES-CCM)等参数。
2.2 多选题:安全模式区别
题目:以下关于蓝牙安全模式的说法,正确的是?(蓝牙技术认证考试)
A. 安全模式 1 支持 Just Works 配对
B. 安全模式 4 强制防中间人攻击
C. 安全模式 1 的配对在链路层进行
D. 安全模式 4 仅支持 LE 设备
答案:ABD
解析:安全模式 1 的配对在 L2CAP 层进行,安全模式 4(LE 安全连接)仅适用于 BLE 设备,且强制 MITM 保护。
2.3 简答题:密钥生成流程
题目:简述 SMP 生成 LTK 的步骤。(2023・华为硬件岗面试题)
参考答案:
- ECDH 交换公钥:发起方和响应方生成 ECDH 公钥对,交换公钥 A 和公钥 B。
- 计算共享秘钥(DHKey):双方用对方公钥和自身私钥计算 DHKey。
- 生成临时密钥(LTK):通过 DHKey、随机数 R 和设备地址,使用 AES-CCM 算法生成 LTK。
- 验证 LTK:通过
Pairing Confirm
和Pairing Random
消息确保双方 LTK 一致。
题目(配对方法选择):当双方设备均支持LE Secure Connections时,应优先采用哪种配对方法?(2023年字节跳动)
解析:
答案:优先使用LE Secure Connections配对方式,当OOB不可用时根据IO能力选择Numeric Comparison或Passkey Entry。
题目(Secure Connections优势):“对比Legacy Pairing,LE Secure Connections如何提升安全强度?”(苹果2023)
技术对比:
特性 | Legacy Pairing | Secure Connections |
---|---|---|
密钥长度 | 可变(7-16字节) | 固定128位 |
加密算法 | AES-CCM | ECDH+AES-CCM |
MITM保护 | 依赖用户操作 | 内置数字比较 |
密钥类型 | STK过渡 | 直接生成LTK |
抗量子攻击 | × | △(P-256曲线) |
答案:通过ECDH交换和固定128位LTK,避免TK弱密钥问题
2.4 分析题:MITM 攻击场景
题目:假设中间人截获配对请求,如何通过 SMP 机制发现攻击?
参考答案:
- 签名验证失败:中间人无法伪造合法设备的 IRK 签名,导致
Signature
消息校验失败。 - 数字不匹配:若使用数字比较,双方生成的 6 位数字 X 不同,用户会拒绝配对。
- 随机数篡改:中间人修改随机数 R 或 R',导致双方计算的 LTK 不一致,加密后数据无法解密。
题目(配对方法选择):“运动手环(无显示屏)与手机配对时,为何采用Just Works而非Passkey Entry?”(小米2022社招)
解题思路:
分析IO能力:手环=NoInputNoOutput,手机=KeyboardDisplay
查配对矩阵:NoInputNoOutput+KeyboardDisplay → Just Works
安全权衡:手环无输入输出能力,无法进行Passkey交互
答案:受限于IO能力,强制使用Just Works
题目(密钥分发错误):“设备绑定后重新连接失败,抓包显示Encryption Failed,可能原因是什么?”(华为2023)
故障树分析:
解决方案:
检查两端存储的LTK是否一致
确认EDIV/RAND在重连时未变更
验证Key Size≥7字节
2.5 应用题:设备绑定流程
题目:简述蓝牙设备绑定(Bonding)的作用及涉及的密钥。(2024・苹果嵌入式面经)
参考答案:
作用:
- 存储设备身份密钥(IRK),实现快速重连(无需重新配对)。
- 建立信任关系,后续连接可跳过复杂认证步骤。
涉及密钥:
- IRK:绑定后存储在双方安全数据库,用于验证设备身份。
- LTK/STK:绑定过程中生成,用于当前连接加密,可选择是否存储(按需)。
题目(密钥长度要求):SMP协议规定的最小和最大加密密钥长度分别是多少? (2024年腾讯)
解析:
- 核心规范V5.4明确要求:7字节(56位)至16字节(128位)
- 常见陷阱:易混淆AES-128的128位与密钥长度参数
答案:最小7字节(56位),最大16字节(128位)
题目(中间人防御):在BLE Secure Connections中,如何防御ECDH公钥交换阶段的中间人攻击?(2022年华为)
解析:
- 使用带外(OOB)通道预先交换公钥
- 数字比较法验证公钥指纹
- 结合MacKey进行消息认证
答案:通过OOB通道预先交换公钥,并利用f6函数生成的校验值进行双向验证。
三、考官最爱问的3个问题
1. Just Works真的不安全吗?
在无用户交互场景(如传感器网络)是合理方案,配合后续加密传输可保障数据安全
2. Passkey Entry的6位码如何转换为128位TK?
*示例:019655 → 0x4CC7 → TK=0x0000...00004CC7*6
3. 绑定(Bonding)后为何还需要配对?
密钥过期:LTK超过存储期限
安全升级:从Just Works升级为MITM保护
新服务授权:访问更高安全等级服务
四、记忆技巧
4.1 核心概念速记法
- 配对三阶段:1. 协商(参数)→ 2. 生成(密钥)→ 3. 加密(连接),联想 “相亲三步:聊需求→定关系→见家长”。
- 密钥用途:
- IRK:身份证(长期绑定,证明 “我是我”)。
- LTK:房门钥匙(临时加密,当前连接可用)。
- STK:监控密码(校验数据,防止篡改)。
- 安全模式对比:
- 安全模式 1:传统配对,可选安全等级(类似酒店门锁,可刷卡或密码)。
- 安全模式 4:LE 专属,强制高安全(类似银行 U 盾,必须验指纹)。
4.2 对比记忆表
配对方法 | 用户交互 | MITM 保护 | 适用设备 |
---|---|---|---|
Just Works | 无 | 可选 | 耳机、音箱(低安全) |
数字比较 | 确认 6 位数字 | 强制(安全模式 4) | 手表、智能家居(中安全) |
带外数据(OOB) | NFC 触碰等 | 强制 | 医疗设备、工业控制器(高安全) |
SMP 是蓝牙设备实现安全连接的核心协议,其设计融合了现代密码学(ECDH/AES-CCM)和用户交互安全(数字比较 / OOB)。掌握 SMP 需重点关注:
- 配对流程:三阶段交互细节及关键消息(如
Pairing Request
/Confirm
)。 - 密钥体系:IRK/LTK/STK 的生成逻辑与应用场景。
- 安全增强:安全模式 4 的强制 MITM 保护机制和椭圆曲线算法的作用。