Confidential Computing on Realms (CCR)

Project name

Confidential Computing on Realms

Target release

Jun 30, 2025

Epic

https://linaro.atlassian.net/browse/META-69

Document status

DRAFT

Document owner

@Leonardo Garcia, @Mathieu Poirier and @Kevin Zhao

LEO

@Mike Holmes and @Tom Gall

BD

N/A

Architect

@Leonardo Garcia

QA

N/A

Project Manager

N/A

Last updated

Jun 13, 2023

 Objective

Provide a comprehensive set of software and emulated hardware that enables a person to run Confidential Computing on Arm. This should be done through the usage of Realms without the need to have access to real hardware.

This will involve the provision of full system emulation capable of running the Realms Management Extension (RME) as defined by the Confidential Computing Architecture (CCA) specification, alongside all the software to run a full Confidential Computing solution on Arm (firmware, operating system, system libraries, virtualization management, and confidential virtual machine images).

Confidential Computing is inherently complex and covers a wide spectrum of technologies. As such we are proposing to divide the project in 6 sets for objectives.  That way the project remains manageable and it provides a roadmap that is easier to understand.  The first objective is to run confidential virtual machines on an existing hardware model.  From there we intend to validate CCA support provided by an open source emulator and make sure that both (hardware model and emulator) provide the same behaviour.  The third objective is to run Confidential Containers in confidential virtual machines while the fourth objective is to integrate CCA in Linaro’s Trusted Reference Stack (TRS), providing a delivery medium for the technology. The fifth objective is to integrate CCA in Edge related use cases such as live updates without service disruption. Lastly we plan to explore advanced scenarios like PCIe devices pass through and confidential VM live migration. Those are not fully covered by the current CCA specification but will surely be addressed in future versions.

Background

Even though Linaro is not planning to offer a product per se on Confidential Computing, we think it is valuable to various parties inside and outside the company to have one document that describes, in high level, our objectives with respect to Confidential Computing.

In line with traditions, Arm drove the base CCA enablement in the firmware and Linux kernel communities.  In that respect they introduced the Runtime Security Subsystem (RSS) in TF-M, added support for the RME extension in the TF-A Monitor, released the Realm Management Monitor (TF-RMM) and provided support for Realms in the Linux kernel and KVM.

Our goal is to integrate the above components to provide a set of software and emulated hardware capable of running a full Confidential Computing solution based on Realms on Arm. Even though Linaro is not alone on this task, with many companies, notably Arm, working on various parts of the solution, there is currently no one approaching the problem with a holistic view.  The objective is to address challenges identified while integrating all the components of the stack in order to provide a complete reference model that can be used by others to build their own Confidential Computing solutions on top of Arm platforms.

Arms traditionally avoids making contributions to the QEMU project and as such, it was already in Linaro’s roadmap to enable RME support in QEMU emulation. This work is now completed and upstream, targeted to be available in August 2023 as part of QEMU release 8.1.  So, in theory, someone would have all the basic pieces needed to run an emulated system with CCA support: Arm simulator or QEMU emulator, RSS, TF-A Monitor, TF-RMM and Linux/KVM.  How well these things fit together needs to be evaluated.  The accuracy of the Arm simulator and QEMU emulator with respect to the CCA specification also need to be assessed.

On the upper side of the software stack, many applications and frameworks appeared in the past years to support Confidential Computing with confidential virtual machines on other platforms, most notably AMD with their SVE-SNP support. Even though some of these applications are catching up and adding support for the Arm CCA, there is still work to be done on that side as well to make sure we have a coherent reference implementation for the virtualization management.

 Success metrics

Goal

Metric

Goal

Metric

To be able to run a fully functional confidential virtual machine by integrating the layers of the CCA stack on an FVP model.

By 4Q 2023, provide an image that can be booted by the FVP model within which it is possible to create a Realm and run a confidential virtual machine.  All elements of the stack have been proven to run properly on the FVP model.

