蓝牙的地址问题

Posted someone-device

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝牙的地址问题相关的知识,希望对你有一定的参考价值。

From

 

技术图片

 

1 地址分类

就像Ethernet MAC (Media Access Control)地址一样,每个蓝牙设备有一个基本标识符,即蓝牙设备地址,其是一个48位(6-byte)的唯一标识,蓝牙建立连接时使用的就是这个地址。

蓝牙有两类地址:

  • Public deviceaddress 

  • Random device address

     


Public deviceaddress:相当于固定的BR / EDR,工厂编程的设备地址。它必须向IEEE注册机构注册,并且在设备的生命周期内不会变化。

蓝牙random地址又进一步分类如下:

 

技术图片

 

对于一个蓝牙设备,可以使用public,static, resolvable 或者non-resolvable类型的蓝牙地址,地址类型通过广播包中的一个bit来区分,这个bit就是TxAddr和RxAddr。

 

  • Public address: 全球唯一性地址,前3个字节体现了OUI(Organizationallyunique identifier),表明制造商,定义如下

 

技术图片

 

 

 

  • Static random address: 当OUI无法获取时,可以使用静态随机地址来替换Public address,定义如下:

    技术图片

     

     

 

  • Private addresses: 可以周期性的变化,因此可以避免设备被跟踪。这类地址又分为可以解析的地址和不可解析的私有地址。

     

  • Resolvable private address: 双方设备可以通过一个共享的key来解析的地址,BLE双方在经过配对以后,会产生一个用于解析私有地址的key,在后续的连接中,即使BLE设备地址发生了变化,也能被信任的设备识别,但对其他设备来说,则是随机变化和不可跟踪的,定义如下:

 

技术图片

 

 

 

  • Non-resolvable privateaddress: 不可解析的地址,一般不希望使用这类型的地址,定义形式如下:

 技术图片

 

 

2 私有地址生成与解析

Resolvable private address的生成方法和解析方法

在蓝牙的pairing/bonding流程中,双方会产生交换两个参数(IPK,prand),其中IPK是地址解析用的密钥,prand是一个随机数,私有地址的解析会用到这两个参数以及一个哈希函数ah。

生成方法:

 技术图片

 

 

技术图片

 

 

 

可以看到这类地址有两部分组成,24位的pand以及24位的hash值。因此,对方设备只要根据这个地址信息,使用相同的key就能解析出该地址:

 

 

 技术图片

 

 

上面公式中的prand是从对方地址中获取的,只要localhash与对方的hash值相同,就可以认为,这个设备是之前配对过可信的设备,从而实现双方设备的通信。

 

技术图片

 

以上是关于蓝牙的地址问题的主要内容,如果未能解决你的问题,请参考以下文章

安卓蓝牙-MAC地址

两部手机可以有相同的蓝牙地址吗?

蓝牙开发-获取Mac地址

如何使用其蓝牙 LE MAC 地址唯一识别 android 设备?

android 怎么查看蓝牙设备

[BLE--Link Layer]设备蓝牙地址