一、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:密钥分发

分发密钥类型

密钥长度作用是否必选
LTK128-bit链路加密
IRK128-bit解析私有地址
CSRK128-bit数据签名
EDIV+RAND64-bit快速重连

安全策略

  • AES-CCM加密:所有密钥分发过程强制加密

  • 双向确认:Key Distrib字段协商分发内容

  • 绑定存储:成功分发后建立绑定关系

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 层进行,支持三种配对方法:
    1. Just Works:无用户交互(风险高,适合低安全设备如耳机)。
    2. 数字比较:双方显示 6 位数字,用户确认匹配(如智能手表配对)。
    3. 带外数据(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 保护(以数字比较为例):

  1. 生成签名哈希(H):双方用共享秘钥(DHKey)和 IRK 计算哈希值 H。
  2. 用户确认数字(X):计算 X = H 的低 6 位十进制数,用户需在两设备上看到相同 X。
  3. 随机数校验(R):交换随机数 R 和 R',确保双方未被中间人篡改数据。

真题示例
问题:SMP 如何防止中间人攻击?(多选)
A. 使用椭圆曲线加密(ECDH)
B. 用户确认配对码(数字比较)
C. 验证设备 IRK 签名
D. 仅允许带外数据配对
答案:ABC(ECDH 确保密钥安全生成,数字比较和 IRK 签名防止中间人伪造)

二、历年真题深度解析

2.1 单选题:SMP 配对阶段

题目:SMP 配对中,协商配对方法和加密算法是在哪一阶段?(2024・高通嵌入式面试题)
A. 密钥生成阶段
B. 配对请求阶段
C. 连接加密阶段
D. 身份认证阶段
答案:B
解析:在第一阶段的Pairing RequestPairing 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・华为硬件岗面试题)

参考答案

  1. ECDH 交换公钥:发起方和响应方生成 ECDH 公钥对,交换公钥 A 和公钥 B。
  2. 计算共享秘钥(DHKey):双方用对方公钥和自身私钥计算 DHKey。
  3. 生成临时密钥(LTK):通过 DHKey、随机数 R 和设备地址,使用 AES-CCM 算法生成 LTK。
  4. 验证 LTK:通过Pairing ConfirmPairing Random消息确保双方 LTK 一致。

