|
1 | 1 | --- |
2 | 2 | # 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. |
4 | 5 |
|
5 | 6 | weight: 2 # 1 is first, 2 is second, etc. |
6 | 7 |
|
7 | 8 | # Do not modify these elements |
8 | 9 | layout: "learningpathall" |
9 | 10 | --- |
10 | 11 |
|
11 | | -## Design overview |
| 12 | +## What Arm CCA BootSync is |
12 | 13 |
|
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. |
14 | 15 |
|
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: |
16 | 19 |
|
17 | 20 | - Variable data, such as UEFI variables used to configure Secure Boot. |
18 | 21 | - Secret data, such as a disk unlock passphrase or other boot-time secret. |
19 | 22 |
|
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. |
21 | 24 |
|
22 | | -## Component roles |
| 25 | +## Components of the BootSync flow |
23 | 26 |
|
24 | 27 | The BootSync flow spans both the Normal World host and the Realm World guest: |
25 | 28 |
|
26 | 29 | - The *Realm guest firmware* starts BootSync early in boot and requests boot information. |
27 | 30 | - 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. |
29 | 32 | - The *User Context* service receives BootSync requests, verifies attestation evidence, and returns encrypted boot information when the Realm is allowed to receive it. |
30 | 33 |
|
31 | 34 | 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 | 35 |
|
33 | | -## Boot Injection Protocol stages |
| 36 | +## Stages of the Boot Injection protocol |
34 | 37 |
|
35 | | -The Boot Injection Protocol has three logical stages: |
| 38 | +The Boot Injection protocol has three logical stages: |
36 | 39 |
|
37 | 40 | 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 | 41 | 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 | 42 | 3. Boot Information Blocks carry the requested boot data after attestation succeeds. |
40 | 43 |
|
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 |
49 | 45 |
|
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. |
51 | 47 |
|
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