To be able to run a fully functional confidential virtual machine by integrating the layers of the CCA stack on the QEMU 8.1 emulator.

By 2Q 2024, provide an image that can be booted by a QEMU emulated system within which it is possible to create a Realm and run a confidential virtual machine.

Create a simple confidential virtual machine using the CCA hardware extension (RME) without the need to have knowledge about how the underlying system works.

By 3Q 2024, provide a reference implementation of open source tools used to manage virtual environments (containers or virtual machines) capable of controlling the Realms according to the current CCA specification alongside any additional requirements demanded by the CCC definition of a confidential virtual machine.

Create a simple confidential virtual machine in TRS using the CCA hardware extension on QEMU 8.1 using tools available on that distribution.

By 2Q 2025, integrate the layers of the CCA stack in TRS so that it is possible to instantiate confidential virtual machines in that distribution.

 Assumptions

 Requirements

The requirements will be divided in 6 major objectives that are more or less self contained. This will make planning and execution easier.

Objective#1: Verify enablement in FVP models

Requirement

User Story

Importance

Jira Issue

Notes

Requirement

User Story

Importance

Jira Issue

Notes

TechnicalUser#01 - Realms on FVP

  • The user shall be able to run confidential virtual machines using a FVP model.

As a user, I want to be able to download an FVP model with RME support, boot it with an image with the proper support to create Realms and, within that image, execute one or more confidential virtual machines.

HIGH

 

