Integrating with secure elements
When we want private keys in a device totally isolated from any kind of access, we can use secure elements. Let's say that in our project we have a requirement for IEEE 802.1AR-Secure Device Identity compliance. The standard says each device in the network should have a unique device identifier (DevID) that is cryptographically bound to the device to manage its whole life cycle. The clauses in the standard pretty much define the capabilities of a secure element, which protects private keys from any type of external access and provides an interface for cryptographic operations. In such a use case, a secure element can generate a private/public key pair and store the private key in its vault (secure, non-volatile memory) to prevent any access from outside, including the application code running on the host MCU. All cryptographic functions are provided by the secure element so that a host System-on-Chip (SoC), such as ESP32, can query it via the cryptographic...