Skip to content

Commit b21693f

Browse files
committed
Addressing Note on Attestation of System Components
Signed-off-by: Fabrizio Damato <fabrizio.damato@amd.com>
1 parent 918b100 commit b21693f

File tree

2 files changed

+90
-61
lines changed

2 files changed

+90
-61
lines changed

specifications/attestation-of-system-components/bibliography.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,11 @@ references:
55
issued:
66
year: 2025
77
month: 9
8-
url: "https://github.com/opencomputeproject/ocp-registry/blob/main/command-registry.md"
8+
url: "https://github.com/opencomputeproject/ocp-registry/blob/main/command-registry.md"
9+
- id: "ocp-eat-profile"
10+
title: "OCP EAT Profile"
11+
publisher: "Open Compute Project"
12+
issued:
13+
year: 2025
14+
month: 12
15+
url: "https://github.com/opencomputeproject/Security/blob/main/specifications/dpe-irot-profile/spec.ocp"

specifications/attestation-of-system-components/spec.ocp

Lines changed: 82 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ This protocol is highly dependent on the specific technology of the platform, bu
417417

418418
- *Platforms **MUST** be capable of interrogating attester devices that do not communicate their capabilities before being taken out of reset, e.g., by interrogating them later in the boot cycle or by having them pre-configured as such, in the platform reference manifest.*
419419

