博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BLE--Link Layer]设备蓝牙地址
阅读量:6654 次
发布时间:2019-06-25

本文共 1066 字,大约阅读时间需要 3 分钟。

简述

不论什么网络设备而言,都会有自己独特的一个MAC地址,不然在设备量较大的情况下非常可能造成通信的混乱。蓝牙是无线通信中使用非常广泛的技术。当然其蓝牙地址也是相当的重要的了。

蓝牙地址简述

种类划分

- public地址
- random地址
蓝牙地址长度,48bit,即6个byte。

Public地址

该地址是固定的,厂商设定:

这里写图片描写叙述
public addr和resolvable random addr和unresolvable random addr

Random地址

Random地址事实上又分为两种:

- Static地址
- Private地址

Static地址

这里写图片描写叙述

这样的地址是在蓝牙设备上电初始化成功后,就不会再变化,而到关闭电源再重新启动,才会使用一个新的值。

Private地址

这里写图片描写叙述

这样的是non resolvable的private地址,其值不能和public地址一样。对于这样的地址,假设都没有办法解析出,不知道须要这类地址有什么作用?以后知道了再来补充吧。只是认为可能是对Public地址的一个补充。

这里写图片描写叙述

这样的是resolvable的private地址。prand部分是随机生成的24bit数值。hash部分使用例如以下的方式生成:

hash = ah(IRK, prand)

ah是SMP部分的随机地址生成函数,IRK是密钥(Identity Resolving Key),先随机生成prand部分,然后用这个算法生成hash,然后将hash和prand部分填入上图中相应bit区域,就形成了resolvable private address(RPA)了。

由于上面这样的地址是resolvable的,当然得有相应的地址解析的方法了,通过解密所获得对方的蓝牙地址,才干够进行某些通信,看来是BLE的新特性所提供安全性的一些手段了。
在拿到对方的resolvable private address(RPA)后。本地设备从RPA中取出prand部分,然后会依据上面hash的生成方式生成一个叫localhash的:

localHash = ah(IRK, prand)

然后将这个localHash和从RPA中取出的hash部分进行比較,假设同样,那么对方设备就被识别了。

感觉这里的识别作用就是确定应当用哪个IRK和对方设备交互。对于这样的random地址的方式,后面还得再看看。应当是比較新的特性。

转载于:https://www.cnblogs.com/gavanwanggw/p/7074285.html

你可能感兴趣的文章
git 拉取和获取 pull 和 fetch 区别
查看>>
html5系列目录
查看>>
C# 视频监控系列(1):准备
查看>>
今天在做底层数据库操作时,又用到了静态类,所以,单拿出来再说说它
查看>>
FreeMarker 一二事 - 静态模板的使用与生成
查看>>
6.3. 获取当前用户
查看>>
软件架构中的层次依赖
查看>>
HTML/CSS/JavaScript学习笔记【持续更新】
查看>>
基础才是重中之重~延迟初始化
查看>>
[Erlang 0086] RabbitMQ 集群: 从零开始
查看>>
a标签的四个伪类
查看>>
使用Shell创建GitHub仓库
查看>>
利用优秀的.NET界面控件,打造新潮的界面效果
查看>>
Winform 里面的TreeView节点定位的另外一种方法TreeNode.FromHandle
查看>>
PHPUnit整合ThinkPHP的库TPUnit
查看>>
java基础之:java注解
查看>>
Flask中的ORM使用
查看>>
C#中操纵SqlServer数据库
查看>>
[Qt扒手2] PyQt5 路径绘画例子
查看>>
如何将wordpress所有文章批量改为已发布状态
查看>>