前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BLE安全之配对流程剖析(3)

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

作者头像
物联网布道师
发布2023-02-28 15:50:08
1.3K0
发布2023-02-28 15:50:08
举报
文章被收录于专栏:蓝牙Ble/Mesh蓝牙Ble/Mesh

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 则:

代码语言:javascript
复制
ILK = h6(LTK, “tmp1”)
BR/EDR link key = h6(ILK, “lebr”)  

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

代码语言:javascript
复制
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)]

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

具体的流程如下图:

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 物联网布道师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BLE安全之配对流程剖析(3)
    • 1. 配对整体流程
      • 2. 密钥生成
        • 2.1 生成IRK
          • 2.2 生成CSRK
            • 2.3 生成LTK, EDIV 和 Rand
            • 2.4 生成LinkKey (经典蓝牙)
          • 3. 密钥下发
            • 3.1 legacy pairing 密钥下发
            • 3.2 secure pairing 密钥下发
          • 4. Slave Security Request
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档