Admittedly, most of our focus (on the crypto end) has been on simplifying the key provisioning/management process, establishing secure sockets, and signing and verifying data. Our protocol does allow for storing a source ID and additional data with encrypted message data as a single serialized set of binary data to be written to disk or database. When this data is deserialized we can use the source ID to locate the key and then recover the original data with the AD and encrypted data.
Underneath, calls would be made to the open source crypto lib yielding, for example, data encrypted via ChaCha20 stream cipher with Poly1305 MAC authentication.
Also, our platform generates a provisioning configuration that tells the device to generate a dedicated set of keys for the purpose of encrypting data at rest. Those keys would not be used for any other signing or socket security operations. In general, if the target hardware can support it, we create dedicated keys for each type of data security operation (read multiple RPCs sending different types of data like log data, command-control data, images). We think this is especially important for encrypting data with LTKs since there have been cases where encrypting with a secret key has resulted in secret key leakage.