蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密
内容来自蓝牙核心规范V5.1 Vol3 PartH,若有错误之处,希望指出来
SM定义了管理配对、鉴权和加密的协议和行为,适用于LE-only单模设备或BR/EDR/LE双模设备。
0、蓝牙安全概述
蓝牙安全模型包括五个不同的安全特性:配对,绑定,设备鉴权,加密和消息完整性。
配对:创建一个或多个共享密钥的过程
绑定:保存配对中创建的密钥的行为,用于后续的连接,形成一个信任的设备对
设备鉴权:验证两个设备有相同的密钥
加密:消息保密性
消息完整性:防止消息伪造
随着时间的推移,蓝牙核心安全体系结构不断发展。最初,配对使用基于SAFER+的E21或E22算法,此版本的配对称为BR/EDR传统配对。设备鉴权最初是基于SAFER+的e1算法,加密使用派生自Massey-Rueppel算法的E0算法,而消息完整性没有相关规定。
2.1+EDR版本引入了安全简易配对(Secure Simple Pairing,SSP),它使用SHA-256、HMAC-SHA-256和P-192椭圆曲线等算法,并引入四个相关模型:Just Works,Numeric Comparison, Passkey Entry 和 Out-Of-Band ,设备鉴权和加密保持不变。
3.0 + HS版本支持了AMPs
4.0版本添加了LE的整个安全模型,BR/EDR和AMP安全不变
4.1版本添加了BR/EDR Secure Connections特性,SSP更新算法P-256椭圆曲线,设备鉴权使用算法HMAC-SHA-256和AES-CTR,Secure Connections添加了消息完整性
4.2版本添加了LE Secure Connections特性,LE配对更新算法AES-CMAC和P-256 elliptic curve,并改变数值比较关联模型,包括了使用Secure Connections生成密钥的规定
SSP的主要目的是为了简化配对过程,次要目的是保证和提高蓝牙无线技术安全性,SSP从用户的角度最大限度的提高安全性,同时最大限度的降低复杂性。
SSP有两个安全目标:防止被动偷听和中间人攻击,man-in-the-middle (MITM) attack(主动偷听),SSP使用四个关联模型,由两个设备的IO能力确定
BR/EDR SSP和LE SSP名字相同,但是提供的保护质量不同,LE设备密钥生成是Host执行的,BR/EDR设备是Controller执行的
一、介绍
SM定义了配对和发布密钥的方法,这些方法的协议和安全工具等,只适用于LE-only单模设备或BR/EDR/LE双模设备。
二、SM
1、介绍
配对是为了建立密钥,密钥用来加密连接,发布密钥是为了共享密钥,用于加密重新连接、验证签名和随机地址解析。
配对有三个阶段,经常使用前两个阶段,第三阶段可选,
阶段一:Pairing Feature Exchange 配对特性交换
阶段二:(LE legacy pairing): Short Term Key (STK) Generation STK生成
阶段二:(LE Secure Connections): Long Term Key (LTK) Generation LTK生成
阶段三:Transport Specific Key Distribution 密钥发布
图2.1中Initiator是配对请求发起者,Responder是响应者,第一阶段会交换鉴权要求,IO能力,用来确定第二阶段使用的下面哪种方法:
1、Just Works 直接连接
2、Numeric Comparison 数值比较(仅用于LE Secure Connections)
3、Passkey Entry 输入密钥
4、Out of Band(OOB) 带外(很少用到)
这四种方法、IO能力,鉴权要求、OOB鉴权数据等,会决定第二阶段中Legacy pairing和Secure Connections中生成密钥的算法
交换鉴权要求也会确定第二阶段是使用LE legacy pairing或者LE Secure Connections,作为一个可选项,第三阶段发布密钥,例如用于IRK(Identity Resolving Key)和身份地址信息等,不管第二阶段使用什么方法,第一阶段和第三阶段是完全相同的。
第三阶段的执行时,连接已经是加密的,加密方法可能是STK,LTK或者BR/EDR配对中的共享密钥,第一,二阶段执行时,连接可能是加密的也可能没有加密。
为了支持随机地址、配对和其他操作,SM定义了一个加密工具箱toolbox,如ah、c1、s1、f4、f5等,这里不做介绍,详情可以参考Core_V5.1 page2425
2、配对方法
配对开始后,如果Responder不支持配对或不能执行配对,会返回错误码是Pairing Not Supported的失败消息,配对特性交换用来交换IO能力,OOB鉴权数据可用性,鉴权要求,密钥大小要求和发布哪个密钥;其中IO能力,OOB鉴权数据可用性,鉴权要求决定第二阶段生成密钥的方法。
LE legacy pairing使用和产生两种个密钥:
1、Temporary Key (TK) 临时密钥,128位,用来生成STK
2、Short Term Key (STK) 一个128位的临时密钥,用来加密配对后的连接
LE Secure Connections使用和产生一个密钥:
Long Term Key (LTK) 一个128位的密钥,用来加密配对后的连接和随后的连接
鉴权要求是GAP设置的,包括绑定类型和中间人保护要求man-in-the-middle protection (MITM)
Initiator告诉Responder自己发送什么密钥和期望接收什么密钥,Responder回复Initiator发送的密钥和被期望的密钥
设备输入输出能力:
3、安全管理协议
Security Manager Protocol(SMP)用于配对和密钥发布
所有的SMP命令在SM信道上发送,是一个L2CAP固定信道,命令格式如下:
LSB:Least Significant Bit 最低有效位
MSB:Most Significant Bit 最高有效位
其中Code字段是一个字节,8位,表示命令的类型,data字段长度是变化的,取决于Code字段:
为了保证SMP正常运行,使用安全管理定时器,当一个L2CAP SMP命令插入发送队列,定时器重置,当配对过程完成,定时器停止,当定时器达到30秒,会认为失败,并通知本地高层。Initiator发送一个配对请求开启配对特性交换,Responder收到配对请求后,返回一个配对响应:
Pairing Confirm命令在配对特性交换成功之后发送,用于启动STK和LTE生成
Pairing Random命令用来发送一个随机数,用来计算Confirm Value,Confirm Value是在Pairing Confirm命令中发送的
表示配对失败,失败原因:
除了上述常用SMP数据包,其他未列出
LE设备可以从Slave发布密钥到Master,和从Master发布密钥到Slave,使用LE legacy和使用LE Secure Connections,发送的密钥种类和数量是不同的,具体发送哪些密钥参看蓝牙核心规范,这些在第三阶段发布的密钥用Pairing Request命令和Pairing Response命令的Key Distribution字段表示
下面列出一些常用场景的顺序图
更多场景顺序图参考蓝牙核心规范5.1
蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密相关推荐
- 蓝牙协议分析(11)_BLE安全机制之Security Manager
1. 前言 书接上文,我们在"蓝牙协议分析(10)_BLE安全机制之LE Encryption"中介绍了BLE安全机制中的终极武器----数据加密.不过使用这把武器有个前提,那就是 ...
- BLE Host解析:BLE SM(1): 配对特性交换(Pairing Feature Exchange)
本文引自:https://blog.bluetooth.com/bluetooth-pairing-part-1-pairing-feature-exchange 蓝牙的Spec规格有三个主要架构层, ...
- 思科 Security Manager 12个0day PoC 被公开,多个严重 0day仍未修复
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 网络安全公司 Code White 的研究员 Florian Hauser表示,自己曾在今年7月13日也就是120天前向思科上报了影响 ...
- RMI 异常 no security manager: RMI class loader disabled
RMI 异常 no security manager: RMI class loader disabled 参考文章: (1)RMI 异常 no security manager: RMI class ...
- Tomcat launch tomcat using security manager
本文转载,转载地址在最后. 今天同事碰到一个问题,在ECLIPSE里启动TOMCAT报错 2009-8-1312:44:12 org.apache.catalina.core.StandardCont ...
- Shrio异常The security manager does not implement the WebSecurityManager interface.
Shrio异常FactoryBean threw exception on object creation; nested exception is org.springframework.beans ...
- 卸载/更新HP Client Security Manager失败的解决方案(解决错误1722:软件包存在问题……)
问题:当卸载较老版本/更新较老版本的HP Client Security Manager时可能会出现下图所示的错误: 解决方案:按Win+R键打开运行窗口,输入regedit回车进入注册表编辑器,依次 ...
- java oauth2登录以及权限_Spring Cloud集成Security OAuth 2.0权限鉴权验证示例
Spring Cloud集成Security OAuth 2.0权限鉴权验证示例 一.背景说明 目前市场上微服务之间涉及到相互调用的问题,在这个过程中为了验证安全性,需要采用鉴权方式进行管理.目前主流 ...
- 认证、授权、鉴权和权限控制
原文地址 https://www.cnblogs.com/badboyh2o/p/11068779.html 如有侵权,请联系删除,谢谢! 本文将对信息安全领域中认证.授权.鉴权和权限控制这四个概念给 ...
最新文章
- 发现服务内存中free部分很小,available部分很大,应该怎么办
- Session原理、安全以及最基本的Express和Redis实现
- 多重集表示合json数据_计数DP(划分数,多重集组合数)
- 一本书——《锋利的jQuery》
- 那个好好玩的特效,每个人都可以做到哦
- java预备作业2 计科1501 乔赫
- [EmguCV|C#]使用CvInvoke自己繪製色彩直方圖-直方圖(Hitsogram)系列(4)
- LeetCode 1348. 推文计数(哈希map+set)
- 你需要熟练运用的12个命令行工具
- Magedu2_3 linux文件目录
- No SOURCES given to target: mpeg
- SPSS问卷中的人口学变量是否要用?以及如何选用?【SPSS 065期】
- VS 2013 所有产品密钥
- Vue 之 .eslintrc.js 文件
- python爬取拉勾网_Python搭建代理池爬取拉勾网招聘信息
- 为什么你在互联网上搞不到钱?
- Java设计模式之模板方法模式(UML类图分析+代码详解)
- 在OpenCV里使用机器学习库sklearn 实现手写数字识别1
- 特征工程:时间特征构造以及时间序列特征构造
- Guitar Pro8中文版打谱软件新功能介绍
热门文章
- 【总结】职业规划和自我总结----------包含职业要求
- 万年历 java程序_用Java编程输出万年历的功能实现
- 微信小程序显示天气预报
- 【李宏毅深度强化学习笔记】6、Actor-Critic、A2C、A3C、Pathwise Derivative Policy Gradient
- 牛客网刷题之SQL篇:非技术快速入门39T
- C语言中(%d %.2d %2d %02d)(%2x, %02x, %-2x, %.2x)(%f, %.2f, %2.2f)(%e, %.2e,%3.2e)的区别
- Python与seo工具脚本,360/搜狗相关搜索词采集源码参考
- ns-3模拟基本流程(附ns-3中的一些概念概述)
- 智慧检务大数据平台 电子检务大数据整体解决方案解决方案
- windows11 下的elasticsearch安装教程