420-
- *Platforms **MAY** use the message formats for GET\_CAPABILITIES and NEGOTIATE\_ALGORITHMS as described in* [Security Protocol and Data Model (SPDM) Specification](https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.0.0.pdf) or *Device Capabilities* *as described in [Project Cerberus Firmware Challenge Specification](https://github.com/opencomputeproject/Project_Olympus/blob/master/Project_Cerberus/Project%20Cerberus%20Challenge%20Protocol.pdf) .* *Where necessary, bridge components may be responsible for translating from the native bus protocol into the GET\_CAPABILITIES/ NEGOTIATE\_ALGORITHMS message formats.*
420+
- *Platforms **MAY** use the message formats for GET\_CAPABILITIES and NEGOTIATE\_ALGORITHMS as described in* [Security Protocol and Data Model (SPDM) Specification](https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.0.0.pdf).
421421

422422
***NOTE from Bryan Kelly: "Replace Cerberus with GET_EAT"***
423423

@@ -471,15 +471,26 @@ To conform to the OCP SPDM profile the following requirements must be met:
471471

472472
11. *Attester devices that support the SPDM standard **SHOULD** support the set of algorithms as defined in the table “Recommended Algorithms for SPDM”.*
473473

474-
12. *Attester devices that support the SPDM standard **MUST** support SPDM version 1.2 or higher.*
474+
12. *Attester devices that support the SPDM standard **MUST** support SPDM version 1.3 or higher.*
475475

476476
13. *Attester devices that support the SPDM standard **SHOULD** support the current version.*
477477

478478
14. *Attestor devices **MUST** support the required commands as listed per version*
479479

480-
15. *Attester devices SHALL provide attestation report in either RATS EAT Format expressed as CWT (Cbor Web Token) or as SPDM evidence manifest TOC (direct measurement form) as defined by the TCG DICE Concise Evidence for SPDM Specification*
480+
15. Attester devices MUST provide attestation evidence using one of the following methods:
481481

482-
16. *Attester devices that provide an IETF EAT SHALL locate the IETF EAT at SPDM measurement indexblock 0xF0*
482+
- GET_EAT command returning an Entity Attestation Token (EAT) conforming to the OCP EAT Profile, OR
483+
- GET_MEASUREMENTS command with the EAT located at SPDM Measurement Block 0xFD
484+
In both cases, the EAT MUST be expressed as a CWT (CBOR Web Token) and conform to the OCP EAT Profile specification.
485+
486+
16. When using GET_MEASUREMENTS, attester devices SHALL locate the Entity Attestation Token at SPDM Measurement Block index 0xFD. The measurement block SHALL contain the complete EAT encoded as a CWT.
487+
488+
17. Platform verifiers MUST support retrieving attestation evidence through at least one of the following methods:
489+
490+
- GET_EAT command
491+
- GET_MEASUREMENTS command with EAT at Measurement Block 0xFD
492+
493+
Platform verifiers SHOULD support both methods to maximize interoperability.
483494

484495
### Required Capabilities for SPDM
485496

@@ -491,10 +502,12 @@ The following table lists the SPDM capabilities, as defined in the CAPABILITIES
491502
| :------------- | :----------------------------------------------------------------------------------- |
492503
| CERT_CAP | Supports certificate exchanges |
493504
| CHAL_CAP | Supports challenge |
494-
| MEAS_CAP | Supports MEASUREMENTS and should support signed MEASUREMENTS (SPDM MEAS\_CAP \= 10b) |
495-
| MEAS_FRESH_CAP | 0 (may return cached measurements) |
496-
| CHUNK_CAP | Supports CHUNK_SEND/CHUNK_GET |
505+
| MEAS_CAP | Supports MEASUREMENTS and should support signed MEASUREMENTS (SPDM MEAS_CAP = 10b). |
506+
| MEAS_FRESH_CAP | 0 (may return cached measurements) or 1 if EAT freshness is required |
507+
| CHUNK_CAP | Supports CHUNK_SEND/CHUNK_GET (required for large certificates and EATs) |
497508
| CSR_CAP | Supports GET_CSR |
509+
| MULTI_KEY_CAP | Supports multiple key pairs (required for device identity provisioning) |
510+
498511

499512
### Required Commands for SPDM
500513

@@ -513,51 +526,69 @@ Table: Required SPDM Commands
513526

514527
Note: see <https://github.com/opencomputeproject/Security/tree/master/specifications/device-identity-provisioning> for additional requirements around GET_CSR.
515528

516-
### Recommended Algorithms for SPDM
517-
518-
Attester devices are allowed a large number of algorithm combinations under the
519-
SPDM Specification. To improve compatibility, attester devices should follow the
520-
guidelines in this section. The OCP SPDM Profile requires support for the following
521-
algorithms:
522-
523-
***NOTE from Jeremy O'Donoghue: "I would prefer to see the requirements on interoperability moved to the verifier - it generally has lower security requirements than RoT and a more performance compute environment. For example: attester must support TPM_ALG_ECDSA_NIST_P384, TPM_ALG_SHA384, AES-256-GCM, TPM_ALG_MLDSA_65 (assuming that's what TCG eventually calls the algorithm). Verifier MAY support other algorithms."***
524-
525-
***Aug 26 2025: Let's refine this list, add PQC, and state that devices need to support at least one of a set. Examples:***
526-
527-
- secp384r1
528-
- AES-256-GCM
529-
- TPM_ALG_SHA_384
530-
- [ml-dsa-xxx]
531-
- [ml-kem-xxx]
532-
533-
May call these "(strongly) recommended"
534-
535-
| Algorithm Type | Required Algorithm |
536-
| :-------------- | :------------------------------- |
537-
| **Asymmetric** | TPM\_ALG\_RSASSA\_2048 |
538-
| | TPM\_ALG\_RSAPSS\_2048 |
539-
| | TPM\_ALG\_RSASSA\_3072 |
540-
| | TPM\_ALG\_RSAPSS\_3072 |
541-
| | TPM\_ALG\_ECDSA\_ECC\_NIST\_P256 |
542-
| | TPM\_ALG\_RSASSA\_4096 |
543-
| | TPM\_ALG\_RSAPSS\_4096 |
544-
| | TPM\_ALG\_ECDSA\_ECC\_NIST\_P384 |
545-
| | EdDSA ed25519 |
546-
| | EdDSA ed448 |
547-
| | secp256r1 |
548-
| | secp384r1 |
549-
| **Hash** | TPM\_ALG\_SHA\_384 |
550-
| | TPM\_ALG\_SHA\_512 |
551-
| | TPM\_ALG\_SHA3\_256 |
552-
| | TPM\_ALG\_SHA3\_384 |
553-
| | TPM\_ALG\_SHA3\_512 |
554-
| **AEAD Cipher** | AES-128-GCM |
555-
| | AES-256-GCM |
556-
| | CHACHA20\_POLY1305 |
529+
### Algorithm Requirements for SPDM
557530

