【android bluetooth 协议分析 21】【ble 介绍 1】【什么是RPA】
通俗易懂地讲解一下 BLE(低功耗蓝牙)中的 Resolvable Private Address(RPA,可解析私有地址)。
1. 一句话理解
RPA 是一种“临时的、隐私保护的蓝牙设备地址”,别人无法随便追踪你,但“授权的设备”可以识别你是谁。
2.为什么需要 RPA?
在 BLE 中,每个设备都要有一个地址,就像每台电脑有 IP 地址一样,用来标识自己。但如果设备一直用同一个固定地址,那就好比你到哪儿别人都能认出你 —— 容易被追踪!
比如:
你带着蓝牙耳机逛街,如果耳机地址是固定的,商场的蓝牙探针就可以一直跟踪你在哪儿。
这显然侵犯隐私,于是 BLE 引入了 私有地址机制,其中最重要的一种就是 RPA。
3. 什么是 RPA(Resolvable Private Address)?
RPA 是一种每隔一段时间(如15分钟)自动更换的临时地址,它是根据一个叫做 IRK(Identity Resolving Key) 的密钥生成的。
关键点:
特性 | 描述 |
---|---|
临时性 | 过一段时间自动更换 |
可解析 | 掌握 IRK 的设备可以识别这个地址是谁的 |
隐私保护 | 其他设备即使看到地址,也无法知道你是谁 |
一次性识别 | 授权设备只需知道你的 IRK,就能解析每次新的地址 |
4. RPA 的工作原理
我们用一个简化的流程图来表示:
4.1 设备端生成 RPA 的流程:
-
设备保存了自己的 IRK(身份解析密钥)
-
定时生成一个新的随机数(
prand
) -
使用
IRK + prand
生成加密 hash -
把 hash 和 prand 组合起来,构成新的 RPA 地址
💡 所以 RPA 是这样的结构:
| hash(24bit) | prand(24bit) |
4.2 识别端(比如手机)如何解析 RPA?
-
手机事先存储了设备的 IRK
-
手机收到广播包中的地址(RPA)
-
手机尝试用已知的 IRK 来计算 hash,看是否和收到的地址的 hash 部分匹配
-
如果匹配成功 ➜ 确认这个地址是某个设备的
这样就可以在保护隐私的前提下,让授权设备识别你。
5. 实际应用场景举例
5.1 蓝牙耳机配对
你配对过一次耳机后,手机保存了耳机的 IRK。之后耳机即使换地址了,手机也能识别它是谁,自动连接。
5.2 防追踪
路人、商场探针设备等,虽然能看到你的蓝牙地址,但因为他们不知道 IRK,无法识别你是谁,也无法长期跟踪你。
6. RPA 和其他地址对比
地址类型 | 是否可变 | 是否可识别 | 用途 |
---|---|---|---|
Public Address | 否 | 是 | 官方注册的固定地址 |
Random Static | 否 | 否 | 私有设备使用,但固定 |
RPA | ✅ | ✅(授权设备) | 保密且可以被信任设备识别 |
NRPA (非可解析) | ✅ | ❌ | 完全匿名,只用于广播连接等场景 |
7. 常见问题
7.1 谁生成 IRK?
IRK 是在设备配对的时候,由系统生成和共享的。
7.2 多久换一次 RPA?
通常是 15 分钟左右,但也可以根据系统设定来更频繁地更换。
7.3 RPA 会影响连接吗?
不会。只要对方设备有你的 IRK,就能识别你、连接你。
7.4 RPA 机制是否只有 BLE 有?经典蓝牙有吗?
1. 经典蓝牙 没有 RPA 机制!
这是一个 BLE(Bluetooth Low Energy)专属的隐私保护机制。
2. 经典蓝牙 vs BLE 地址机制对比
特性 | 经典蓝牙 | BLE |
---|---|---|
支持 RPA | ❌ 不支持 | ✅ 支持 |
地址类型 | 通常是固定的 BD_ADDR(48 位) | Public / Static / RPA / NRPA |
是否可匿名广播 | ❌ 无 | ✅ 可通过 NRPA 匿名广播 |
是否有隐私机制 | 很弱 | 强,RPA 是核心 |
3. 为什么经典蓝牙没有 RPA?
经典蓝牙设计较早,主要用于高带宽连接(如音频),当时对隐私性考虑较少。RPA 是 BLE 在后期专门为隐私场景设计的,比如:
-
健康设备(你不想让陌生人知道你血糖仪的地址)
-
位置服务(防止商场用蓝牙追踪你)
-
广播设备(如信标,匿名发送广告)
8. 总结
问题 | 答案 |
---|---|
IRK 是怎么来的? | 在 BLE 配对并绑定时,由设备生成并通过“身份信息交换”阶段互相传递。 |
RPA 是只有 BLE 才有吗? | ✅ 是的,经典蓝牙不支持 RPA。 |
RPA 的目的? | 保密地址、防止追踪,但又能让授权设备识别身份。 |
特性 | RPA |
---|---|
隐私保护 | ✅ 防止被追踪 |
可识别性 | ✅ 授权设备可识别 |
自动变换 | ✅ 定期更新地址 |
用于哪些设备 | ✅ 支持 BLE 隐私的设备(耳机、手表等) |