Enhancing device privacy and energy efficiency with Bluetooth® Randomized RPA Updates
|
The Bluetooth® Randomized RPA Updates feature enhances the management of resolvable private addresses and improves the privacy and energy efficiency of Bluetooth LE devices. This article highlights why Bluetooth® Randomized RPA Updates are relevant, explains how they work, and provides useful context for anyone new to this Bluetooth enhancement.
Background
All Bluetooth devices have a 48-bit long unique address used for their identification. The address is categorized as either public or random. The key differences between both address types are given below.
Public address 259120_0051a8-84> |
Random address 259120_8d14b9-ea> |
– Fixed for the lifetime of the device |
– Static or private (two subtypes) |
Random addresses are far more popular than public because they avoid the cost of address registration. But now, how are the two subtypes of random addresses different, you may wonder? Well, in the static case, the address can be fixed for the lifetime of a device, or it can be modified at device bootup, but if so, it can never change during runtime. In the private case, however, the address can be changed during runtime, periodically.
The ability to change during runtime makes random private addresses quite advantageous for device privacy protection. They are useful for making tracking difficult or to hide the real identity of a device (e.g., its public or random static address), for example.
Resolvable Private Address (RPA)
Bluetooth LE supports what is called resolvable private addresses. An RPA is a random private address that becomes resolvable only to devices sharing a common Identity Resolving Key (IRK) required to verify the address cryptographically. IRKs are securely exchanged by Bluetooth devices during pairing.
RPAs can help protect device privacy in two ways: By making it challenging for external observers to correlate device behavior through address patterns, which prevents long-term tracking, and by allowing only trusted devices to identify each other.
Using RPAs
The HCI_LE_Set_Resolvable_Private_Address_Timeout command (OCF 0x002E) is available to configure RPA updates. It controls the update frequency of a resolvable private address using a fixed timeout value. Its parameter structure is as follows:
Command parameter 259120_1f4aca-c4> |
Length 259120_2e9810-93> |
Value range 259120_525055-a9> |
Default value 259120_498286-fd> |
Description 259120_db246a-68> |
RPA_Timeout 259120_e0c3e7-d4> |
2 Bytes 259120_072491-70> |
0x0001-0x0E10 (1s – 3600s) 259120_544956-bd> |
0x0384 (900s) 259120_9cc952-2e> |
Update interval 259120_c5928b-4d> |
Again, RPA is an important mechanism that enhances Bluetooth device privacy, but the fixed timeout approach presents two limitations that are non-negligible:
- Predictability risk: Attackers may be able to model device behavior by observing RPA update patterns. Even with the maximum 15-minute update interval, RPA addresses can become predictable and, potentially, still be exploited to track device locations and activities in user-tracking scenarios.
- Energy efficiency risk: For applications where the predictability risk is unacceptable (e.g., smartphones and laptops), RPA randomization must be implemented and managed by the system host directly. As a result, RPA updates force frequent host interruptions or waking leading to higher system energy consumption and impacting battery life.
Bluetooth® Randomized RPA Updates
Both limitations described above are addressed with the new Bluetooth® Randomized RPA Updates. In a nutshell, Bluetooth® Randomized RPA Updates allows making the RPA timeout parameter a random value within a specified time range, rather than the previously fixed value. Also, it enables the controller to autonomously generate a new RPA at a random time within the specified time range, relieving the host from managing and reconfiguring RPA timeouts to prevent unnecessary waking and, thus, save energy.
Using Bluetooth® Randomized RPA Updates
A new version, [v2], of the HCI_LE_Set_Resolvable_Private_Address_Timeout command (OCF 0x009E) introduces max and min timeout limits to set the timing range the controller will use to autonomously generate the new RPA and to randomly change an RPA. Its parameter structure is as follows:
Command parameter 259120_060ca8-61> |
Length 259120_4ccdff-1f> |
Value range 259120_44ca72-bd> |
Default value 259120_25c171-09> |
Description 259120_361269-bb> |
RPA_Timeout_Min 259120_f27e25-81> |
2 Bytes 259120_ab74b2-6f> |
0x0001-0x0E10 (1s – 3600s) 259120_39b02f-94> |
0x01E0 (480s) 259120_769fcd-0f> |
Minimum update interval 259120_42ad1f-9d> |
RPA_Timeout_Max 259120_947c26-2e> |
2 Bytes 259120_10607b-59> |
0x0001-0x0E10 (1s – 3600s) 259120_753704-1e> |
0x0384 (900s) 259120_0505e5-7b> |
Maximum update interval 259120_c81764-b6> |
Key enhancements making this new HCI command possible include:
- Random time generation algorithm: The controller will generate uniformly distributed random values within the specified range, complying with random number generation specifications in Bluetooth Core Specification Vol 2, Part H, Section 2.
- Error handling: If RPA_Timeout_Min exceeds RPA_Timeout_Max, or either parameter is out of range (>0x0E10), the command will return error code 0x12 (invalid HCI command parameters).
- Backward compatibility: The new [v2] command version will coexist with the legacy [v1] version with fixed RPA timeout. Support for specific commands can be queried using HCI command HCI_Read_Local_Supported_Commands (OCF 0x0002).
Octet 259120_cd9df7-13> |
Bit 259120_c321f6-cf> |
HCI command support 259120_b1b296-6c> |
35 259120_1dd6fc-6c> |
2 259120_dba158-24> |
HCI_LE_Set_Resolvable_Private_Address_Timeout [v1] 259120_3cdfa0-2f> |
48 259120_c9ac91-35> |
2 259120_8096c1-fd> |
HCI_LE_Set_Resolvable_Private_Address_Timeout [v2] 259120_b92088-55> |
Going forward, devices that support Bluetooth® Randomized RPA Updates will show new out-of-the-box behavior. They will randomize RPA updates automatically without explicitly calling the new HCI command.
Takeaways
- Bluetooth® Randomized RPA Updates is an HCI-only enhancement introduced with the release of Bluetooth® Core 6.1 that improves the privacy and energy efficiency of Bluetooth devices
- Bluetooth® Randomized RPA Updates sets the update frequency of a resolvable private address to a random timing value within a specified range; it also enables the controller to autonomously generate a new RPA, offloading RPA timeout management and reconfiguration duties from the host
To learn more, check out
Bluetooth® RPAランダム更新機能により、解決可能なプライベートアドレス(RPA)の管理が強化され、Bluetooth LEデバイスのプライバシーと省エネ効率の向上を図れるようになりました。本記事ではBluetooth® RPAランダム更新が重要である理由とその仕組みを解説し、このBluetoothの新機能について初めて知る人に役立つ背景情報も提供します。
背景
すべてのBluetoothデバイスは、固有の48ビット長のアドレスを識別用に持っています。アドレスは「パブリックアドレス」または「ランダムアドレス」のどちらかに分類されます。次の表に主な違いを示します。
パブリックアドレス 259120_fbae7d-57> |
ランダムアドレス 259120_3f92c8-da> |
– デバイスごとに固定 |
– 静的またはプライベートの2種類のサブタイプがある |
ランダムアドレスはアドレス登録が不要でその分の費用が掛からないため、パブリックアドレスよりはるかに多く使用されます。では、ランダムアドレスの2つのサブタイプにはどのような違いがあるのでしょうか。静的アドレスの場合、デバイスの耐用期間全体を通じて固定のアドレスとして使用することも、デバイス起動時に変更することもできます。ただし、ランタイム中の変更はできません。一方、プライベートアドレスの場合は、定期的にランタイム中の変更が可能です。
デバイスのプライバシー保護という観点からは、ランタイム中の変更ができるランダムプライベートアドレスが有利です。例として、ランダムプライベートアドレスは追跡を難しくしたり、デバイスの本当の識別子(デバイスのパブリックアドレスまたはランダムスタティックアドレス)を隠したりする際に活用できます。
解決可能なプライベートアドレス(RPA)
Bluetooth LEでは、「解決可能なプライベートアドレス(RPA)」を使用できます。RPAとは、共通のID解決キー(IRK)を持つデバイスだけが解決可能なランダムプライベートアドレスです。IRKはアドレスを暗号的に確認するために必要なもので、Bluetoothのデバイスがペアリングするときに安全に交換されます。
RPAでは、2つの方法でデバイスのプライバシーを保護します。一つは、アドレスのパターンに基づくデバイスのアクティビティの推定を難しくし、長期的な追跡を防止する方法です。もう一つは信頼されたデバイスのみが互いを特定できるようにするという方法です。
RPAの設定
RPAの更新設定には、HCI_LE_Set_Resolvable_Private_Address_Timeoutコマンド(OCF 0x002E)を使用します。このコマンドの固定タイムアウト値で、RPAの更新頻度を設定できます。以下にコマンドのパラメータの詳細を示します。
コマンドパラメータ 259120_0ac445-4c> |
長さ 259120_e280e8-75> |
値の範囲 259120_c858ff-be> |
デフォルト値 259120_f1d0da-31> |
説明 259120_97157f-4c> |
RPA_Timeout 259120_f4d087-e0> |
2 Bytes 259120_80d2b1-e6> |
0x0001-0x0E10 (1s – 3600s) 259120_ba4fd1-fc> |
0x0384 (900s) 259120_423174-28> |
更新間隔 259120_07ec56-5a> |
RPAはBluetoothデバイスのプライバシーを強化するために重要な仕組みではありますが、タイムアウトの値が固定されていることで、無視できない2つの課題が生じていました。
- 予測リスク:攻撃者がRPAの更新パターンを観測してデバイスのアクティビティのモデル化ができるおそれがあります。最大15分の更新間隔でもRPAアドレスが予測できる可能性があります。これを悪用することで、ユーザー追跡でデバイスの位置やアクティビティを追跡することが考えられます。
- 省エネ効率リスク:予測可能であることが許されないアプリケーション(スマートフォンやノートパソコンなど)の場合、RPAのランダム化はシステムのホストが直接実行・管理する必要があります。その結果、RPA更新のためにホストの割り込みやスリープ状態からの起動が頻繁に必要になることで、電力消費の増加を招き、バッテリー寿命に影響します。
Bluetooth® RPAランダム更新
新しく登場したBluetooth® RPAランダム更新は、上述の両方の課題に対応します。Bluetooth® RPAランダム更新では、これまでのようにRPAのタイムアウトに固定値を指定するのではなく、時間の範囲を指定し、その範囲内のランダムなタイミングで新しいRPAを生成します。また、ランダムなRPAの生成はコントローラ側で自律的に行われるため、ホスト側でRPAのタイムアウトの管理・再設定を行う必要がなく、スリープ状態からの不要な起動を防ぎ、電力節約につながります。
Bluetooth® RPAランダム更新の設定
HCI_LE_Set_Resolvable_Private_Address_Timeoutコマンド(OCF 0x009E)の新バージョン[v2]では、コントローラが新しいRPAを自律的に生成してランダムに変更する時間の範囲を定めるための、タイムアウトの上限と下限が設定できるようになりました。パラメータの詳細を以下に示します。troller will use to autonomously generate the new RPA and to randomly change an RPA. Its parameter structure is as follows:
コマンドパラメータ 259120_6a3efc-cc> |
長さ 259120_ad30df-bf> |
値の範囲 259120_06bc9f-9e> |
デフォルト値 259120_aae68e-de> |
説明 259120_c892a1-d8> |
RPA_Timeout_Min 259120_a127c2-64> |
2 バイト 259120_76a2b5-f0> |
0x0001-0x0E10 (1s – 3600s) 259120_1fb0e4-55> |
0x01E0 (480s) 259120_d7837b-f2> |
最小更新間隔 259120_e9327f-19> |
RPA_Timeout_Max 259120_e556e3-74> |
2 バイト 259120_7e087d-79> |
0x0001-0x0E10 (1s – 3600s) 259120_6cc227-c8> |
0x0384 (900s) 259120_2f3167-83> |
最大更新間隔 259120_9ac0d7-7b> |
この新しいHCIコマンドを可能にするため、主に以下の改良が加えられました。
- ランダム時間生成アルゴリズム:コントローラは、Bluetoothコア仕様Vol 2、Part H、Section 2のランダム数値生成仕様に従い、指定された範囲内に均等に配分されたランダム値を生成します。
- エラーハンドリング:RPA_Timeout_MinがRPA_Timeout_Maxを超える場合、またはどちらかのパラメータが有効範囲外である場合(>0x0E10)、コマンドはエラーコード0x12(無効なHCI コマンドパラメータ)を返します。
下位互換性:コマンドの新バージョン[v2]は、RPAタイムアウトが固定されるレガシーバージョン[v1]と共存します。具体的なコマンド対応を確認するには、HCIコマンドのHCI_Read_Local_Supported_Commands(OCF 0x0002)を使用します。
オクテット 259120_161fff-0d> |
ビット 259120_2f2d5f-04> |
HCIコマンド対応 259120_192e42-4f> |
35 259120_9962ab-00> |
2 259120_c5620e-2e> |
HCI_LE_Set_Resolvable_Private_Address_Timeout [v1] 259120_8a77da-7b> |
48 259120_f9ad8f-f5> |
2 259120_0c6402-f5> |
HCI_LE_Set_Resolvable_Private_Address_Timeout [v2] 259120_081cec-fe> |
今後、Bluetooth® RPAランダム更新に対応するデバイスでは、これまではなかった新しい動きが見られることになります。RPAの更新は、新しいHCIコマンドを明示的に呼び出すことなくランダム化されます。
まとめ
- Bluetooth® RPAランダム更新は、Bluetooth®コア6.1で導入されたHCIに限定された機能拡張で、Bluetoothデバイスのプライバシーと省エネ効率を向上させます。
- Bluetooth® RPAランダム更新では、解決可能なプライベートアドレス(RPA)の更新頻度が、指定された時間範囲内のランダムなタイミングに設定されます。また、コントローラが新しいRPAの生成を自律的に行うため、RPAのタイムアウト管理と再設定をホストが行う必要がなくなります。
詳しくは、以下をご参照ください。