从随机私有可解析地址获取 BLE MAC

Posted

技术标签:

【中文标题】从随机私有可解析地址获取 BLE MAC【英文标题】:Get BLE MAC from random private resolvable address 【发布时间】:2020-05-07 14:17:42 【问题描述】:

我想将 android 设备(客户端)连接到外部 BLE 设备(服务器)。我有几个关于私有随机可解析地址机制的问题。

据我从 BLE 核心规范中了解,身份解析密钥可用于判断是否使用此密钥生成地址,但它不能用于解析原始 BLE MAC 地址同行。正确吗? 有没有办法获取原始 BLE MAC 地址,同时在服务器端仍然使用私有随机可解析地址?也许它是绑定信息的一部分? 如果只有服务器使用私有随机可解析地址,而不是客户端,我能解决这个问题吗?这会破坏私有随机可解析地址机制提供的隐私保护吗?

最后我想要一个 BLE 连接,它使用私有随机可解析地址来确保隐私,并且仍然能够在我的服务器上获取客户端的原始 BLE MAC 以供内部使用。

如果有人能回答我的问题,我将不胜感激。

最好的 大卫

【问题讨论】:

【参考方案1】:

绑定时,零个、一个或两个设备可以发送解析密钥(如果协商)。对于每个发送解析密钥 (IRK) 的设备,身份地址也总是会被发送。这包含原始蓝牙设备地址,可以是公共的或静态随机的。只有绑定的设备知道这个地址。

隐私功能的想法是永远不要在链路层数据包中使用原始蓝牙设备地址,而是随机生成一个,每 x 分钟(通常 15 分钟)更改一次。这样,如果它定期发布广告,则有人无法跟踪它,因为它会在 15 分钟后消失。但是,如果您有相应的 IRK,那么您可以确定 IRK 是否匹配。如果匹配,您还知道原始蓝牙设备地址,因为您的绑定数据包含 IRK 和原始地址。但是如果你扔掉那个地址,那么即使你有 IRK,你也无法恢复原来的地址。

如果两台设备中只有一台使用随机可解析地址,那么具有可解析地址的设备不能被非绑定设备跟踪,不使用随机可解析地址的设备可以被跟踪。

【讨论】:

这是否正确:我(服务器)使用私有随机可解析地址 (PRRA) 绑定了客户端 A、B 和 C,并且没有当前连接。我开始做广告以启用与绑定对等方的连接。客户端 B 尝试连接,我使用绑定客户端的 IRK 解析其 PRRA 并获得客户端 B 的匹配项。现在我可以将此连接与客户端 B 关联并访问其绑定数据中的原始 BLE 设备地址?

以上是关于从随机私有可解析地址获取 BLE MAC的主要内容,如果未能解决你的问题,请参考以下文章

在 BLE 中随机化 Mac 地址

BLE:2 个带有随机 MAC 的 BLE 设备如何知道它们是不是已配对?

NORDIC BLE MAC ADDR

ESP32学习笔记(35)——蓝牙MAC地址

Linux: 生成随机的MAC地址

配置蓝牙广播地址类型