Skip to content

Commit 14fdfc8

Browse files
committed
Tech review and added context to CCA BootSync LP
1 parent 15a5c08 commit 14fdfc8

3 files changed

Lines changed: 158 additions & 101 deletions

File tree

content/learning-paths/servers-and-cloud-computing/cca-bootsync/_index.md

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
---
2-
title: Arm CCA Boot Sync
3-
description: Learn how to use Arm CCA Boot Sync while launching Arm CCA Realms on an FVP with RME support.
2+
title: Arm CCA BootSync
3+
description: Learn how Arm CCA BootSync transfers boot-time configuration and secret data to a Realm while launching CCA Realms on an FVP with RME support.
44

55
draft: true
66
cascade:
77
draft: true
88

99
minutes_to_complete: 60
1010

11-
who_is_this_for: This Learning Path is for developers who want to understand how to use Arm CCA Bootsync.
11+
who_is_this_for: This Learning Path is for developers who want to understand how Arm CCA BootSync supports early Realm boot workflows such as UEFI Secure Boot and encrypted disk boot.
1212

1313
learning_objectives:
14-
- Gain an overview of Arm CCA Boot Sync and Boot Onjection Protocol.
15-
- Understand how Arm CCA Boot Sync can be used for defining UEFI variables, enabling Secure Boot and share secure data with Arm CCA Realms.
16-
- Lanch Arm CCA Realms with Secure Boot enabled and encrypted file system using an Armv9-A AEM Base Fixed Virtual Platform (FVP) with RME support.
14+
- Explain why BootSync is needed before the Realm guest operating system has networking.
15+
- Describe how the Boot Sync Blocks protocol uses key exchange, attestation, and Boot Information Blocks.
16+
- Use BootSync to inject UEFI variables and secret data into an Arm CCA Realm.
17+
- Launch Arm CCA Realms with UEFI Secure Boot and an encrypted root file system on an Armv9-A AEM Base FVP with RME support.
1718

1819
prerequisites:
1920
- An AArch64 or x86_64 computer running Linux or macOS. Cloud-based instances can also be used; see the [Arm cloud service providers](/learning-paths/servers-and-cloud-computing/csp/)
20-
- Completion of the [Run an application in a Realm using the Arm Confidential Compute Architecture (CCA)](/learning-paths/servers-and-cloud-computing/cca-container) Learning Path
21+
- Completion of the [Run an application in a Realm using the Arm Confidential Compute Architecture (CCA)](/learning-paths/servers-and-cloud-computing/cca-container/) Learning Path
2122

2223
author:
2324
- Anton Antonov
@@ -61,11 +62,18 @@ further_reading:
6162
title: Realm Management Monitor Specification
6263
link: https://developer.arm.com/documentation/den0137/latest/
6364
type: documentation
65+
- resource:
66+
title: Realm Host Interface Specification
67+
link: https://developer.arm.com/documentation/den0148/latest/
68+
type: documentation
69+
- resource:
70+
title: ArmCcaBootSync README
71+
link: https://gitlab.arm.com/linux-arm/edk2-cca/-/blob/cca/4441_measured_boot_v1/ArmVirtPkg/ArmCcaBootSync/Readme.md
72+
type: documentation
6473

6574
### FIXED, DO NOT MODIFY
6675
# ================================================================================
6776
weight: 1 # _index.md always has weight of 1 to order correctly
6877
layout: "learningpathall" # All files under learning paths have this same wrapper
6978
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
7079
---
71-
Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
# User change
3-
title: "Overview of Arm CCA BootSync and Boot Injection protocol"
3+
title: "Overview of Arm CCA BootSync and Boot Sync Blocks protocol"
44

55
weight: 2 # 1 is first, 2 is second, etc.
66

@@ -10,12 +10,45 @@ layout: "learningpathall"
1010

1111
## Design overview
1212

13-
TO_DO: Explain Boot Injection protocol and Arm CCA Boot Sync wokflow.
13+
Arm CCA BootSync is a boot-time synchronization mechanism for Arm CCA Realms. It lets Realm guest firmware obtain configuration and secret data before the guest operating system is running. This matters because early firmware does not have a network stack, but workflows such as UEFI Secure Boot and encrypted disk boot still need trusted inputs during that early boot window.
1414

