内容来自蓝牙核心规范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)之配对、鉴权和加密相关推荐

  1. 蓝牙协议分析(11)_BLE安全机制之Security Manager

    1. 前言 书接上文,我们在"蓝牙协议分析(10)_BLE安全机制之LE Encryption"中介绍了BLE安全机制中的终极武器----数据加密.不过使用这把武器有个前提,那就是 ...

  2. BLE Host解析:BLE SM(1): 配对特性交换(Pairing Feature Exchange)

    本文引自:https://blog.bluetooth.com/bluetooth-pairing-part-1-pairing-feature-exchange 蓝牙的Spec规格有三个主要架构层, ...

  3. 思科 Security Manager 12个0day PoC 被公开,多个严重 0day仍未修复

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 网络安全公司 Code White 的研究员 Florian Hauser表示,自己曾在今年7月13日也就是120天前向思科上报了影响 ...

  4. RMI 异常 no security manager: RMI class loader disabled

    RMI 异常 no security manager: RMI class loader disabled 参考文章: (1)RMI 异常 no security manager: RMI class ...

  5. Tomcat launch tomcat using security manager

    本文转载,转载地址在最后. 今天同事碰到一个问题,在ECLIPSE里启动TOMCAT报错 2009-8-1312:44:12 org.apache.catalina.core.StandardCont ...

  6. Shrio异常The security manager does not implement the WebSecurityManager interface.

    Shrio异常FactoryBean threw exception on object creation; nested exception is org.springframework.beans ...

  7. 卸载/更新HP Client Security Manager失败的解决方案(解决错误1722:软件包存在问题……)

    问题:当卸载较老版本/更新较老版本的HP Client Security Manager时可能会出现下图所示的错误: 解决方案:按Win+R键打开运行窗口,输入regedit回车进入注册表编辑器,依次 ...

  8. java oauth2登录以及权限_Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

    Spring Cloud集成Security OAuth 2.0权限鉴权验证示例 一.背景说明 目前市场上微服务之间涉及到相互调用的问题,在这个过程中为了验证安全性,需要采用鉴权方式进行管理.目前主流 ...

  9. 认证、授权、鉴权和权限控制

    原文地址 https://www.cnblogs.com/badboyh2o/p/11068779.html 如有侵权,请联系删除,谢谢! 本文将对信息安全领域中认证.授权.鉴权和权限控制这四个概念给 ...

最新文章

  1. 发现服务内存中free部分很小,available部分很大,应该怎么办
  2. Session原理、安全以及最基本的Express和Redis实现
  3. 多重集表示合json数据_计数DP(划分数,多重集组合数)
  4. 一本书——《锋利的jQuery》
  5. 那个好好玩的特效,每个人都可以做到哦
  6. java预备作业2 计科1501 乔赫
  7. [EmguCV|C#]使用CvInvoke自己繪製色彩直方圖-直方圖(Hitsogram)系列(4)
  8. LeetCode 1348. 推文计数(哈希map+set)
  9. 你需要熟练运用的12个命令行工具
  10. Magedu2_3 linux文件目录
  11. No SOURCES given to target: mpeg
  12. SPSS问卷中的人口学变量是否要用?以及如何选用?【SPSS 065期】
  13. VS 2013 所有产品密钥
  14. Vue 之 .eslintrc.js 文件
  15. python爬取拉勾网_Python搭建代理池爬取拉勾网招聘信息
  16. 为什么你在互联网上搞不到钱?
  17. Java设计模式之模板方法模式(UML类图分析+代码详解)
  18. 在OpenCV里使用机器学习库sklearn 实现手写数字识别1
  19. 特征工程:时间特征构造以及时间序列特征构造
  20. Guitar Pro8中文版打谱软件新功能介绍

热门文章

  1. 【总结】职业规划和自我总结----------包含职业要求
  2. 万年历 java程序_用Java编程输出万年历的功能实现
  3. 微信小程序显示天气预报
  4. 【李宏毅深度强化学习笔记】6、Actor-Critic、A2C、A3C、Pathwise Derivative Policy Gradient
  5. 牛客网刷题之SQL篇:非技术快速入门39T
  6. C语言中(%d %.2d %2d %02d)(%2x, %02x, %-2x, %.2x)(%f, %.2f, %2.2f)(%e, %.2e,%3.2e)的区别
  7. Python与seo工具脚本,360/搜狗相关搜索词采集源码参考
  8. ns-3模拟基本流程(附ns-3中的一些概念概述)
  9. 智慧检务大数据平台 电子检务大数据整体解决方案解决方案
  10. windows11 下的elasticsearch安装教程