LE Privacy and Address Rotation#

LE Privacy in Bluetooth Low Energy (BLE) 4.2 and later uses resolvable private addresses (RPA) to prevent device tracking and enhance privacy. Addresses rotate periodically while maintaining the ability to resolve them using Identity Resolving Keys (IRK).

Privacy Overview#

Privacy Benefits:

  • Device Tracking Prevention: Rotating addresses prevent long-term tracking

  • Identity Protection: Real device address hidden from passive observers

  • Selective Resolution: Only devices with IRK can resolve addresses

Privacy Components:

  • Identity Resolving Key (IRK): 128-bit key used to generate and resolve RPAs

  • Resolvable Private Address (RPA): Rotating address derived from IRK

  • Resolving List: Database of IRKs for known devices

Setting Up Privacy#

1. Set Local IRK:

  • Use rsi_ble_set_local_irk_value() to set the device's IRK

  • IRK is used to generate RPAs for this device

2. Add Devices to Resolving List:

  • Use rsi_ble_resolvlist() to add peer device IRKs to resolving list

  • Resolving list enables address resolution for bonded devices

  • Query resolving list size using rsi_ble_get_resolving_list_size()

3. Enable Address Resolution:

  • Use rsi_ble_set_addr_resolution_enable() to enable address resolution

  • When enabled, device resolves RPAs using IRKs in resolving list

  • Do not call rsi_ble_set_addr_resolution_enable() while scanning, advertising, or connection initialization is in progress

4. Set Privacy Mode:

  • Use rsi_ble_set_privacy_mode() to configure privacy behavior

  • Privacy modes: Network Privacy Mode, Device Privacy Mode

Random Address Management#

Setting Random Address:

  • Use rsi_ble_set_random_address() to set random address for advertising/scanning

  • Or use rsi_ble_set_random_address_with_value() to set specific random address

  • Random address rotates periodically (typically every 15 minutes)

Address Types:

  • Public Address: Device's permanent MAC address

  • Random Static Address: Fixed random address (doesn't change)

  • Resolvable Private Address (RPA): Rotating address derived from IRK

  • Non-Resolvable Private Address: Random address not derived from IRK

Privacy Best Practices#

When to Use Privacy:

  • Consumer devices that need privacy protection

  • Applications where device tracking is a concern

  • Devices that connect to multiple peers

Privacy Considerations:

  • Privacy adds processing overhead for address resolution

  • Resolving list has size limits

  • Address rotation may cause temporary connection issues if not handled properly


APIs Used in This Section#

Topic

APIs / symbols

Reference

LE privacy

rsi_ble_set_local_irk_value(), rsi_ble_resolvlist(), rsi_ble_get_resolving_list_size(), rsi_ble_set_addr_resolution_enable(), rsi_ble_set_privacy_mode(), rsi_ble_set_random_address(), rsi_ble_set_random_address_with_value()

GAP