蓝牙地址是什么样的(蓝牙地址是什么意思)

蓝牙地址是什么样的(蓝牙地址是什么意思)蓝牙地址 Bluetooth Address 又称为蓝牙设备地址 Bluetooth Device Address BD ADDR 是蓝牙设备在无线通信中用于唯一标识自身的一种地址 这个地址通常是一个 48 位的唯一标识符 采用 EUI 48 Extended

大家好,我是讯享网,很高兴认识大家。



蓝牙地址(Bluetooth Address),又称为蓝牙设备地址(Bluetooth Device Address,BD_ADDR),是蓝牙设备在无线通信中用于唯一标识自身的一种地址。这个地址通常是一个 48 位的唯一标识符,采用 EUI-48(Extended Unique Identifier 48-bit)格式。

通常以六组十六进制数字表示,每组包含两个字符,中间以冒号或连字符分隔。例如,一个蓝牙地址的格式可能是:00:1A:2B:3C:4D:5E。

为区分不同的蓝牙设备,一般使用蓝牙地址和地址类型进行标识蓝牙设备。

地址类型包括public device address 和 random device address,两者均为 48 bit长度。其中,经典蓝牙(BR/EDR)设备只有 public 地址,BLE 设备可以使用其中一种也可以使用两种。

877daea4ed1c4264a51d6a0ce2139c2d.png
讯享网

对经典蓝牙来说,蓝牙地址应是一个符合 IEEE 802-2014 标准第 8.2 章节(“通用地址”)的 48 位扩展唯一标识符(EUI-48)(IEEE SA - IEEE 802-2014)。

创建有效的 EUI-48 需要从 IEEE 注册管理机构获得以下 MAC 地址块类型之一。

• MAC Address Block Large (MA-L)

• MAC Address Block Medium (MA-M)

• MAC Address Block Small (MA-S)

具体申请详情请参考 IEEE SA - Registration Authority,也就是公司向 IEEE 申请购买一个唯一的蓝牙地址号段,一般是 3 字节的长度。

8a22de975deb46aeaeb3ef6cf8f12d8d.png

Welcome to The Public Listing For IEEE Standards Registration Authority 这里可以查看已经注册的公司信息,包括公司号段(company id)和公司地址信息。

88d4bdd6d44d415b985c8dc604e0ce3a.png

BLE 设备大部分使用随机地址,一方面随机地址不需要花钱购买,另一方面私密性更好,不容易被追踪。

2.2.1 Static device address

static address 是随机生成的 48-bit 地址,有如下特点:

1. 低位46bits 随机数,不能全为0,也不能全为1。

2. 最高两个 bit 为 “11”。

3. 每次重新上电都可以改变,上电周期内保持不变

a1ff9856d7034bbd890d9df09bef9f4c.png

2.2.2 Private device address

与 Public Device Address 不同,Private Device Address 是在设备运行时动态生成的,因此具有更高的随机性和隐私性。

Private Device Address 分为两种类型:

2.2.2.1 Resolvable private address(RPA,可解析私有地址)

这种地址允许其他设备在一定条件下解析出设备的真实身份。通过一个随机数和 IRK( identity resolving key) 加密生成。

859770d44af94771a3e85d7e97a11a30.png

RPA 有如下特点:

  1. 高24bits(prand)是随机生成的,其中最高两个bit为“10”; 

 2. 低位24bits,是IRK和 随机数高prand通过hash运算hash = ah(IRK, prand)得到的。

3. RPA 最终是由 prand 和 hash 连接起来组成的, randomAddress = prand || hash

4. 可以周期变化,变化周期可以通过 host 指定,一般默认是 15 分钟

d3ee9304c7d447688a0c80e927f2ca09.png

2.2.2.2 Non-resolvable private address(NRPA 不可解析私有地址)

这种地址不提供身份解析的能力,其他设备无法通过这个地址获知设备的真实身份。这种地址适用于一些场景,例如广告中使用的地址,旨在提供更高的隐私保护。

NPRA有如下特点:

1. 低位46bits 随机数,不能全为0,也不能全为1。

2. 最高两个 bit 为 “00”。

53bcd8713ab547febaadf0f92f1e7f22.png

2.2.2.3 Private device address resolution

解析 RPA 地址需要用到配对过程中对端分发的 IRK,然后使用同样的 hash 算法,将 IRA 和RPA中的 prand 部分作为入参进行计算localHash = ah(IRK, prand),最后将计算出来的 lcoahHash跟 RPA 地址中的 hash 部分进行比较,如果相同则认为解析成功,否则则失败。

non-resolvable private address 是不可解析的

大家可能在以前的core spec 中看到 bluetooth address 的相关介绍,有提到company id 的概念,也就是本文中提到的的public 地址的蓝牙地址号段,这个要跟 Link Layer 消息 LL_VERSION_IND的company_identifer区别开来:

2103c9988d2b46268ff512fc4dc9dd23.png

这个是向 SIG 申请的一个 2字节长度的 Id,一般是用来表明这个蓝牙芯片是哪个厂商的,详情请参考 Assigned Numbers

对于public 地址,产品厂商一般会在产线根据自己购买的号段生成一个地址

对于 random地址,一般是生成一个 static device address 地址,然后将地址写入flash的指定位置,在开机上电后去读取地址然后写给 controller,也有时候在读取的时候发生读取失败或者读到非法的地址值,这个时候可能会重新随机生成一个地址

以上是工作过程中的一点总结和经验分享,有错误之处请指出,也欢迎一起探讨。

BLE Core Specification 5.4

 

小讯
上一篇 2025-04-20 20:20
下一篇 2025-06-09 10:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/170860.html