1. STM32WB-WBA Encrypted Advertising
This feature - introduced in Bluetooth® 5.4 provides a standardized approach to the secure broadcasting of data in advertising packets.
It is possible to encrypt advertising data by encapsulating the normal advertising data within an Encrypted Advertising Data type (new AD type) using a pre-shared session key and a nonce.
Because the encrypted advertising data nonce is changed whenever the private address is changed, the encrypted data before and after the change is also different.
This approach prevents the tracking of devices based solely on the private address and advertising data.
The encrypted advertising data pre-shared session key is communicated only to peer devices that are authorized to receive such information.
Only devices that have the key material can decrypt and authenticate messages and track the advertising device.
1.1. Principles
Encrypted Advertising data are added in advertising using the new AD type "Encrypted Advertising Data" (0x31)
Encryption of "Encrypted Advertising Data" is based on an algorithm using the value of a new characteristic added to GAP service and AES..(to complete)
The characteristic: Encrypted Data Key Material is readable by a device authenticated and authorized.
The peer device, receiving advertising reports containing AD type "Encrypted Advertising Data" is able to decode encrypted data using the previously read Encrypted Data Key Material.
Encrypted Data key Material characterisitc: *UUID: 0x2B88 *Value: 128 bits
1.2. Advertising data
At startup, Peer To Peer Server application starts Advertising.
Data advertised are composed as follows:
P2P Server Long Range Advertising packet | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Manufacturer data are encoded following STMicroelectronics BlueST SDK v2 as described below:
STMicroelectronics Manufacturer Advertising data | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
1.3. STM32WBA Long Range Central and Peripheral application
Long Range Central acts as a Central device with the support of GATT Client Layer.
At startup, by pressing B1 button, Long Range Client application:
- Starts scanning to detect Long Range Server application by filtering the Firmware ID of the STMicroelectronics Manufacturer advertising data
- Stops Scanning once Long Range server detected
- Connects to the Long Range Server to establish the connection.
- Discovers GATT Service & Characteristics of the Long Range server
- Enable all GATT server notification characteristics
Once connected, the Long Range Client application:
- By pressing B1 button, write a message to toggle the Blue LED of the Long Range Server
- Receive notification to toggle the on board Blue LED from remote Long Range Server Application.
Long Range Peripheral acts as a Peripheral device with the support of GATT Client Layer.
At reset, Long Range Peripheral application starts one extended advertising set at primary and secondary LE coded PHY.
Once connected, on both applications:
- By pressing B2 button, HCI_LE_SET_PHY command is sent. It allows to toggle Phy_options parameter S=8/2 (red led is ON/OFF)
- Payload can be coded with two different rates: 125 kb/s (S = 2) or 500 kb/s (S = 8)
Refer to Bluetooth®Programming Manual PM0271 [1]. See chapter 5.7 STM32WBA LE Coded PHY
Example of flow diagram between STM32WBA Long Range Server & Long Range Client |
---|
B2 to toggle Phy options: client writes with S=8, peripheral notifies with S=2 |
---|
1.4. On-board buttons configuration
Button configuration for Bluetooth® Low Energy Long Range application on Nucleo-WBA55CG boards | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
1.5. Collector applications compatibility
The BLE_App_Long_Range_Peripheral project is compatible with the following collector:
BLE_App_Long_Range_Central or a smartphone which supports LE coded feature.
1.6. Code example
A STM32WBA Long Range code example has been shared on STM32-Hotspot GitHub [2]