码迷,mamicode.com
首页 > 其他好文 > 详细

蓝牙的地址问题

时间:2020-01-04 10:29:58      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:The   识别   注册   唯一性   变化   nal   制造商   lazy   type   

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值相同,就可以认为,这个设备是之前配对过可信的设备,从而实现双方设备的通信。

 

技术图片

 

蓝牙的地址问题

标签:The   识别   注册   唯一性   变化   nal   制造商   lazy   type   

原文地址:https://www.cnblogs.com/someone-device/p/12148066.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!