Skip to content

Commit be1885e

Browse files
committed
Add COSE/JOSE Algorithms Support - Address issue #64
Signed-off-by: Fabrizio Damato <[email protected]>
1 parent d4adfb1 commit be1885e

File tree

2 files changed

+111
-2
lines changed

2 files changed

+111
-2
lines changed

specifications/ietf-eat-profile/bibliography.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,17 @@ references:
5555
year: 2020
5656
month: 12
5757
url: "https://datatracker.ietf.org/doc/html/rfc8949"
58+
- id: "ietf-cose-dilithium"
59+
title: "ML-DSA for JOSE and COSE"
60+
publisher: "IETF"
61+
issued:
62+
year: 2025
63+
month: 9
64+
url: "https://datatracker.ietf.org/doc/draft-ietf-cose-dilithium/"
65+
- id: "nist-fips-204"
66+
title: "Module-Lattice-Based Digital Signature Standard"
67+
publisher: "NIST"
68+
issued:
69+
year: 2024
70+
month: 8
71+
url: "https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.pdf"

specifications/ietf-eat-profile/spec.ocp

Lines changed: 97 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ and provide the minimum necessary information for verifier appraisal policies:
185185
* This claim is used by the attester to identify the profile. It **MUST** be present and **SHALL** contain the OID assigned to the OCP Profile. **TODO: OCP to assign OID Value**
186186

187187
6. **Measurements** (claim key: 273, encoded as 0x190111)
188-
* This claim is used by the attester to present the target environment claims that verifier will consume for the appraisal policy. It **MUST** be present and **SHALL** encapsulate a "concise-evidence" as a serialized CBOR byte string using the appropriate IANA media type. The serialized concise-evidence **SHALL NOT** exceed 128kB in size.
188+
* This claim is used by the attester to present the target environment claims that verifier will consume for the appraisal policy. It **MUST** be present and **SHALL** encapsulate a "concise-evidence" as a serialized CBOR byte string using the appropriate IANA media type.
189189

190190
**Optional Claims (7-14)**: These claims are **OPTIONAL** and provide additional
191191
platform information that may be useful for audit purposes but are not strictly
@@ -267,7 +267,102 @@ Additionally, an Attester has the option to include a complete certificate path
267267
within the x5-chain, extending from a recognized Trusted Anchor (such as a
268268
Vendor Root CA) or up to the Initial Device Identity (IDEVID).
269269

270-
The signed-cwt CDDL is defined in the following manner:
270+
## COSE Algorithm Requirements
271+
272+
This profile defines specific cryptographic algorithms that **MUST** be
273+
supported for CWT signing to ensure interoperability and appropriate security
274+
levels for data center environments.
275+
276+
### Supported Algorithms
277+
278+
Implementations of this profile **SHALL** support **one** of the
279+
following COSE algorithms for the COSE_Sign1 signature:
280+
281+
1. **ECDSA with P-384 and SHA-384** (COSE Algorithm ID: -35)
282+
* **Algorithm**: ES384 as defined in [@{ietf-rfc9052}]
283+
* **Curve**: NIST P-384
284+
* **Hash**: SHA-384
285+
* **Key Size**: 384 bits
286+
* **Security Level**: 192-bit classical security
287+
* **Signature Size**: ~96 bytes
288+
* **Public Key Size**: 97 bytes (uncompressed point)
289+
* **Private Key Size**: 48 bytes
290+
* **Profile OID**: **TODO: OCP to assign OID for ECDSA-P384 profile**
291+
292+
2. **ML-DSA-87** (COSE Algorithm ID: -50)
293+
* **Algorithm**: ML-DSA-87 (FIPS 204) as defined in
294+
[@{ietf-cose-dilithium}]
295+
* **Security Level**: Category 5 (256-bit classical, 128-bit quantum) as defined in [@{nist-fips-204}]
296+
* **Signature Size**: ~4,627 bytes
297+
* **Public Key Size**: 2,592 bytes
298+
* **Private Key Size**: 4,896 bytes
299+
* **Hash**: SHAKE256
300+
* **Profile OID**: **TODO: OCP to assign OID for ML-DSA-87 profile**
301+
302+
### Profile OID Usage
303+
304+
The **EAT Profile** claim (claim key: 265) **MUST** contain the OID
305+
corresponding to the algorithm used for signing the CWT:
306+
307+
* When signed with ECDSA-P384, use the ECDSA-P384 profile OID
308+
* When signed with ML-DSA-87, use the ML-DSA-87 profile OID
309+
310+
This allows verifiers to immediately identify both the profile version and
311+
the expected signature algorithm without parsing the COSE headers.
312+
313+
### Algorithm Selection Guidelines
314+
315+
The choice of algorithm **SHALL** be determined by:
316+
317+
1. Attester capabilities
318+
2. Deployment security requirements (classical vs. post-quantum)
319+
3. Size constraints and bandwidth considerations
320+
4. Certificate chain algorithm consistency
321+
322+
**Certificate Chain Consistency**: The algorithm used for CWT signing
323+
**SHOULD** be consistent with the algorithm used in the Attestation Key
324+
certificate chain, though this is not strictly required.
325+
326+
### Size Implications
327+
328+
Implementations **MUST** account for the following signature size
329+
implications when calculating total CWT size against the 64kB limit:
330+
331+
* **ECDSA-P384**: ~96 bytes signature size
332+
* **ML-DSA-87**: ~4,627 bytes signature size
333+
334+
**Note**: When using ML-DSA-87, implementors should carefully consider the
335+
available space for claims and certificate chains within the 64kB total
336+
size limit. The large signature size may necessitate more compact
337+
certificate chains or reduced optional claims.
338+
339+
### COSE Header Requirements
340+
341+
The COSE_Sign1 protected header **MUST** include:
342+
343+
* **alg** (label 1): The COSE algorithm identifier (-35 for ES384 or -50
344+
for ML-DSA-87)
345+
* Additional algorithm-specific parameters as required by the chosen
346+
algorithm
347+
348+
The COSE_Sign1 unprotected header **MUST** include:
349+
350+
* **x5chain** (label 33): Certificate chain as specified in the main
351+
specification
352+
353+
### Implementation Notes
354+
355+
**Migration Path**: The dual algorithm support provides a clear migration
356+
path from classical to post-quantum cryptography while maintaining current
357+
security levels during the transition period.
358+
359+
### Future Algorithm Support
360+
361+
This profile may be updated to include additional COSE algorithms as they
362+
become standardized and relevant for data center attestation use cases.
363+
When new algorithms are added, a new profile OID will be assigned to
364+
support each additional algorithm, maintaining clear identification and
365+
backward compatibility with existing implementations.
271366

272367
## Concise Evidence
273368

0 commit comments

Comments
 (0)