Skip to content

feat(policy): add stable RTMR1 signer anchor and revocation - #1035

Open
haitaohuang wants to merge 4 commits into
intel:mainfrom
haitaohuang:rtmr1-signer-anchor-port
Open

feat(policy): add stable RTMR1 signer anchor and revocation#1035
haitaohuang wants to merge 4 commits into
intel:mainfrom
haitaohuang:rtmr1-signer-anchor-port

Conversation

@haitaohuang

Copy link
Copy Markdown
Contributor

Summary

Implements the RTMR1 signer-anchor proposal in #916 as a continuation of #1032:

  • measure a stable signer anchor derived from the root certificate DER and leaf Subject DER instead of the raw policy issuer chain bytes;
  • use the same anchor calculation in MigTD runtime measurement and migtd-hash;
  • accept an optional authenticated servTD signer CRL and enforce it for local policy, identity, and mapping signer chains;
  • apply the local CRL when validating peer signer chains during migration;
  • expose a monotonic servtdCrlNum policy floor so peers cannot regress revocation state.

The full policy issuer chain remains enrolled in CFV and recorded in the event payload. This changes only the RTMR1 measurement input and signer-revocation enforcement. The existing JSON TCB mapping and TD Identity model from #1032 are retained.

This PR is stacked on #1032 and is intended as its focused continuation.

Validation

  • formatting, cargo check, clippy, cargo-deny, library build, and library tests;
  • all 32 firmware image build combinations and all six standalone tool builds;
  • all 14 emulation workflow scenarios;
  • Azure policy-v2 IGVM package and hash generation.

Follow-up work

See the future-work section in #1032 for the broader roadmap. Remaining related items identified while checking the TCB-mapping and signer-anchor work are:

  • support CoRIM as an alternate TCB endorsement format, including direct trust-anchor enrollment and CoRIM-only policy builds (Proposal: Use CoRIM as the MigTD endorsement format #929);
  • authenticate and retain CoRIM x5chain material, apply the local servTD CRL to it, and consume authenticated peer CoRIM mappings during migration;
  • reject CoRIM nbf and exp claims because MigTD does not have a trusted wall clock;
  • make simplified TD Identity optional for SVN-only evaluation (Proposal: Make the TD Identity artifact optional #930);
  • add release tooling and validation for independent policy, mapping, and identity signer rotation and measurement stability;
  • strengthen peer policy error propagation and remove obsolete Init-TDINFO/local-TDINFO paths after the one-hash transition is complete.

Use SHA-384 over the complete unmasked TDINFO as the Policy v2 mapping key. Canonicalize policyData once with only the circular mapping removed so runtime verification and offline tooling extend identical RTMR2 bytes.

Verify the signed mapping with the RTMR1-bound policy issuer chain, remove the separate mapping chain and obsolete mapping identity fields, and ignore the legacy outer policy signature as required by the proposal.

Resolve the source's initial and current SERVTD_EXT hashes through its authenticated JSON mapping, allowing an older destination to accept a newer source release without predicting its hash.

Signed-off-by: Haitao Huang <haitaohuang@microsoft.com>
Assisted-by: GitHub Copilot CLI:GPT-5.6 Sol
Carry authenticated SERVTD_EXT continuity evidence through migration and rebinding. Ignore legacy host-supplied Init_TDINFO after validating its framing, reject lookup misses or SVN rollback, and fail closed when SERVTD_ATTR masking makes the endorsed unmasked hashes inapplicable.

Signed-off-by: Haitao Huang <haitaohuang@microsoft.com>
Assisted-by: GitHub Copilot CLI:GPT-5.6 Sol
Retain authority-maintained hash history when adding a release, allow multiple hashes at one SVN, and reject conflicting duplicate assignments. Emit deterministic mapping bytes and validate signed mappings before use.

Signed-off-by: Haitao Huang <haitaohuang@microsoft.com>
Assisted-by: GitHub Copilot CLI:GPT-5.6 Sol
Measure the policy signer as a stable root-certificate plus leaf-subject anchor in both runtime and offline hashing. Add optional authenticated servTD CRL delivery, signer-chain enforcement at initialization and peer validation, and a monotonic servtd CRL policy floor.\n\nPort only the proposal-specific implementation from ms/integration while retaining tcbmapping's existing JSON mapping and identity model.

Assisted-by: GitHub Copilot CLI:GPT-5.6 Sol
Signed-off-by: Haitao Huang <haitaohuang@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant