低功耗蓝牙设备地址详解

低功耗蓝牙设备地址详解

Bluetooth LE Device Address

Each Bluetooth device shall be allocated a unique 48-bit Bluetooth device address (BD_ADDR). The address shall be a 48-bit extended unique identifier (EUI-48) created in accordance with section 8.2 (“Universal addresses”) of the IEEE 802-2014 standard. Bluetooth Core Specification 5.0

低功耗蓝牙设备地址(Device Address,下文统一简写为设备地址),是以 16 进制方式编码,长度为 6 个字节(48 bits)的一串数据,在很多时候也被称为 Mac 地址(Mac address)。在蓝牙规格书中将设备地址分为四种类型,准确来说,只有其中的一种类型(Public)使用了 Mac 地址这个概念。而其他三种类型与通常意义上的“Mac 地址”除了在长度上相同(48-bit),再没有更多关联。

地址的分类

低功耗蓝牙设备地址的类型分为 Public Random 两个大类,其中Random 又可以分出三个小类,所以一共四种类型。

  • Public
  • Random Static
  • Random Private Resolvable
  • Random Private Non-Resolvable

Public

Mac Address

MAC addresses are formed according to the principles of two numbering spaces based on extended unique identifiers (EUIs) managed by the Institute of Electrical and Electronics Engineers (IEEE): EUI-48 —which replaces the obsolete term MAC-48 —and EUI-64 . — From Wikipedia

Public 类型的地址与通常意义上讲的“Mac 地址”定义相同,Mac 地址的全称是 M edia A ccess C ontrol Address,源自施乐(Xerox Network System),被广泛应用在 IEEE 802 网络技术中,包括以太网,Wi-Fi 以及蓝牙。

简单来说,Mac 地址(EUI-48,6 bytes)由两段构成,其中的 3 bytes 叫 OUI( Organizationally unique identifier ),得花钱从 IEEE 购买,作为独特的厂商标识,另外 3 bytes 由厂商自行分配,由此保证每个设备的 Mac 地址都是独一无二的。设备的 Public 地址一旦被固化到设备中后,在整个生命周期内都不能再修改。

Random

低功耗蓝牙设备在通信时,可以通过获取 PDU Header 中的 TxAddr 字段来判断设备的地址类型是 Public 还是 Random,如果判断是 Random 则可以通过获取最高有效位的两位来进一步判断具体的类型。

Static

相对于 Public 类型而言,Random Static 类型(随机静态)是被更多厂商采用的地址类型。绝大部分的低功耗蓝牙设备并不需要直接嵌入到广域网络中使用(可以使用蓝牙网关进行数据周转),因此也没有必要花钱去 IEEE 注册。

蓝牙规范中还规定,Random Static 类型的地址内容不能是全 0 或者是全 1,另外采用该地址类型的设备在使用过程中不允许改变,但是在设备上电的时候可以进行重新分配。但是在很多时候,选择使用该地址类型的低功耗蓝牙设备,无论是否重新上电,在整个生命周期内都不会重新分配。所以对于局域通信设备或者是网关设备而言,可以通过该地址对设备进行唯一标识。

最后,所有的蓝牙设备中 必须 (MUST)具备 Public 或 Random Static 以上这两种类型中的任意一种。

Private

与 Public 以及 Random Static 类型最大的不同在于 Random Private Resolvable & Non-Resolvable 这两种类型的地址在产品上电工作后,在不停在变化(以下简称为 Resolvable & Non-Resolvable)。其中 Resolvable 指的是,设备地址按照某个规律进行周期性的变化,并且这种变化能够被绑定过的设备准确识别。而 Non-Resolvable 类型的设备地址则是完全的,无规律周期性变化。

这两种类型的地址对于蓝牙设备来说,是可选的,而并非像 Public 或 Random Static 那样是必须选择其中一样。换句话说,设备地址必须拥有 Public 或 Random Static 其中的一种,但是在广播信息的时候可以选择使用 Resolvable & Non-Resolvable 其中的一种,旨在增加隐私。

那么问题是,为什么用于标识设备身份的设备地址会要无规律的进行变化呢?如果变化了,那么局域内的其他设备,网关,还能进行正确标识或识别么?首先,设备地址周期性变化的目的是为了安全考虑,防止被恶意跟踪。比如在某个用于商场定位的系统中,有多个用于 广播 固定位置信息的蓝牙信标(Beacon)。每个蓝牙信标的设备地址都是唯一的,并在系统中记录其所代表的坐标信息,那么当蓝牙接收设备经过某个蓝牙信标时就能知道自身大致的位置信息。如果此时蓝牙新标被恶意监听,并且复制多份故意放到不同的地点。那么整个系统将无法正常工作。

Resolvable

如果要使用 Private Random Resolvable,通信双方必须同时具备相同的安全信息以及哈希方法。在低功耗蓝牙中,经过配对并且绑定的通信双方会共享 IRK(Identify Resolving Key)来计算具体的哈希值,并通过比对哈希值来判断该设备是否为之前绑定过的设备。

Ref Links

编辑于 2023-03-06 09:15 ・IP 属地浙江