15-
For more details see:
15+
The reference implementation uses the *Boot Sync Blocks* (BSB) protocol described by the Realm Host Interface (RHI) specification. In this Learning Path, you use BootSync to provide two kinds of data to a Realm:
1616

17-
- [ArmCcaBootSync/Readme.md](https://gitlab.arm.com/linux-arm/edk2-cca/-/blob/cca/4441_measured_boot_v1/ArmVirtPkg/ArmCcaBootSync/Readme.md)
18-
- Appendix A (Boot Injection) in [the RHI specifications document](https://confluence.arm.com/display/FENIMORE/RHI+specification)
17+
- Variable data, such as UEFI variables used to configure Secure Boot.
18+
- Secret data, such as a disk unlock passphrase or other boot-time secret.
1919

20+
The data is not just copied into the Realm. BootSync first establishes a protected exchange between the Realm guest firmware and a *User Context* service controlled by the Realm initiator. The User Context service runs outside the Realm, but it represents the party that decides whether the Realm should receive the requested boot information.
2021

21-
In the next section, you will launch realms and see how Arm CCA BootSync can be used.
22+
## Component roles
23+
24+
The BootSync flow spans both the Normal World host and the Realm World guest:
25+
26+
- The *Realm guest firmware* starts BootSync early in boot and requests boot information.
27+
- The *Realm Management Monitor* (RMM) exposes Realm services and creates attestation reports for the Realm.
28+
- The *Virtual Machine Manager* (VMM), `lkvm-bootsync` in this Learning Path, forwards Realm Host Interface calls between the Realm and host user space.
29+
- The *User Context* service receives BootSync requests, verifies attestation evidence, and returns encrypted boot information when the Realm is allowed to receive it.
30+
31+
The practical result is that the Realm firmware can get boot-time data without needing direct networking. The host can carry the request, but the release decision belongs to the User Context after the Realm has provided attestation evidence.
32+
33+
## BootSync protocol stages
34+
35+
The BSB protocol has three logical stages:
36+
37+
1. Key exchange establishes a secure session between the Realm guest firmware and the User Context service. The reference implementation uses ECDH over the P-384 curve, derives keys with HKDF-SHA512, and encrypts protocol data with AES-GCM.
38+
2. Attestation lets the Realm guest firmware request an attestation report from the RMM. The binding key from the secure session is used as challenge data, so the User Context can bind the attestation evidence to this BootSync exchange.
39+
3. Boot Information Blocks release the requested boot data after attestation succeeds. In this Learning Path, those blocks are represented by files whose names begin with the Realm Personalization Value (RPV), such as `ARMCCA01_VAR.dat` and `ARMCCA01_SEC.dat`.
40+
41+
The RPV is important because one User Context service can support multiple Realms. A Realm launched with `--realm-pv ARMCCA01` requests files that start with `ARMCCA01`. If the matching files are missing, BootSync can establish a session and complete attestation, but it cannot provide the requested boot information.
42+
43+
## What you will validate
44+
45+
The exercises intentionally show both failure and success cases:
46+
47+
- First, you launch a Realm without the variable data file. This demonstrates that the firmware can ask for BootSync data and that the User Context reports a missing `ARMCCA01_VAR.dat` file.
48+
- Next, you add the variable data file. BootSync completes, UEFI Secure Boot is enabled, and the unsigned kernel is rejected.
49+
- Then, you sign the Realm kernel. The Realm boots with UEFI Secure Boot enabled, and the Secure Boot UEFI variable reports `1`.
50+
- Finally, you encrypt the Realm root file system and use BootSync secret data to provide the unlock passphrase during boot.
51+
52+
For more detail, see the [ArmCcaBootSync README](https://gitlab.arm.com/linux-arm/edk2-cca/-/blob/cca/4441_measured_boot_v1/ArmVirtPkg/ArmCcaBootSync/Readme.md), the [Realm Management Monitor specification](https://developer.arm.com/documentation/den0137/latest/), and the [Realm Host Interface specification](https://developer.arm.com/documentation/den0148/latest/).
53+
54+
In the next section, you will launch Realms and see how Arm CCA BootSync can inject UEFI variables and secret data during early boot.

0 commit comments

Comments
 (0)