【BLE】 BLE安全管理 - SM层剖析(3)

简介: 上一章介绍了配对流程的第二阶段,剖析了配对第二阶段的配对算法的选择和鉴权方式的选择。接下来就进入了ble配对的阶段三,在该阶段双方会根据生成的STK或LTK来生成其他的密钥,就是配对的密钥分配阶段。

  上一章介绍了配对流程的第二阶段,剖析了配对第二阶段的配对算法的选择和鉴权方式的选择。接下来就进入了ble配对的阶段三,在该阶段双方会根据生成的STK或LTK来生成其他的密钥,就是配对的密钥分配阶段。

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

本章我们主要来讲解配对的阶段三,该阶段主要是分配相关的密钥,并且将其存储在数据表中,该阶段又称为绑定。 根据阶段二中配对方式的legacy pairing 和 secure pairing,阶段三中密钥的生成和下发也会有些不同。

2. 密钥生成

在该阶段会根据阶段二中的STK和LTk来生成用于不同功能的其他密钥,例如IRK,CSRK,LTK,EDIV, Rand等。

  • Identity Resolving Key (IRK) : 一个128-bit key 用于生成和解析随机地址的。
  • Connection Signature Resolving Key (CSRK) : 128-bit key 用于对数据签名和认证的
  • Long Term Key (LTK) : 128-bit key 用于生成链路层加密数据的session key。session key的生成这部分是在LL层生成的,control端的安全暂时不在本章节介绍。
  • Encrypted Diversifier (EDIV) :一个16bit的数值,用来识别LTK密钥的, 这个是用在legacy pairing中的,每次生成LTK,该数值都会重新分配。
  • Random Number (Rand) : 一个64bit的数值,用来识别LTK密钥的, 这个是用在legacy pairing中的, 每次生成LTK,该数值都会重新分配 。

2.1 生成IRK

IRK是用来生成和解析私有地址的。 主机通过IRK解析从机的私有地址,从机也通过IRK来解析主机的私有地址。

2.2 生成CSRK

CSRK是用来对数据进行签名的,一个设备接收到CSRK后就可以对设备进行验证。

2.3 生成LTK, EDIV 和 Rand

当Slave要和之前配对过的Master设备进行连接的加密,EDIV和Rand此时可以被Slave用来建立之前共享的LTK。每分发一次LTK, EDIV, Rand,它们都要被重新生成一次。Slave可以在Security database中映射好LTK, EDIV和Rand,以便和LTK快速对应起来。
另外Master也可以分发LTK, EDIV和Rand,这样在Role Switch之后便于快速重连。

2.4 生成LinkKey (经典蓝牙)

配对过程还可以生成LinkKey,LinkKey是用来给经典蓝牙进行加密的。通过这个可以将BLE配对产生的配对密钥转化成经典蓝牙的密钥。生成算法如下:

如果至少有一端设置 CT2 = 0 则:

ILK = h6(LTK, “tmp1”)
BR/EDR link key = h6(ILK, “lebr”)  

如果两端的CT2都设置为1,则:

ILK = h7(SALT, LTK)
BR/EDR link key = h6(ILK, “lebr”)  

3. 密钥下发

3.1 legacy pairing 密钥下发

  • LTK, EDIV, and Rand
  • IRK
  • CSRK

在上述这些key下发之前,连接需要是用STK来加密

3.2 secure pairing 密钥下发

  • IRK
  • CSRK

在存储加密key信息时,会交互设备的MAC地址,一旦MAC地址的设备在配对后连接上了设备。 设备就会把MAC地址和对应的密钥一起存储在数据表中。

整体密钥传输和下发流程如下:
在这里插入图片描述

## 4. Slave Security Request

从机端可能发送一条Security Request 命令给主机端,当主机接收到该命令后可能加密链路,初始化配对流程,或者拒绝该请求。

如果在配对流程正在进行的时候,从机端是不应该发送Security Request 命令的。

主机端收到Security Request数据包后,如果主机端之前已经发送过Pairing Request命令给从极端,并且从机端没有回复, 或者主机端已经初始化了加密流程。则主机端会直接忽略从机发送的Security Request命令。

而如果主机不支持配对功能,则主机也会直接返回失败。

在主机收到Security Request命令后,主机会检查自己的数据包中是否有该设备的加密信息。如果数据表中没有加密信息,则重新启动配对流程。如果数据表中已经有了加密信息,则更新加密信息。

具体的流程如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7cPuiaCV-1659841629993)(./Security_Request.png)]

