查看: 1057|回复: 0

[技术交流] 模组蓝牙地址浅析

[复制链接]

50

主题

409

帖子

1309

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
1309
发表于 2022-2-22 17:08:51 | 显示全部楼层 |阅读模式
一个 BLE 设备,可以使用两种类型的地址(一个 BLE 设备可同时具备两种地址),粗略可分两类:
1. 公共地址(Public Address);
2. 随机地址(Random Address),
这里“随机地址”又分两类,
   1. 静态随机地址(Static Random Address);
   2. 私有地址(Private Address).
这里“私有地址”又分两类,
   1. 可解析的私有地址(Resolvable Address);
   2.不可解析的私有地址( Unresolvable Address)。
对经典(Classic)蓝牙只支持公共地址,而蓝牙低功耗两类地址都有使用。
例如,在NB860模组中,使用AT指令AT+BLEADDR?查询蓝牙MAC地址,
AT+BLEADDR?
+BLEADDR:301B97FFAE67
OK
此时仅返回一个公用地址。而在NT35模组中,使用AT+LBLEADDR?查询蓝牙MAC地址,
AT+LBLEADDR?
+LBLEADDR: “50:56:1E:0D:E3:4F”,“E8:AF:32:8A:8D:09”

OK
此时返回一个公用地址和随机地址。
1Public Device Address
24-bit company_id 24-bit company_assigned 组成。
在通信系统中,设备地址是用来唯一识别一个物理设备的,如 TCP/IP 网络中的 MAC 地址、传统蓝牙中的蓝牙地址等。
对设备地址而言,一个重要的特性,就是唯一性。
对经典蓝牙(BR/EDR)来说,其设备地址是一个 48bits 的数字,称作 "48-bit universal LAN MAC addresses“
正常情况下,该地址需要向 IEEE 申请。
缺点:
1Public Device Address 需要购买和维护,增加成本;
2)安全因素:BLE 很大一部分的应用场景是广播通信,这意味着只要知道设备的地址,就可以获取所有的信息。
2Random Device Address
Random Device Address:是在设备设备启动后随机生成的。
根据不同的目的 Random DeviceAddress 分为 Static DeviceAddress Private Device Address 两类。
1Static Device Address
Static Device Address 是在设备上电时随机生成的,
特性如下:
1)最高两个bit“11”
2)剩余的 46bits 是一个随机数,不能全部为 0,也不能全部为 1
3)在一个上电周期内保持不变;
4)下一次上电的时候可以改变,但不是强制的,如果改变,上次保存的连接等信息,将不再有效。
2Private Device Address
Static Device Address 通过地址随机生成的方式,解决了部分问题,Private Device Address 则更进一步,通过定时更新和地址加密两种方法,提高蓝牙地址的可靠性和安全性。
根据地址是否加密,Private DeviceAddress 又分为两类,Non-resolvableprivate address Resolvable private 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) 为周期,定时更新。
Resolvable private address 比较有用,它通过一个随机数和一个称作 identity resolving key (IRK) 的密码生成,因此只能被拥有相同 IRK 的设备扫描到,可以防止被未知设备扫描和追踪。
特性如下:
1)由两部分组成:
高位 24bits 是随机数部分,其中最高两个 bit “10”,用于标识地址类型;
低位 24bits 是随机数和 IRK 经过 hash 运算得到的 hash 值,运算的公式为 hash = ah(IRK, prand)
2)当对端 BLE 设备扫描到该类型的蓝牙地址后,会使用保存在本机的 IRK,和该地址中的 prand,进行同样的 hash 运算,并将运算结果和地址中的 hash 字段比较,相同的时候,才进行后续的操作。
这个过程称作 resolve(解析),这也是 Non-resolvable private address/Resolvable privateaddress 命名的由来。
3)以 T_GAP(private_addr_int) 为周期,定时更新,哪怕在广播、扫描、已连接等过程中,也可能改变。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表