CH582 CH573 BLE设备地址 DEVICE ADDRESS

BLE设备,可以使用两种类型的地址(一个BLE设备可同时具备两种地址):Public Device Address和Random Device Address。而Random Device Address又分为Static Device Address和Private Device Address两类。其中Private Device Address又可以分为Non-resolvable Private Address和Resolvable Private Address。它们的关系如下所示:

 

The public device address is divided into the following two fields:
• company_assigned field is contained in the 24 least significant bits
• company_id field is contained in the 24 most significant bits

 

Random Device Address,即设备地址不是固定分配的,而是在设备设备启动后随机生成的。根据不同的目的,Random Device Address分为Static Device Address和Private Device Address两类。

 

 

4.1 Static Device Address

Static Device Address是设备在上电时随机生成的地址,格式如下:

Static Device Address的特征可总结为:

1)最高两个bit为“11”。

2)剩余的46bits是一个随机数,不能全部为0,也不能全部为1。

3)在一个上电周期内保持不变。

4)下一次上电的时候可以改变。但不是强制的,因此也可以保持不变。如果改变,上次保存的连接等信息,将不再有效。

Static Device Address的使用场景可总结为:

1)46bits的随机数,可以很好地解决“设备地址唯一性”的问题,因为两个地址相同的概率很小。

2)地址随机生成,可以解决Public Device Address申请所带来的费用和维护问题。

4.2 Private Device Address

Static Device Address通过地址随机生成的方式,解决了部分问题,Private Device Address则更进一步,通过定时更新和地址加密两种方法,提高蓝牙地址的可靠性和安全性。根据地址是否加密,Private Device Address又分为两类,Non-resolvable private address和Resolvable private address。下面我们分别描述。

4.2.1 Non-resolvable private address

    不可解析的私有地址

Non-resolvable private address和Static Device Address类似,不同之处在于,Non-resolvable private address会定时更新。更新的周期称是由GAP规定的,称作T_GAP(private_addr_int) ,建议值是15分钟。其格式如下:

 

特征可总结为:

1)最高两个bit为“00”。

2)剩余的46bits是一个随机数,不能全部为0,也不能全部为1。

3)以T_GAP(private_addr_int)为周期,定时更新。

4.2.2 Resolvable private address

  可解析的私有地址

Resolvable private address比较有用,它通过一个随机数和一个称作identity resolving key (IRK) 的密码生成,因此只能被拥有相同IPK的设备扫描到,可以防止被未知设备扫描和追踪。其格式如下:

 

特征如下:

1)由两部分组成: 
     高位24bits是随机数部分,其中最高两个bit为“10”,用于标识地址类型; 
     低位24bits是随机数和IRK经过hash运算得到的hash值,运算的公式为hash = ah(IRK, prand)。

2)当对端BLE设备扫描到该类型的蓝牙地址后,会使用保存在本机的IRK,和该地址中的prand,进行同样的hash运算,并将运算结果和地址中的hash字段比较,相同的时候,才进行后续的操作。这个过程称作resolve(解析),这也是Non-resolvable private address/Resolvable private address命名的由来。

3)以T_GAP(private_addr_int)为周期,定时更新。哪怕在广播、扫描、已连接等过程中,也可能改变。

4)Resolvable private address不能单独使用,因此需要使用该类型的地址的话,设备要同时具备Public Device Address或者Static Device Address中的一种。

 

PS:使用一个iPhone手机和一个BLE外设做测试,iPhone的地址是一直在变化的,每隔15分钟变一次。但是变化后还是可以继续连接外设,说明IRK会在主从设备间共享。


posted @ 2022-10-21 14:43  debugdabiaoge  阅读(227)  评论(0编辑  收藏  举报