pub struct MachineId(/* private fields */);Expand description
A unique identifier for a particular hardware enclave.
The intention with this identifier is to compactly communicate whether a
piece of hardware with this id (in its current state) has the capability
to unseal some Sealed data that was sealed on hardware
possessing the same id.
An easy way to show unsealing capability is to actually derive a key from the SGX platform. Rather than encrypting some data with this key, we’ll instead use it as a public identifier. For different enclaves to still derive the same machine id, we’ll use the enclave signer (Lexe) in our key derivation instead of the per-enclave measurement.
As an added bonus, if the machine operator ever bumps the OWNER_EPOCH in
the BIOS, the machine id will automatically change to a different value,
correctly reflecting this machine’s inability to unseal the old data.
NOTE: on SGX this capability is modulo the CPUSVN (i.e., doesn’t commit to the CPUSVN) since it allows us to easily upgrade the SGX TCB platform without needing to also online-migrate sealed enclave state.