Updated Google Cloud will today announce the availability, as a beta, so-called Confidential Virtual Machines that feature on-the-fly RAM encryption using per-VM keys.
These Confidential VMs, detailed here, will be launched to coincide with the nine-week Google Cloud Next conference that starts today. The virtual machines will be powered by second-generation AMD Epyc processors, and use the chips' Secure Encrypted Virtualization (SEV) to perform the memory encryption.
The idea is that each virtual machine on the host server is assigned its own secret SEV encryption key. This key is used by the hardware's memory controllers to transparently and automatically encrypt data as it written to the VM's RAM pages and decrypt data as it is read from those RAM areas. Thus, the only code that can successfully decrypt an individual VM's SEV-protected memory is the software within the VM itself. Nothing else will have the correct key to decipher the data.
This means, if all goes to plan, nothing else on the box – such as other customers' VMs or rogue Google staff, or a compromised hypervisor – should be able to directly snoop on a running Confidential VM as they won't have the correct key to decipher the data. We've previously covered AMD's SEV technology here and here – the latter case involving a Googler smashing AMD's SEV tech, requiring a firmware update to address the vulnerability.
Linus Torvalds drops Intel and adopts 32-core AMD Ryzen Threadripper on personal PCREAD MORE
A key thing to understand here is that AMD's SEV technology protects data from theft by other code or users on the host box. There is no integrity protection, so a compromised hypervisor or rogue Googler could scribble over an SEV-protected VM's memory and disrupt, end, or meddle with the operation of the Confidential Virtual Machine.
To prevent malicious reading and writing, you need AMD's just-unveiled SEV-SNP technology – a comparison of SEV and SEV-SNP is here [PDF]. We've inquired whether the Confidential VMs use specifically SEV, SEV-SNP (Secure Nested Paging), or the halfway house SEV-ES (Encrypted State). You should definitely press your Google sales rep on this if you're interested in using these virtual machines in anger.
Confidential VMs are built on Google's N2D instances and Shielded VMs. And if you're wondering about the performance impact of encrypting and decrypting RAM accesses on the fly, so has Google. It says it has boosted the throughput of the systems' network and storage traffic to help "ensure that the performance metrics of Confidential VMs are close to those of non-confidential VMs."
"We already employ a variety of isolation and sandboxing techniques as part of our cloud infrastructure to help make our multi-tenant architecture secure," said Google Cloud's team in a blog post due to be published today that we peeked at ahead of time. "Confidential VMs take this to the next level by offering memory encryption so that you can further isolate your workloads in the cloud.
"Confidential VMs can help all our customers protect sensitive data, but we think it will be especially interesting to those in regulated industries ... Your data will stay encrypted while it is used, indexed, queried, or trained on. Encryption keys are generated in hardware, per VM, and not exportable."
If you want to get a little more technical, here's what Google said is running under the hood:
Using the AMD SEV feature, Confidential VMs offer high performance for the most demanding computational tasks, while keeping VM memory encrypted with a dedicated per-VM instance key that is generated and managed by the AMD Epyc processor. These keys are generated by the AMD Secure Processor during VM creation and reside solely within it, making them unavailable to Google or to any VMs running on the host.
We're told Google will offer Confidential VMs running Ubuntu v18.04, Ubuntu 20.04, Container Optimized OS (COS v81), and RHEL 8.2, with support for CentOS, Debian, and other OSes to hopefully follow. ®
Updated to add
A spokesperson for AMD has told us the Confidential VMs will use SEV as opposed to SEV-ES and SEV-SNP.