The Promise of Confidential Computing
To some, confidential computing is one of the remaining Holy Grails of data security: secure protection of data in use at scale and at a commodity price point. Are current technologies ready to live up to this promise?
Confidential computing is a generic industry term that describes the process of securing data in use. Compared to data at rest (e.g. data in storage) or data in motion (e.g. data in transmission), securing data in use involves techniques and technologies, that enable algorithms to operate on data while ensuring the privacy of that data. Currently, there are two technologies that attempt to address this use-case – homomorphic encryption and secure enclaves. While homomorphic encryption has great promise, the practical implementations are limited to very niche solutions that can tolerate additional compute-intensive overhead. We will focus the remainder of this blog post on secure enclaves, which have been commercially available for a number of years.
Secure enclaves are implemented using specialized hardware controls to securely isolate data and instructions at the CPU level. This isolation is supported by strong cryptography to enable verification of authenticity of the enclave, along with providing privacy and integrity of both the enclave code as well as the sensitive data being processed.
These additional hardware-level controls, along with robust key management processes, are used by software to create logically secure enclaves that help mitigate compute-adjacent threats to your data. Such threats can come from the user level as well as operating system level processes running on the same hardware and looking to gain access to sensitive data.
While there is no industry standard for a secure enclave, many CPU vendors have implemented and marketed specific technologies around this confidential computing paradigm. A few of the best known are Intel Software Guard Extensions (SGX), AMD Secure Encrypted Virtualization/Secure Memory Encryption and ARM TrustZone Trusted Execution Environment, to name but a few.
While the promise is there, challenges still abound. Properly staging, initializing, and operating secure enclaves comes with a certain amount of complexity – and complexity can be the adversary of security. This complexity includes:
- Validating attestation chains of trust;
- Implementing source code targeted to a specific confidential computing architecture;
- Instantiating and enforcing policy controls around enclave deployment and use; and,
- Key lifecycle management.
And all these sources of complexity provide opportunities for failing in an insecure manner. However, if handled correctly, they can also provide a competitive advantage.
Beyond these inherent operational challenges, security researchers have been hard at work testing the limits of the technology, and finding various architectural and implementation flaws in the solutions that can compromise the very data being protected by the secure enclave. Fortunately, vendors have responded quickly with patches, firmware updates, and key reissuance to address these architectural flaws. However, this unfortunately adds to your operational complexity equation.
To use, or not to use?
Despite these challenges, a secure enclave is a powerful tool to enable confidential computing and can be very useful in many situations. At Thales, we have been prototyping solutions using secure enclave technology for the past few years. As a result, we believe secure enclaves have great potential to extend the security envelope of our products, while solving some interesting security challenges for our customers.
We believe that as part of a secure data protection infrastructure (i.e. one rooted in properly secured trust anchors, robust enterprise key lifecycle management and distributed data at rest protection), secure enclaves can deliver on providing practical ‘data in use’ security, as long as enterprises are prepared to manage the risks. Specifically:
- Before using any secure enclave, fully verify (or attest) the underlying confidential computing engine – every time, to include all chains of trust;
- Fully understand your targeted architecture and be able to assess patch levels and versions at run time to ensure your enclave is always running on the most secure version;
- Understand YOUR threat model. Consider carefully what information you want to use/protect with your confidential computing; limit your processing to only those secrets and data where a compromise would be recoverable; and,
- Speaking of secrets, make sure all cryptographic keys used in your confidential compute infrastructure have the smallest practical key lifecycles and can be rotated with minimal downtime.
Finally, it is worth noting that a secure enclave will not protect you against code with security flaws. When writing code for deployment in a secure enclave, it’s important to employ secure coding principles, and when possible use languages and technologies that will reduce the risk of vulnerabilities. As with all innovative and emerging technologies, the overall security of a system depends not only on the underlying technology, but how it is used.
Stay on top of data security trends, subscribe to our Security Sessions Podcast