BLE地址类型概述

本文转载自

https://blog.csdn.net/yuzhou_zang/article/details/77930646
为方便自己记忆和理解进行了稍微改动。

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(不加密&加密)。


1.在传统蓝牙中蓝牙的地址由48bits的数字地址,又叫"48-bit universal LAN MAC addresses"(和电脑的MAC地址一样),但是这个是需要购买的,对于现在数量庞大的BLE设备而言,显然不够用,且成本太高。所以在BLE协议提出的时候,既保留了传统的地址分配方法,即Public Device Address,从安全因素上考虑,BLE很大一部分的应用场景是广播通信,如果使用该地址的话,这意味着只要知道设备的地址,就可以获取所有的信息,这是不安全的。因此固定的设备地址,加大了信息泄露的风险。因此在BLE协议中增加了Random Device Addressd的方法,即地址是设备通电后随机分配的。

2.根据目的的不同Random Device Address又可以分为:

Static Device Address和Private Device Address

(1)Static Device Address:

Static Device Address是设备在上电时随机生成的地址

特征:

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

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

3)在断电前该地址保持不变。

4)下一次上电的时候可以改变。也可不变,若改变则之前的保存连接等信息将不再有效。

(2)Private Device Address:

    定时更新地址&加密地址

    跟新的周期由GAP控制

根据是否加密又分为:

Non-resolvable private address和Resolvable private address

Non-resolvable private address:

1)最高位“00”

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

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 private address命名的由来。

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

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


BLE Resolvable private address的解析和过滤操作是在链路层实现的,因而为BLE的广播通信提供了一个相对安全的加密环境。链路层以Resolving List的形式,通过HCI向Host提供相关的控制API,以实现相应的功能,相关的HCI命令介绍如下:

注:HCI是主机控制器接口,主机部分和控制器(链路层+物理层)通讯的接口,可以有串口、USB等形式。

    LE Set Random Address Command,设置一个新的Random地址,包括Resolvable private address类型的地址。

    LE Add Device to Resolving List Command,将指定的设备添加到本机的Resolving List中,需要指定的参数包括:需要添 加设备的地址(包括地址类型)、需要添加设备的IRK、本设备的IRK。

    LE Remove Device From Resolving List Command,将指定设备从本机的Resolving List中删除。

    LE Clear Resolving List Command,清除本机的Resolving List。

    LE Read Resolving List Size Command,读取本机Resolving List的大小。

    LE Read Peer Resolvable Address Command,读取对端设备解析后的Resolvable private address。

    LE Read Local Resolvable Address Command,读取本机设备解析后的Resolvable private address。

    LE Set Address Resolution Enable Command,禁止/使能地址解析功能。


1)Resolvable private address的生成,是Host以T_GAP(private_addr_int)为周期,主动进行的,并通过“LE Set Random Address Command”告知Controller的链路层。因此,如果本地设备需要安全的环境,可以使用Resolvable private address作为广播和连接地址。

2)如果本地设备需要和某一个使用Resolvable private address的设备通信(扫描、连接等),则需要将该设备添加到Resolving List中,并使能地址解析功能。只有地址解析正确的时候,链路层才会继续后续的通信动作。

3)如果地址解析不正确,本地设备向对方发送的所有的数据包(扫描请求、连接请求等),都不能被正确接收(因为目的地址不正确)。但有一个例外,如果本地设备直接关闭地址解析功能,还是能收到对方的广播包,因此,Resolvable private address并不能保护广播包的数据。如果有敏感信息,放到scan response packet中应该是一个不错的选择。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值