设备地址

设备地址

BLE的设备地址可以使用公共地址(Public Device Adress)或者随机地址(Random Device Address),一个BLE至少使用一种地址类型,当然也可以同时使用两种地址类型。
公共地址和随机地址一样,都是48位(6字节),BLE设备地址关系如下:

  • 公共地址:从IEEE申请(购买),IEEE保证地址的唯一性;
  • 随机静态地址:自己定义,上电初始化完成后不能修改;
  • 随机不可解析私有地址:定时更新地址,蓝牙核心规范建议15分钟更新一次;
  • 随机可解析私有地址:通信双方使用共享的身份解析密钥(IRK:Indentity Resolving Key),生成和解析可解析私有地址。只有一台设备拥有另一台设备的IRK时,才能跟踪该广播设备的活动。

1. 公共地址

公共地址包含2部分:

公共地址能够明确的指示出设备,同时具有唯一性,但安全度不够,不法分子可以通过计数手段跟踪该唯一的公共地址,即可以跟踪到这设备的使用者。
为加强隐私,蓝牙核心规范中提供另外一种地址:随机地址,随机地址是随机产生的,不是固定分配的,随机地址又分为多种类型,以适用不同应用场景对隐私的要求。

2. 随机地址

2.1 随机静态地址
  1. 随机静态地址的定义;随机静态地址是随机生成的48位地址,随即地址必须符合以下要求:
  • 静态地址的最高2位有效位必须是1。
  • 静态地址最高2位有效位之外的其余部分不能全为0。
  • 静态地址最高2位有效位之外的其余部分不能全为1。
  • 一个上电周期内不变。
    静态地址的格式如下图,共48位,最高2位是固定的,必须是1。
  1. 代码中使用随机静态地址的方法
    程序中使用随机静态地址时,可以每次上电时重新设置随机地址,但是初始化完成后,不能修改地址。设置随机静态地址和读取随机静态地址的流程如下图所示。
    从上图中我们可以看到,读写随机静态地址需要用到地址结构体ble_gap_addr_t和两个
    API函数。其中地址结构体ble_gap_addr_t的声明如下。读和写的时候,都需要定义地址结
    构体,读的时候用来保存读取的设备地址和设备地址类型,写的时候用来将待写入的地址传
    递给API函数sd_ble_gap_addr_set().

    读写设备地址使用2个api函数,sd_ble_gap_addr_set() 和 sd_ble_gap_addr_get():


获取广播者使用的蓝牙地址使用该函数sd_ble_gap_adv_addr_get():

  • 写设备地址示例:
    定义地址结构体my_addr,然后设置需要写入的设备地址,并将地址类型设置位随机静态地址(BLE_GAP_ADDR_TYPE_RANDOM_STATIC),注意静态地址最高2位必须都是1.下面代码中使用的静态地址如下所示:

  • 都设备地址示例:
    定义地址结构体my_addr,用来保存读取的设备地址和类型,然后调用API函数sd_ble_gap_addr_get()获取设备地址,读取成功后,设备地址会保存到my_addr.

  • 读取广播PDU中设备地址示例:
    定义地址结构体my_addr,用来保存读取的设备地址和类型,然后调用API函数sd_ble_gap_adv_addr_get()获取设备地址,读取成功后,设备地址会保存到my_addr.

  1. 读取设备出厂时设置的地址:
    Nordic的BLE例子中都没有设置设备地址,原因是芯片出厂时已经设置了48位的地址和地址类型(地址类型为随机静态地址),应用程序可从下面2个寄存器读取设备地址及类型:


    SDK中的BLE例子使用的设备地址是初始化时协议栈从DEVICEADDR[n]寄存器中读
    出来的,DEVICEADDR[n]寄存器中存储的是随机静态地址,所以BLE例子中使用的都是
    随机静态地址。
    由此可见,如果应用程序不设置设备地址的话,设备就会使用协议栈默认从芯片读取的
    设备地址,地址类型为随机静态地址。
2.2 不可解析私有地址
  1. 定义如下:
  • 最高2为必须为0;
  • 其余位不能全0;
  • 也不能全1;
  • 不能和公共地址一样;

不可解析地址,周期性的改变地址,并且是完全随机的,很难被跟踪,安全性高,但是使用不多。
2. 代码使用:
ble_gap_privacy+params_t定义结构体变量,在使用sd_ble_gap_privacy_set()设置

2.3 可解析私有地址

定义:

  • 最高两位必须是0和1;
  • 其余不能全为0;
  • 其余不能全为1;
  • 不能和公共地址一样。

代码只用和不可解析私有地址类似。

posted @ 2024-09-18 18:02  毛豆*_*  阅读(7)  评论(0编辑  收藏  举报