From these values a temporary Rolling Proximity Identifier (RPI_{i,j}) is generated every time the BLE MAC address changes, roughly every 15–20 minutes. The following algorithm is used: RPI_{i,j} = AES128(RPIK_i, \text{'EN-RPI'} || \mathtt{0x000000000000} || ENIN_j), where AES128(\text{Key, Data}) is an AES cryptography function with a 128-bit key, the data is one 16-byte block, j denotes the Unix Epoch Time at the moment the roll occurs, and ENIN_j is the corresponding 10-minute interval number. Next, additional Associated Encrypted Metadata is encrypted. What the metadata represents is not specified, likely to allow the later expansion of the protocol. The following algorithm is used: \text{Associated Encrypted Metadata}_{i,j} = AES128\_CTR(AEMK_i, RPI_{i,j}, \text{Metadata}), where AES128\_CTR(\text{Key, IV, Data}) denotes AES encryption with a 128-bit key in CTR mode. The Rolling Proximity Identifier and the Associated Encrypted Metadata are then combined and broadcast using BLE. Clients exchange and log these payloads.
