Till now all keys stored in OP-TEE secure storage are secured at rest by encrypting it with FEK.
But when these keys are being used for operations these keys are kept in plain format in OP-TEE internal structures.
This is because cryptographic operations in OP-TEE are currently done with software libraries(libtomcypt and mbedTLS), and cryptographic operations are nothing but mathematical operations, so software libraries need private keys in “plain format” for operations.
Keeping these keys in plain format makes them vulnerable to following attacks with respect to confidentiality and integrity which is main objective of Trusted Execution Environment.
- By exploiting any vulnerability in code such as buffer overrun or bugs like Heartbleed.
- Using side channel attacks such as cold boot attack - in which an attacker with physical access to a computer performs a memory dump of a computers RAM by performing a hard reset of the target machine.
Since nature of hardware-based cryptography ensures that the information stored in hardware is better protected from external attacks, so above issue can be fixed when these keys are backed by some hardware component. We need some mechanism in which the keys doesn’t exist in plain format in secure memory.
Hardware component will export the private keys only in encrypted form to secure memory.
During operations takes private keys in encrypted form and convert them into plain format internally and do operations with them.
Even If attacker gets access to this key in secure memory somehow, will not be able to find out the actual key.
Lead Software Engineer (NXP Semiconductors)
Having a total experience of 7 years in Embedded Programming.
Worked on various areas including PKCS#11, Arm TrustZone, OP-TEE, OpenSSL, Networking.