BLE学习(4):蓝牙地址类型和设备的隐私

2023-11-16

蓝牙地址也被称为蓝牙MAC地址,它能唯一标识一个蓝牙设备的48位的值。在蓝牙规范中,它被称为BD_ADDR。蓝牙的地址类型可以分为两种:public addressesrandom addresses,其中random addresses又可再细分为几类,如下图所示:
在这里插入图片描述

1 Public Address

蓝牙的公有地址是一个全球的固定不变的48位扩展唯一标识符(EUI-48),它必须在IEEE注册,且遵循与MAC地址相同的规范。蓝牙公有地址的简化格式如下图所示:
在这里插入图片描述

  • Company ID(MSB):由IEEE公开分配的地址部分
  • Company Assigned(LSB):公司内部分配的ID

2 Random Address

随机地址比公有地址使用更广泛,因为它们不需要在IEEE注册。随机地址又分为两类:Static AddressPrivate Address
1、Static Address(静态地址)
静态地址不能再运行期间改变,它的格式如下(本文的地址格式图均为小端,故下图中Random为LSB):
在这里插入图片描述
其中46位的随机地址由开发者或者制造商来分配。

注意:所有的蓝牙设备必须使用Public Address或者Random Static Address其中一种,而接下来要介绍的Private Address仅用于解决隐私问题。

2、Private Address(私有地址)
随机私有地址专门用于保护蓝牙设备的隐私,隐藏身份,防止设备被跟踪,它又分为:resolvable(可解析)的和non-resolvable不可解析的地址。
(1)resolvable
  可解析的随机私有地址的目的是防止恶意第三方跟踪蓝牙设备,同时允许一个或多个受信任方识别目标蓝牙设备。它的原理是与信任的设备共享一个密钥,这个密钥称为IRK(Identity Resolving Key),可解析的私有随机地址就是采用IRK和一个随机数生成的。
  在这种情况下,一个可信任的设备称为bonded device(绑定设备),绑定是两个蓝牙连接后的一个可选功能。比如手机连接过一个蓝牙手环,那么断开蓝牙连接后,该设备还会出现在手机的蓝牙列表中,这就是绑定,这样在下次连接的时候就能非常快地配对。这种类型的地址定期变化,根据蓝牙规范的建议是每15分钟更换一次。它的格式如下:
在这里插入图片描述

  • random part of prand:随机产生的
  • hash:hash值是使用prandIRK生成的
  • 通过随机生成的prandIRK计算出hash之后,组合成了可解析的私有地址。

(2)Non-Resolvable
这种地址的唯一目的是防止被其他BLE设备监听。它的地址也会周期性地改变,与可解析地址的不同是,它不能被任何其他设备解析。这种地址不是很常用,但是有时会在Bluetooth beacon中使用。它的格式如下:
在这里插入图片描述

3 BLE设备的隐私

    如果不采取适当的措施,蓝牙的地址可用于跟踪用户的数据。蓝牙设备的隐私是通过使用resolvable private address(可解析的私有地址)来实现的。在之前的配对过程中对端设备可能已经收到了IRK,以后再建立连接,对端设备在收到了对方广播报文中的resolvable random address后,将其的prand字段提取出来与本地的IRK计算得到一个hash值,与地址中的hash字段做对比,若相同,才进行后续操作。

  • IRK用于生成和解析resolvable private address
  • IRK可由每个设备本地生成、随机生成或在生产过程中分配
  • bond过程中,每个设备将其对端设备的IRK存储在它自己的resolving list(解析列表)中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BLE学习(4):蓝牙地址类型和设备的隐私 的相关文章

  • html图片加载太慢如何解决办法,如何解决CSS JS和图片对网站加载速度的影响

    对于网站加载速度的严格要求一致是seo优化过程中的重点 如何提升网站加载速度 服务器 网站内容元素等都有很大的关系 本篇文章将从CSS JS和图片三个方面进行详细的讲解 1 图片 1 指定图像尺寸 加载图像之前 您的浏览器开始渲染页面 制定
  • Remote Sensing 从投稿到录用

    一 刊物介绍 最新升级版大类分区仍然是二区TOP期刊 这个期刊现在业界褒贬不一 今年影响因子已经上升到4 848 可以作为一区文章被拒之后的首选 研究方向 无线传感器网络的定位与导航 投稿 Remote Sensing Remote Sen
  • RabbitMQ C++客户端 RabbitMQ Client for Windows/Linux 超简单接收发送接口-最近更新2019-09-06

    消息队列设计精要 解耦是消息队列要解决的最本质问题 所谓解耦 简单点讲就是一个事务 只关心核心的流程 而需要依赖其他系统但不那么重要的事情 有通知即可 无需等待结果 如果下游有很多系统关心你的系统发出的通知的时候 果断地使用消息队列吧 掰开
  • Docker 镜像使用

    目录 1 列出镜像列表 2 获取一个新的镜像 3 查找镜像 4 拖取镜像 5 删除镜像 6 创建镜像 a 更新镜像 b 构建镜像 设置镜像标签 当运行容器时 使用的镜像如果在本地中不存在 docker 就会自动从 docker 镜像仓库中下
  • Scala学习(九)---List集合

    文章目录 1 List 1 1 不可变List集合 1 2 可变集合ListBuffer 1 List List集合默认为不可变集合 List集合在实例化的时候 无法通过new关键字进行实例化 只能通过伴生apply方法来对其进行实例化 1

随机推荐