558-
### IETF EAT Binding for SPDM
531+
To ensure interoperability and quantum readiness, this specification defines mandatory
532+
baseline algorithms that all compliant devices must support.
533+
534+
#### Tier 1: Mandatory Baseline Algorithms
535+
536+
All attester devices **MUST** support the following algorithm set:
537+
538+
| Algorithm Type | Required Algorithm | Rationale |
539+
|:-------------------------------------------|:----------------------------------|:---------------------------------------------------------------------|
540+
| **Asymmetric Signature (Classical)** | secp384r1 (ECDSA with NIST P-384) | CNSA Suite compliant, widely supported, strong security margin |
541+
| **Asymmetric Signature (PQC)** | ML-DSA-87 | Only ML-DSA variant meeting CNSA 2.0 requirements (192-bit security) |
542+
| **Hash** | TPM_ALG_SHA_384 | CNSA Suite compliant, appropriate for P-384 and ML-DSA-87 |
543+
| **AEAD Cipher** | AES-256-GCM | CNSA Suite compliant, widely hardware-accelerated |
544+
| **KEM (Classical)** | ECDH with P-384 | CNSA Suite compliant (if session encryption used) |
545+
| **KEM (PQC)** | ML-KEM-1024 | Only ML-KEM variant meeting CNSA 2.0 requirements (192-bit security) |
546+
547+
**Note on Algorithm Selection:**
548+
- **ML-DSA-87** is required (not ML-DSA-65 or ML-DSA-44) because it is the only variant
549+
providing security equivalent to 192-bit classical security, meeting CNSA 2.0 requirements
550+
- **ML-KEM-1024** is required (not ML-KEM-768 or ML-KEM-512) for the same reason
551+
- All algorithms align with CNSA Suite and CNSA 2.0 for quantum resistance
552+
- This provides a consistent, high-security baseline across all deployments
553+
554+
#### Verifier Requirements
559555

560-
See <https://github.com/opencomputeproject/Security/tree/main/specifications/ietf-eat-profile>.
556+
Platform verifiers **MUST** support all Tier 1 mandatory algorithms listed above.
557+
558+
Platform verifiers **MAY** support additional algorithms beyond Tier 1 to accommodate:
559+
- Legacy devices that cannot be updated to support Tier 1
560+
- Specialized deployment requirements (e.g., performance-optimized, resource-constrained)
561+
- Regional or regulatory algorithm requirements
562+
- Future algorithm standards
563+
564+
**Examples of additional algorithms verifiers may support:**
565+
- Classical signatures: secp256r1, RSA-3072/4096, EdDSA ed25519/ed448
566+
- PQC signatures: ML-DSA-44, ML-DSA-65, SLH-DSA variants
567+
- Hash: SHA-256, SHA-512, SHA3 variants
568+
- AEAD: AES-128-GCM, CHACHA20_POLY1305
569+
- KEM: ML-KEM-512, ML-KEM-768, ECDH with P-256
570+
571+
**Important**: Attester devices are **NOT REQUIRED** to support these additional algorithms.
572+
Verifiers that choose to support them do so to enable interoperability with non-compliant
573+
or legacy devices, not because compliant attesters need them.
574+
575+
#### Algorithm Negotiation
576+
577+
During SPDM NEGOTIATE_ALGORITHMS:
578+
1. Compliant attesters **MUST** advertise all Tier 1 algorithms
579+
2. Verifiers **SHOULD** select Tier 1 algorithms when available
580+
3. Verifiers **SHOULD** prefer PQC algorithms (ML-DSA-87, ML-KEM-1024) over classical
581+
algorithms (P-384, ECDH-P384) to ensure quantum resistance
582+
4. If an attester does not support Tier 1 algorithms, it is non-compliant with this
583+
specification, but verifiers **MAY** choose to accept it based on local policy
584+
585+
**Algorithm Selection Priority (Recommended):**
586+
1. **Preferred**: ML-DSA-87 for signatures, ML-KEM-1024 for key exchange
587+
2. **Acceptable**: secp384r1 for signatures, ECDH-P384 for key exchange (during transition)
588+
3. **Non-compliant**: Any other algorithms (verifier discretion whether to accept)
589+
590+
591+
### IETF EAT Binding for SPDM
561592

562593
# GET_EAT Command
563594

@@ -620,16 +651,7 @@ For successful responses, the following structure is returned:
620651

621652
## EAT Token Requirements
622653

623-
The EATToken returned in the GET_EAT response **MUST** conform to the OCP EAT Profile specification, which includes:
624-
625-
1. The EAT **MUST** be encoded as a signed CWT (CBOR Web Token)
626-
2. The EAT Profile claim (265) **MUST** be present and contain the OCP Profile OID
627-
3. The Nonce claim (10) **MUST** be present and contain the exact nonce value from the request (matching both value and length)
628-
4. The Measurements claim (273) **MUST** be present and contain concise evidence as defined in the OCP EAT Profile
629-
5. The issuer claim (1) **MUST** be present to bind the EAT to the certificate chain that issued it
630-
6. The rim-locators claim (-70001) **MAY** be present to reference CoRIM locations
631-
632-
**Note:** The nonce claim in the EAT response must preserve both the value and length of the nonce provided in the GET_EAT request to ensure proper freshness verification.
654+
The device should use EAT OCP Profile as described in [@{ocp-eat-profile}]
633655

634656
## Transport Bindings
635657

0 commit comments

Comments
 (0)