Skip to content

feat(policy): bind signer anchors to dedicated EKU - #1038

Open
haitaohuang wants to merge 6 commits into
intel:mainfrom
haitaohuang:signer-eku-constraints-port
Open

feat(policy): bind signer anchors to dedicated EKU#1038
haitaohuang wants to merge 6 commits into
intel:mainfrom
haitaohuang:signer-eku-constraints-port

Conversation

@haitaohuang

@haitaohuang haitaohuang commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Summary

This is a stacked continuation of #1037, #1035, and #1032. The new commit adds a dedicated leaf Extended Key Usage to the RTMR1 signer fingerprint while retaining certificate identity continuity checks.

  • derive the RTMR1 signer anchor from the root certificate fingerprint plus a dedicated leaf EKU OID;
  • permit leaf key rotation only when the root, Subject Distinguished Name, Subject Alternative Name, and signer EKU remain stable;
  • require peer JSON signer chains to preserve Subject DN and SAN and present the same single dedicated EKU, rejecting identity drift and missing, ambiguous, different, or anyExtendedKeyUsage values;
  • match signed CoRIM x5chain leaves anchor-first across their dedicated EKUs without hard-coding the signer OID;
  • retain fail-closed BasicConstraints enforcement for every certificate acting as an issuer;
  • update certificate generation and focused identity, EKU, and key-rotation fixtures.

Validation

  • targeted formatting for crypto and policy;
  • cargo test -p crypto -p policy (68 tests);
  • certificate fixture inspection for stable and mismatched Subject DN, SAN, and EKU cases.

haitaohuang and others added 5 commits September 4, 2026 21:41
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>
Add feature-gated signed CoRIM TCB mappings, authenticated peer transport, and direct signer-anchor enrollment. Keep JSON mappings as the default, support optional simplified servTD identity, and fail closed for date or status rules when identity data is unavailable.

Co-authored-by: Haitao Huang <haitaohuang@microsoft.com>

Signed-off-by: Haitao Huang <haitaohuang@microsoft.com>

Assisted-by: GitHub Copilot CLI:GPT-5.6 Sol
@haitaohuang
haitaohuang force-pushed the signer-eku-constraints-port branch 2 times, most recently from fafa6d5 to 5b76bbe Compare September 5, 2026 01:18
Derive the RTMR1 signer anchor from the root certificate fingerprint and a dedicated leaf Extended Key Usage OID. Preserve leaf identity continuity during peer validation by requiring exact Subject Distinguished Name and Subject Alternative Name matches in addition to the signer EKU.

Match signed CoRIM chains anchor-first across dedicated EKUs, reject missing, ambiguous, or any-purpose EKUs, retain issuer CA constraints, and update certificate generation plus focused identity and rotation fixtures.

Signed-off-by: Haitao Huang <haitaohuang@microsoft.com>

Assisted-by: GitHub Copilot CLI:GPT-5.6 Sol
@haitaohuang
haitaohuang force-pushed the signer-eku-constraints-port branch from 5b76bbe to 0f9e9af Compare September 5, 2026 02:23
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.

2 participants