random - BLE IoT 设备通常如何生成它们的私有 MAC 地址?
问题描述
BLE IoT 设备是否有任何常用方法来生成其可解析/不可解析的私有设备地址?
例如,在 BR/EDR(经典蓝牙)中,规范似乎要求使用 FIPS PRNG,但我没有看到在蓝牙上可解析的私有设备地址中生成 24 位prand的推荐/强制/流行方法低能耗外围设备。
我想知道资源限制是否会阻止物联网设备使用 FIPS PRNG。到目前为止,我发现的关于 MAC 随机化的结果都是关于移动设备上的 BLE 的……
解决方案
Bluetooth Specification v5.2, Vol 6, Part B, Section 1.3.2.2 (Private device address generation)中描述了可解析私有地址的生成:
要生成可解析的私有地址,设备必须具有本地身份解析密钥 (IRK) 或对等身份解析密钥 (IRK)。可解析的私有地址应使用 IRK 和随机生成的 24 位数字生成。随机数称为 prand,应满足以下要求:
- prand 的随机部分至少有一位为 0
- prand 的随机部分至少有一位为 1
哈希本身是使用以下公式生成的:-
哈希=啊(IRK,普兰德)
其中 ah 是蓝牙规范 v5.2,第 3 卷,H 部分,第 2.2.2 节中定义的随机地址散列函数。您是对的,除了上述要求之外,没有任何生成 prand 的建议,所以这留给用户。
至于不可解析的地址,这在同一节中进行了解释:-
要生成不可解析的地址,设备应生成具有以下要求的 48 位地址:
- 地址的随机部分至少有一位应为 1
- 地址的随机部分至少有一位应为 0
- 地址不应等于公共地址
这些是一些描述 BLE 隐私的有用链接:-
推荐阅读
- linux - 如何将文件名复制到同一目录中并更改多个文件名
- amazon-web-services - 从 Jenkins 管道推送到 ECR
- php - Laravel 6:尚未设置外观根
- sql - 如何提高“LIKE”链接的 LEFT JOIN (Oracle SQL) 的性能
- reactjs - 功能组件 - 模拟方法或 useRef
- django - 从 django 管理仪表板执行 Django 自定义命令
- prolog - 如何删除简单列表中的重复成员 [序言]
- azure-data-factory-2 - 在长时间运行的 Azure 数据工厂管道上发出警报的方法
- scala - 带有maven的scalapb不生成任何grpc服务类
- forms - Symfony 工作日选择