BLE安全之SM剖析(3)

BLE安全之配对流程剖析(3)

  上一章介绍了配对流程的第二阶段,剖析了配对第二阶段的配对算法的选择和鉴权方式的选择。接下来就进入了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)]

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

具体的流程如下图:

在这里插入图片描述

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

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网布道师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值