Skip to content

Commit f13e232

Browse files
authored
Add EnvelopeSignedCSRdata requirements with RATS EAT/CWT format (#40)
* Add EnvelopeSignedCSRdata requirements with RATS EAT/CWT format Signed-off-by: Fabrizio Damato <[email protected]>
1 parent a66670e commit f13e232

File tree

4 files changed

+51
-18
lines changed

4 files changed

+51
-18
lines changed

specifications/device-identity-provisioning/bibliography.yaml

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,24 @@ references:
2424
year: 2024
2525
month: 9
2626
url: "https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.3.2.pdf"
27-
- id: ietf-cmw
28-
title: "RATS Conceptual Messages Wrapper (CMW)"
27+
- id: ietf-cwt
28+
title: "CBOR Web Token (CWT)"
29+
publisher: "IETF"
30+
issued:
31+
year: 2018
32+
month: 5
33+
url: "https://datatracker.ietf.org/doc/html/rfc8392"
34+
- id: ietf-eat
35+
title: "RATS Entity Attestation Token"
2936
publisher: "IETF"
3037
issued:
3138
year: 2025
32-
month: 7
33-
url: "https://www.ietf.org/archive/id/draft-ietf-rats-msg-wrap-16.html"
39+
month: 4
40+
url: "https://datatracker.ietf.org/doc/rfc9711/"
41+
- id: pkcs-10
42+
title: "PKCS #10: Certification Request Syntax Specification Version 1.7"
43+
publisher: "IETF"
44+
issued:
45+
year: 2000
46+
month: 11
47+
url: "https://datatracker.ietf.org/doc/html/rfc2986"

specifications/device-identity-provisioning/cddl/ocp-enveloped-csr-eat.cddl renamed to specifications/device-identity-provisioning/cddl/envelope-signed-csr-eat.cddl

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
cwt-enveloped-csr-eat = {
2-
; The EAT Profile for Endorsed CSR OCP will register
1+
cwt-envelope-signed-csr-eat = {
2+
; The EAT Profile for Envelope-Signed CSR OCP will register
33
&(eat-profile : 265 ) => ~oid ; "2.16.840.1.113741.1.16.1" - note: `~` strips CBOR tag #6.111(oid) from `oid`
44

55
; Issuer claim is StringOrURI (tstr)
@@ -10,14 +10,11 @@ cwt-enveloped-csr-eat = {
1010

1111
; Private Claims (they have to be < -65536 for rfc8392)
1212

13-
; KeyPair Id
14-
&(id: -70001) => uint
15-
1613
; CSR bytestring
17-
&(csr: -70002) => bstr
14+
&(csr: -70001) => bstr
1815

1916
; Attribute List of OIDs
20-
&(attrib: -70003) => [+ $key-attributes-type]
17+
&(attrib: -70002) => [+ $key-attributes-type]
2118
}
2219

2320
$key-attributes-type = tagged-oid-type
@@ -27,7 +24,7 @@ signed-cwt = #6.18(COSE-Sign1-concise-evidence)
2724
COSE-Sign1-concise-evidence = [
2825
protected: bstr .cbor protected-ce-header-map
2926
unprotected: unprotected-ce-header-map
30-
payload: bstr .cbor cwt-enveloped-csr-eat
27+
payload: bstr .cbor cwt-envelope-signed-csr-eat
3128
signature: bstr
3229
]
3330

specifications/device-identity-provisioning/diag/enveloped-csr-csr-eat-example.diag renamed to specifications/device-identity-provisioning/diag/envelope-signed-csr-eat-example.diag

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@ signed-cwt / 18([
22
/ protected / <<{
33
/ alg-id / 1 : 7,
44
/ content-type / 3 : "application/eat+cbor",
5-
/ kid / 4 : 'Example OCP Enveloped-Signed CSR CWT'
5+
/ kid / 4 : 'Example OCP Envelope-Signed CSR CWT'
66
}>>,
77
/ unprotected / {/ x5-chain / 33 : h'59025630820252308201d9a003020102021431a4ef62e5244e4d952ea485976098090d5f242f300a06082a8648ce3d040303307b310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d53616e204672616e636973636f311d301b060355040a0c144578616d706c65204f7267616e697a6174696f6e3120301e06035504030c174578616d706c652043575420456e646f7273656d656e74301e170d3235303231333139303230345a170d3236303231343139303230345a307b310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d53616e204672616e636973636f311d301b060355040a0c144578616d706c65204f7267616e697a6174696f6e3120301e06035504030c174578616d706c652043575420456e646f7273656d656e743076301006072a8648ce3d020106052b8104002203620004fcd3fad48575addceee9638583aa7054f71a402f35993901923cc0ee9763b85b1e729c740331f4e91079559bce17d5c3b706748333faeb192120e32d815f88f7310ae05df55060f96fbdb2d0acb19e710d25ec27cfa8945fe5dda73332813feda31e301c301a0603551d1104133011820f7777772e6578616d706c652e636f6d300a06082a8648ce3d040303036700306402306e1166a8a3132d4a20e0200a26d1eba0937fec54fdb7547eb7c5ccca0370170853294cdd6b3a1eb0fe649f12446d8b17023071219daf2b7c1aa6f7727d053e1027309594fd8cab9f820fa89d8f88fc7e551c0d30781b12aea48b53fde200e6cf082b' },
88
/ payload / <<{
99
/ eat-profile / 265 : h'88378952',
1010
/ iss / 1 : "RT Alias Key",
1111
/ nonce / 10: h'AAAABBBBAAAABBBBAAAABBBB',
12-
/ id / -70001 : 0,
13-
/ csr / -70002 : h'59025630820252308201d9a003020102021431a4e0',
14-
/ attrib / -70003: [
12+
/ csr / -70001 : h'59025630820252308201d9a003020102021431a4e0',
13+
/ attrib / -70002: [
1514
/ tagged-oid-type / 111(h'6086480186F84D010F046301')
1615
]
1716
}>>,

specifications/device-identity-provisioning/spec.ocp

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ To allow a device to attest that a given key is trustworthy, the device should i
184184

185185
![Envelope-signed CSR](./diagrams/envelope_signed_csr.drawio.svg){#fig:envelope-signed-csr}
186186

187-
The CSR is included as a component of a Conceptual Message Wrapper [@{ietf-cmw}].
187+
The CSR is included as a claim of a CBOR Web Token [@{ietf-cwt}].
188188

189189
Metadata such as the key's derivation attribute OID can also be embedded in a CoRIM. The mechanism for this is out of scope of this specification.
190190

@@ -298,7 +298,30 @@ Table: ENVELOPE_SIGNED_CSR VendorDefinedRespPayload {#tbl:ecsr-resp}
298298

299299
The EnvelopeSignedCSRdata shall adhere to the following requirements:
300300

301-
- TODO: fill in
301+
- The payload SHALL be an Entity Attestation Token (EAT) [@{ietf-rats-eat}] encoded as a CBOR Web Token (CWT) [@{ietf-cwt}].
302+
- The EAT SHALL conform to the OCP Envelope-Signed CSR EAT profile (TODO: OCP to assign OID for this profile).
303+
- The EAT SHALL include standard claims for issuer identification and nonce for freshness verification.
304+
- The EAT SHALL include private claims[^private-claims] containing:
305+
- The Certification Signing Request (CSR) as a byte string
306+
- An array of OIDs representing the key's derivation attributes (see @sec:key-derivation-attribute-oids for defined OIDs)
307+
- The CSR included in the EAT SHALL be DER-encoded and may be either self-signed or non-self-signed depending on device capabilities. For non-self-signed CSRs, the signature field SHALL contain all zeroes and be the same size as would be required for a valid signature using the subject key's algorithm.
308+
- The nonce claim SHALL match the nonce value provided in the GET_ENVELOPE_SIGNED_CSR request to ensure freshness.
309+
- If SignerSlotIDParam indicates a signed envelope, the CWT SHALL be signed by an Attestation Key endorsed by the certificate chain corresponding to the specified SlotID. In addition, the unprotected header of the CWT SHALL contain the Attestation Key's certificate chain, including at least all certificates from the Attestation Key up to the identity certificate issued by the slot's PKI owner.
310+
- E.g., Slot 0's certificate chain would extend at least to the vendor-endorsed certificate over IDevID. A separate slot's certificate chain would extend at least to the certificate issued by the slot's configured PKI owner.
311+
- A device may report intermediate certificates for the slot's PKI owner if it is configured to do so.
312+
313+
[^private-claims]: RFC 8392 defines a private claim as one whose key value has an integer value < -65536.
314+
315+
### Key Derivation Attribute OIDs {#sec:key-derivation-attribute-oids}
316+
317+
The following OIDs are defined for key derivation attributes:
318+
319+
- **Derived from Owner Entropy Fuse** - (TODO: OCP to assign OID)
320+
- **Derived from First Mutable Code** - (TODO: OCP to assign OID)
321+
- **Derived from Non-First Mutable Code** - (TODO: OCP to assign OID)
322+
- **Derived from Owner Provisioned Key** - (TODO: OCP to assign OID)
323+
324+
These OIDs indicate which inputs contribute to the derivation of the identity key for which the CSR is being requested.
302325

303326
## Issuing and provisioning an identity certificate {#sec:issuing-and-provisioning-identity-cert}
304327

0 commit comments

Comments
 (0)