Blog

Enhancing device privacy and energy efficiency with Bluetooth® Randomized RPA Updates 

|

Blog

Bluetooth® RPAランダム更新によるデバイスプライバシーと省エネ効率の向上 

|

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 

Random address 

– Fixed for the lifetime of the device 
– Programmed at manufacturing 
– Registered with the IEEE Registration Authority 
– Globally unique 

– Static or private (two subtypes) 
– Programmed at manufacturing or generated at runtime 
– No IEEE registration required 
– Can be repeatable 

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 

Length 

Value range 

Default value 

Description 

RPA_Timeout 

2 Bytes 

0x0001-0x0E10  (1s – 3600s) 

0x0384  (900s) 

Update interval 

Again, RPA is an important mechanism that enhances Bluetooth device privacy, but the fixed timeout approach presents two limitations that are non-negligible: 

  1. 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. 
  2. 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 

Length 

Value range 

Default value 

Description 

RPA_Timeout_Min 

2 Bytes 

0x0001-0x0E10 (1s – 3600s) 

0x01E0  (480s) 

Minimum update interval 

RPA_Timeout_Max 

2 Bytes 

0x0001-0x0E10 (1s – 3600s) 

0x0384  (900s) 

Maximum update interval 

Key enhancements making this new HCI command possible include:

  1. 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. 
  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). 
  3. 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 

Bit 

HCI command support 

35 

HCI_LE_Set_Resolvable_Private_Address_Timeout [v1] 

48 

HCI_LE_Set_Resolvable_Private_Address_Timeout [v2] 

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ビット長のアドレスを識別用に持っています。アドレスは「パブリックアドレス」または「ランダムアドレス」のどちらかに分類されます。次の表に主な違いを示します。

パブリックアドレス

ランダムアドレス

– デバイスごとに固定
– 製造時に書き込まれる
– IEEEに登録される
– 世界的に一意

– 静的またはプライベートの2種類のサブタイプがある
– 製造時に書き込まれる、またはランタイム中に生成される
– IEEE登録不要
– 繰り返し使用可能

ランダムアドレスはアドレス登録が不要でその分の費用が掛からないため、パブリックアドレスよりはるかに多く使用されます。では、ランダムアドレスの2つのサブタイプにはどのような違いがあるのでしょうか。静的アドレスの場合、デバイスの耐用期間全体を通じて固定のアドレスとして使用することも、デバイス起動時に変更することもできます。ただし、ランタイム中の変更はできません。一方、プライベートアドレスの場合は、定期的にランタイム中の変更が可能です。

デバイスのプライバシー保護という観点からは、ランタイム中の変更ができるランダムプライベートアドレスが有利です。例として、ランダムプライベートアドレスは追跡を難しくしたり、デバイスの本当の識別子(デバイスのパブリックアドレスまたはランダムスタティックアドレス)を隠したりする際に活用できます。

解決可能なプライベートアドレス(RPA)

Bluetooth LEでは、「解決可能なプライベートアドレス(RPA)」を使用できます。RPAとは、共通のID解決キー(IRK)を持つデバイスだけが解決可能なランダムプライベートアドレスです。IRKはアドレスを暗号的に確認するために必要なもので、Bluetoothのデバイスがペアリングするときに安全に交換されます。

RPAでは、2つの方法でデバイスのプライバシーを保護します。一つは、アドレスのパターンに基づくデバイスのアクティビティの推定を難しくし、長期的な追跡を防止する方法です。もう一つは信頼されたデバイスのみが互いを特定できるようにするという方法です。

RPAの設定

RPAの更新設定には、HCI_LE_Set_Resolvable_Private_Address_Timeoutコマンド(OCF 0x002E)を使用します。このコマンドの固定タイムアウト値で、RPAの更新頻度を設定できます。以下にコマンドのパラメータの詳細を示します。

コマンドパラメータ 

長さ

値の範囲

デフォルト値

説明

RPA_Timeout 

2 Bytes 

0x0001-0x0E10  (1s – 3600s) 

0x0384  (900s) 

更新間隔 

RPAはBluetoothデバイスのプライバシーを強化するために重要な仕組みではありますが、タイムアウトの値が固定されていることで、無視できない2つの課題が生じていました。

  1. 予測リスク:攻撃者がRPAの更新パターンを観測してデバイスのアクティビティのモデル化ができるおそれがあります。最大15分の更新間隔でもRPAアドレスが予測できる可能性があります。これを悪用することで、ユーザー追跡でデバイスの位置やアクティビティを追跡することが考えられます。
  2. 省エネ効率リスク:予測可能であることが許されないアプリケーション(スマートフォンやノートパソコンなど)の場合、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: 

コマンドパラメータ

長さ

値の範囲

デフォルト値 

説明 

RPA_Timeout_Min 

2 バイト 

0x0001-0x0E10 (1s – 3600s) 

0x01E0  (480s) 

最小更新間隔

RPA_Timeout_Max 

2 バイト

0x0001-0x0E10 (1s – 3600s) 

0x0384  (900s) 

最大更新間隔

この新しいHCIコマンドを可能にするため、主に以下の改良が加えられました。

  1. ランダム時間生成アルゴリズム:コントローラは、Bluetoothコア仕様Vol 2、Part H、Section 2のランダム数値生成仕様に従い、指定された範囲内に均等に配分されたランダム値を生成します。
  2. エラーハンドリング:RPA_Timeout_MinRPA_Timeout_Maxを超える場合、またはどちらかのパラメータが有効範囲外である場合(>0x0E10)、コマンドはエラーコード0x12(無効なHCI コマンドパラメータ)を返します。

下位互換性:コマンドの新バージョン[v2]は、RPAタイムアウトが固定されるレガシーバージョン[v1]と共存します。具体的なコマンド対応を確認するには、HCIコマンドのHCI_Read_Local_Supported_Commands(OCF 0x0002)を使用します。

オクテット

ビット

HCIコマンド対応 

35 

HCI_LE_Set_Resolvable_Private_Address_Timeout [v1] 

48 

HCI_LE_Set_Resolvable_Private_Address_Timeout [v2] 

今後、Bluetooth® RPAランダム更新に対応するデバイスでは、これまではなかった新しい動きが見られることになります。RPAの更新は、新しいHCIコマンドを明示的に呼び出すことなくランダム化されます。

まとめ

  • Bluetooth® RPAランダム更新は、Bluetooth®コア6.1で導入されたHCIに限定された機能拡張で、Bluetoothデバイスのプライバシーと省エネ効率を向上させます。
  • Bluetooth® RPAランダム更新では、解決可能なプライベートアドレス(RPA)の更新頻度が、指定された時間範囲内のランダムなタイミングに設定されます。また、コントローラが新しいRPAの生成を自律的に行うため、RPAのタイムアウト管理と再設定をホストが行う必要がなくなります。

詳しくは、以下をご参照ください。

FEATURED REPORT

Bluetooth® market update 2025

See important Bluetooth market trends, forecasts, and insights.