Skip to content

Commit 5ce49bc

Browse files
authored
Merge pull request #3501 from anupras-mohapatra-arm/servers-and-cloud-computing
Arm CCA BootSync LP review
2 parents a38602d + 5e03b66 commit 5ce49bc

3 files changed

Lines changed: 185 additions & 118 deletions

File tree

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

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,71 @@
11
---
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.
2+
title: Secure Realms during boot using Arm Confidential Compute Architecture (CCA) BootSync
3+
description: Use Arm CCA BootSync on an RME-enabled FVP to inject UEFI variables and secrets to unlock the disk during boot, then verify Secure Boot and encrypted root file system startup.
44

5-
draft: true
6-
cascade:
7-
draft: true
8-
95
minutes_to_complete: 60
106

117
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.
128

139
learning_objectives:
14-
- Explain why BootSync is needed before the Realm guest operating system has networking.
15-
- Describe how the Boot Injection Protocol uses key exchange, attestation, and Boot Information Blocks to support the BootSync workflow.
10+
- Understand why BootSync is needed before the Realm guest operating system has networking.
11+
- Understand how the Boot Injection Protocol uses key exchange, attestation, and Boot Information Blocks to support the BootSync workflow.
1612
- 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.
13+
- Launch Arm CCA Realms with UEFI Secure Boot and an encrypted root file system on an Armv9-A AEM Base Fixed Virtual Platform (FVP) with Realm Management Extension (RME) support.
1814

1915
prerequisites:
20-
- 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/)
16+
- A cloud-based instance or an AArch64 or x86_64 computer running Linux. For more information about using cloud-based instances, see the [Arm cloud service providers](/learning-paths/servers-and-cloud-computing/csp/) Learning Path.
2117
- 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
2218

19+
# START generated_summary_faq
20+
generated_summary_faq:
21+
template_version: summary-faq-v3
22+
generated_at: '2026-07-17T18:27:39Z'
23+
generator: ai
24+
ai_assisted: true
25+
ai_review_required: true
26+
model: gpt-5
27+
prompt_template: summary-faq-v3
28+
source_hash: 5b4a562e119669be2adcee1e0f304ca8cd2032cc5b6056ad01a88251019c010c
29+
summary_generated_at: '2026-07-17T18:27:39Z'
30+
summary_source_hash: 5b4a562e119669be2adcee1e0f304ca8cd2032cc5b6056ad01a88251019c010c
31+
faq_generated_at: '2026-07-17T18:27:39Z'
32+
faq_source_hash: 5b4a562e119669be2adcee1e0f304ca8cd2032cc5b6056ad01a88251019c010c
33+
summary: >-
34+
You'll use Arm CCA BootSync on an RME-enabled Armv9-A AEM Base FVP
35+
to deliver UEFI variables and secrets to a Realm during early boot, then validate Secure Boot
36+
and encrypted disk startup. First, you'll launch a Realm without injected data to observe
37+
firmware attestation. Next, you'll provide variable data for BootSync to complete and verify that Secure Boot rejects the unsigned kernel. After signing the kernel, you'll verify that Secure Boot is active. Finally, you'll encrypt the Realm root file system, inject the file system decryption secret through
38+
BootSync, and confirm that the disk unlocks during boot.
39+
faqs:
40+
- question: Do I need networking inside the Realm to deliver boot data?
41+
answer: >-
42+
No. BootSync operates before the guest operating system has networking and uses the Boot Injection protocol to provide early boot data.
43+
- question: How do I know BootSync requested variable data?
44+
answer: >-
45+
In the User Context service log, you'll see `BIB Variable Data Requested`
46+
and the expected `<RPV>_VAR.dat` file name. If the file is missing,
47+
BootSync reports `BootSyncNotDone`, and the Realm boots without Secure
48+
Boot enabled.
49+
- question: What result should I expect when Secure Boot is configured but the kernel is unsigned?
50+
answer: >-
51+
The unsigned kernel is rejected. This confirms that UEFI Secure Boot is enforcing signature
52+
verification.
53+
- question: After I sign the kernel, how do I verify that Secure Boot is enabled?
54+
answer: >-
55+
The signed kernel boots successfully and the Secure Boot UEFI variable reports `1`. Check
56+
that value to confirm the state.
57+
- question: How do I confirm the encrypted root file system unlocks correctly?
58+
answer: >-
59+
After BootSync supplies the correct passphrase, the boot log reports
60+
`LUKS partition unlocked, switching root`. Run `df -h` and verify that
61+
`/dev/mapper/cryptroot` is mounted at `/`.
62+
# END generated_summary_faq
63+
2364
author:
2465
- Anton Antonov
2566
- Pareena Verma
2667

