- 配对:配对是指两个蓝牙设备首次通讯时,相互确认的过程,在通过配对后的数据传输不需要再重复进行确认
- pin:个人识别码,蓝牙使用的pin码长度为1-8个十进制位数
- DB_ADDR:蓝牙设备地址。每个蓝牙设备被分配了类似mac地址的唯一的一个48位数的设备地址。用于通讯地址确认.两个蓝牙设备在通讯开始时通过询问的方式获取蓝牙设备地址
所以蓝牙的工作过程为:
启动 --- 扫描设备 --->> 设备配对 --->> 数据传输
配对过程:
1 ping码配对
2 密钥交换配对
- 第一阶段:配对功能交换
- 第二阶段(BLE传统配对):生成短期密钥(STK) (注:蓝牙4.0和4.1规范定义)
- 第二阶段(BLE安全连接):生成长期密钥(LTK) (注:蓝牙4.2及以后规范定义)
- 第三阶段:特定于传输的密钥分发
- 配对由启动设备将其 PKa 发送到响应设备来启动。响应设备会使用自己的 PKb 进行回复。交换公钥后,设备可以开始计算密钥;。
之后,每个设备选择一个随机的 128 位随机数。此值用于防止重放攻击。
-Na,起始设备的 128 位随机随机数。
-Nb,响应设备的 128 位随机随机数。
在此之后,响应设备然后计算承诺Cb,该承诺使用Nb、PKa、PKb和0进行计算。如步骤 3 中的图 1 所示。
步骤4,响应设备在接收到发起设备的Na之前必须共享Cb。
步骤5,发起设备在接收响应设备的Nb之前必须共享其Na。
步骤6,发起设备在收到响应设备的Nb后,必须检查来自响应设备的Cb。
此时,启动或响应设备已经知道对等设备的公钥和随机随机数。发起设备可以从响应设备确认承诺 (Cb)。此时发生故障表示存在攻击者或其他传输错误,应配对进程中止,步骤 6.a。
假设承诺检查成功,两个设备将分别计算 6 位数的确认值,这些值将在其各自的设备上向用户显示。用户应检查这些 6 位值是否匹配,并确认是否存在匹配项。如果没有匹配项,则配对将中止
- 第三阶段:
身份验证成功后,俩台设备开始计算将用于链路加密的LTK,LTK用于对设备的身份验证,然后建立私密链接,用于传输私密信息。
图2是蓝牙协议栈,图三是osi模型协议栈
蓝牙LE工作在2400MHz到2483.5MHz范围内的2.4GHz的频段,该频段分为40个通道,每个通道的间距为2MHz,但如何使用这些通道是由链路层和数据传输体系结构去定义的,而在这40个信道中,有3个信道是广播通道,分别是37、38、39,用于发现设备、初始化连接和广播数据;剩下的37个信道为数据通道,用于两个连接的设备间的通讯。
LINK LAYER层主要用于控制设备的不同状态,具体状态分为一下几种
当两个蓝牙设备链接时,他们采用的时面向异步连接的逻辑传输(简称为acl)
在acl连接上基本包的变换如下:
由c>p知识的两个连接期间,报文传输由中心设备完成,p>c由外围设备完成
在acl过程中连接过程如下
数据包在发送后,设备B会进行crc检查,然后将NESE设置为设备A想要的值,然后设备A会使用SN作为设备B的确认,确认它正确的接收了最后一个发送的数据包,但如果设备B收到SN值错误的报文,它就会认为该报文时错误的,设备B会重传接收到的前一个数据包,然后再确认它,但是不会将他进行下一步的处理
但是如果设备A在设备B的回复中收到了非预期的NESN值,或者在设备B的回复中没有收到的时候,设备A会使用原来相同的SN的值重新发送数据包,如下图所示
在HCL中,是通过包的方式来传送数据,命令和事件的,所有在主机和主机控制器之间的通信都以包的形式进行,包括每个命令的返回参数都通过特定的事件包来传输,HCL有数据,命令和事件三种类型的包。命令包COMMAND(0X01)只能从主机发往主机控制器,其中数据包是双向的,分为两类:ACL(0x02)、SCO(0x03),而事件包EVENT(0x04)始终是主机控制器发向主机的。
命令包和数据包发送在主机和控制器交换如下:
主机发出的大多数命令包都会触发主机控制器产生相应的事件包作为响应,在传输过程中会有一个句柄,用于识别主机之间的逻辑通道和控制器,共有三种类型的句柄:连接句柄、逻辑链路句柄和物理链路句柄。
在传送的数据包中我们重点关注ACL数据包:
ACL数据包格式:
L2CAP使用通道的概念来分离在堆栈层之间传递的数据包序列。固定通道不需要设置,立即可用,并与特定的高层协议相关联。还可以动态创建通道,并通过指定的协议服务多路复用器(PSM)值与协议关联。
如果将acl理解为ip的话,可以将L2CAP层理解为tcp/udp协议,L2CAP层实现了更为完善的数据传输功能,实现的主要功能如下:
- 分割和重新组装
- 重传和流量控制
- 封装和调度
- 分片和重组
相关术语:
链路层数据包的PDU字段可能包含各种不同的协议数据单元(PDU),这取决于蓝牙LE的使用方式。固定频率扩展信号(CTE)只在使用两种测向方法(AOA或AOD)中的一种时才会出现
L2CAP数据包格式如下:
ATT由俩台设备使用,一台为客户端,另一台为服务器,服务器会公开一系列称为属性的组合数据,而这些属性由服务器组织在一个被称为属性表的索引列表中
每个属性包含一个句柄,一个唯一标识符(uuid),一个值和一组权限,而属性可以理解为一个信息,比如温度,湿度,时间等信息,被服务器存储并开放一些方法供客户端读取和去修改这些属性
GATT基于属性表中的属性定义更高级别的数据类型,这些数据类型被称为服务,特征和描述符。它还定义了通过ATT使用这些数据类型所涉及的一系列过程,应用程序通常使用映射到这些过程的平台api。
服务是一种分组机制,它提供了一个上下文,在该上下文中使用它们包含的特征并具有已定义的类型。服务通常与设备的主要功能或功能相对应。
特征是状态数据的单个项,具有类型、关联值和一组属性,这些属性表明如何根据相关GATT程序集使用数据。例如,可以定义一个连接的对等设备可以读取一个特定特性的值,但不能写入它。
特征属于一个服务。相同的特征类型可以是多个服务的成员,根据这些服务提供的不同上下文,使用特征的规则可能会有所不同。服务规范将提供这些细节。
描述符属于某些特征,可以包含元数据,比如特征的文本描述,或者可能提供控制特征行为的一些方法。
服务,特征和描述符的层次结构如图所示
GAP层定义了四种设备角色,分别如下:
链路层定义了两种报文类型。第一个是由未编码的PHY使用,LE 1M和LE 2M,第二个是由LE编码的PHY使用。
这俩种报文类型中,都包含了字段“preamble”,“Access Address”和“crc”
环境配置如下:
1.wireshark:下载wireshark的时候要标选USBPcap选项
2.nrf_sniffer_for_bluetooth_le_4.1.0下载:
[https://nsscprodmedia.blob.core.windows.net/prod/software-and-other-downloads/desktop-software/nrf-sniffer/sw/nrf_sniffer_for_bluetooth_le_4.1.0.zip](https://nsscprodmedia.blob.core.windows.net/prod/software-and-other-downloads/desktop-software/nrf-sniffer/sw/nrf_sniffer_fos s s r_bluetooth_le_4.1.0.zip)(根据自己wireshark的版本去选择对应的版本)
3.将解压文件中的extcap中的文件全部复制到wireshark的extcap文件中
4.将Profile_nRF_Sniffer_Bluetooth_LE文件复制到个人配置文件夹中的profiles中(可在帮助栏中的关于Wireshark中查看个人文件夹的配置)
5.安装python库pyserial
pip install pyserial>=3.4
最后运行extcap中的nrf_sniffer_ble.sh确认nrf sniffer可以正常运行。
nrf_sniffer_ble.bat --extcap-interfaces
6.此时重启电脑打开wireshark的时候过滤器会出现usbcap的选项
选择该选项即可进行蓝牙数据包的抓取
下面是抓取的我的电脑和蓝牙耳机的通信协议包:
HCL层数据包:
可以看到HCL层分为了HCL_CMD(命令包)和HCL_EVT(事件包),具体在上文有所说明
随机选取一个HCL_CMD,数据包如下:
本HCL_CMD的功能是发送本地设备名称,也就是数据包中的Device Name: DESKTOP-QU1G395这个值,应该是处于建立蓝牙链接过程中的特征交换。
这是本机接收到的蓝牙耳机的设备名称
标准的含有data的HCL_ENV数据报如下(随机选取):
HCL_ACL数据包
L2CAP层数据包
抓取到蓝牙数据包如下:
[https://www.bluetooth.com/wp-content/uploads/2022/05/Bluetooth_LE_Primer_Paper.pdf]
[蓝牙配对第 1 部分 - 配对功能交换|蓝牙®技术网站 (bluetooth.com)]
[蓝牙配对部分 2密钥生成方法|蓝牙®技术网站 (bluetooth.com)]
[蓝牙配对第 3 部分 - 低能耗传统配对密钥输入|蓝牙®技术网站 (bluetooth.com)
[蓝牙配对第4部分:蓝牙低功耗安全连接 - 数字比较|蓝牙®技术网站 (bluetooth.com)
[BLE(一)概述&工作流程&常见问题 ~ gandalf](http://www.gandalf.site/2018/11/ble.html)
[BLE(二)信道&数据包&协议栈格式 ~ gandalf](
原文始发于微信公众号(SAINTSEC):无线电安全攻防之蓝牙协议栈技术初探
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论