测试平台设置
主设备- 带有 BLE5.0 加密狗的 ubuntu 22.04
从属设备- 运行 BLE 应用程序的自定义蓝牙 5.2 设备
嗅探器- nrf52840 加密狗,带有 sniffer_nrf52840dongle_nrf52840_4.1.1 固件,嗅探工具 - Wireshark V3.4.4
用例- LE 安全连接处于调试模式,即使用 Diffie-Hellman 私钥/公钥对定义在蓝牙核心规范,第 3 卷,第 H 部分,第 2.3.5.6 节 LE 安全连接配对第 2 阶段
问题- 我正在尝试使用 LE Secure 连接将从设备与基于 ubuntu 的设备配对,但我想使用蓝牙核心规范定义的默认调试密钥,该密钥是我使用 btmgmt 命令设置的,并使用 bluetoothctl 触发配对/绑定。但在
wireshark 日志中,我可以看到数据包已加密,这意味着调试密钥未正确使用,即使规范说只有一方
需要设置调试模式/密钥。
以下是我遵循的步骤
- nrf52840 加密狗已连接并且 wireshark 正在收集日志
- 从属设备已启动、运行并广播
- Ubuntu 22.04 已启动并运行
- 使用调试模式启用 LE 安全连接
启用调试键
$ sudo btmgmt debug-keys on
hci0 Set Debug Keys complete, settings: powered ssp br/edr le secure-conn debug-keys
检查是否已启用
$ sudo btmgmt info
Index list with 1 item
hci0: Primary controller
addr DC:A6:32:11:22:33 version 10 manufacturer 93 class 0x6c0000
supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr phy-configuration
current settings: powered bondable ssp br/edr le secure-conn debug-keys
name unique-name
short name
然后开始扫描广告并使用以下方式与从属设备配对
$ sudo bluetoothctl
[bluetooth]# scan on
[bluetooth]# pair DC:A6:32:11:22:44
可以看到配对请求/响应,交换密钥并启动加密,但我们无法解密数据包
此外,我还尝试使用 LE Generate DHKey 命令设置此密钥,但仍然无法解密 wireshark 日志
sudo hcitool cmd 0x08 0x26 0xE6 0x9D 0x35 0x0E 0x48 0x01 0x03 0xCC 0xDB 0xFD 0xF4 0xAC 0x11 0x91 0xF4 0xEF 0xB9 0xA5 0xF9 0xE9 0xA7 0x83 0x2C 0x5E 0x2C 0xBE 0x97 0xF2 0xD2 0x03 0xB0 0x20 0x8B 0xD2 0x89 0x15 0xD0 0x8E 0x1C 0x74 0x24 0x30 0xED 0x8F 0xC2 0x45 0x63 0x76 0x5C 0x15 0x52 0x5A 0xBF 0x9A 0x32 0x63 0x6D 0xEB 0x2A 0x65 0x49 0x9C 0x80 0xDC