题目(配对方法选择:当双方设备均支持LE Secure Connections时,应优先采用哪种配对方法?(2023年字节跳动)

解析

 答案:优先使用LE Secure Connections配对方式,当OOB不可用时根据IO能力选择Numeric Comparison或Passkey Entry。

题目(Secure Connections优势:“对比Legacy Pairing,LE Secure Connections如何提升安全强度?”(苹果2023)

技术对比

特性Legacy PairingSecure Connections
密钥长度可变(7-16字节)固定128位
加密算法AES-CCMECDH+AES-CCM
MITM保护依赖用户操作内置数字比较
密钥类型STK过渡直接生成LTK
抗量子攻击×△(P-256曲线)

答案:通过ECDH交换和固定128位LTK,避免TK弱密钥问题

2.4 分析题:MITM 攻击场景

题目:假设中间人截获配对请求,如何通过 SMP 机制发现攻击?

参考答案

  1. 签名验证失败:中间人无法伪造合法设备的 IRK 签名,导致Signature消息校验失败。
  2. 数字不匹配:若使用数字比较,双方生成的 6 位数字 X 不同,用户会拒绝配对。
  3. 随机数篡改:中间人修改随机数 R 或 R',导致双方计算的 LTK 不一致,加密后数据无法解密。

题目(配对方法选择:“运动手环(无显示屏)与手机配对时,为何采用Just Works而非Passkey Entry?”(小米2022社招)

解题思路

  1. 分析IO能力:手环=NoInputNoOutput,手机=KeyboardDisplay

  2. 查配对矩阵:NoInputNoOutput+KeyboardDisplay → Just Works

  3. 安全权衡:手环无输入输出能力,无法进行Passkey交互

答案:受限于IO能力,强制使用Just Works

题目(密钥分发错误):“设备绑定后重新连接失败,抓包显示Encryption Failed,可能原因是什么?”(华为2023)

故障树分析

 解决方案

  1. 检查两端存储的LTK是否一致

  2. 确认EDIV/RAND在重连时未变更

  3. 验证Key Size≥7字节

2.5 应用题:设备绑定流程

题目:简述蓝牙设备绑定(Bonding)的作用及涉及的密钥。(2024・苹果嵌入式面经)

参考答案

作用

  1. 存储设备身份密钥(IRK),实现快速重连(无需重新配对)。
  2. 建立信任关系,后续连接可跳过复杂认证步骤。

涉及密钥

  1. IRK:绑定后存储在双方安全数据库,用于验证设备身份。
  2. LTK/STK:绑定过程中生成,用于当前连接加密,可选择是否存储(按需)。

题目(密钥长度要求:SMP协议规定的最小和最大加密密钥长度分别是多少? (2024年腾讯)

解析

  • 核心规范V5.4明确要求:7字节(56位)至16字节(128位)
  • 常见陷阱:易混淆AES-128的128位与密钥长度参数

答案:最小7字节(56位),最大16字节(128位)

题目(中间人防御:在BLE Secure Connections中,如何防御ECDH公钥交换阶段的中间人攻击?(2022年华为)

解析

  1. 使用带外(OOB)通道预先交换公钥
  2. 数字比较法验证公钥指纹
  3. 结合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 需重点关注:

  1. 配对流程:三阶段交互细节及关键消息(如Pairing Request/Confirm)。
  2. 密钥体系:IRK/LTK/STK 的生成逻辑与应用场景。
  3. 安全增强:安全模式 4 的强制 MITM 保护机制和椭圆曲线算法的作用。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913750.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913750.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913750.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

U盘实现——U 盘类特殊命令

文章目录 U 盘类特殊命令U 盘的命令封包命令阶段数据阶段状态阶段get max luninquiry(0x12)read format capacities(0x23)read capacity(0x25)mode sense(0x1a)test unit ready(0x00)read(10) 0x28write(10) 0x2aU 盘类特殊命令 U 盘的命令封包 命令阶段 命令阶段主要由主机通…

深度帖:浏览器的事件循环与JS异步

一、浏览器进程 早期的浏览器是单进程的,所有功能杂糅在一个进程中;现在的浏览器是多进程的,包含浏览器进程、网络进程、渲染进程等等,每个进程负责的工作不同。浏览器进程:负责界面显示(地址栏、书签、历史…

Linux网络:UDP socket创建流程与简单通信

本文介绍 UDP 服务端与客户端 的创建流程&#xff0c;和相关的函数接口 核心流程 创建 socket → socket()填写服务器地址信息 → sockaddr_in 结构体绑定地址和端口 → bind()接收并响应客户端数据 → recvfrom() / sendto()socket() #include<sys/so…

windows内核研究(系统调用 1)

WindowsAPI函数的调用过程什么是WindowsApi&#xff1f;Windows API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;是微软为Windows操作系统提供的一套系统级编程接口&#xff0c;允许开发者与操作系统内核、硬件、系统服务等进行交互…

【前端】异步任务风控验证与轮询机制技术方案(通用笔记版)

一、背景场景 在某类生成任务中&#xff0c;例如用户点击“执行任务”按钮后触发一个较耗时的后端操作&#xff08;如生成报告、渲染图像、转码视频等&#xff09;&#xff0c;由于其调用了模型、渲染服务或需要较长处理时间&#xff0c;为了防止接口被频繁恶意调用&#xff0c…

Vim 编辑器常用操作详解(新手快速上手指南)

&#x1f4bb; Vim 编辑器常用操作详解&#xff08;新手快速上手指南&#xff09;作者&#xff1a;Lixin 日期&#xff1a;2025-07-09 学习内容&#xff1a;Vim 编辑器基础 常用快捷键 Xshell/Xftp连接 Linux基本操作 学习目标&#xff1a;掌握 Vim 的三种常用模式切换与基本…

OpenGL 生成深度图与点云

文章目录 一、简介二、实现代码三、实现效果一、简介 这里基于OpenGL实现对一个Mesh对象深度图的获取,思路其实很简单,直接通过glReadPixels函数获取整个OpenGL中的深度缓冲数据即可;那么反过来我们如果有了这个深度图之后,也可以基于每个像素点的深度值,反算出图像中的深…

25春云曦期末考复现

Web 疯狂星期四 <?php$tg1u$_GET[tg1u];if(!preg_match("/0|1|[3-9]|\~|\|\|\#|\\$|\%|\^|\&|\*|\&#xff08;|\&#xff09;|\-|\|\|\{|\[|\]|\}|\:|\|\"|\,|\<|\.|\>|\/|\?|\\\\|localeconv|pos|current|print|var|dump|getallheaders|get|define…

从Prompt到预训练:掌握大模型核心技术的阶梯式进化

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 在探讨大模型&#xff08;LLM&#xff09;的四阶段技术时&#xff0c;我们可以从Prompt Engineering&#xff08;提示工程&#xff09;、AI Agent&…

手机文件夹隐藏工具,一键保护隐私

软件介绍 今天为大家推荐一款手机文件夹隐藏工具——Amarok&#xff0c;它能帮助用户快速隐藏手机中的私密文件夹&#xff0c;保护个人隐私。 核心功能 Amarok主打文件夹隐藏功能&#xff0c;操作简单便捷。需要注意的是&#xff0c;虽然软件支持应用隐藏功能&#xff0…

day10-Redis面试篇

经过前几天的学习&#xff0c;大家已经掌握了微服务相关技术的实际应用&#xff0c;能够应对企业开发的要求了。不过大家都知道在IT领域往往都是面试造火箭&#xff0c;实际工作拧螺丝。为了更好的应对面试&#xff0c;让大家能拿到更高的offer&#xff0c;我们接下来就讲讲“造…

Axure版本Element组件库-免费版

Axure版本的Element组件库基于Element UI/Plus设计规范开发&#xff0c;涵盖了从基础元素到复杂交互的全品类组件&#xff0c;能高效支撑各类Web原型设计&#xff0c;尤其适合后台管理系统、企业级应用等场景。以下从核心类别展开详细介绍&#xff1a; 链接地址 添加图片注释&a…

记一次JVM问题排查

今天遇到了1次OOM&#xff0c;导入万条数据的Excel于是让运维进行排查。正式环境显示内存还有很多 于是我说让运维加上参数 -XX:HeapDumpOnOutOfMemoryError&#xff0c;出现OOM的时候dump到文件中&#xff0c;将堆内存设置为4G&#xff0c;在Idea上进行测试于是让运维在生产环…

快手Kwai Keye-VL多模态大模型模型架构、训练策略、数据情况

快速看一下Kwai Keye-VL的技术报告&#xff0c; 模型架构 Keye-VL和经典的MLLM架构类似&#xff0c;由ViTMLPLLM组成。视觉侧有两点可以看看&#xff1a; 1、具有原生分辨率的视觉编码器 提到&#xff0c;MLLMs使用预训练的固定分辨率ViT作为视觉编码器。然而&#xff0c;这…

前端-CSS-day2

目录 1、后代选择器 2、子代选择器 3、并集选择器 4、交集选择器 5、伪类选择器 6、超链接伪类 7、CSS特性-继承性 8、CSS特性-层叠性 9、CSS特性-优先级 10、优先级-叠加计算 11、Emmet写法 12、背景图 13、背景图平铺方式 14、背景图位置 15、背景图缩放 16、…

米思齐2.0 3.0 mixly arduino 编程软件下载安装及详情使用指南 导入库文件方法 支持8266 esp32

一、米思齐软件下载及安装 1、 米思齐软件下载 https://item.taobao.com/item.htm?id883253312209 2、软件版本简单说明&#xff1a; a、 Windows版本&#xff08;建议win10及以上系统使用&#xff09;&#xff1a; 一键更新完整版 2.8GB-3GB&#xff1a;下载后解压即可使…

结构体指针:使用结构体指针访问和修改结构体成员。

知识点结构体指针Employee *p; 保存结构体的地址&#xff1b;p->member 用箭头运算符访问或修改成员。数组与指针Employee *emps malloc(N * sizeof *emps); 动态创建结构体数组&#xff1b;p < emps N 与 p 配合遍历。scanf 与数组退化p->name 是 char name[50] 的…

支持零样本和少样本的文本到语音48k star的配音工具:GPT-SoVITS-WebUI

支持零样本和少样本的文本到语音48k star的配音工具&#xff1a;GPT-SoVITS-WebUI 官网&#xff1a;RVC-Boss/GPT-SoVITS: 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 用户手册&#xff1a;GPT-SoVITS指南 功能 零样本文本到语…

基于odoo17的设计模式详解---备忘模式

大家好&#xff0c;我是你的Odoo技术伙伴。在开发复杂的业务流程时&#xff0c;我们有时会遇到这样的需求&#xff1a;在对一个对象进行一系列复杂操作之前&#xff0c;保存其当前状态&#xff0c;以便在操作失败或用户希望撤销时&#xff0c;能够一键恢复到操作之前的样子。或…

基于Web门户架构的监狱内网改版实践:值班排班系统设计与信创适配探讨

面向监狱内网改版场景的门户平台技术架构与智能排班实践关键词&#xff1a;监狱内网改版、监狱内部网站改版、值班排班系统、信创适配、智能门户架构一、场景背景与问题分析 在信创国产化、等级保护合规、政务集约化趋势持续推进的背景下&#xff0c;传统监狱内部网站普遍面临如…