Process:

  • Acquire and build the right FVP model (see “Open Questions” section

  • Provide a foundation for the CCA stack with either the Runtime Security Subsystem (RSS) and the TF-A Monitor, or the TF-A Monitor alone

  • From the TF-A Monitor, boot the Linux Kernel/KVM enhanced with CCA patches (RMI awareness), in non-secure mode

  • From TF-A, boot the RMM (Real Management Monitor) in Realm mode, alongside the Linux kernel/KVM in non-secure mode

  • Patch EDK2 with RSI enhancement and compile it in a FW image suitable to start a VM in Realm mode

  • Prepare a kernel image suitable to run in a VM in Realm mode

  • Use a CCA enhance KVMtools to configure and launch a VM in Realm mode

Objective#2: Validate CCA support in QEMU 8.1

Requirement

User Story

Importance

Jira Issue

Notes

Requirement

User Story

Importance

Jira Issue

Notes

TechnicalUser#02 - Realms on QEMU

  • The user shall be able to run confidential virtual machines using a QEMU emulated machine.

As a user, I want to be able to run a QEMU emulated system within which I can boot an image with the proper support to create Realms and, within that image, execute one or more confidential virtual machines.

 

Ideally, the confidential VM will be able to use all the Realm accessible CPU features available in the host processor.

HIGH

 

Process:

Go through the same process as in TechnicalUser#01 but this time using QEMU rather than the FVP model.

TechnicalUser#03 - Reference emulators

  • The user shall be able to run their environment on both the FVP model and the QEMU emulated machine.

As a user, I want to be able to run the same image with Realms support on both the FVP model and the QEMU emulated machine, provided we have the needed drivers and modules installed in the image to access the virtual hardware provided in each environment. As both emulated environments follow the same specification, they should behave exactly the same way when it comes to creating confidential virtual machines.

 

 

Process:

  • With support from Arm and/or the QEMU community, work out discrepancies that may exist between the FVP model and QEMU.

Objective#3: Validate the virtualization and container management stack

Requirement

User Story

Importance

Jira Issue

Notes

Requirement

User Story

Importance

Jira Issue

Notes

User#01 - Running confidential virtual machines on Arm

  • The user shall be able to create confidential virtual machines on Arm without the need to know how to launch them from the command line.

As a user, I want to be able to easily create confidential virtual machines on Arm platforms using commonly used open source management tools available for this.

HIGH

 

 

User#02 - Running confidential containers on Arm

  • The user shall be able to run workloads on confidential containers on Arm without the need to know details on how this is implemented.

As a user, I want to be able to easily run workloads on confidential containers on Arm platforms using commonly used open source container orchestration tools available for this.

 

The integration with the orchestration tools needs to be one that allows the creation of both confidential containers and non-confidential containers running side by side in the same platform.

 

 

 

User#03 - Running confidential workloads as defined by the CCC

  • The user shall be able to run verified and attested workloads on a confidential environment on Arm without the need to know details on how this is implemented.

As a user, I want to be able to easily run confidential workloads on Arm platforms using commonly used open source management tools available for this that also support the additional requirements imposed by the CCC definition of confidential computing, such as encryption of images and attestation of the running executables.

 

 

 

Objective#4: Integrate the whole stack on a consumable image

Requirement

User Story

Importance

Jira Issue

Notes

Requirement

User Story

Importance

Jira Issue

Notes

User#04 - Single image

  • The user shall be able to download a single system image with the whole software stack needed to run Confidential Containers on Arm.

As a user, I want to have a one stop shop where I can download a single image with everything I would need to run confidential containers on Arm. This image could be run by the FVP model or by QEMU. It will contain all the firmware and operating system features needed, along with a VMM capable of launching confidential VMs using RME inside the emulated system and a simple confidential container workload that could be easily launched from within the image host.

HIGH

 

 

Objective#5: Edge use cases

This objective is still in design phase. There aren’t enough details yet to properly describe it.

Requirement

User Story

Importance

Jira Issue

Notes

Requirement

User Story

Importance

Jira Issue

Notes

User#05 - OTA live update

  • The user shall be able to update their systems without service disruption.

As a user, I want to have a one stop shop where I can download a single image with everything I would need to run confidential containers on Arm. This image could be run by the FVP model or by QEMU. It will contain all the firmware and operating system features needed, along with a VMM capable of launching confidential VMs using RME inside the emulated system and a simple confidential container workload that could be easily launched from within the image host.

HIGH

 

 

Objective#6: Advanced use cases

This objective is still in design phase. There aren’t enough details yet to properly describe it.

Requirement

User Story

Importance

Jira Issue

Notes

Requirement

User Story

Importance

Jira Issue

Notes

Confidential VM attestation an verification

 

HIGH

 

 

PCIe pass through

 

 

 

 

Live migration

 

 

 

 

Page fault

 

 

 

 

Monitoring tools / inspection tools

The user shall be able to run monitoring tools (e.g. eBPF) on confidential VMs from the host…

 

 

 

 Milestones

Jun2023JulAugSepOctNovDecJan2024FebMarAprMayJunJulAugSepOctNovDecJan2025FebMarAprMayJunObjective#1Objective#2Objective#3
Dashboard

Feature 1

Feature 2

Feature 3

Feature 4

Validate current enablement status on FVP model

Validate CCA support in QEMU

Validate the virtualization and container management stack

This work will be tracked in Linaro’s Jira instance.

 User interaction and design

For Objective#1 and Objective#2, the interaction will be through command line.

Objective#3 will use command line and graphical interfaces already available for the management tools identified as relevant during the investigation phase. Ideally, no changes will be introduced on the tools in order to add support for Realms on Arm platforms.

 Open Questions

Question

Answer

Date Answered

Question

Answer

Date Answered

Do we need to start the stack with the Runtime Security Subsystem (RSS) or can the FVP start the TF-A Monitor right away? 

 Out of Scope

  • This project will focus only on Trusted Execution Environments (TEEs) running on Realms. It will not do any work on the TrustZone technology available in Arm platforms.

References

Arm provided lots of good information on their efforts during Linaro Connect and in presentation to the Confidential Computing Consortium. Pointers below.

Arm also made a presentation on Arm CCA open-source enablement (presented to the Confidential Computing Consortium, with information from LHR23-311 and LHR23-315 above). The recording is available here, and the presentation is at https://drive.google.com/file/d/1OKLnERWvu09k5LNRhz70-nkAfKkZEraE/view.