一种更优雅的蓝牙配对技术 - Cross-transport key derivation (CTKD)

一种更优雅的蓝牙配对技术 - Cross-transport key derivation (CTKD)

  蓝牙CTKD是蓝牙4.2版本引入的一种交叉传输密钥派生的安全机制,全称 Cross-transport key derivation,主要用在蓝牙双模设备上,它可以跨越BLE和BT的边界,通过将BLE配对生成的LTK转化成BT配对的LinkKey,从而直接实现BT的配对,当然也可以通过BT配对生成的LinnkKey转化成BLE的LTK来实现BLE的配对,目前我们主要研究和使用前者。通过CTKD可以通过一次配对将BT和BLE两个链路都配对上,从而提升蓝牙双模设备的配对体验。

PS: 虽然蓝牙4.2就支持CTKD特性,但是在引入CTKD特性的时候,有一些安全风险https://www.bluetooth.com/learn-about-bluetooth/key-attributes/bluetooth-security/blurtooth/, 所以在蓝牙5.1版本中加入了对CTKD的限制,解决了该问题,所以建议在蓝牙5.1版本后使用CTKD特性。

应用场景

  主要应用在蓝牙双模设备上,如蓝牙耳机、蓝牙手表上,通过手机APP连接BLE,并通过BLE的配对转化生成BT的配对密钥,从而实现一次配对完成BT和BLE的配对,提升双模产品的配对体验。

蓝牙设备端要求

  1. BT和BLE的MAC地址必须保持一致。

在蓝牙核心规范中CTKD的介绍中并没有直接说明BT和BLE的MAC地址要保持一致,但是在分析蓝牙配对绑定的流程中发现双方只在BLE配对的时候交换了一次MAC地址,并没有发现有交互BT MAC的流程。

但核心规范中的Controller层规范中读MAC地址的命令中有这样的描述:On a BR/EDR/LE Controller, the public address shall be the same as the BD_ADDR。

所以通过理论和实践结合可以得出结论:支持CTKD特性的蓝牙双模式设备,BT和BLE的MAC地址需要保持一致。

  1. 设备BLE配对需要支持安全配对 Secure Pairing

    Secure Pairing是蓝牙4.2支持的一种安全配对方式。与legacy Pairing配对方式使用AES对称加密算法来加密链路不同的是,Secure Pairing使用椭圆曲线ECDH的公钥算法来进行配对和鉴权流程,从而可以做到防窃听攻击,增强了链路的安全性。

手机端要求

IOS

版本要求在 IOS13以上: https://developer.apple.com/videos/play/wwdc2019/901

安卓

网上说要求版本在Android 11以上,但是未找到Android官方的资料说明。

技术实现流程

1. 设备发送BLE广播

将BT和BLE的MAC地址设置一样后, 设备就可以通过BLE发送可连接广播了。 CTKD特性要求蓝牙设备需要开双模模式,所以设备的BLE广播要按照蓝牙双模的类型进行广播,即BLE广播中的Flag类型字段中不支持BR/EDR的bit需要置0,如下图:

在这里插入图片描述

所以支持CTKD功能的BLE广播前缀不应该使用单模的 02 01 06,而应该使用 02 01 02 。adv数据如下图

在这里插入图片描述

2. BLE配对流程

在这里插入图片描述

  1. 双方建立GATT连接后,接下来就进行配对绑定流程,配对可以由主机端直接发起Pairing_Request,也可以由设备端先发送Security_Request, 然后主机再发起Pairing_Request,在配对的阶段一的Pairing_Request和Pair_Response数据包中,双方会交换配对信息。

    鉴权信息如下图

在这里插入图片描述

- SC: 表示是否支持Secure Connection  即上面说的安全配对,支持CTKD特性需要将SC该标志位置1。

- CT2:该标志位决定了双方使用什么算法来生成BT的LinkKey。

在这里插入图片描述

SC标志位是生成LinkKey的前提, CT2标志位决定了生成LinkKey的算法,但最终是否要生成LinkKey,还是由上图Key Distribution中的LinkKey flag来决定的。主机和从机双方的该标志位都设置为1,才会生成LinkKey。

下面是通过抓包看到的主机端和设备端的Pairing Feature Exchange配对信息:

在这里插入图片描述

主机端的Pairing request信息如上图

在这里插入图片描述

从机端的Pairing Response信息如上图

可以看到 主机和从机双方都支持Secure Pairing, 并且都支持生成LinkKey。 CT2标志位为0和为1都可以,则用来选择不同的LinkKey生成算法。

3. 密钥下发流程

配对阶段一中的配对信息交换后,配对阶段二会选择Secure Pairing作为配对方式,BLE配对完成后会生成LTK, 流程如下图所示,LTK的生成会依赖于设备双方的MAC地址。
在这里插入图片描述

在生成LTK后,会根据阶段一中交换的配对信息中的CT2标志位,决定使用什么算法来生成LinkKey,生成算法如下图:

If at least one device sets CT2 = 0 then
	1. ILK = h6(LTK, “tmp1”)
	2. BR/EDR link key = h6(ILK, “lebr”)
If both devices set CT2 = 1 then
	1. ILK = h7(SALT, LTK)
	2. BR/EDR link key = h6(ILK, “lebr”)

经过该流程后, 最终生成了BT配对的LinkKey,实现了在BLE配对的同时完成了BT的配对。

应用场景

  通过CTKD技术,可以让蓝牙双模设备比如耳机,可以实现打开对应的APP,就可以直接完成耳机的配对,而不需要再从手机设置-》蓝牙里面搜索设备,然后再一个一个找对应名称的蓝牙设备来点击配对。这极大的提高耳机的配对体验,并且可以将耳机与IOT很好结合起来,例如通过耳机的BLE完成与其他蓝牙设备的智能交互和联动。

对应的APP,就可以直接完成耳机的配对,而不需要再从手机设置-》蓝牙里面搜索设备,然后再一个一个找对应名称的蓝牙设备来点击配对。这极大的提高耳机的配对体验,并且可以将耳机与IOT很好结合起来,例如通过耳机的BLE完成与其他蓝牙设备的智能交互和联动。

  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

物联网布道师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值