Confidential Computing in the Cloud
Microsoft have quietly announced what is likely to prove a major advance in Cloud security – what pundits have labelled confidential computing arrives in beta on Azure shortly. Cloud platforms already provide encryption of data transferred and stored. These are variations of TLS and storage encryption, with key management solutions that give privacy to the user for data being moved or at-rest. However, a major block to confidence in wider cloud adoption – especially for financial services, government or security applications – is the ability to protect data from unauthorised access, manipulation or corruption while it is being processed.
Why is confidential computing important ?
One of the many attractions of the cloud is the elimination of the need to manage boxes. However, the more hardware is abstracted away from the user, the less control that user has over what gets executed on their behalf. If you entrust your public cloud provider with your data and its processing, you also trust they will protect the physical computer on which your work is executed. With the cloud, you also have to trust the virtualisation software (hypervisor), operating system and device drivers that come with the cloud instance. If these are corrupted and malware introduced, then your data is also at risk – potentially without you ever being aware of the breach.
Trusting The Execution …
Confidential Computing is concerned not only with the security of data in-use but also of the code operating on that data. The aim is to ensure that the executing code is pure. So this is about isolation, yes, but also the way the isolation is initiated and the environment established for encrypted information – both data and code. This process cannot be entrusted to software – again, we cannot trust it as we did not create it or install it – the cloud provider did. So a hardware solution is needed – enter Intel SGX or Software Guard Extensions. SGX is an extension to the instruction set in some CPU families which provide for the creation of discrete, private areas for code execution within core memory. Neat, but not the complete solution as SGX requires solutions to be coded for it. It was also intended only for small, specific blocks of code which operates on particular, sensitive subsets of data.
Microsoft’s safe Haven
Back in 2014, Microsoft Research took the basics of SGX and set a design problem – to permit the secure execution of any software, including legacy applications, without re-writing the code. The team introduced the concept of a Trusted Execution Environment (TEE) – nicknamed an ‘enclave’ – and delivered these TEEs in two ways: using a modified hypervisor (Microsoft’s Hyper-V in Virtual Secure Mode) and using Intel SGX. The former approach is for convenience and creates the enclave in a (potentially) compromised manner using a modified OS. It is the SGX-based Trusted Execution Environment that meets the design criteria and no-one – not even Microsoft – can see into that SGX enclave.
Andrew Baumann and the team presented their approach to USENIX Symposium in 2014 for what they called ‘Haven‘. With the recent blog article from their CTO, Mark Russinovich, Microsoft Azure is announcing the productisation of this research in an exciting Early Access programme. No details yet on pricing but there are some great articles on the ‘net if you wish to dig further.
For those who want to understand the approach in more detail, Andrew Baumann’s team research paper – which backed up his 2014 presentation – is available for download here. Worth a read as it describes the assertion (of code purity) mechanism alongside the creation of the enclaves in some detail. Another decent article is by Peter Bright at arsTechnica.
Finally, check out this pat-on-the-back from the Electronic Frontier Foundation – a concise and well-written description of the Azure offering which explains why this is a significant announcement from the Microsoft team.