27-
generate_summary_faq: true
68+
generate_summary_faq: false
2869
rerun_summary: false
2970
rerun_faqs: false
3071

@@ -36,7 +77,6 @@ armips:
3677
- Cortex-A
3778
operatingsystems:
3879
- Linux
39-
- macOS
4080
tools_software_languages:
4181
- FVP
4282
- RME
@@ -77,3 +117,4 @@ weight: 1 # _index.md always has weight of 1 to order corr
77117
layout: "learningpathall" # All files under learning paths have this same wrapper
78118
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
79119
---
120+
Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,48 @@
11
---
22
# User change
3-
title: "Overview of Arm CCA BootSync and the Boot Injection Protocol"
3+
title: Understand Arm CCA BootSync and the Boot Injection protocol
4+
description: Understand how Arm CCA BootSync uses key exchange, attestation, and Boot Information Blocks to deliver trusted configuration and secret data during Realm boot.
45

56
weight: 2 # 1 is first, 2 is second, etc.
67

78
# Do not modify these elements
89
layout: "learningpathall"
910
---
1011

11-
## Design overview
12+
## What Arm CCA BootSync is
1213

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.
14+
Arm Confidential Compute Architecture (CCA) BootSync is a boot-time synchronization mechanism for Arm CCA Realms. The mechanism lets Realm guest firmware obtain configuration and secret data before the guest operating system is running. This matters because early firmware doesn't have a network stack, but workflows such as UEFI Secure Boot and encrypted disk boot still need trusted inputs during that early boot window.
1415

15-
The reference implementation uses the *Boot Injection Protocol*, named the BIB protocol in the Boot Injection appendix of the Realm Host Interface (RHI) specification. In this Learning Path, you use BootSync to provide two kinds of data to a Realm:
16+
The reference implementation uses the *Boot Injection protocol*. The Boot Injection appendix of the [Realm Host Interface (RHI) specification](https://developer.arm.com/documentation/den0148/latest/) refers to the protocol as the BIB protocol.
17+
18+
You'll use BootSync to provide two kinds of data to a Realm:
1619

1720
- Variable data, such as UEFI variables used to configure Secure Boot.
1821
- Secret data, such as a disk unlock passphrase or other boot-time secret.
1922

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.
23+
Before data is copied into the Realm, BootSync 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 decides whether the Realm should receive the requested boot information.
2124

22-
## Component roles
25+
## Components of the BootSync flow
2326

2427
The BootSync flow spans both the Normal World host and the Realm World guest:
2528

2629
- The *Realm guest firmware* starts BootSync early in boot and requests boot information.
2730
- 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.
31+
- The *Virtual Machine Manager* (VMM), in this case `lkvm-bootsync`, forwards Realm Host Interface calls between the Realm and host user space.
2932
- The *User Context* service receives BootSync requests, verifies attestation evidence, and returns encrypted boot information when the Realm is allowed to receive it.
3033

3134
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.
3235

33-
## Boot Injection Protocol stages
36+
## Stages of the Boot Injection protocol
3437

35-
The Boot Injection Protocol has three logical stages:
38+
The Boot Injection protocol has three logical stages:
3639

3740
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.
3841
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.
3942
3. Boot Information Blocks carry the requested boot data after attestation succeeds.
4043

41-
## What you will validate
42-
43-
The exercises intentionally show both failure and success cases:
44-
45-
- First, you launch a Realm without injection of any boot data. This demonstrates that the firmware can run successful attestation and ask for BootSync data.
46-
- Next, you add the variable data file. BootSync completes, UEFI Secure Boot is enabled, and the unsigned kernel is rejected.
47-
- Then, you sign the Realm kernel. The Realm boots with UEFI Secure Boot enabled, and the Secure Boot UEFI variable reports `1`.
48-
- Finally, you encrypt the Realm root file system and use BootSync secret data to provide the unlock passphrase during boot.
44+
## What you've learned and what's next
4945

50-
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/).
46+
You’ve learned how Arm CCA BootSync uses key exchange, attestation, and Boot Information Blocks to provide trusted data during Realm boot.
5147

52-
In the next section, you will launch Realms and see how Arm CCA BootSync can inject UEFI variables and secret data during early boot.
48+
Next, you'll launch Realms and see how Arm CCA BootSync can inject UEFI variables and secret data during early boot.

0 commit comments

Comments
 (0)