蓝牙安全管理(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双模设备。

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第1张图片

二、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 密钥发布

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第2张图片

图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发送的密钥和被期望的密钥

设备输入输出能力:

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第3张图片

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第4张图片

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第5张图片

3、安全管理协议

Security Manager Protocol(SMP)用于配对和密钥发布

所有的SMP命令在SM信道上发送,是一个L2CAP固定信道,命令格式如下:

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第6张图片

LSB:Least Significant Bit 最低有效位

MSB:Most Significant Bit 最高有效位

其中Code字段是一个字节,8位,表示命令的类型,data字段长度是变化的,取决于Code字段:

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第7张图片

为了保证SMP正常运行,使用安全管理定时器,当一个L2CAP SMP命令插入发送队列,定时器重置,当配对过程完成,定时器停止,当定时器达到30秒,会认为失败,并通知本地高层。Initiator发送一个配对请求开启配对特性交换,Responder收到配对请求后,返回一个配对响应:

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第8张图片

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第9张图片

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第10张图片

Pairing Confirm命令在配对特性交换成功之后发送,用于启动STK和LTE生成

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第11张图片

Pairing Random命令用来发送一个随机数,用来计算Confirm Value,Confirm Value是在Pairing Confirm命令中发送的

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第12张图片

表示配对失败,失败原因:

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第13张图片

除了上述常用SMP数据包,其他未列出

LE设备可以从Slave发布密钥到Master,和从Master发布密钥到Slave,使用LE legacy和使用LE Secure Connections,发送的密钥种类和数量是不同的,具体发送哪些密钥参看蓝牙核心规范,这些在第三阶段发布的密钥用Pairing Request命令和Pairing Response命令的Key Distribution字段表示

下面列出一些常用场景的顺序图

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第14张图片

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第15张图片

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第16张图片

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第17张图片

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第18张图片

蓝牙安全管理(Security Manager,SM)之配对、鉴权和加密_第19张图片

更多场景顺序图参考蓝牙核心规范5.1

你可能感兴趣的:(bluetooth)