| rfc9781.original | rfc9781.txt | |||
|---|---|---|---|---|
| RATS Working Group H. Birkholz | Internet Engineering Task Force (IETF) H. Birkholz | |||
| Internet-Draft Fraunhofer SIT | Request for Comments: 9781 Fraunhofer SIT | |||
| Intended status: Standards Track J. O'Donoghue | Category: Standards Track J. O'Donoghue | |||
| Expires: 7 May 2025 Qualcomm Technologies Inc. | ISSN: 2070-1721 Qualcomm Technologies Inc. | |||
| N. Cam-Winget | N. Cam-Winget | |||
| Cisco Systems | Cisco Systems | |||
| C. Bormann | C. Bormann | |||
| Universität Bremen TZI | Universität Bremen TZI | |||
| 3 November 2024 | May 2025 | |||
| A CBOR Tag for Unprotected CWT Claims Sets | A Concise Binary Object Representation (CBOR) Tag for Unprotected CBOR | |||
| draft-ietf-rats-uccs-12 | Web Token Claims Sets (UCCS) | |||
| Abstract | Abstract | |||
| This document defines the Unprotected CWT Claims Set (UCCS), a data | This document defines the Unprotected CWT Claims Set (UCCS), a data | |||
| format for representing a CBOR Web Token (CWT) Claims Set without | format for representing a CBOR Web Token (CWT) Claims Set without | |||
| protecting it by a signature, message authentication code (MAC), or | protecting it by a signature, Message Authentication Code (MAC), or | |||
| encryption. UCCS enables the use of CWT claims in environments where | encryption. UCCS enables the use of CWT claims in environments where | |||
| protection is provided by other means, such as secure communication | protection is provided by other means, such as secure communication | |||
| channels or trusted execution environments. This specification | channels or trusted execution environments. This specification | |||
| defines a CBOR tag for UCCS and describes the UCCS format, its | defines a CBOR tag for UCCS and describes the UCCS format, its | |||
| encoding, and processing considerations, and discusses security | encoding, and its processing considerations. It also discusses | |||
| implications of using unprotected claims sets. | security implications of using unprotected claims sets. | |||
| // (This editors' note will be removed by the RFC editor:) The | ||||
| // present revision (–12) contains remaining document changes based | ||||
| // on feedback from the IESG evaluation and has been submitted as | ||||
| // input to IETF 121. | ||||
| About This Document | ||||
| This note is to be removed before publishing as an RFC. | ||||
| Status information for this document may be found at | ||||
| https://datatracker.ietf.org/doc/draft-ietf-rats-uccs/. | ||||
| Discussion of this document takes place on the Remote ATtestation | ||||
| procedureS (rats) Working Group mailing list (mailto:rats@ietf.org), | ||||
| which is archived at https://mailarchive.ietf.org/arch/browse/rats/. | ||||
| Subscribe at https://www.ietf.org/mailman/listinfo/rats/. | ||||
| Source for this draft and an issue tracker can be found at | ||||
| https://github.com/ietf-rats-wg/draft-ietf-rats-uccs. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 7 May 2025. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9781. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.1. Terminology | |||
| 1.2. Structure of this document . . . . . . . . . . . . . . . 5 | 1.2. Structure of This Document | |||
| 2. Deployment and Usage of UCCS . . . . . . . . . . . . . . . . 5 | 2. Deployment and Usage of UCCS | |||
| 3. Characteristics of a Secure Channel . . . . . . . . . . . . . 6 | 3. Characteristics of a Secure Channel | |||
| 4. UCCS in RATS Conceptual Message Conveyance . . . . . . . . . 7 | 4. UCCS in RATS Conceptual Message Conveyance | |||
| 5. Considerations for Using UCCS in Other RATS Contexts . . . . 8 | 5. Considerations for Using UCCS in Other RATS Contexts | |||
| 5.1. Delegated Attestation . . . . . . . . . . . . . . . . . . 8 | 5.1. Delegated Attestation | |||
| 5.2. Privacy Preservation . . . . . . . . . . . . . . . . . . 9 | 5.2. Privacy Preservation | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 6. IANA Considerations | |||
| 6.1. CBOR Tag registration . . . . . . . . . . . . . . . . . . 9 | 6.1. CBOR Tag Registration | |||
| 6.2. Media-Type application/uccs+cbor Registration . . . . . . 10 | 6.2. Media-Type application/uccs+cbor Registration | |||
| 6.3. Media-Type application/ujcs+json Registration . . . . . . 10 | 6.3. Media-Type application/ujcs+json Registration | |||
| 6.4. Content-Format registration . . . . . . . . . . . . . . . 11 | 6.4. Content-Format Registration | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 7. Security Considerations | |||
| 7.1. General Considerations . . . . . . . . . . . . . . . . . 12 | 7.1. General Considerations | |||
| 7.2. Algorithm-specific Security Considerations . . . . . . . 13 | 7.2. Algorithm-Specific Security Considerations | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 8. References | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 8.1. Normative References | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 15 | 8.2. Informative References | |||
| Appendix A. CDDL . . . . . . . . . . . . . . . . . . . . . . . . 16 | Appendix A. CDDL | |||
| Appendix B. Example . . . . . . . . . . . . . . . . . . . . . . 18 | Appendix B. Example | |||
| Appendix C. EAT . . . . . . . . . . . . . . . . . . . . . . . . 19 | Appendix C. EAT | |||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 19 | Acknowledgements | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| A CBOR Web Token (CWT) as specified by [RFC8392] is always wrapped in | A CBOR Web Token (CWT) as specified by [RFC8392] is always wrapped in | |||
| a CBOR Object Signing and Encryption (COSE, [STD96]) envelope. COSE | a CBOR Object Signing and Encryption (COSE) envelope [STD96]. Among | |||
| provides -- among other things -- end-to-end data origin | other things, COSE provides end-to-end data origin authentication and | |||
| authentication and integrity protection employed by RFC 8392 as well | integrity protection employed by [RFC8392] as well as optional | |||
| as optional encryption for CWTs. Under the right circumstances | encryption for CWTs. Under the right circumstances (Section 3), a | |||
| (Section 3), though, a signature providing proof for authenticity and | signature providing proof for authenticity and integrity can be | |||
| integrity can be provided through the transfer protocol and thus | provided through the transfer protocol and thus omitted from the | |||
| omitted from the information in a CWT without compromising the | information in a CWT without compromising the intended goal of | |||
| intended goal of authenticity and integrity. In other words, if | authenticity and integrity. In other words, if communicating parties | |||
| communicating parties have a preexisting security association, they | have a preexisting security association, they can reuse it to provide | |||
| can reuse it to provide authenticity and integrity for their | authenticity and integrity for their messages, enabling the basic | |||
| messages, enabling the basic principle of using resources | principle of using resources parsimoniously. Specifically, if a | |||
| parsimoniously. Specifically, if a mutually secured channel is | mutually secured channel is established between two remote peers, and | |||
| established between two remote peers, and if that secure channel | if that secure channel provides the required properties (as discussed | |||
| provides the required properties (as discussed below), it is possible | below), it is possible to omit the protection provided by COSE, | |||
| to omit the protection provided by COSE, creating a use case for | creating a use case for unprotected CWT Claims Sets. Similarly, if | |||
| unprotected CWT Claims Sets. Similarly, if there is one-way | there is one-way authentication, the party that did not authenticate | |||
| authentication, the party that did not authenticate may be in a | may be in a position to send authentication information through this | |||
| position to send authentication information through this channel that | channel that allows the already authenticated party to authenticate | |||
| allows the already authenticated party to authenticate the other | the other party; this effectively turns the channel into a mutually | |||
| party; this effectively turns the channel into a mutually secured | secured channel. | |||
| channel. | ||||
| This specification allocates a CBOR tag to mark Unprotected CWT | This specification allocates a CBOR tag to mark Unprotected CWT | |||
| Claims Sets (UCCS) as such and discusses conditions for its proper | Claims Sets (UCCS) as such and discusses conditions for its proper | |||
| use in the scope of Remote Attestation Procedures (RATS [RFC9334]) | use in the scope of Remote Attestation Procedures (RATS [RFC9334]) | |||
| for the conveyance of RATS Conceptual Messages. | for the conveyance of RATS Conceptual Messages. | |||
| This specification does not change [RFC8392]: An actual RFC 8392 CWT | This specification does not change [RFC8392]: A CWT as defined by | |||
| does not make use of the tag allocated here; the UCCS tag is an | [RFC8392] does not make use of the tag allocated here; the UCCS tag | |||
| alternative to using COSE protection and a CWT tag. Consequently, | is an alternative to using COSE protection and a CWT tag. | |||
| within the well-defined scope of a secure channel, it can be | Consequently, within the well-defined scope of a secure channel, it | |||
| acceptable and economic to use the contents of a CWT without its COSE | can be acceptable and economic to use the contents of a CWT without | |||
| container and tag it with a UCCS CBOR tag for further processing | its COSE container and tag it with a UCCS CBOR tag for further | |||
| within that scope -- or to use the contents of a UCCS CBOR tag for | processing within that scope -- or to use the contents of a UCCS CBOR | |||
| building a CWT to be signed by some entity that can vouch for those | tag for building a CWT to be signed by some entity that can vouch for | |||
| contents. | those contents. | |||
| 1.1. Terminology | 1.1. Terminology | |||
| The term Claim is used as in [RFC7519]. | The term Claim is used as in [RFC7519]. | |||
| The terms Claim Key, Claim Value, and CWT Claims Set are used as in | The terms Claim Key, Claim Value, and CWT Claims Set are used as in | |||
| [RFC8392]. | [RFC8392]. | |||
| The terms Attester, Attesting Environment, Evidence, Relying Party | The terms Attester, Attesting Environment, Evidence, Relying Party | |||
| and Verifier are used as in [RFC9334]. | and Verifier are used as in [RFC9334]. | |||
| UCCS: Unprotected CWT Claims Set(s); CBOR map(s) of Claims as | UCCS: Unprotected CWT Claims Set(s); CBOR map(s) of Claims as | |||
| defined by the CWT Claims Registry that are composed of pairs of | defined by the CWT Claims Registry that are composed of pairs of | |||
| Claim Keys and Claim Values. | Claim Keys and Claim Values. | |||
| Secure Channel: [NIST-SP800-90Ar1] defines a Secure Channel as | Secure Channel: [NIST-SP800-90Ar1] defines a Secure Channel as | |||
| follows: | follows: | |||
| | "A path for transferring data between two entities or | "A path for transferring data between two entities or | |||
| | components that ensures confidentiality, integrity and | components that ensures confidentiality, integrity and replay | |||
| | replay protection, as well as mutual authentication between | protection, as well as mutual authentication between the | |||
| | the entities or components. The secure channel may be | entities or components. The secure channel may be provided | |||
| | provided using approved cryptographic, physical or | using approved cryptographic, physical or procedural methods, | |||
| | procedural methods, or a combination thereof." | or a combination thereof." | |||
| For the purposes of the present document, we focus on a protected | For the purposes of the present document, we focus on a protected | |||
| communication channel used for conveyance that can ensure the same | communication channel used for conveyance that can ensure the same | |||
| qualities as CWT without having the COSE protection available: | qualities as a CWT without having COSE protection available, which | |||
| mutual authentication, integrity protection, confidentiality. | includes mutual authentication, integrity protection, and | |||
| (Replay protection can be added by including a nonce claim such as | confidentiality. (Replay protection can be added by including a | |||
| Nonce (claim 10 [IANA.cwt]).) Examples include conveyance via | nonce claim such as Nonce (claim 10 [IANA.cwt]).) Examples | |||
| PCIe (Peripheral Component Interconnect Express) IDE (Integrity | include conveyance via PCIe (Peripheral Component Interconnect | |||
| and Data Encryption) or a TLS tunnel. | Express) IDE (Integrity and Data Encryption) or a TLS tunnel. | |||
| All terms referenced or defined in this section are capitalized in | All terms referenced or defined in this section are capitalized in | |||
| the remainder of this document. | the remainder of this document. | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| [BCP14] (RFC2119) (RFC8174) when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 1.2. Structure of this document | 1.2. Structure of This Document | |||
| Section 2 briefly discusses use cases for UCCS. Section 3 addresses | Section 2 briefly discusses use cases for UCCS. Section 3 addresses | |||
| general characteristics of secure channels, followed by a specific | general characteristics of secure channels, followed by a specific | |||
| discussion of using them in the context of RATS Conceptual Message | discussion of using them in the context of RATS Conceptual Message | |||
| Conveyance in Section 4, and finally some more forward-looking | Conveyance in Section 4, and more forward-looking considerations for | |||
| considerations for using UCCS in other RATS contexts in Section 5. | using UCCS in other RATS contexts are discussed in Section 5. This | |||
| Conventional sections (IANA Considerations, Security Considerations, | is followed by the IANA Considerations, Security Considerations, | |||
| Normative References, and Informative References) follow. The | Normative References, and Informative References. The normative | |||
| normative Appendix A provides a formal definition of the structure of | Appendix A provides a formal definition of the structure of UCCS, as | |||
| UCCS as no formal definition of CWT Claims Sets was provided in | no formal definition of CWT Claims Sets was provided in [RFC8392]. | |||
| [RFC8392]. This employs the Concise Data Definition Language (CDDL) | This employs the Concise Data Definition Language (CDDL) [RFC8610], | |||
| [RFC8610], using its ability to also describe the structurally | using its ability to also describe in the same definition the | |||
| similar Unprotected JWT Claims Sets [RFC7519] (UJCS) in the same | structurally similar use of JWT Claims Sets [RFC7519], without any | |||
| definition. Appendix B provides an (informative) example for CBOR- | protective wrapper (such as JWS) applied, as Unprotected JWT Claims | |||
| Sets (UJCS). Appendix B provides an (informative) example for CBOR- | ||||
| Tagged UCCS. The normative Appendix C provides CDDL rules that add | Tagged UCCS. The normative Appendix C provides CDDL rules that add | |||
| UCCS-format tokens to Entity Attestation Tokens (EATs, see | UCCS-format tokens to Entity Attestation Tokens (EATs) [RFC9711] | |||
| [I-D.ietf-rats-eat]) using its predefined extension points. | using its predefined extension points. | |||
| 2. Deployment and Usage of UCCS | 2. Deployment and Usage of UCCS | |||
| Usage scenarios involving the conveyance of Claims, in particular | Usage scenarios involving the conveyance of Claims (RATS, in | |||
| RATS, require a standardized data definition and encoding format that | particular) require a standardized data definition and encoding | |||
| can be transferred and transported using different communication | format that can be transferred and transported using different | |||
| channels. As these are Claims, the Claims Sets defined in [RFC8392] | communication channels. As these are Claims, the Claims Sets defined | |||
| are a suitable format. However, the way these Claims are secured | in [RFC8392] are a suitable format. However, the way these Claims | |||
| depends on the deployment, the security capabilities of the device, | are secured depends on the deployment, the security capabilities of | |||
| as well as their software stack. For example, a Claim may be | the device, as well as their software stack. For example, a Claim | |||
| securely stored and conveyed using a device's Trusted Execution | may be securely stored and conveyed using a device's Trusted | |||
| Environment (TEE, see [RFC9397]) or a Trusted Platform Module (TPM, | Execution Environment (TEE) [RFC9397] or a Trusted Platform Module | |||
| see [TPM2]). Especially in some resource-constrained environments, | (TPM) [TPM2]. Especially in some resource-constrained environments, | |||
| the same process that provides the secure communication transport is | the same process that provides the secure communication transport is | |||
| also the delegate to compose the Claim to be conveyed. Whether it is | also the delegate to compose the Claim to be conveyed. Whether it is | |||
| a transfer or transport, a Secure Channel is presumed to be used for | a transfer or transport, a Secure Channel is presumed to be used for | |||
| conveying such UCCS. The following sections elaborate on Secure | conveying such UCCS. The following sections elaborate on Secure | |||
| Channel characteristics in general and further describe RATS usage | Channel characteristics in general and further describe RATS usage | |||
| scenarios and corresponding requirements for UCCS deployment. | scenarios and corresponding requirements for UCCS deployment. | |||
| 3. Characteristics of a Secure Channel | 3. Characteristics of a Secure Channel | |||
| A Secure Channel for the conveyance of UCCS needs to provide the | A Secure Channel for the conveyance of UCCS needs to provide the | |||
| security properties that would otherwise be provided by COSE for a | security properties that would otherwise be provided by COSE for a | |||
| CWT. In this regard, UCCS is similar in security considerations to | CWT. In this regard, UCCS are similar in security considerations to | |||
| JWTs [BCP225] using the algorithm "none". Section 3.2 of RFC 8725 | JWTs [BCP225] using the algorithm "none". Section 3.2 of RFC 8725 | |||
| [BCP225] states: | [BCP225] states: | |||
| | [...] if a JWT is cryptographically protected end-to-end by a | | [...] if a JWT is cryptographically protected end-to-end by a | |||
| | transport layer, such as TLS using cryptographically current | | transport layer, such as TLS using cryptographically current | |||
| | algorithms, there may be no need to apply another layer of | | algorithms, there may be no need to apply another layer of | |||
| | cryptographic protections to the JWT. In such cases, the use of | | cryptographic protections to the JWT. In such cases, the use of | |||
| | the "none" algorithm can be perfectly acceptable. | | the "none" algorithm can be perfectly acceptable. | |||
| The security considerations discussed, e.g., in Sections 2.1, 3.1, | The security considerations discussed, e.g., in Sections 2.1, 3.1, | |||
| skipping to change at page 6, line 39 ¶ | skipping to change at line 238 ¶ | |||
| initial algorithms specification [RFC9053]. | initial algorithms specification [RFC9053]. | |||
| Secure Channels are often set up in a handshake protocol that | Secure Channels are often set up in a handshake protocol that | |||
| mutually derives a session key, where the handshake protocol | mutually derives a session key, where the handshake protocol | |||
| establishes the (identity and thus) authenticity of one or both ends | establishes the (identity and thus) authenticity of one or both ends | |||
| of the communication. The session key can then be used to provide | of the communication. The session key can then be used to provide | |||
| confidentiality and integrity of the transfer of information inside | confidentiality and integrity of the transfer of information inside | |||
| the Secure Channel. (Where the handshake did not provide a mutually | the Secure Channel. (Where the handshake did not provide a mutually | |||
| secure channel, further authentication information can be conveyed by | secure channel, further authentication information can be conveyed by | |||
| the party not yet authenticated, leading to a mutually secured | the party not yet authenticated, leading to a mutually secured | |||
| channel.) A well-known example of a such a Secure Channel setup | channel.) A well-known example of such a Secure Channel setup | |||
| protocol is the TLS [RFC8446] handshake; the TLS record protocol can | protocol is the TLS [RFC8446] handshake; the TLS record protocol can | |||
| then be used for secure conveyance. | then be used for secure conveyance. | |||
| As UCCS were initially created for use in RATS Secure Channels, the | As UCCS were initially created for use in RATS Secure Channels, the | |||
| following section provides a discussion of their use in these | following section provides a discussion of their use in these | |||
| channels. Where other environments are intended to be used to convey | channels. Where other environments are intended to be used to convey | |||
| UCCS, similar considerations need to be documented before UCCS can be | UCCS, similar considerations need to be documented before UCCS can be | |||
| used. | used. | |||
| 4. UCCS in RATS Conceptual Message Conveyance | 4. UCCS in RATS Conceptual Message Conveyance | |||
| This section describes a detailed usage scenario for UCCS in the | This section describes a detailed usage scenario for UCCS in the | |||
| context of RATS in conjunction with its attendant security | context of RATS in conjunction with its attendant security | |||
| requirements. The use of UCCS tag CPA601 outside of the RATS context | requirements. The use of UCCS tag 601 outside of the RATS context | |||
| MUST come with additional instruction leaflets and security | MUST come with additional instruction leaflets and security | |||
| considerations. | considerations. | |||
| For the purposes of this section, any RATS role can be the sender or | For the purposes of this section, any RATS role can be the sender or | |||
| the receiver of the UCCS. | the receiver of the UCCS. | |||
| Secure Channels can be transient in nature. For the purposes of this | Secure Channels can be transient in nature. For the purposes of this | |||
| specification, the mechanisms used to establish a Secure Channel are | specification, the mechanisms used to establish a Secure Channel are | |||
| out of scope. | out of scope. | |||
| In the scope of RATS Claims, the receiver MUST authenticate the | In the scope of RATS Claims, the receiver MUST authenticate the | |||
| sender as part of the establishment of the Secure Channel. | sender as part of the establishment of the Secure Channel. | |||
| Furthermore, the channel MUST provide integrity of the communication | Furthermore, the channel MUST provide integrity of the communication | |||
| between the communicating RATS roles. For data confidentiality | between the communicating RATS roles. For data confidentiality | |||
| [RFC4949], the receiving side MUST be authenticated as well; this is | [RFC4949], the receiving side MUST be authenticated as well. This is | |||
| achieved if the sender and receiver mutually authenticate when | achieved if the sender and receiver mutually authenticate when | |||
| establishing the Secure Channel. The quality of the receiver's | establishing the Secure Channel. The quality of the receiver's | |||
| authentication and authorization will influence whether the sender | authentication and authorization will influence whether the sender | |||
| can disclose the UCCS. | can disclose the UCCS. | |||
| The extent to which a Secure Channel can provide assurances that UCCS | The extent to which a Secure Channel can provide assurances that UCCS | |||
| originate from a trustworthy Attesting Environment depends on the | originate from a trustworthy Attesting Environment depends on the | |||
| characteristics of both the cryptographic mechanisms used to | characteristics of both the cryptographic mechanisms used to | |||
| establish the channel and the characteristics of the Attesting | establish the channel and the characteristics of the Attesting | |||
| Environment itself. The assurance provided to a Relying Party | Environment itself. The assurance provided to a Relying Party | |||
| depends on the authenticity and integrity properties of the Secure | depends, among others, on the authenticity and integrity properties | |||
| Channel used for conveying the UCCS to it. | of the Secure Channel used for conveying the UCCS to the Relying | |||
| Party. | ||||
| Ultimately, it is up to the receiver's policy to determine whether to | Ultimately, it is up to the receiver's policy to determine whether to | |||
| accept a UCCS from the sender and to determine the type of Secure | accept a UCCS from the sender and to determine the type of Secure | |||
| Channel it must negotiate. While the security considerations of the | Channel it must negotiate. While the security considerations of the | |||
| cryptographic algorithms used are similar to COSE, the considerations | cryptographic algorithms used are similar to COSE, the considerations | |||
| of the Secure Channel should also adhere to the policy configured at | of the Secure Channel should also adhere to the policy configured at | |||
| each of end of the Secure Channel. However, the policy controls and | each of end of the Secure Channel. However, the policy controls and | |||
| definitions are out of scope for this document. | definitions are out of scope for this document. | |||
| Where an Attesting Environment serves as an endpoint of a Secure | Where an Attesting Environment serves as an endpoint of a Secure | |||
| Channel used to convey a UCCS, the security assurance required of | Channel used to convey a UCCS, the security assurance required of | |||
| that Attesting Environment by a Relying Party generally calls for the | that Attesting Environment by a Relying Party generally calls for the | |||
| Attesting Environment to be implemented using techniques designed to | Attesting Environment to be implemented using techniques designed to | |||
| provide enhanced protection from an attacker wishing to tamper with | provide enhanced protection from an attacker wishing to tamper with | |||
| or forge UCCS originating from that Attesting Environment. A | or forge a UCCS originating from that Attesting Environment. A | |||
| possible approach might be to implement the Attesting Environment in | possible approach might be to implement the Attesting Environment in | |||
| a hardened environment such as a TEE [RFC9397] or a TPM [TPM2]. | a hardened environment, such as a TEE [RFC9397] or a TPM [TPM2]. | |||
| When UCCS emerge from the Secure Channel and into the receiver, the | When a UCCS emerges from the Secure Channel and into the receiver, | |||
| security properties of the secure channel no longer protect the UCCS, | the security properties of the secure channel no longer protect the | |||
| which now are subject to the same security properties as any other | UCCS, which is now subject to the same security properties as any | |||
| unprotected data in the Verifier environment. If the receiver | other unprotected data in the Verifier environment. If the receiver | |||
| subsequently forwards UCCS, they are treated as though they | subsequently forwards UCCS, they are treated as though they | |||
| originated within the receiver. | originated within the receiver. | |||
| The Secure Channel context does not govern fully formed CWTs in the | The Secure Channel context does not govern fully formed CWTs in the | |||
| same way it governs UCCS. As with Entity Attestation Tokens (EATs, | same way it governs UCCS. As with EATs (see [RFC9711]) nested in | |||
| see [I-D.ietf-rats-eat]) nested in other EATs (Section 4.2.18.3 | other EATs (Section 4.2.18.3 (Nested Tokens) of [RFC9711]), the | |||
| (Nested Tokens) of [I-D.ietf-rats-eat]), the Secure Channel does not | Secure Channel does not endorse fully formed CWTs transferred through | |||
| endorse fully formed CWTs transferred through it. Effectively, the | it. Effectively, the COSE envelope of a CWT (or a nested EAT) | |||
| COSE envelope of a CWT (or a nested EAT) shields the CWT Claims Set | shields the CWT Claims Set from the endorsement of the secure | |||
| from the endorsement of the secure channel. (Note that EAT might add | channel. (Note that a nested UCCS Claim might be added to EAT, and | |||
| a nested UCCS Claim, and this statement does not apply to UCCS nested | this statement does not apply to UCCS nested into UCCS; it only | |||
| into UCCS, only to fully formed CWTs.) | applies to fully formed CWTs.) | |||
| 5. Considerations for Using UCCS in Other RATS Contexts | 5. Considerations for Using UCCS in Other RATS Contexts | |||
| This section discusses two additional usage scenarios for UCCS in the | This section discusses two additional usage scenarios for UCCS in the | |||
| context of RATS. | context of RATS. | |||
| 5.1. Delegated Attestation | 5.1. Delegated Attestation | |||
| Another usage scenario is that of a sub-Attester that has no signing | Another usage scenario is that of a sub-Attester that has no signing | |||
| keys (for example, to keep the implementation complexity to a | keys (for example, to keep the implementation complexity to a | |||
| minimum) and has a Secure Channel, such as local inter-process | minimum) and has a Secure Channel, such as local inter-process | |||
| communication, to interact with a lead Attester (see "Composite | communication, to interact with a lead Attester (see "Composite | |||
| Device", Section 3.3 of [RFC9334]). The sub-Attester produces a UCCS | Device", Section 3.3 of [RFC9334]). The sub-Attester produces a UCCS | |||
| with the required CWT Claims Set and sends the UCCS through the | with the required CWT Claims Set and sends the UCCS through the | |||
| Secure Channel to the lead Attester. The lead Attester then computes | Secure Channel to the lead Attester. The lead Attester then computes | |||
| a cryptographic hash of the UCCS and protects that hash using its | a cryptographic hash of the UCCS and protects that hash using its | |||
| signing key for Evidence, for example, using a Detached-Submodule- | signing key for Evidence, for example, using a Detached-Submodule- | |||
| Digest or Detached EAT Bundle (Section 5 of [I-D.ietf-rats-eat]). | Digest or Detached EAT Bundle (Section 5 of [RFC9711]). | |||
| 5.2. Privacy Preservation | 5.2. Privacy Preservation | |||
| A Secure Channel which preserves the privacy of the Attester may | A Secure Channel that preserves the privacy of the Attester may | |||
| provide security properties equivalent to COSE, but only inside the | provide security properties equivalent to COSE, but only inside the | |||
| life-span of the session established. In general, when a privacy | life-span of the session established. In general, when a privacy- | |||
| preserving Secure Channel is employed for conveying a conceptual | preserving Secure Channel is employed to convey a conceptual message, | |||
| message, the receiver cannot correlate the message with the senders | the receiver cannot correlate the message with the senders of other | |||
| of other received UCCS messages beyond the information the Secure | received UCCS messages beyond the information the Secure Channel | |||
| Channel authentication provides. | authentication provides. | |||
| An Attester must consider whether any UCCS it returns over a privacy | An Attester must consider whether any UCCS it returns over a privacy- | |||
| preserving Secure Channel compromises the privacy in unacceptable | preserving Secure Channel compromises the privacy in unacceptable | |||
| ways. As an example, the use of the EAT UEID Claim (Section 4.2.1 of | ways. As an example, the use of the EAT UEID Claim (Section 4.2.1 of | |||
| [I-D.ietf-rats-eat]) in UCCS over a privacy preserving Secure Channel | [RFC9711]) in UCCS over a privacy-preserving Secure Channel allows a | |||
| allows a Verifier to correlate UCCS from a single Attesting | Verifier to correlate UCCS from a single Attesting Environment across | |||
| Environment across many Secure Channel sessions. This may be | many Secure Channel sessions. This may be acceptable in some use | |||
| acceptable in some use-cases (e.g., if the Attesting Environment is a | cases (e.g., if the Attesting Environment is a physical sensor in a | |||
| physical sensor in a factory) and unacceptable in others (e.g., if | factory) and unacceptable in others (e.g., if the Attesting | |||
| the Attesting Environment is a user device belonging to a child). | Environment is a user device belonging to a child). | |||
| 6. IANA Considerations | 6. IANA Considerations | |||
| 6.1. CBOR Tag registration | 6.1. CBOR Tag Registration | |||
| In the CBOR Tags registry [IANA.cbor-tags] as defined in Section 9.2 | ||||
| of RFC 8949 [STD94], IANA is requested to allocate the tag in Table 1 | ||||
| from the Specification Required space (1+2 size), with the present | ||||
| document as the specification reference. | ||||
| +========+==========================+======================+ | In the "CBOR Tags" registry [IANA.cbor-tags] as defined in | |||
| | Tag | Data Item | Semantics | | Section 9.2 of RFC 8949 [STD94], IANA has allocated the tag in | |||
| +========+==========================+======================+ | Table 1 from the Specification Required space (1+2 size), with the | |||
| | CPA601 | map (Claims-Set as per | Unprotected CWT | | present document as the specification reference. | |||
| | | Appendix A of [RFCthis]) | Claims Set [RFCthis] | | ||||
| +--------+--------------------------+----------------------+ | ||||
| Table 1: Values for Tags | +=====+==========================+======================+ | |||
| | Tag | Data Item | Semantics | | ||||
| +=====+==========================+======================+ | ||||
| | 601 | map (Claims-Set as per | Unprotected CWT | | ||||
| | | Appendix A of [RFC9781]) | Claims Set [RFC9781] | | ||||
| +-----+--------------------------+----------------------+ | ||||
| // RFC-Editor: This document uses the CPA (code point allocation) | Table 1: Values for Tags | |||
| // convention described in [I-D.bormann-cbor-draft-numbers]. For | ||||
| // each usage of the term "CPA", please remove the prefix "CPA" from | ||||
| // the indicated value and replace the residue with the value | ||||
| // assigned by IANA; perform an analogous substitution for all other | ||||
| // occurrences of the prefix "CPA" in the document. Finally, please | ||||
| // remove this note. | ||||
| 6.2. Media-Type application/uccs+cbor Registration | 6.2. Media-Type application/uccs+cbor Registration | |||
| IANA is requested to add the following Media-Type to the "Media | IANA has added the following to the "Media Types" registry | |||
| Types" registry [IANA.media-types]. | [IANA.media-types]. | |||
| +===========+=======================+========================+ | +===========+=======================+=========================+ | |||
| | Name | Template | Reference | | | Name | Template | Reference | | |||
| +===========+=======================+========================+ | +===========+=======================+=========================+ | |||
| | uccs+cbor | application/uccs+cbor | Section 6.2 of RFCthis | | | uccs+cbor | application/uccs+cbor | Section 6.2 of RFC 9781 | | |||
| +-----------+-----------------------+------------------------+ | +-----------+-----------------------+-------------------------+ | |||
| Table 2: Media Type Registration | Table 2: Media Type Registration | |||
| Type name: application | Type name: application | |||
| Subtype name: uccs+cbor | Subtype name: uccs+cbor | |||
| Required parameters: n/a | Required parameters: n/a | |||
| Optional parameters: n/a | Optional parameters: n/a | |||
| Encoding considerations: binary (CBOR data item) | Encoding considerations: binary (CBOR data item) | |||
| Security considerations: Section 7 of RFCthis | ||||
| Security considerations: Section 7 of RFC 9781 | ||||
| Interoperability considerations: none | Interoperability considerations: none | |||
| Published specification: RFCthis | ||||
| Published specification: RFC 9781 | ||||
| Applications that use this media type: Applications that transfer | Applications that use this media type: Applications that transfer | |||
| Unprotected CWT Claims Set(s) (UCCS) over Secure Channels | Unprotected CWT Claims Set(s) (UCCS) over Secure Channels | |||
| Fragment identifier considerations: The syntax and semantics of | Fragment identifier considerations: The syntax and semantics of | |||
| fragment identifiers is as specified for "application/cbor". (At | fragment identifiers is as specified for "application/cbor". (At | |||
| publication of this document, there is no fragment identification | publication of this document, there is no fragment identification | |||
| syntax defined for "application/cbor".) | syntax defined for "application/cbor".) | |||
| Additional information: Deprecated alias names for this type: N/A | ||||
| Magic number(s): N/A | Additional information: | |||
| File extension(s): .uccs | Deprecated alias names for this type: N/A | |||
| Magic number(s): N/A | ||||
| File extension(s): .uccs | ||||
| Macintosh file type code(s): N/A | ||||
| Macintosh file type code(s): N/A | ||||
| Person and email address to contact for further information: RATS WG | Person and email address to contact for further information: RATS WG | |||
| mailing list (rats@ietf.org) | mailing list (rats@ietf.org) | |||
| Intended usage: COMMON | Intended usage: COMMON | |||
| Restrictions on usage: none | Restrictions on usage: none | |||
| Author/Change controller: IETF | Author/Change controller: IETF | |||
| 6.3. Media-Type application/ujcs+json Registration | 6.3. Media-Type application/ujcs+json Registration | |||
| IANA is requested to add the following Media-Type to the "Media | IANA has added the following to the "Media Types" registry | |||
| Types" registry [IANA.media-types]. | [IANA.media-types]. | |||
| +===========+=======================+========================+ | +===========+=======================+=========================+ | |||
| | Name | Template | Reference | | | Name | Template | Reference | | |||
| +===========+=======================+========================+ | +===========+=======================+=========================+ | |||
| | ujcs+json | application/ujcs+json | Section 6.3 of RFCthis | | | ujcs+json | application/ujcs+json | Section 6.3 of RFC 9781 | | |||
| +-----------+-----------------------+------------------------+ | +-----------+-----------------------+-------------------------+ | |||
| Table 3: JSON Media Type Registration | Table 3: JSON Media Type Registration | |||
| Type name: application | Type name: application | |||
| Subtype name: ujcs+json | Subtype name: ujcs+json | |||
| Required parameters: n/a | Required parameters: n/a | |||
| Optional parameters: n/a | Optional parameters: n/a | |||
| Encoding considerations: binary (UTF-8) | Encoding considerations: binary (UTF-8) | |||
| Security considerations: Section 7 of RFCthis | ||||
| Security considerations: Section 7 of RFC 9781 | ||||
| Interoperability considerations: none | Interoperability considerations: none | |||
| Published specification: RFCthis | ||||
| Published specification: RFC 9781 | ||||
| Applications that use this media type: Applications that transfer | Applications that use this media type: Applications that transfer | |||
| Unprotected JWT Claims Set(s) (UJCS) over Secure Channels | Unprotected JWT Claims Set(s) (UJCS) over Secure Channels | |||
| Fragment identifier considerations: The syntax and semantics of | Fragment identifier considerations: The syntax and semantics of | |||
| fragment identifiers is as specified for "application/json". (At | fragment identifiers is as specified for "application/json". (At | |||
| publication of this document, there is no fragment identification | publication of this document, there is no fragment identification | |||
| syntax defined for "application/json".) | syntax defined for "application/json".) | |||
| Additional information: Deprecated alias names for this type: N/A | ||||
| Magic number(s): N/A | Additional information: | |||
| File extension(s): .ujcs | Deprecated alias names for this type: N/A | |||
| Magic number(s): N/A | ||||
| File extension(s): .ujcs | ||||
| Macintosh file type code(s): N/A | ||||
| Macintosh file type code(s): N/A | ||||
| Person and email address to contact for further information: RATS WG | Person and email address to contact for further information: RATS WG | |||
| mailing list (rats@ietf.org) | mailing list (rats@ietf.org) | |||
| Intended usage: COMMON | Intended usage: COMMON | |||
| Restrictions on usage: none | Restrictions on usage: none | |||
| Author/Change controller: IETF | ||||
| 6.4. Content-Format registration | Author/Change controller: IETF | |||
| IANA is requested to register a Content-Format number in the "CoAP | 6.4. Content-Format Registration | |||
| Content-Formats" subregistry, within the "Constrained RESTful | ||||
| Environments (CoRE) Parameters" registry [IANA.core-parameters], as | ||||
| follows: | ||||
| +=======================+================+========+=============+ | IANA has registered the following in the "CoAP Content-Formats" | |||
| | Content Type | Content Coding | ID | Reference | | registry within the "Constrained RESTful Environments (CoRE) | |||
| +=======================+================+========+=============+ | Parameters" registry group [IANA.core-parameters]. | |||
| | application/uccs+cbor | - | TBD601 | Section 6.4 | | ||||
| | | | | of RFCthis | | ||||
| +-----------------------+----------------+--------+-------------+ | ||||
| Table 4: Content-Format Registration | +=======================+================+=====+=============+ | |||
| | Content Type | Content Coding | ID | Reference | | ||||
| +=======================+================+=====+=============+ | ||||
| | application/uccs+cbor | - | 601 | Section 6.4 | | ||||
| | | | | of RFC 9781 | | ||||
| +-----------------------+----------------+-----+-------------+ | ||||
| // RFC editor: please replace TBD601 by the number actually assigned | Table 4: Content-Format Registration | |||
| // by IANA (601 is suggested). | ||||
| 7. Security Considerations | 7. Security Considerations | |||
| The security considerations of [STD94] apply. The security | The security considerations of [STD94] apply. The security | |||
| considerations of [RFC8392] need to be applied analogously, replacing | considerations of [RFC8392] need to be applied analogously, replacing | |||
| the function of COSE with that of the Secure Channel; in particular | the function of COSE with that of the Secure Channel; in particular, | |||
| "it is not only important to protect the CWT in transit but also to | "it is not only important to protect the CWT in transit but also to | |||
| ensure that the recipient can authenticate the party that assembled | ensure that the recipient can authenticate the party that assembled | |||
| the claims and created the CWT". | the claims and created the CWT". | |||
| Section 3 discusses security considerations for Secure Channels, in | Section 3 discusses security considerations for Secure Channels in | |||
| which UCCS might be used. This document provides the CBOR tag | which UCCS might be used. This document provides the CBOR tag | |||
| definition for UCCS and a discussion on security consideration for | definition for UCCS and a discussion on security consideration for | |||
| the use of UCCS in RATS. Uses of UCCS outside the scope of RATS are | the use of UCCS in RATS. Uses of UCCS outside the scope of RATS are | |||
| not covered by this document. The UCCS specification -- and the use | not covered by this document. The UCCS specification -- and the use | |||
| of the UCCS CBOR tag, correspondingly -- is not intended for use in a | of the UCCS CBOR tag, correspondingly -- is not intended for use in a | |||
| scope where a scope-specific security consideration discussion has | scope where a scope-specific security consideration discussion has | |||
| not been conducted, vetted and approved for that use. In order to be | not been conducted, vetted, and approved for that use. In order to | |||
| able to use the UCCS CBOR tag in another such scope, the secure | be able to use the UCCS CBOR tag in another such scope, the secure | |||
| channel and/or the application protocol (e.g., TLS and the protocol | channel and/or the application protocol (e.g., TLS and the protocol | |||
| identified by ALPN) MUST specify the roles of the endpoints in a | identified by ALPN) MUST specify the roles of the endpoints in a | |||
| fashion that the security properties of conveying UCCS via a Secure | fashion that the security properties of conveying UCCS via a Secure | |||
| Channel between the roles are well-defined. | Channel between the roles are well-defined. | |||
| 7.1. General Considerations | 7.1. General Considerations | |||
| Implementations of Secure Channels are often separate from the | Implementations of Secure Channels are often separate from the | |||
| application logic that has security requirements on them. Similar | application logic that has security requirements on them. Similar | |||
| security considerations to those described in [STD96] for obtaining | security considerations to those described in [STD96] for obtaining | |||
| skipping to change at page 13, line 32 ¶ | skipping to change at line 554 ¶ | |||
| respected in the establishment of the Secure Channel. | respected in the establishment of the Secure Channel. | |||
| * Using cryptographic algorithms appropriately. | * Using cryptographic algorithms appropriately. | |||
| * Using key material in accordance with any usage restrictions such | * Using key material in accordance with any usage restrictions such | |||
| as freshness or algorithm restrictions. | as freshness or algorithm restrictions. | |||
| * Ensuring that appropriate protections are in place to address | * Ensuring that appropriate protections are in place to address | |||
| potential traffic analysis attacks. | potential traffic analysis attacks. | |||
| 7.2. Algorithm-specific Security Considerations | 7.2. Algorithm-Specific Security Considerations | |||
| Table 5 provides references to some security considerations of | Table 5 provides references to some security considerations of | |||
| specific cryptography choices that are discussed in [RFC9053]. | specific cryptography choices that are discussed in [RFC9053]. | |||
| +===================+============================+ | +===================+============================+ | |||
| | Algorithm | Reference | | | Algorithm | Reference | | |||
| +===================+============================+ | +===================+============================+ | |||
| | AES-CBC-MAC | Section 3.2.1 of [RFC9053] | | | AES-CBC-MAC | Section 3.2.1 of [RFC9053] | | |||
| +-------------------+----------------------------+ | +-------------------+----------------------------+ | |||
| | AES-GCM | Section 4.1.1 of [RFC9053] | | | AES-GCM | Section 4.1.1 of [RFC9053] | | |||
| +-------------------+----------------------------+ | +-------------------+----------------------------+ | |||
| | AES-CCM | Section 4.2.1 of [RFC9053] | | | AES-CCM | Section 4.2.1 of [RFC9053] | | |||
| +-------------------+----------------------------+ | +-------------------+----------------------------+ | |||
| | ChaCha20/Poly1305 | Section 4.3.1 of [RFC9053] | | | ChaCha20/Poly1305 | Section 4.3.1 of [RFC9053] | | |||
| +-------------------+----------------------------+ | +-------------------+----------------------------+ | |||
| Table 5: Algorithm-specific Security | Table 5: Algorithm-Specific Security | |||
| Considerations | Considerations | |||
| 8. References | 8. References | |||
| 8.1. Normative References | ||||
| [BCP14] Best Current Practice 14, | 8.1. Normative References | |||
| <https://www.rfc-editor.org/info/bcp14>. | ||||
| At the time of writing, this BCP comprises the following: | ||||
| Bradner, S., "Key words for use in RFCs to Indicate | ||||
| Requirement Levels", BCP 14, RFC 2119, | ||||
| DOI 10.17487/RFC2119, March 1997, | ||||
| <https://www.rfc-editor.org/info/rfc2119>. | ||||
| Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [BCP225] Best Current Practice 225, | [BCP225] Best Current Practice 225, | |||
| <https://www.rfc-editor.org/info/bcp225>. | <https://www.rfc-editor.org/info/bcp225>. | |||
| At the time of writing, this BCP comprises the following: | At the time of writing, this BCP comprises the following: | |||
| Sheffer, Y., Hardt, D., and M. Jones, "JSON Web Token Best | Sheffer, Y., Hardt, D., and M. Jones, "JSON Web Token Best | |||
| Current Practices", BCP 225, RFC 8725, | Current Practices", BCP 225, RFC 8725, | |||
| DOI 10.17487/RFC8725, February 2020, | DOI 10.17487/RFC8725, February 2020, | |||
| <https://www.rfc-editor.org/info/rfc8725>. | <https://www.rfc-editor.org/info/rfc8725>. | |||
| [IANA.cbor-tags] | [IANA.cbor-tags] | |||
| IANA, "Concise Binary Object Representation (CBOR) Tags", | IANA, "Concise Binary Object Representation (CBOR) Tags", | |||
| <https://www.iana.org/assignments/cbor-tags>. | <https://www.iana.org/assignments/cbor-tags>. | |||
| [IANA.cwt] IANA, "CBOR Web Token (CWT) Claims", | [IANA.cwt] IANA, "CBOR Web Token (CWT) Claims", | |||
| <https://www.iana.org/assignments/cwt>. | <https://www.iana.org/assignments/cwt>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | ||||
| Requirement Levels", BCP 14, RFC 2119, | ||||
| DOI 10.17487/RFC2119, March 1997, | ||||
| <https://www.rfc-editor.org/info/rfc2119>. | ||||
| [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | |||
| (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | |||
| <https://www.rfc-editor.org/rfc/rfc7519>. | <https://www.rfc-editor.org/info/rfc7519>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [RFC8392] Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig, | [RFC8392] Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig, | |||
| "CBOR Web Token (CWT)", RFC 8392, DOI 10.17487/RFC8392, | "CBOR Web Token (CWT)", RFC 8392, DOI 10.17487/RFC8392, | |||
| May 2018, <https://www.rfc-editor.org/rfc/rfc8392>. | May 2018, <https://www.rfc-editor.org/info/rfc8392>. | |||
| [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | |||
| Definition Language (CDDL): A Notational Convention to | Definition Language (CDDL): A Notational Convention to | |||
| Express Concise Binary Object Representation (CBOR) and | Express Concise Binary Object Representation (CBOR) and | |||
| JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | |||
| June 2019, <https://www.rfc-editor.org/rfc/rfc8610>. | June 2019, <https://www.rfc-editor.org/info/rfc8610>. | |||
| [RFC9165] Bormann, C., "Additional Control Operators for the Concise | [RFC9165] Bormann, C., "Additional Control Operators for the Concise | |||
| Data Definition Language (CDDL)", RFC 9165, | Data Definition Language (CDDL)", RFC 9165, | |||
| DOI 10.17487/RFC9165, December 2021, | DOI 10.17487/RFC9165, December 2021, | |||
| <https://www.rfc-editor.org/rfc/rfc9165>. | <https://www.rfc-editor.org/info/rfc9165>. | |||
| [STD94] Internet Standard 94, | [STD94] Internet Standard 94, | |||
| <https://www.rfc-editor.org/info/std94>. | <https://www.rfc-editor.org/info/std94>. | |||
| At the time of writing, this STD comprises the following: | At the time of writing, this STD comprises the following: | |||
| Bormann, C. and P. Hoffman, "Concise Binary Object | Bormann, C. and P. Hoffman, "Concise Binary Object | |||
| Representation (CBOR)", STD 94, RFC 8949, | Representation (CBOR)", STD 94, RFC 8949, | |||
| DOI 10.17487/RFC8949, December 2020, | DOI 10.17487/RFC8949, December 2020, | |||
| <https://www.rfc-editor.org/info/rfc8949>. | <https://www.rfc-editor.org/info/rfc8949>. | |||
| 8.2. Informative References | 8.2. Informative References | |||
| [I-D.ietf-rats-eat] | ||||
| Lundblade, L., Mandyam, G., O'Donoghue, J., and C. | ||||
| Wallace, "The Entity Attestation Token (EAT)", Work in | ||||
| Progress, Internet-Draft, draft-ietf-rats-eat-31, 6 | ||||
| September 2024, <https://datatracker.ietf.org/doc/html/ | ||||
| draft-ietf-rats-eat-31>. | ||||
| [IANA.core-parameters] | [IANA.core-parameters] | |||
| IANA, "Constrained RESTful Environments (CoRE) | IANA, "Constrained RESTful Environments (CoRE) | |||
| Parameters", | Parameters", | |||
| <https://www.iana.org/assignments/core-parameters>. | <https://www.iana.org/assignments/core-parameters>. | |||
| [IANA.media-types] | [IANA.media-types] | |||
| IANA, "Media Types", | IANA, "Media Types", | |||
| <https://www.iana.org/assignments/media-types>. | <https://www.iana.org/assignments/media-types>. | |||
| [NIST-SP800-90Ar1] | [NIST-SP800-90Ar1] | |||
| Barker, E. and J. Kelsey, "Recommendation for Random | Barker, E. and J. Kelsey, "Recommendation for Random | |||
| Number Generation Using Deterministic Random Bit | Number Generation Using Deterministic Random Bit | |||
| Generators", National Institute of Standards and | Generators", NIST SP 800-90Ar1, | |||
| Technology, DOI 10.6028/nist.sp.800-90ar1, June 2015, | DOI 10.6028/nist.sp.800-90ar1, June 2015, | |||
| <https://doi.org/10.6028/nist.sp.800-90ar1>. | <https://doi.org/10.6028/nist.sp.800-90ar1>. | |||
| [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | |||
| FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | |||
| <https://www.rfc-editor.org/rfc/rfc4949>. | <https://www.rfc-editor.org/info/rfc4949>. | |||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
| <https://www.rfc-editor.org/rfc/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
| [RFC8747] Jones, M., Seitz, L., Selander, G., Erdtman, S., and H. | [RFC8747] Jones, M., Seitz, L., Selander, G., Erdtman, S., and H. | |||
| Tschofenig, "Proof-of-Possession Key Semantics for CBOR | Tschofenig, "Proof-of-Possession Key Semantics for CBOR | |||
| Web Tokens (CWTs)", RFC 8747, DOI 10.17487/RFC8747, March | Web Tokens (CWTs)", RFC 8747, DOI 10.17487/RFC8747, March | |||
| 2020, <https://www.rfc-editor.org/rfc/rfc8747>. | 2020, <https://www.rfc-editor.org/info/rfc8747>. | |||
| [RFC9053] Schaad, J., "CBOR Object Signing and Encryption (COSE): | [RFC9053] Schaad, J., "CBOR Object Signing and Encryption (COSE): | |||
| Initial Algorithms", RFC 9053, DOI 10.17487/RFC9053, | Initial Algorithms", RFC 9053, DOI 10.17487/RFC9053, | |||
| August 2022, <https://www.rfc-editor.org/rfc/rfc9053>. | August 2022, <https://www.rfc-editor.org/info/rfc9053>. | |||
| [RFC9334] Birkholz, H., Thaler, D., Richardson, M., Smith, N., and | [RFC9334] Birkholz, H., Thaler, D., Richardson, M., Smith, N., and | |||
| W. Pan, "Remote ATtestation procedureS (RATS) | W. Pan, "Remote ATtestation procedureS (RATS) | |||
| Architecture", RFC 9334, DOI 10.17487/RFC9334, January | Architecture", RFC 9334, DOI 10.17487/RFC9334, January | |||
| 2023, <https://www.rfc-editor.org/rfc/rfc9334>. | 2023, <https://www.rfc-editor.org/info/rfc9334>. | |||
| [RFC9397] Pei, M., Tschofenig, H., Thaler, D., and D. Wheeler, | [RFC9397] Pei, M., Tschofenig, H., Thaler, D., and D. Wheeler, | |||
| "Trusted Execution Environment Provisioning (TEEP) | "Trusted Execution Environment Provisioning (TEEP) | |||
| Architecture", RFC 9397, DOI 10.17487/RFC9397, July 2023, | Architecture", RFC 9397, DOI 10.17487/RFC9397, July 2023, | |||
| <https://www.rfc-editor.org/rfc/rfc9397>. | <https://www.rfc-editor.org/info/rfc9397>. | |||
| [RFC9711] Lundblade, L., Mandyam, G., O'Donoghue, J., and C. | ||||
| Wallace, "The Entity Attestation Token (EAT)", RFC 9711, | ||||
| DOI 10.17487/RFC9711, April 2025, | ||||
| <https://www.rfc-editor.org/info/rfc9711>. | ||||
| [STD96] Internet Standard 96, | [STD96] Internet Standard 96, | |||
| <https://www.rfc-editor.org/info/std96>. | <https://www.rfc-editor.org/info/std96>. | |||
| At the time of writing, this STD comprises the following: | At the time of writing, this STD comprises the following: | |||
| Schaad, J., "CBOR Object Signing and Encryption (COSE): | Schaad, J., "CBOR Object Signing and Encryption (COSE): | |||
| Structures and Process", STD 96, RFC 9052, | Structures and Process", STD 96, RFC 9052, | |||
| DOI 10.17487/RFC9052, August 2022, | DOI 10.17487/RFC9052, August 2022, | |||
| <https://www.rfc-editor.org/info/rfc9052>. | <https://www.rfc-editor.org/info/rfc9052>. | |||
| Schaad, J., "CBOR Object Signing and Encryption (COSE): | Schaad, J., "CBOR Object Signing and Encryption (COSE): | |||
| Countersignatures", STD 96, RFC 9338, | Countersignatures", STD 96, RFC 9338, | |||
| DOI 10.17487/RFC9338, December 2022, | DOI 10.17487/RFC9338, December 2022, | |||
| <https://www.rfc-editor.org/info/rfc9338>. | <https://www.rfc-editor.org/info/rfc9338>. | |||
| [TPM2] "Trusted Platform Module Library Specification, Family | [TPM2] Trusted Computing Group, "Trusted Platform Module 2.0 | |||
| “2.0”, Level 00, Revision 01.59 ed., Trusted Computing | Library", Version 184, March 2025, | |||
| Group", 2019. | <https://trustedcomputinggroup.org/resource/tpm-library- | |||
| specification/>. | ||||
| Appendix A. CDDL | Appendix A. CDDL | |||
| The Concise Data Definition Language (CDDL), as defined in [RFC8610] | The Concise Data Definition Language (CDDL), as defined in [RFC8610] | |||
| and [RFC9165], provides an easy and unambiguous way to express | and [RFC9165], provides an easy and unambiguous way to express | |||
| structures for protocol messages and data formats that use CBOR or | structures for protocol messages and data formats that use CBOR or | |||
| JSON. | JSON. | |||
| [RFC8392] does not define CDDL for CWT Claims Sets. | [RFC8392] does not define CDDL for CWT Claims Sets. | |||
| // RFC-Editor: This document uses the CPA (code point allocation) | ||||
| // convention described in [I-D.bormann-cbor-draft-numbers]. Please | ||||
| // replace the number 601 in the code blocks below by the value that | ||||
| // has been assigned for CPA601 and remove this note. | ||||
| The CDDL model in Figure 1 shows how to use CDDL for defining the CWT | The CDDL model in Figure 1 shows how to use CDDL for defining the CWT | |||
| Claims Set defined in [RFC8392]. These CDDL rules have been built | Claims Set defined in [RFC8392]. These CDDL rules have been built | |||
| such that they also can describe [RFC7519] Claims sets by disabling | such that they also can describe [RFC7519] Claims sets by disabling | |||
| feature "cbor" and enabling feature "json". | feature "cbor" and enabling feature "json". | |||
| UCCS-Untagged = Claims-Set | UCCS-Untagged = Claims-Set | |||
| UCCS-Tagged = #6.601(UCCS-Untagged) | UCCS-Tagged = #6.601(UCCS-Untagged) | |||
| Claims-Set = { | Claims-Set = { | |||
| * $$Claims-Set-Claims | * $$Claims-Set-Claims | |||
| skipping to change at page 18, line 22 ¶ | skipping to change at line 766 ¶ | |||
| CWT-COSE-Key = COSE_Key | CWT-COSE-Key = COSE_Key | |||
| CWT-Encrypted_COSE_Key = COSE_Encrypt / COSE_Encrypt0 | CWT-Encrypted_COSE_Key = COSE_Encrypt / COSE_Encrypt0 | |||
| CWT-kid = bytes | CWT-kid = bytes | |||
| ;;; Insert the required CDDL from RFC 9052 to complete these | ;;; Insert the required CDDL from RFC 9052 to complete these | |||
| ;;; definitions. This can be done manually or automated by a | ;;; definitions. This can be done manually or automated by a | |||
| ;;; tool that implements an import directive such as: | ;;; tool that implements an import directive such as: | |||
| ;# import rfc9052 | ;# import rfc9052 | |||
| The above definitions, concepts and security considerations also | The above definitions, concepts, and security considerations also | |||
| define a JSON-encoded Claims-Set as encapsulated in a JWT. Such an | define a JSON-encoded Claims-Set as encapsulated in a JWT. Such an | |||
| unsigned Claims-Set can be referred to as a "Unprotected JWT Claims | unsigned Claims-Set can be referred to as a "Unprotected JWT Claims | |||
| Set", a "UJCS". The CDDL definition of Claims-Set in Figure 1 can be | Set", or a "UJCS". The CDDL definition of Claims-Set in Figure 1 can | |||
| used for a "UJCS": | be used for a UJCS: | |||
| UJCS = Claims-Set | UJCS = Claims-Set | |||
| Appendix B. Example | Appendix B. Example | |||
| This appendix is informative. | This appendix is informative. | |||
| The example CWT Claims Set from Appendix A.1 of [RFC8392] can be | The example CWT Claims Set from Appendix A.1 of [RFC8392] can be | |||
| turned into a UCCS by enclosing it with a tag number CPA601: | turned into a UCCS by enclosing it with a tag number 601: | |||
| 601( | 601( | |||
| { | { | |||
| / iss / 1: "coap://as.example.com", | / iss / 1: "coap://as.example.com", | |||
| / sub / 2: "erikw", | / sub / 2: "erikw", | |||
| / aud / 3: "coap://light.example.com", | / aud / 3: "coap://light.example.com", | |||
| / exp / 4: 1444064944, | / exp / 4: 1444064944, | |||
| / nbf / 5: 1443944944, | / nbf / 5: 1443944944, | |||
| / iat / 6: 1443944944, | / iat / 6: 1443944944, | |||
| / cti / 7: h'0b71' | / cti / 7: h'0b71' | |||
| } | } | |||
| ) | ) | |||
| Appendix C. EAT | Appendix C. EAT | |||
| The following CDDL adds UCCS-format and UJCS-format tokens to EAT | The following CDDL adds UCCS-format and UJCS-format tokens to EAT | |||
| using its predefined extension points (see Section 4.2.18 (submods) | using its predefined extension points (see Section 4.2.18 (submods) | |||
| of [I-D.ietf-rats-eat]). | of [RFC9711]). | |||
| $EAT-CBOR-Tagged-Token /= UCCS-Tagged | $EAT-CBOR-Tagged-Token /= UCCS-Tagged | |||
| $EAT-CBOR-Untagged-Token /= UCCS-Untagged | $EAT-CBOR-Untagged-Token /= UCCS-Untagged | |||
| $JSON-Selector /= [type: "UJCS", nested-token: UJCS] | $JSON-Selector /= [type: "UJCS", nested-token: UJCS] | |||
| Acknowledgements | Acknowledgements | |||
| Laurence Lundblade suggested some improvements to the CDDL. Carl | Laurence Lundblade suggested some improvements to the CDDL. Carl | |||
| Wallace provided a very useful review. | Wallace provided a very useful review. | |||
| End of changes. 103 change blocks. | ||||
| 289 lines changed or deleted | 273 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||