该功能由从机端主动发起一个安全配对请求,从而实现由从机端来决定何时进入配对,或者更新配对密钥。

具体的流程如下图:

在这里插入图片描述

该功能由从机端主动发起一个安全配对请求,从而实现由从机端来决定何时进入配对,或者更新配对密钥。

目录
相关文章
|
3天前
|
物联网 Java API
Harmony Ble 蓝牙App (一)扫描(上)
Harmony Ble 蓝牙App (一)扫描(上)
176 0
|
9月前
|
物联网
低功耗蓝牙(BLE)设备常用的4种角色
对于主从设备的其它说法,大家需要了解一下。对于Central和Peripheral有多种说法,上面我们说的是主从,还有客户端/服务端,中心设备/外围设备,我们这里简单介绍一下,客户端(Client)对应上面的Central,接收数据;服务端(Server)对应上面的额Peripheral,提供数据,这个需要和网站的服务器/客户端区别一下;中心设备(Central)和外围设备(Peripheral),其实上面叫中心设备和外围设备。上面主设备(Master)和从设备(Slave)应该对应主/从。这个根据个人习惯,主/从用的比较多,如果在蓝牙中提到这些知道就行了。
328 0
|
存储 安全 算法
【BLE】 BLE配对绑定保姆级介绍
实现蓝牙通信安全,除了paring/bonding这种底层方式,用户也可以在应用层去实现相同功能,两者从功能上和安全性上没有本质区别,只不过应用层自己实现的话,需要自己选择密码算法,密钥生成,密钥交换等,如果你不是这方面的专家,你的应用就有可能会存在安全漏洞。设备跟手机绑定成功后,手机再次重连这个设备时,就会自动跳过service discovery过程,换句话说,配对的时候手机会把设备所有服务和characteristic的handle保存下来,二次重连的时候,直接用以前保存的handle值去操作设备。
1812 0
【BLE】 BLE配对绑定保姆级介绍
|
3天前
|
物联网 Java 数据安全/隐私保护
App Inventor 2 低功耗蓝牙(BLE) 硬件接入、数据通信及IO控制
低功耗蓝牙(BLE)以低功耗、低成本、开发简便逐渐被广泛应用,本文主要介绍一款较为通用、价格低廉的BLE设备从零开始如何利用App Inventor 2开发一款自己专属的手机蓝牙App应用。 本文主要通过一款常见的BLE硬件接入控制,介绍硬件接入App Inventor 2 的通用方法,类似的硬件接入都是大同小异的。
173 1
|
9月前
|
物联网 API
0x01 . BlueNRG-1 BLE同时作为主、从设备的场景是如何实现的?
0x01 . BlueNRG-1 BLE同时作为主、从设备的场景是如何实现的?
|
3天前
|
XML 传感器 监控
Harmony Ble蓝牙App(三)特性和属性
Harmony Ble蓝牙App(三)特性和属性
|
3天前
|
XML 物联网 数据处理
Harmony Ble蓝牙App(二)连接与发现服务
Harmony Ble蓝牙App(二)连接与发现服务
|
3天前
|
物联网 Android开发
Harmony Ble 蓝牙App (一)扫描(下)
Harmony Ble 蓝牙App (一)扫描(下)
|
算法 安全 物联网
【BLE】 BLE安全管理 - SM层剖析(2)
上一章介绍了配对流程的第一阶段,剖析了配对第一阶段的配对请求包和配对响应包的各个字段的含义和使用。接下来就进入了ble配对的阶段二,在该阶段双方会根据阶段一中的配对信息选择合适的配对和认证方式,并且生成会后续链接加密的密钥。
247 0
【BLE】 BLE安全管理 - SM层剖析(2)
|
存储 安全 物联网
【BLE】 BLE安全管理 - SM层剖析(1)
SM层是为了在两个蓝牙设备之间建立一个安全可靠的数据传输通道, 主要的流程包括配对,绑定、鉴权、加密、消息完整性校验。配对:在两个设备之间创建一个或多个共享密钥的过程绑定:每一端保存配对中创建的密钥的行为,用于后续的连接,形成一个信任的设备对,绑定后的设备可以直接回连,而不用再走配对的流程。设备鉴权:根据两端设备的输入、输出能力和鉴权需求,选择不同的鉴权方式,验证两个设备有相同的密钥加密:对设备之间交换的数据进行加密的过程,用来保证数据链路的安全。消息完整性:对数据进行签名,并在另一端验证签名的过程。
462 0
【BLE】 BLE安全管理 - SM层剖析(1)