|
3 | 3 | Boot a QOS node by submitting an approved manifest and pivot binary, then |
4 | 4 | provision the node with quorum key shares. Share set members verify the node's attestation document and submit their shares encrypted to the node's Ephemeral Key. Once the configured threshold of shares has been posted, the node reconstructs the Quorum Key and starts the Pivot App. |
5 | 5 |
|
| 6 | +## When Is Boot Standard Required? |
| 7 | + |
| 8 | +Boot Standard is the provisioning mode where Share Holders post Quorum Key |
| 9 | +shares to a freshly booted node after verifying its setup attestation. The |
| 10 | +alternative, [Key Forward](key_forward.md), lets an already provisioned node in |
| 11 | +the same namespace (the source node) export the Quorum Key to a fresh node with |
| 12 | +no human involvement. |
| 13 | + |
| 14 | +Every change deployed to an enclave — new pivot app, new QOS image, new |
| 15 | +manifest configuration — is shipped by booting a fresh node with a new |
| 16 | +Manifest-Set-approved manifest. The only question is whether that fresh node |
| 17 | +can be provisioned by Key Forward or needs a Boot Standard share ceremony. The |
| 18 | +answer depends on the source node: |
| 19 | +[`export_key`](../src/qos_core/src/protocol/services/key.rs) refuses to |
| 20 | +forward the Quorum Key unless the new manifest passes its checks. Boot Standard |
| 21 | +is required exactly when no node can (or may) act as the source. |
| 22 | + |
| 23 | +Changes that do **not** require Boot Standard — Key Forward works, as long as |
| 24 | +at least one provisioned node in the namespace is able to act as the source: |
| 25 | + |
| 26 | +* Pivot App updates (new pivot hash) and pivot configuration changes (args, |
| 27 | + env, restart policy, socket pool size), via a new approved manifest with an |
| 28 | + incremented nonce. This is the common update flow. |
| 29 | +* QOS image updates (new PCR0/PCR1/PCR2). The source node checks the new manifest's |
| 30 | + PCRs against the *new node's* attestation document, not against its own |
| 31 | + measurements; the Manifest Set's threshold approvals are what vouch for the |
| 32 | + new QOS version. |
| 33 | +* Adding capacity or replacing instances with an unchanged manifest (equal |
| 34 | + nonce is accepted when the manifest hash is identical). |
| 35 | + |
| 36 | +Changes that **do** require Boot Standard — the source node refuses to export, |
| 37 | +or no source node exists: |
| 38 | + |
| 39 | +* First boot of a namespace after genesis: no provisioned node exists yet. |
| 40 | +* Loss of every provisioned node in the namespace (disaster recovery). |
| 41 | +* Manifest Set changes, members or threshold (`DifferentManifestSet`): a source |
| 42 | + node only trusts approvals from its own Manifest Set, so rotating the set |
| 43 | + requires re-provisioning by the Share Set. |
| 44 | +* PCR3 changes, i.e. a new host IAM role or AWS account (`DifferentPcr3`). |
| 45 | +* Namespace name changes (`DifferentNamespaceName`). |
| 46 | +* A manifest nonce lower than the source node's, or an equal nonce with a |
| 47 | + different manifest hash (`LowNonce`, `DifferentManifest`). A rollback can only |
| 48 | + be key-forwarded from a source node whose own nonce is low enough. |
| 49 | +* A different Quorum Key (`DifferentQuorumKey`) — in practice a new namespace, |
| 50 | + starting with its own genesis ceremony. |
| 51 | +* QOS releases that break the key-forward protocol itself: if a source node on |
| 52 | + the old release cannot decode the new node's request or verify its attestation |
| 53 | + document, the first node on the new release must be Boot Standard |
| 54 | + provisioned. Wire compatibility is normally maintained to avoid this, so |
| 55 | + treat any breaking change to `ProtocolMsg`, manifest encoding, or attestation |
| 56 | + verification as a potential Boot Standard event and verify Key Forward |
| 57 | + across the version boundary. |
| 58 | + |
6 | 59 | ## New terms |
7 | 60 |
|
8 | 61 | * **Node**: The un-provisioned QOS node being booted. |
|
0 commit comments