How it works
Hardware-protected keys are stored in hardware, typically in a trusted execution environment (TEE) or on a trusted platform module (TPM), and will never leave it. As a result, all operations that require the private key are performed in the secure hardware on the device.
Even rooted devices safeguard hardware-protected keys from extraction, as these keys cannot be cloned.
Activation
The usual flow for activation of a hardware-protected key is as follows:
- The MobileID client SDK generates a key pair in the secure hardware.
- The secure hardware returns the public hardware-protected key to the MobileID client SDK.
- The MobileID client SDK returns this key to the MobileID server over the secure channel in the
finish activationrequest. - The MobileID server stores the public hardware-protected key on the registration, and this key will be used to verify all future authentications.
Sequence diagram showing flow for activation of hardware-protected keys
Authentication
For devices activated with hardware-protected keys, an additional security check is conducted during every authentication. The MobileID server is used to validate the hardware signature.
The usual flow for authentication with hardware-protected keys is as follows:
- The MobileID client SDK will sign the authentication challenge, received from the MobileID server in the
start authenticationrequest, with the hardware-protected private key. - The signed challenge is passed back to the MobileID server in the
finish authenticationrequest over the secure channel. - The signed challenge is verified server-side with the hardware-protected public key.
Sequence diagram showing flow for validation during an authentication
Supported devices
Hardware-protected keys are supported on the following devices:
- Android 6 (most devices)
- Android 7 or later (all devices)
- iOS 10 or later (devices with Secure Enclave)
Devices that do not support hardware-protected keys will only use software keys.