Confidential Computing

Confidential computing

Confidential computing is a new industry term to describe the protection of data while in-use. We have been able to protect data while at-rest and in-transit for some time, now it is possible to protect data at runtime (“in use”) by means of hardware-based isolation and memory/CPU encryption technologies. Trust boundaries are defined in computing to describe an area of secure code execution and data protection. Confidential Computing protects data and code in-use by performing operations in a hardware-based Trusted Execution Environment (TEE). Data cannot be tampered with or accessed from outside of the trust boundaries of the secure enclave created by the TEE.


Many side-channel attacks target data leakage or poor implementations of security controls rather than breaking encryption directly. This includes things like cache, timing, and remanence attacks, where attackers having close or physical proximity to a system are able to read or write sensitive data. To combat malicious attackers being able to easedrop and snoop sensitive data from system memory new encryption engines are used to encrypt all data that leaves the CPU to external memory. Total Memory Encryption (TME) is the capability to encrypt the entirety of physical memory using NIST standard AES-XTS algorithm with 128-bit keys or 256-bit keys. The AES XTS encryption engine is in the data path to external memory and all data entering and/or leaving the CPU is encrypted using AES XTS. Encryption keys are generated using a hardened random number generator in the processor without exposure to any other software on the system. This capability is enabled early in the boot process, where the BIOS is configured and locked. 


Multi-Key Total Memory Encryption (MKTME) builds on TME and adds support for multiple encryption keys to be used for encrypting multiple VMs memory. MKTME allows page-granular encryption of memory. MKTME can be used to provide transparent total memory encryption to multiple VM guests each using a different key for higher security and exponentially increasing the effort needed to compromise a system. The guest operating system does not need to make any operating system or application changes to be able to use this protection. If NVRAM is used as non-volatile memory (i.e. storage), the same key can be generated/reused across platform power cycles/reboots. This ability to assign keys to different VMs helps to establish different trust domains within a multitenant system. Modern provisioning systems can be used to assign keys as well as remote attestation of VMs can be confirmed after provisioning using automation. MKTME allows many features to continue to work such as virtio optimizations, FPGAs, SR-IOV, VFs, Direct I/O, accelerators, and live migrations.

Don't miss these stories: