| rfc9783.original | rfc9783.txt | |||
|---|---|---|---|---|
| Network Working Group H. Tschofenig | Independent Submission H. Tschofenig | |||
| Internet-Draft | Request for Comments: 9783 H-BRS | |||
| Intended status: Informational S. Frost | Category: Informational S. Frost | |||
| Expires: 27 March 2025 M. Brossard | ISSN: 2070-1721 M. Brossard | |||
| Arm Limited | Arm Limited | |||
| A. Shaw | A. Shaw | |||
| HP Labs | HP Labs | |||
| T. Fossati | T. Fossati | |||
| Linaro | Linaro | |||
| 23 September 2024 | June 2025 | |||
| Arm's Platform Security Architecture (PSA) Attestation Token | Arm's Platform Security Architecture (PSA) Attestation Token | |||
| draft-tschofenig-rats-psa-token-24 | ||||
| Abstract | Abstract | |||
| The Arm Platform Security Architecture (PSA) is a family of hardware | Arm's Platform Security Architecture (PSA) is a family of hardware | |||
| and firmware security specifications, as well as open-source | and firmware security specifications, along with open-source | |||
| reference implementations, to help device makers and chip | reference implementations, aimed at helping device makers and chip | |||
| manufacturers build best-practice security into products. Devices | manufacturers integrate best-practice security into their products. | |||
| that are PSA compliant can produce attestation tokens as described in | Devices that comply with PSA can generate attestation tokens as | |||
| this memo, which are the basis for many different protocols, | described in this document, which serve as the foundation for various | |||
| including secure provisioning and network access control. This | protocols, including secure provisioning and network access control. | |||
| document specifies the PSA attestation token structure and semantics. | This document specifies the structure and semantics of the PSA | |||
| attestation token. | ||||
| The PSA attestation token is a profile of the Entity Attestation | The PSA attestation token is a profile of the Entity Attestation | |||
| Token (EAT). This specification describes what claims are used in an | Token (EAT). This specification describes the claims used in an | |||
| attestation token generated by PSA compliant systems, how these | attestation token generated by PSA-compliant systems, how these | |||
| claims get serialized to the wire, and how they are cryptographically | claims are serialized for transmission, and how they are | |||
| protected. | cryptographically protected. | |||
| This informational document is published as an independent submission | This Informational document is published as an Independent Submission | |||
| to improve interoperability with Arm's architecture. It is not a | to improve interoperability with Arm's architecture. It is not a | |||
| standard nor a product of the IETF. | standard nor a product of the IETF. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
| provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
| 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 is a contribution to the RFC Series, independently of any other | |||
| and may be updated, replaced, or obsoleted by other documents at any | RFC stream. The RFC Editor has chosen to publish this document at | |||
| time. It is inappropriate to use Internet-Drafts as reference | its discretion and makes no statement about its value for | |||
| material or to cite them other than as "work in progress." | implementation or deployment. Documents approved for publication by | |||
| the RFC Editor are not candidates for any level of Internet Standard; | ||||
| see Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 27 March 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/rfc9783. | ||||
| 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. | carefully, as they describe your rights and restrictions with respect | |||
| to this document. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 4 | 2. Conventions and Definitions | |||
| 3. PSA Attester Model . . . . . . . . . . . . . . . . . . . . . 5 | 3. PSA Attester Model | |||
| 4. PSA Claims . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. PSA Claims | |||
| 4.1. Caller Claims . . . . . . . . . . . . . . . . . . . . . . 8 | 4.1. Caller Claims | |||
| 4.1.1. Nonce . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4.1.1. Nonce | |||
| 4.1.2. Client ID . . . . . . . . . . . . . . . . . . . . . . 9 | 4.1.2. Client ID | |||
| 4.2. Target Identification Claims . . . . . . . . . . . . . . 9 | 4.2. Target Identification Claims | |||
| 4.2.1. Instance ID . . . . . . . . . . . . . . . . . . . . 9 | 4.2.1. Instance ID | |||
| 4.2.2. Implementation ID . . . . . . . . . . . . . . . . . . 10 | 4.2.2. Implementation ID | |||
| 4.2.3. Certification Reference . . . . . . . . . . . . . . . 10 | 4.2.3. Certification Reference | |||
| 4.3. Target State Claims . . . . . . . . . . . . . . . . . . . 11 | 4.3. Target State Claims | |||
| 4.3.1. Security Lifecycle . . . . . . . . . . . . . . . . . 11 | 4.3.1. Security Lifecycle | |||
| 4.3.2. Boot Seed . . . . . . . . . . . . . . . . . . . . . . 14 | 4.3.2. Boot Seed | |||
| 4.4. Software Inventory Claims . . . . . . . . . . . . . . . . 14 | 4.4. Software Inventory Claims | |||
| 4.4.1. Software Components . . . . . . . . . . . . . . . . . 14 | 4.4.1. Software Components | |||
| 4.5. Verification Claims . . . . . . . . . . . . . . . . . . . 16 | 4.5. Verification Claims | |||
| 4.5.1. Verification Service Indicator . . . . . . . . . . . 16 | 4.5.1. Verification Service Indicator | |||
| 4.5.2. Profile Definition . . . . . . . . . . . . . . . . . 17 | 4.5.2. Profile Definition | |||
| 4.6. Backwards Compatibility Considerations . . . . . . . . . 18 | 4.6. Backwards Compatibility Considerations | |||
| 5. Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 5. Profiles | |||
| 5.1. Baseline Profile . . . . . . . . . . . . . . . . . . . . 20 | 5.1. Baseline Profile | |||
| 5.1.1. Token Encoding and Signing . . . . . . . . . . . . . 20 | 5.1.1. Token Encoding and Signing | |||
| 5.1.2. Freshness Model . . . . . . . . . . . . . . . . . . . 21 | 5.1.2. Freshness Model | |||
| 5.1.3. Synopsis . . . . . . . . . . . . . . . . . . . . . . 21 | 5.1.3. Synopsis | |||
| 5.2. Profile TFM . . . . . . . . . . . . . . . . . . . . . . . 22 | 5.2. Profile TFM | |||
| 6. Collated CDDL . . . . . . . . . . . . . . . . . . . . . . . . 23 | 6. Collated CDDL | |||
| 7. Scalability Considerations . . . . . . . . . . . . . . . . . 26 | 7. Scalability Considerations | |||
| 8. PSA Token Verification . . . . . . . . . . . . . . . . . . . 27 | 8. PSA Token Verification | |||
| 8.1. AR4SI Trustworthiness Claims Mappings . . . . . . . . . 28 | 8.1. AR4SI Trustworthiness Claims Mappings | |||
| 8.2. Endorsements, Reference Values and Verification Key | 8.2. Endorsements, Reference Values, and Verification Key | |||
| Material . . . . . . . . . . . . . . . . . . . . . . . . 29 | Material | |||
| 9. Implementation Status . . . . . . . . . . . . . . . . . . . . 29 | 9. Security and Privacy Considerations | |||
| 10. Security and Privacy Considerations . . . . . . . . . . . . . 29 | 10. IANA Considerations | |||
| 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | 10.1. CBOR Web Token Claims Registration | |||
| 11.1. CBOR Web Token Claims Registration . . . . . . . . . . . 30 | 10.1.1. Client ID Claim | |||
| 11.1.1. Client ID Claim . . . . . . . . . . . . . . . . . . 30 | 10.1.2. Security Lifecycle Claim | |||
| 11.1.2. Security Lifecycle Claim . . . . . . . . . . . . . 30 | 10.1.3. Implementation ID Claim | |||
| 11.1.3. Implementation ID Claim . . . . . . . . . . . . . . 30 | 10.1.4. Certification Reference Claim | |||
| 11.1.4. Certification Reference Claim . . . . . . . . . . . 31 | 10.1.5. Software Components Claim | |||
| 11.1.5. Software Components Claim . . . . . . . . . . . . . 31 | 10.1.6. Verification Service Indicator Claim | |||
| 11.1.6. Verification Service Indicator Claim . . . . . . . 31 | 10.2. Media Types | |||
| 11.2. Media Types . . . . . . . . . . . . . . . . . . . . . . 32 | 10.3. CoAP Content-Formats Registration | |||
| 11.3. CoAP Content-Formats Registration . . . . . . . . . . . 32 | 10.3.1. Registry Contents | |||
| 11.3.1. Registry Contents . . . . . . . . . . . . . . . . . 32 | 11. References | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 11.1. Normative References | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 33 | 11.2. Informative References | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 35 | Appendix A. Examples | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 37 | A.1. COSE Sign1 Token | |||
| A.1. COSE Sign1 Token . . . . . . . . . . . . . . . . . . . . 37 | A.2. COSE Mac0 Token | |||
| A.2. COSE Mac0 Token . . . . . . . . . . . . . . . . . . . . . 39 | Acknowledgments | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 41 | Contributors | |||
| Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 41 | Authors' Addresses | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
| 1. Introduction | 1. Introduction | |||
| The Platform Security Architecture (PSA) [PSA] is a set of hardware | The Platform Security Architecture (PSA) [PSA] is a set of hardware | |||
| and firmware specifications, backed by reference implementations and | and firmware specifications backed by reference implementations and a | |||
| a security certification program [PSACertified]. The security | security certification program [PSACertified]. The security | |||
| specifications have been published by Arm, while the certification | specifications have been published by Arm, while the certification | |||
| program and reference implementations are the result of a | program and reference implementations are the result of a | |||
| collaborative effort by companies from multiple sectors, including | collaborative effort by companies from multiple sectors, including | |||
| evaluation laboratories, IP semiconductor vendors and security | evaluation laboratories, IP semiconductor vendors, and security | |||
| consultancies. The main objective of the PSA initiative is to assist | consultancies. The main objective of the PSA initiative is to assist | |||
| device manufacturers and chip makers in incorporating best-practice | device manufacturers and chip makers in incorporating best-practice | |||
| security measures into their products. | security measures into their products. | |||
| Many devices now have trusted execution environments that provide a | Many devices now have Trusted Execution Environments (TEEs) that | |||
| safe space for security-sensitive code, such as cryptography, secure | provide a safe space for security-sensitive code, such as | |||
| boot, secure storage, and other essential security functions. These | cryptography, secure boot, secure storage, and other essential | |||
| security functions are typically exposed through a narrow and well- | security functions. These security functions are typically exposed | |||
| defined interface, and can be used by operating system libraries and | through a narrow and well-defined interface, and can be used by | |||
| applications. | operating system libraries and applications. | |||
| As outlined in the RATS Architecture [RFC9334], an Attester produces | As outlined in the Remote ATtestation procedureS (RATS) Architecture | |||
| a signed collection of Claims that constitutes Evidence about its | [RFC9334], an Attester produces a signed collection of Claims that | |||
| target environment. This document focuses on the output provided by | constitutes Evidence about its Target Environment. This document | |||
| PSA's Initial Attestation API [PSA-API]. This output corresponds to | focuses on the output provided by PSA's Initial Attestation API | |||
| Evidence in [RFC9334] and, as a design decision, the PSA attestation | [PSA-API]. This output corresponds to Evidence in [RFC9334] and, as | |||
| token is a profile of the Entity Attestation Token (EAT) [EAT]. Note | a design decision, the PSA attestation token is a profile of the | |||
| that there are other profiles of EAT available, such as | Entity Attestation Token (EAT) [EAT]. Note that there are other | |||
| [I-D.kdyxy-rats-tdx-eat-profile] and [I-D.mandyam-rats-qwestoken], | profiles of EAT available for use with different use cases and by | |||
| for use with different use cases and by different attestation | different attestation technologies, such as [RATS-TDX] and | |||
| technologies. | [RATS-QWESTOKEN]. | |||
| Since the PSA tokens are also consumed by services outside the | Since the PSA tokens are also consumed by services outside the | |||
| device, there is an actual need to ensure interoperability. | device, there is an actual need to ensure interoperability. | |||
| Interoperability needs are addressed here by describing the exact | Interoperability needs are addressed here by describing the exact | |||
| syntax and semantics of the attestation claims, and defining the way | syntax and semantics of the attestation claims, and defining the way | |||
| these claims are encoded and cryptographically protected. | these claims are encoded and cryptographically protected. | |||
| Further details on concepts expressed below can be found in the PSA | Further details on concepts expressed below can be found in the PSA | |||
| Security Model documentation [PSA-SM]. | Security Model documentation [PSA-SM]. | |||
| As mentioned in the abstract, this memo documents a vendor extension | As mentioned in the abstract, this memo documents a vendor extension | |||
| to the RATS architecture, and is not a standard. | to the RATS architecture and is not a standard. | |||
| 2. Conventions and Definitions | 2. Conventions and Definitions | |||
| 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 BCP | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| The terms Attester, Relying Party, Verifier, Attestation Result, | The terms Attester, Relying Party, Verifier, Attestation Result, | |||
| Target Environment, Attesting Environment and Evidence are defined in | Target Environment, Attesting Environment, and Evidence are defined | |||
| [RFC9334]. We use the term "receiver" to refer to Relying Parties | in [RFC9334]. We use the term "receiver" to refer to Relying Parties | |||
| and Verifiers. | and Verifiers. | |||
| We use the terms Evidence, "PSA attestation token", and "PSA token" | We use the terms Evidence, "PSA attestation token", and "PSA token" | |||
| interchangeably. The terms "sender" and Attester are used | interchangeably. The terms "sender" and Attester are used | |||
| interchangeably. Likewise, we use the terms Verifier and | interchangeably. Likewise, we use the terms Verifier and | |||
| "verification service" interchangeably. | "verification service" interchangeably. | |||
| RoT: | Root of Trust (RoT): | |||
| The minimal set of software, hardware, and data that has to be | ||||
| Root of Trust, the minimal set of software, hardware and data that | implicitly trusted in the platform; there is no software or | |||
| has to be implicitly trusted in the platform - there is no | hardware at a deeper level that can verify that the RoT is | |||
| software or hardware at a deeper level that can verify that the | authentic and unmodified. An example of RoT is an initial | |||
| Root of Trust is authentic and unmodified. An example of RoT is | bootloader in ROM, which contains cryptographic functions and | |||
| an initial bootloader in ROM, which contains cryptographic | credentials, running on a specific hardware platform. | |||
| functions and credentials, running on a specific hardware | ||||
| platform. | ||||
| SPE: | Secure Processing Environment (SPE): | |||
| Secure Processing Environment, a platform's processing environment | A platform's processing environment for software that provides | |||
| for software that provides confidentiality and integrity for its | confidentiality and integrity for its runtime state, from software | |||
| runtime state, from software and hardware, outside of the SPE. | and hardware, outside of the SPE. Contains trusted code and | |||
| Contains trusted code and trusted hardware. (Equivalent to | trusted hardware. (Equivalent to a TEE, "secure world", or | |||
| Trusted Execution Environment (TEE), "secure world", or "secure | "secure enclave".) | |||
| enclave".) | ||||
| NSPE: | Non-Secure Processing Environment (NSPE): | |||
| Non Secure Processing Environment, the security domain outside of | The security domain (Application domain) outside of the SPE that | |||
| the SPE, the Application domain, typically containing the | typically contains the application firmware, real-time operating | |||
| application firmware, real-time operating systems, applications | systems, applications, and general hardware. (Equivalent to Rich | |||
| and general hardware. (Equivalent to Rich Execution Environment | Execution Environment (REE), or "normal world".) | |||
| (REE), or "normal world".) | ||||
| In this document, the structure of data is specified in Concise Data | In this document, the structure of data is specified in Concise Data | |||
| Definition Language (CDDL) [RFC8610]. | Definition Language (CDDL) [RFC8610]. | |||
| 3. PSA Attester Model | 3. PSA Attester Model | |||
| Figure 1 outlines the structure of the PSA Attester according to the | Figure 1 outlines the structure of the PSA Attester according to the | |||
| conceptual model described in Section 3.1 of [RFC9334]. | conceptual model described in Section 3.1 of [RFC9334]. | |||
| .----------. | .----------. | |||
| skipping to change at page 6, line 43 ¶ | skipping to change at line 249 ¶ | |||
| R W | R W | |||
| Figure 1: PSA Attester | Figure 1: PSA Attester | |||
| The PSA Attester is a relatively straightforward embodiment of the | The PSA Attester is a relatively straightforward embodiment of the | |||
| RATS Attester with exactly one Attesting Environment and one or more | RATS Attester with exactly one Attesting Environment and one or more | |||
| Target Environments. | Target Environments. | |||
| The Attesting Environment is responsible for collecting the | The Attesting Environment is responsible for collecting the | |||
| information to be represented in PSA claims and to assemble them into | information to be represented in PSA claims and to assemble them into | |||
| Evidence. It is made of two cooperating components: | Evidence. The Attesting Environment is made of two cooperating | |||
| components: | ||||
| * The Main Bootloader, executing at boot-time, measures the Target | * Executing at boot-time, the Main Bootloader measures the Target | |||
| Environments - i.e., loaded software components, and all the | Environments (i.e., loaded software components and all the | |||
| relevant PSA RoT parameters -, and stores the recorded information | relevant PSA RoT parameters) and stores the recorded information | |||
| in secure memory (Main Boot State). See Figure 2. | in secure memory (Main Boot State). See Figure 2. | |||
| i-th Target Main Boot Main Boot | i-th Target Main Boot Main Boot | |||
| Environment Loader State | Environment Loader State | |||
| | | | | | | | | |||
| .--------|-------------|-------------|----. | .--------|-------------|-------------|----. | |||
| | loop i | | | | | | loop i | | | | | |||
| | | measure | | | | | | measure | | | | |||
| | |o------------+ | | | | |o------------+ | | | |||
| | | | write | | | | | | write | | | |||
| | | | measurement | | | | | | measurement | | | |||
| | | +------------>| | | | | +------------>| | | |||
| '--------|-------------|-------------|----' | '--------|-------------|-------------|----' | |||
| | | | | | | | | |||
| Figure 2: PSA Attester Boot Phase | Figure 2: PSA Attester Boot Phase | |||
| * The Initial Attestation Service (executing at run-time in SPE) | * The Initial Attestation Service (executing at run-time in SPE) | |||
| answers requests coming from NSPE via the PSA attestation API | answers requests coming from NSPE via the PSA attestation API | |||
| [PSA-API], collects and formats the claims from Main Boot State, | [PSA-API], collects and formats the claims from Main Boot State, | |||
| and uses the Initial Attestation Key (IAK) to sign them and | and uses the Initial Attestation Key (IAK) to sign them and | |||
| produce Evidence. See Figure 3. | produce Evidence. See Figure 3. | |||
| The word "Initial" in "Initial Attestation Service" refers to a | The word "Initial" in "Initial Attestation Service" refers to a | |||
| limited set of Target Environments, namely those representing the | limited set of Target Environments, namely those representing the | |||
| first, foundational stages establishing the chain of trust of a PSA | first foundational stages establishing the chain of trust of a PSA | |||
| device. Collecting measurements from Target Environments after this | device. Collecting measurements from Target Environments after this | |||
| initial phase is outside the scope of this specification. Extensions | initial phase is outside the scope of this specification. Extensions | |||
| of this specification could collect up-to-date measurements from | of this specification could collect up-to-date measurements from | |||
| additional Target Environments and define additional claims for use | additional Target Environments and define additional claims for use | |||
| within those environments, but these are, by definition, custom. | within those environments, but these are, by definition, custom. | |||
| Initial | Initial | |||
| Main Boot Attestation | Main Boot Attestation | |||
| State Service Verifier | State Service Verifier | |||
| | | | | | | | | |||
| skipping to change at page 8, line 4 ¶ | skipping to change at line 304 ¶ | |||
| | | i-th Target | | | | | | i-th Target | | | | |||
| | | Environment | | | | | | Environment | | | | |||
| | |<---------------+ | | | | |<---------------+ | | | |||
| '--------|----------------|-----------|----' | '--------|----------------|-----------|----' | |||
| | .---+ | | | .---+ | | |||
| | sign | | | | | sign | | | | |||
| | '-->| | | | '-->| | | |||
| | | PSA Token | | | | PSA Token | | |||
| | +---------->| | | +---------->| | |||
| | | | | | | | | |||
| Figure 3: PSA Attester Run-time Phase | ||||
| Figure 3: PSA Attester Run-Time Phase | ||||
| The Target Environments can be of four types, some of which may or | The Target Environments can be of four types, some of which may or | |||
| may not be present depending on the device architecture: | may not be present depending on the device architecture: | |||
| * (A subset of) the PSA RoT parameters, including Instance and | * (A subset of) the PSA RoT parameters, including Instance and | |||
| Implementation IDs. | Implementation IDs. | |||
| * The updateable PSA RoT, including the Secure Partition Manager and | * The updateable PSA RoT, including the Secure Partition Manager and | |||
| all PSA RoT services. | all PSA RoT services. | |||
| * The (optional) Application RoT, that is any application-defined | * The (optional) Application RoT, that is any application-defined | |||
| security service, possibly making use of the PSA RoT services. | security service possibly making use of the PSA RoT services. | |||
| * The loader of the application software running in NSPE. | * The loader of the application software running in NSPE. | |||
| A reference implementation of the PSA Attester is provided by [TF-M]. | A reference implementation of the PSA Attester is provided by [TF-M]. | |||
| 4. PSA Claims | 4. PSA Claims | |||
| This section describes the claims to be used in a PSA attestation | This section describes the claims to be used in a PSA attestation | |||
| token. A more comprehensive treatment of the EAT profile(s) defined | token. A more comprehensive treatment of the EAT profiles defined by | |||
| by PSA is found in Section 5. | PSA is found in Section 5. | |||
| CDDL [RFC8610] along with text descriptions is used to define each | CDDL [RFC8610] along with text descriptions is used to define each | |||
| claim independent of encoding. The following CDDL type(s) are reused | claim independent of encoding. The following CDDL types are reused | |||
| by different claims: | by different claims: | |||
| psa-hash-type = bytes .size 32 / bytes .size 48 / bytes .size 64 | psa-hash-type = bytes .size 32 / bytes .size 48 / bytes .size 64 | |||
| Two conventions are used to encode the Right-Hand-Side (RHS) of a | Two conventions are used to encode the Right-Hand-Side (RHS) of a | |||
| claim: the postfix -label is used for EAT-defined claims, and the | claim. The postfix -label is used for EAT-defined claims and the | |||
| postfix -key for PSA-originated claims. | postfix -key is used for PSA-originated claims. | |||
| 4.1. Caller Claims | 4.1. Caller Claims | |||
| 4.1.1. Nonce | 4.1.1. Nonce | |||
| The Nonce claim is used to carry the challenge provided by the caller | The EAT [EAT] "nonce" (claim key 10) is used to carry the challenge | |||
| to demonstrate freshness of the generated token. | provided by the caller to demonstrate freshness of the generated | |||
| token. | ||||
| The EAT [EAT] nonce (claim key 10) is used. Since the EAT nonce | Since the EAT nonce claim offers flexibility for different | |||
| claim offers flexiblity for different attestation technologies, this | attestation technologies, this specification applies the following | |||
| specifications applies the following constraints to the nonce-type: | constraints to the nonce-type: | |||
| * The length MUST be either 32, 48, or 64 bytes. | * The length MUST be either 32, 48, or 64 bytes. | |||
| * Only a single nonce value is conveyed. The array notation MUST | * Only a single nonce value is conveyed. The array notation MUST | |||
| NOT be used for encoding the nonce value. | NOT be used for encoding the nonce value. | |||
| This claim MUST be present in a PSA attestation token. | This claim MUST be present in a PSA attestation token. | |||
| psa-nonce = ( | psa-nonce = ( | |||
| nonce-label => psa-hash-type | nonce-label => psa-hash-type | |||
| skipping to change at page 9, line 42 ¶ | skipping to change at line 390 ¶ | |||
| psa-client-id-spe-type = 1..2147483647 | psa-client-id-spe-type = 1..2147483647 | |||
| psa-client-id-type = psa-client-id-nspe-type / psa-client-id-spe-type | psa-client-id-type = psa-client-id-nspe-type / psa-client-id-spe-type | |||
| psa-client-id = ( | psa-client-id = ( | |||
| psa-client-id-key => psa-client-id-type | psa-client-id-key => psa-client-id-type | |||
| ) | ) | |||
| 4.2. Target Identification Claims | 4.2. Target Identification Claims | |||
| 4.2.1. Instance ID | 4.2.1. Instance ID | |||
| The Instance ID claim represents the unique identifier of the Initial | The Instance ID claim represents the unique identifier of the IAK. | |||
| Attestation Key (IAK). The full definition is in [PSA-SM]. | The full definition is in [PSA-SM]. | |||
| The EAT ueid (claim key 256) of type RAND is used. The following | The EAT ueid (claim key 256) of type RAND is used. The following | |||
| constraints apply to the ueid-type: | constraints apply to the ueid-type: | |||
| * The length MUST be 33 bytes. | * The length MUST be 33 bytes. | |||
| * The first byte MUST be 0x01 (RAND) followed by the 32-byte unique | * The first byte MUST be 0x01 (RAND) followed by the 32-byte unique | |||
| identifier of the IAK. [PSA-API] provides implementation options | identifier of the IAK. [PSA-API] provides implementation options | |||
| for deriving the IAK unique identifier from the IAK itself. | for deriving the IAK unique identifier from the IAK itself. | |||
| skipping to change at page 10, line 47 ¶ | skipping to change at line 442 ¶ | |||
| psa-implementation-id-type = bytes .size 32 | psa-implementation-id-type = bytes .size 32 | |||
| psa-implementation-id = ( | psa-implementation-id = ( | |||
| psa-implementation-id-key => psa-implementation-id-type | psa-implementation-id-key => psa-implementation-id-type | |||
| ) | ) | |||
| 4.2.3. Certification Reference | 4.2.3. Certification Reference | |||
| The Certification Reference claim is used to link the class of chip | The Certification Reference claim is used to link the class of chip | |||
| and PSA RoT of the attesting device to an associated entry in the PSA | and PSA RoT of the attesting device to an associated entry in the PSA | |||
| Certification database. It MUST be represented as a string made of | Certification database. The Certification Reference claim MUST be | |||
| nineteen numeric characters: a thirteen-digit [EAN-13], followed by a | represented as a string made of nineteen numeric characters: a | |||
| dash "-", followed by the five-digit versioning information described | thirteen-digit EAN-13 [EAN-13] followed by a dash "-" and the five- | |||
| in [PSA-Cert-Guide]. | digit versioning information described in [PSA-Cert-Guide]. | |||
| Linking to the PSA Certification entry can still be achieved if this | Linking to the PSA Certification entry can still be achieved if this | |||
| claim is not present in the token by making an association at a | claim is not present in the token by making an association at a | |||
| Verifier between the reference value and other token claim values - | Verifier between the reference value and other token claim values, | |||
| for example, the Implementation ID. | for example, the Implementation ID. | |||
| This claim MAY be present in a PSA attestation token. | This claim MAY be present in a PSA attestation token. | |||
| psa-certification-reference-type = text .regexp "[0-9]{13}-[0-9]{5}" | psa-certification-reference-type = text .regexp "[0-9]{13}-[0-9]{5}" | |||
| psa-certification-reference = ( | psa-certification-reference = ( | |||
| ? psa-certification-reference-key => | ? psa-certification-reference-key => | |||
| psa-certification-reference-type | psa-certification-reference-type | |||
| ) | ) | |||
| skipping to change at page 14, line 7 ¶ | skipping to change at line 568 ¶ | |||
| | psa-lifecycle-recoverable-psa-rot-debug-type | Recoverable PSA | | | psa-lifecycle-recoverable-psa-rot-debug-type | Recoverable PSA | | |||
| | | RoT Debug | | | | RoT Debug | | |||
| +----------------------------------------------+-------------------+ | +----------------------------------------------+-------------------+ | |||
| | psa-lifecycle-decommissioned-type | Decommissioned | | | psa-lifecycle-decommissioned-type | Decommissioned | | |||
| +----------------------------------------------+-------------------+ | +----------------------------------------------+-------------------+ | |||
| Table 1: Lifecycle States Mappings | Table 1: Lifecycle States Mappings | |||
| 4.3.2. Boot Seed | 4.3.2. Boot Seed | |||
| The Boot Seed claim contains a value created at system boot time that | The "bootseed" claim contains a value created at system boot time | |||
| allows differentiation of attestation reports from different boot | that allows differentiation of attestation reports from different | |||
| sessions of a particular entity (i.e., a certain Instance ID). | boot sessions of a particular entity (i.e., a certain Instance ID). | |||
| The EAT bootseed (claim key 268) is used. The following constraints | The EAT "bootseed" (claim key 268) is used. The following | |||
| apply to the binary-data type: | constraints apply to the binary-data type: | |||
| * The length MUST be between 8 and 32 bytes. | * The length MUST be between 8 and 32 bytes. | |||
| This claim MAY be present in a PSA attestation token. | This claim MAY be present in a PSA attestation token. | |||
| psa-boot-seed-type = bytes .size (8..32) | psa-boot-seed-type = bytes .size (8..32) | |||
| psa-boot-seed = ( | psa-boot-seed = ( | |||
| boot-seed-label => psa-boot-seed-type | boot-seed-label => psa-boot-seed-type | |||
| ) | ) | |||
| skipping to change at page 14, line 38 ¶ | skipping to change at line 599 ¶ | |||
| The Software Components claim is a list of software components that | The Software Components claim is a list of software components that | |||
| includes all the software (both code and configuration) loaded by the | includes all the software (both code and configuration) loaded by the | |||
| PSA RoT. This claim MUST be included in attestation tokens produced | PSA RoT. This claim MUST be included in attestation tokens produced | |||
| by an implementation conformant with [PSA-SM]. | by an implementation conformant with [PSA-SM]. | |||
| Each entry in the Software Components list describes one software | Each entry in the Software Components list describes one software | |||
| component using the attributes described in the following | component using the attributes described in the following | |||
| subsections. Unless explicitly stated, the presence of an attribute | subsections. Unless explicitly stated, the presence of an attribute | |||
| is OPTIONAL. | is OPTIONAL. | |||
| Note that, as described in [RFC9334], a relying party will typically | Note that a Relying Party will typically see the result of the | |||
| see the result of the appraisal process from the Verifier in form of | appraisal process from the Verifier in form of an Attestation Result | |||
| an Attestation Result, rather than the PSA token from the attesting | rather than the PSA token from the attesting endpoint as described in | |||
| endpoint. Therefore, a relying party is not expected to understand | [RFC9334]. Therefore, a Relying Party is not expected to understand | |||
| the Software Components claim. Instead, it is for the Verifier to | the Software Components claim. Instead, it is for the Verifier to | |||
| check this claim against the available Reference Values and provide | check this claim against the available Reference Values and provide | |||
| an answer in form of an "high level" Attestation Result, which may or | an answer in form of a "high-level" Attestation Result, which may or | |||
| may not include the original Software Components claim. | may not include the original Software Components claim. | |||
| psa-software-component = { | psa-software-component = { | |||
| ? &(measurement-type: 1) => text | ? &(measurement-type: 1) => text | |||
| &(measurement-value: 2) => psa-hash-type | &(measurement-value: 2) => psa-hash-type | |||
| ? &(version: 4) => text | ? &(version: 4) => text | |||
| &(signer-id: 5) => psa-hash-type | &(signer-id: 5) => psa-hash-type | |||
| ? &(measurement-desc: 6) => text | ? &(measurement-desc: 6) => text | |||
| } | } | |||
| skipping to change at page 15, line 24 ¶ | skipping to change at line 627 ¶ | |||
| psa-software-components-key => [ + psa-software-component ] | psa-software-components-key => [ + psa-software-component ] | |||
| ) | ) | |||
| 4.4.1.1. Measurement Type | 4.4.1.1. Measurement Type | |||
| The Measurement Type attribute (key=1) is a short string representing | The Measurement Type attribute (key=1) is a short string representing | |||
| the role of this software component. | the role of this software component. | |||
| The following measurement types MAY be used for code measurements: | The following measurement types MAY be used for code measurements: | |||
| * "BL": a Boot Loader | "BL": a Boot Loader | |||
| * "PRoT": a component of the PSA Root of Trust | "PRoT": a component of the PSA Root of Trust | |||
| * "ARoT": a component of the Application Root of Trust | "ARoT": a component of the Application Root of Trust | |||
| * "App": a component of the NSPE application | "App": a component of the NSPE application | |||
| * "TS": a component of a Trusted Subsystem | "TS": a component of a Trusted Subsystem | |||
| The same labels with a "_CONFIG" postfix (e.g., "PRoT_CONFIG") MAY be | The same labels with a "_CONFIG" postfix (e.g., "PRoT_CONFIG") MAY be | |||
| used for configuration measurements. | used for configuration measurements. | |||
| This attribute SHOULD be present in a PSA software component unless | This attribute SHOULD be present in a PSA software component unless | |||
| there is a very good reason to leave it out - for example in networks | there is a very good reason to leave it out, for example, in networks | |||
| with severely constrained bandwidth, where sparing a few bytes really | with severely constrained bandwidth where sparing a few bytes really | |||
| makes a difference. | makes a difference. | |||
| 4.4.1.2. Measurement Value | 4.4.1.2. Measurement Value | |||
| The Measurement Value attribute (key=2) represents a hash of the | The Measurement Value attribute (key=2) represents a hash of the | |||
| invariant software component in memory at startup time. The value | invariant software component in memory at startup time. The value | |||
| MUST be a cryptographic hash of 256 bits or stronger. | MUST be a cryptographic hash of 256 bits or stronger. | |||
| This attribute MUST be present in a PSA software component. | This attribute MUST be present in a PSA software component. | |||
| 4.4.1.3. Version | 4.4.1.3. Version | |||
| The Version attribute (key=4) is the issued software version in the | The Version attribute (key=4) is the issued software version in the | |||
| skipping to change at page 16, line 29 ¶ | skipping to change at line 677 ¶ | |||
| This attribute MUST be present in a PSA software component to be | This attribute MUST be present in a PSA software component to be | |||
| compliant with [PSA-SM]. | compliant with [PSA-SM]. | |||
| 4.4.1.5. Measurement Description | 4.4.1.5. Measurement Description | |||
| The Measurement Description attribute (key=6) contains a string | The Measurement Description attribute (key=6) contains a string | |||
| identifying the hash algorithm used to compute the corresponding | identifying the hash algorithm used to compute the corresponding | |||
| Measurement Value. The string SHOULD be encoded according to "Hash | Measurement Value. The string SHOULD be encoded according to "Hash | |||
| Name String" in the "Named Information Hash Algorithm Registry" | Name String" in the "Named Information Hash Algorithm Registry" | |||
| [IANA.named-information]. | [NAMED-INFO]. | |||
| 4.5. Verification Claims | 4.5. Verification Claims | |||
| The following claims are part of the PSA token (and therefore still | The following claims, although part of Evidence, do not reflect the | |||
| Evidence) but aim to help receivers, including relying parties, with | internal state of the Attester. Instead, they aim to help receivers, | |||
| the processing of the received attestation Evidence. | including Relying Parties, in processing the received attestation | |||
| Evidence. | ||||
| 4.5.1. Verification Service Indicator | 4.5.1. Verification Service Indicator | |||
| The Verification Service Indicator claim is a hint used by a relying | The Verification Service Indicator claim is a hint used by a Relying | |||
| party to locate a verification service for the token. The value is a | Party to locate a verification service for the token. The value is a | |||
| text string that can be used to locate the service (typically, a URL | text string that can be used to locate the service (typically, a URL | |||
| specifying the address of the verification service API). A Relying | specifying the address of the verification service API). A Relying | |||
| Party may choose to ignore this claim in favor of other information. | Party may choose to ignore this claim in favor of other information. | |||
| psa-verification-service-indicator-type = text | psa-verification-service-indicator-type = text | |||
| psa-verification-service-indicator = ( | psa-verification-service-indicator = ( | |||
| ? psa-verification-service-indicator-key => | ? psa-verification-service-indicator-key => | |||
| psa-verification-service-indicator-type | psa-verification-service-indicator-type | |||
| ) | ) | |||
| It is assumed that the relying party is pre-configured with a list of | ||||
| It is assumed that the Relying Party is pre-configured with a list of | ||||
| trusted verification services and that the contents of this hint can | trusted verification services and that the contents of this hint can | |||
| be used to look up the correct one. Under no circumstances must the | be used to look up the correct one. Under no circumstances must the | |||
| relying party be tricked into contacting an unknown and untrusted | Relying Party be tricked into contacting an unknown and untrusted | |||
| verification service since the returned Attestation Result cannot be | verification service since the returned Attestation Result cannot be | |||
| relied on. | relied on. | |||
| Note: This hint requires the relying party to parse the content of | Note: This hint requires the Relying Party to parse the content of | |||
| the PSA token. Since the relying party may not be in possession of a | the PSA token. Since the Relying Party may not be in possession of a | |||
| trust anchor to verify the digital signature, it uses the hint in the | trust anchor to verify the digital signature, it uses the hint in the | |||
| same way as it would treat any other information provided by an | same way as it would treat any other information provided by an | |||
| external party, which includes attacker-provided data. | external party, which includes attacker-provided data. | |||
| 4.5.2. Profile Definition | 4.5.2. Profile Definition | |||
| The Profile Definition claim encodes the unique identifier that | The Profile Definition claim encodes the unique identifier that | |||
| corresponds to the EAT profile described by this document. This | corresponds to the EAT profile described by this document. This | |||
| allows a receiver to assign the intended semantics to the rest of the | allows a receiver to assign the intended semantics to the rest of the | |||
| claims found in the token. | claims found in the token. | |||
| The EAT eat_profile (claim key 265) is used. | The EAT eat_profile (claim key 265) is used. | |||
| The URI encoding MUST be used. | The URI encoding MUST be used. | |||
| The value MUST be tag:psacertified.org,2023:psa#tfm for the profile | The value MUST be tag:psacertified.org,2023:psa#tfm for the profile | |||
| defined in Section 5.2. | defined in Section 5.2. | |||
| Future profiles derived from the baseline PSA profile SHALL create | Future profiles derived from the baseline PSA profile SHALL create | |||
| their unique value, as described in Section 4.5.2.1. | their unique value as described in Section 4.5.2.1. | |||
| This claim MUST be present in a PSA attestation token. | This claim MUST be present in a PSA attestation token. | |||
| See Section 4.6, for considerations about backwards compatibility | See Section 4.6 for considerations about backwards compatibility with | |||
| with previous versions of the PSA attestation token format. | previous versions of the PSA attestation token format. | |||
| psa-profile-type = "tag:psacertified.org,2023:psa#tfm" | psa-profile-type = "tag:psacertified.org,2023:psa#tfm" | |||
| psa-profile = ( | psa-profile = ( | |||
| profile-label => psa-profile-type | profile-label => psa-profile-type | |||
| ) | ) | |||
| 4.5.2.1. URI Structure for the Derived Profile Identifiers | 4.5.2.1. URI Structure for the Derived Profile Identifiers | |||
| A new profile is associated with a unique string. | A new profile is associated with a unique string. | |||
| The string MUST use the URI fragment syntax defined in Section 3.5 of | The string MUST use the URI fragment syntax defined in Section 3.5 of | |||
| [RFC3986]. | [RFC3986]. | |||
| The string SHOULD be short to avoid unnecessary overhead. | The string SHOULD be short to avoid unnecessary overhead. | |||
| To avoid collisions, profile authors SHOULD communicate upfront their | To avoid collisions, profile authors SHOULD communicate their intent | |||
| intent to use a certain string using the enquiry form on the | upfront to use a certain string that uses the inquiry form on the | |||
| [PSACertified] website. | website [PSACertified]. | |||
| To derive the value to be used for the eat_profile claim, the string | To derive the value to be used for the eat_profile claim, the string | |||
| is added as a fragment to the tag:psacertified.org,2023:psa tag URI | is added as a fragment to the tag:psacertified.org,2023:psa tag URI | |||
| [RFC4151]. | [RFC4151]. | |||
| For example, an hypothetical profile using only COSE_Mac0 with the | For example, a hypothetical profile using only COSE_Mac0 with the AES | |||
| AES Message Authentication Code (AES-MAC) may decide to use the | Message Authentication Code (AES-MAC) may decide to use the string | |||
| string "aes-mac". The eat_profile value would then be: | "aes-mac". The eat_profile value would then be | |||
| tag:psacertified.org,2023:psa#aes-mac. | tag:psacertified.org,2023:psa#aes-mac. | |||
| 4.6. Backwards Compatibility Considerations | 4.6. Backwards Compatibility Considerations | |||
| A previous version of this specification [PSA-OLD], identified by the | An earlier draft of this document [PSA-OLD] identified by the | |||
| PSA_IOT_PROFILE_1 profile, used claim key values from the "private | PSA_IOT_PROFILE_1 profile, used claim key values from the "private | |||
| use range" of the CWT Claims registry. These claim keys have now | use range" of the CWT Claims registry. These claim keys have now | |||
| been deprecated. | been deprecated. | |||
| Table 2 provides the mappings between the deprecated and new claim | Table 2 provides the mappings between the deprecated and new claim | |||
| keys. | keys. | |||
| +==============+=================+=================================+ | +==============+=================+=================================+ | |||
| | |PSA_IOT_PROFILE_1|tag:psacertified.org,2023:psa#tfm| | | |PSA_IOT_PROFILE_1|tag:psacertified.org,2023:psa#tfm| | |||
| +==============+=================+=================================+ | +==============+=================+=================================+ | |||
| skipping to change at page 19, line 40 ¶ | skipping to change at line 809 ¶ | |||
| +--------------+-----------------+---------------------------------+ | +--------------+-----------------+---------------------------------+ | |||
| |Verification |-75010 |2400 | | |Verification |-75010 |2400 | | |||
| |Service | | | | |Service | | | | |||
| |Indicator | | | | |Indicator | | | | |||
| +--------------+-----------------+---------------------------------+ | +--------------+-----------------+---------------------------------+ | |||
| Table 2: Claim Key Mappings | Table 2: Claim Key Mappings | |||
| The new profile introduces three further changes: | The new profile introduces three further changes: | |||
| * the "Boot Seed" claim is now optional and of variable length (see | * The "bootseed" claim is now optional and of variable length (see | |||
| Section 4.3.2), | Section 4.3.2). | |||
| * the "No Software Measurements" claim has been retired, | * The "No Software Measurements" claim has been retired. | |||
| * the "Certification Reference" claim syntax changed from EAN-13 to | * The "Certification Reference" claim syntax changed from EAN-13 to | |||
| EAN-13+5 (see Section 4.2.3). | EAN-13+5 (see Section 4.2.3). | |||
| To simplify the transition to the token format described in this | To simplify the transition to the token format described in this | |||
| document it is RECOMMENDED that Verifiers accept tokens encoded | document, it is RECOMMENDED that Verifiers accept tokens encoded | |||
| according to the old profile (PSA_IOT_PROFILE_1) as well as to the | according to the old profile (PSA_IOT_PROFILE_1) as well as to the | |||
| profile defined in this document (tag:psacertified.org,2023:psa#tfm), | profile defined in this document (tag:psacertified.org,2023:psa#tfm), | |||
| at least for the time needed to their devices to upgrade. | at least for the time needed to their devices to upgrade. | |||
| 5. Profiles | 5. Profiles | |||
| This document defines a baseline with common requirements that all | This document defines a baseline with common requirements that all | |||
| PSA profiles must satisfy. (Note that this does not apply to | PSA profiles must satisfy. (Note that this does not apply to | |||
| [PSA-OLD].) | [PSA-OLD].) | |||
| This document also defines a "TFM" profile (Section 5.2) that builds | This document also defines a "TFM" profile (Section 5.2) that builds | |||
| on the baseline while constraining the use of COSE algorithms to | on the baseline while constraining the use of COSE algorithms to | |||
| improve interoperability between Attesters and Verifiers. | improve interoperability between Attesters and Verifiers. | |||
| Baseline and TFM are what EAT calls a "partial" and "full" profile, | Baseline and TFM are what the EAT calls a "partial" and "full" | |||
| respectively. See Section 6.2 of [EAT] for further details regarding | profile, respectively. See Section 6.2 of [EAT] for further details | |||
| profiles. | regarding profiles. | |||
| 5.1. Baseline Profile | 5.1. Baseline Profile | |||
| 5.1.1. Token Encoding and Signing | 5.1.1. Token Encoding and Signing | |||
| The PSA attestation token is encoded in CBOR [STD94] format. The | The PSA attestation token is encoded in CBOR [STD94] format. The | |||
| CBOR representation of a PSA token MUST be "valid" according to the | CBOR representation of a PSA token MUST be "valid" according to the | |||
| definition in Section 1.2 of [STD94]. Besides, only definite-length | definition in Section 1.2 of RFC 8949 [STD94]. Besides, only | |||
| string, arrays, and maps are allowed. Given that a PSA Attester is | definite-length string, arrays, and maps are allowed. Given that a | |||
| typically found in a constrained device, it MAY NOT emit CBOR | PSA Attester is typically found in a constrained device, it MAY NOT | |||
| preferred serializations (Section 4.1 of [STD94]). Therefore, the | emit CBOR preferred serializations (Section 4.1 of RFC 8949 [STD94]). | |||
| Verifier MUST be a variation-tolerant CBOR decoder. | Therefore, the Verifier MUST be a variation-tolerant CBOR decoder. | |||
| Cryptographic protection is obtained by wrapping the psa-token | Cryptographic protection is obtained by wrapping the psa-token claims | |||
| claims-set in a COSE Web Token (CWT) [RFC8392]. For asymmetric key | set in a COSE Web Token (CWT) [RFC8392]. For asymmetric key | |||
| algorithms, the signature structure MUST be a tagged (18) COSE_Sign1. | algorithms, the signature structure MUST be a tagged (18) COSE_Sign1. | |||
| For symmetric key algorithms, the signature structure MUST be a | For symmetric key algorithms, the signature structure MUST be a | |||
| tagged (17) COSE_Mac0. | tagged (17) COSE_Mac0. | |||
| Acknowledging the variety of markets, regulations and use cases in | Acknowledging the variety of markets, regulations, and use cases in | |||
| which the PSA attestation token can be used, the baseline profile | which the PSA attestation token can be used, the baseline profile | |||
| does not impose any strong requirement on the cryptographic | does not impose any strong requirement on the cryptographic | |||
| algorithms that need to be supported by Attesters and Verifiers. The | algorithms that need to be supported by Attesters and Verifiers. The | |||
| flexibility provided by the COSE format should be sufficient to deal | flexibility provided by the COSE format should be sufficient to deal | |||
| with the level of cryptographic agility needed to adapt to specific | with the level of cryptographic agility needed to adapt to specific | |||
| use cases. It is RECOMMENDED that commonly adopted algorithms are | use cases. It is RECOMMENDED that commonly adopted algorithms are | |||
| used, such as those discussed in [COSE-ALGS]. It is expected that | used, such as those discussed in [COSE-ALGS]. It is expected that | |||
| receivers will accept a wider range of algorithms, while Attesters | receivers will accept a wider range of algorithms while Attesters | |||
| would produce PSA tokens using only one such algorithm. | would produce PSA tokens using only one such algorithm. | |||
| The CWT CBOR tag (61) is not used. An application that needs to | The CWT CBOR tag (61) is not used. An application that needs to | |||
| exchange PSA attestation tokens can wrap the serialised COSE_Sign1 or | exchange PSA attestation tokens can wrap the serialized COSE_Sign1 or | |||
| COSE_Mac0 in the media type defined in Section 11.2 or the CoAP | COSE_Mac0 in the media type defined in Section 10.2 or the CoAP | |||
| Content-Format defined in Section 11.3. | Content-Format defined in Section 10.3. | |||
| A PSA token is always directly signed by the PSA RoT. Therefore, a | A PSA token is always directly signed by the PSA RoT. Therefore, a | |||
| PSA claims-set (Section 4) is never carried in a Detached EAT bundle | PSA-token claims set (Section 4) is never carried in a Detached EAT | |||
| (Section 5 of [EAT]). | bundle (Section 5 of [EAT]). | |||
| 5.1.2. Freshness Model | 5.1.2. Freshness Model | |||
| The PSA token supports the freshness models for attestation Evidence | The PSA token supports the freshness models for attestation Evidence | |||
| based on nonces and epoch handles (Section 10.2 and Section 10.3 of | based on nonces and epoch handles (Section 10.2 and Section 10.3 of | |||
| [RFC9334]) using the nonce claim to convey the nonce or epoch handle | [RFC9334]) using the "nonce" claim to convey the nonce or epoch | |||
| supplied by the Verifier. No further assumption on the specific | handle supplied by the Verifier. No further assumption on the | |||
| remote attestation protocol is made. | specific remote attestation protocol is made. | |||
| Note that use of epoch handles is constrained by the type | Note that use of epoch handles is constrained by the type | |||
| restrictions imposed by the eat_nonce syntax. For use in PSA tokens, | restrictions imposed by the eat_nonce syntax. For use in PSA tokens, | |||
| it must be possible to encode the epoch handle as an opaque binary | it must be possible to encode the epoch handle as an opaque binary | |||
| string between 8 and 64 octets. | string between 8 and 64 octets. | |||
| 5.1.3. Synopsis | 5.1.3. Synopsis | |||
| Table 3 presents a concise view of the requirements described in the | Table 3 presents a concise view of the requirements described in the | |||
| preceding sections. | preceding sections. | |||
| +==================+=============================================+ | +==================+=============================================+ | |||
| | Issue | Profile Definition | | | Issue | Profile Definition | | |||
| +==================+=============================================+ | +==================+=============================================+ | |||
| | CBOR/JSON | CBOR MUST be used | | | CBOR/JSON | CBOR MUST be used. | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| | CBOR Encoding | Definite length maps and arrays MUST be | | | CBOR Encoding | Definite length maps and arrays MUST be | | |||
| | | used | | | | used. | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| | CBOR Encoding | Definite length strings MUST be used | | | CBOR Encoding | Definite length strings MUST be used. | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| | CBOR | Variant serialization MAY be used | | | CBOR | Variant serialization MAY be used. | | |||
| | Serialization | | | | Serialization | | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| | COSE Protection | COSE_Sign1 and/or COSE_Mac0 MUST be used | | | COSE Protection | COSE_Sign1 and/or COSE_Mac0 MUST be used. | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| | Algorithms | [COSE-ALGS] SHOULD be used | | | Algorithms | [COSE-ALGS] SHOULD be used. | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| | Detached EAT | Detached EAT bundles MUST NOT be sent | | | Detached EAT | Detached EAT bundles MUST NOT be sent. | | |||
| | Bundle Usage | | | | Bundle Usage | | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| | Verification Key | Any identification method listed in | | | Verification Key | Any identification method listed in | | |||
| | Identification | Appendix F.1 of [EAT] | | | Identification | Appendix F.1 of [EAT]. | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| | Endorsements | See Section 8.2 | | | Endorsements | See Section 8.2. | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| | Freshness | nonce or epoch ID based | | | Freshness | Nonce or epoch ID-based. | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| | Claims | Those defined in Section 4. As per general | | | Claims | Those defined in Section 4. As per general | | |||
| | | EAT rules, the receiver MUST NOT error out | | | | EAT rules, the receiver MUST NOT error out | | |||
| | | on claims it does not understand. | | | | on claims it does not understand. | | |||
| +------------------+---------------------------------------------+ | +------------------+---------------------------------------------+ | |||
| Table 3: Baseline Profile | Table 3: Baseline Profile | |||
| 5.2. Profile TFM | 5.2. Profile TFM | |||
| This profile is appropriate for the code base implemented in [TF-M] | The TFM profile is appropriate for the code base implemented in | |||
| and should apply for most derivative implementations. If an | [TF-M] and should apply for most derivative implementations. If an | |||
| implementation changes the requirements described below then, to | implementation changes the requirements described below, then a | |||
| ensure interoperability, a different profile value should be used | different profile value should be used (Section 4.5.2.1) to ensure | |||
| (Section 4.5.2.1). This includes a restriction of the profile to a | interoperability. This includes a restriction of the profile to a | |||
| subset of the COSE Protection scheme requirements. | subset of the COSE Protection scheme requirements. | |||
| Table 4 presents a concise view of the requirements. | Table 4 presents a concise view of the requirements. | |||
| The value of the eat_profile MUST be | The value of the eat_profile MUST be | |||
| tag:psacertified.org,2023:psa#tfm. | tag:psacertified.org,2023:psa#tfm. | |||
| +================+=============================================+ | +================+==============================================+ | |||
| | Issue | Profile Definition | | | Issue | Profile Definition | | |||
| +================+=============================================+ | +================+==============================================+ | |||
| | CBOR/JSON | See Section 5.1 | | | CBOR/JSON | See Section 5.1. | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| | CBOR Encoding | See Section 5.1 | | | CBOR Encoding | See Section 5.1. | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| | CBOR Encoding | See Section 5.1 | | | CBOR Encoding | See Section 5.1. | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| | CBOR | See Section 5.1 | | | CBOR | See Section 5.1. | | |||
| | Serialization | | | | Serialization | | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| | COSE | COSE_Sign1 or COSE_Mac0 MUST be used | | | COSE | COSE_Sign1 or COSE_Mac0 MUST be used. | | |||
| | Protection | | | | Protection | | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| | Algorithms | The receiver MUST accept ES256, ES384 and | | | Algorithms | The receiver MUST accept ES256, ES384, and | | |||
| | | ES512 with COSE_Sign1 and HMAC256/256, | | | | ES512 with COSE_Sign1 and HMAC256/256, | | |||
| | | HMAC384/384 and HMAC512/512 with COSE_Mac0; | | | | HMAC384/384, and HMAC512/512 with COSE_Mac0; | | |||
| | | the sender MUST send one of these | | | | the sender MUST send one of these. | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| | Detached EAT | See Section 5.1 | | | Detached EAT | See Section 5.1. | | |||
| | Bundle Usage | | | | Bundle Usage | | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| | Verification | Claim-Based Key Identification | | | Verification | Claim-Based Key Identification | | |||
| | Key | (Appendix F.1.4 of [EAT]) using Instance ID | | | Key | (Appendix F.1.4 of [EAT]) using Instance ID. | | |||
| | Identification | | | | Identification | | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| | Endorsements | See Section 8.2 | | | Endorsements | See Section 8.2. | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| | Freshness | See Section 5.1 | | | Freshness | See Section 5.1. | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| | Claims | See Section 5.1 | | | Claims | See Section 5.1. | | |||
| +----------------+---------------------------------------------+ | +----------------+----------------------------------------------+ | |||
| Table 4: TF-M Profile | Table 4: TF-M Profile | |||
| 6. Collated CDDL | 6. Collated CDDL | |||
| psa-token = { | psa-token = { | |||
| psa-nonce | psa-nonce | |||
| psa-instance-id | psa-instance-id | |||
| psa-verification-service-indicator | psa-verification-service-indicator | |||
| psa-profile | psa-profile | |||
| psa-implementation-id | psa-implementation-id | |||
| psa-client-id | psa-client-id | |||
| skipping to change at page 26, line 4 ¶ | skipping to change at line 1084 ¶ | |||
| ? &(version: 4) => text | ? &(version: 4) => text | |||
| &(signer-id: 5) => psa-hash-type | &(signer-id: 5) => psa-hash-type | |||
| ? &(measurement-desc: 6) => text | ? &(measurement-desc: 6) => text | |||
| } | } | |||
| psa-software-components = ( | psa-software-components = ( | |||
| psa-software-components-key => [ + psa-software-component ] | psa-software-components-key => [ + psa-software-component ] | |||
| ) | ) | |||
| psa-verification-service-indicator-type = text | psa-verification-service-indicator-type = text | |||
| psa-verification-service-indicator = ( | psa-verification-service-indicator = ( | |||
| ? psa-verification-service-indicator-key => | ? psa-verification-service-indicator-key => | |||
| psa-verification-service-indicator-type | psa-verification-service-indicator-type | |||
| ) | ) | |||
| 7. Scalability Considerations | 7. Scalability Considerations | |||
| IAKs (see Section 3) can be either raw public keys or certified | IAKs (see Section 3) can be either raw public keys or certified | |||
| public keys. | public keys. | |||
| Certified public keys require the manufacturer to run the | Certified public keys require the manufacturer to run the | |||
| certification authority (CA) that issues X.509 certs for the IAKs. | certification authority (CA) that issues X.509 certificates for the | |||
| (Note that operating a CA is a complex and expensive task that may be | IAKs. (Note that operating a CA is a complex and expensive task that | |||
| unaffordable to certain manufacturers.) | may be unaffordable to certain manufacturers.) | |||
| Using certified public keys offers better scalability properties when | Using certified public keys offers better scalability properties when | |||
| compared to using raw public keys, namely: | compared to using raw public keys, namely: | |||
| * storage requirements for the Verifier are minimised - the same | * Storage requirements for the Verifier are minimized; the same | |||
| manufacturer's trust anchor is used for any number of devices, | manufacturer's trust anchor is used for any number of devices. | |||
| * the provisioning model is simpler and more robust since there is | * The provisioning model is simpler and more robust since there is | |||
| no need to notify the Verifier about each newly manufactured | no need to notify the Verifier about each newly manufactured | |||
| device, | device. | |||
| Furthermore, existing and well-understood revocation mechanisms can | Furthermore, existing and well-understood revocation mechanisms can | |||
| be readily used. | be readily used. | |||
| The IAK's X.509 cert can be inlined in the PSA token using the | The IAK's X.509 certificates can be inlined in the PSA token using | |||
| x5chain COSE header parameter [COSE-X509] at the cost of an increase | the x5chain COSE header parameter [COSE-X509] at the cost of an | |||
| in the PSA token size. Section 4.4 of [TLS12-IoT] and Section 15 of | increase in the PSA token size. Section 4.4 of [TLS12-IoT] and | |||
| [TLS13-IoT] provide guidance for profiling X.509 certs used in IoT | Section 15 of [TLS13-IoT] provide guidance for profiling X.509 | |||
| deployments. Note that the exact split between pre-provisioned and | certificates used in IoT deployments. Note that the exact split | |||
| inlined certs may vary depending on the specific deployment. In that | between pre-provisioned and inlined certificates may vary depending | |||
| respect, x5chain is quite flexible: it can contain the end-entity | on the specific deployment. In that respect, x5chain is quite | |||
| (EE) cert only, the EE and a partial chain, or the EE and the full | flexible. It can contain the end entity (EE) certification only, the | |||
| chain up to the trust anchor (see Section 2 of [COSE-X509] for the | EE and a partial chain, or the EE and the full chain up to the trust | |||
| details). Constraints around network bandwidth and computing | anchor (see Section 2 of [COSE-X509] for the details). Constraints | |||
| resources available to endpoints, such as network buffers, may | around network bandwidth and computing resources available to | |||
| dictate a reasonable split point. | endpoints, such as network buffers, may dictate a reasonable split | |||
| point. | ||||
| 8. PSA Token Verification | 8. PSA Token Verification | |||
| To verify the token, the primary need is to check correct encoding | To verify the token, the primary need is to check correct encoding | |||
| and signing as detailed in Section 5.1.1. The key used for | and signing as detailed in Section 5.1.1. The key used for | |||
| verification is either supplied to the Verifier by an authorized | verification is either supplied to the Verifier by an authorized | |||
| Endorser along with the corresponding Attester's Instance ID or | Endorser along with the corresponding Attester's Instance ID or | |||
| inlined in the token using the x5chain header parameter as described | inlined in the token using the x5chain header parameter as described | |||
| in Section 7. If the IAK is a raw public key, the Instance ID claim | in Section 7. If the IAK is a raw public key and the Instance ID | |||
| is used to assist in locating the key used to verify the signature | claim is used to assist in locating the key used to verify the | |||
| covering the CWT token. If the IAK is a certified public key, X.509 | signature covering the CWT token. If the IAK is a certified public | |||
| path construction and validation (Section 6 of [X509]) up to a | key, X.509 path construction and validation (Section 6 of [X509]) up | |||
| trusted CA MUST be successful before the key is used to verify the | to a trusted CA MUST be successful before the key is used to verify | |||
| token signature. This also includes revocation checking. | the token signature. This also includes revocation checking. | |||
| In addition, the Verifier will typically operate a policy where | The Verifier typically has a policy where it compares some claims in | |||
| values of some of the claims in this profile can be compared to | this profile to reference values registered with it for a given | |||
| reference values, registered with the Verifier for a given | deployment. This verification process serves to confirm that the | |||
| deployment, in order to confirm that the device is endorsed by the | device is endorsed by the manufacturer supply chain. The policy may | |||
| manufacturer supply chain. The policy may require that the relevant | require that the relevant claims must have a match to a registered | |||
| claims must have a match to a registered reference value. All claims | reference value. All claims may be worthy of additional appraisal. | |||
| may be worthy of additional appraisal. It is likely that most | It is likely that most deployments would include a policy with | |||
| deployments would include a policy with appraisal for the following | appraisal for the following claims: | |||
| claims: | ||||
| * Implementation ID - the value of the Implementation ID can be used | * Implementation ID: The value of the Implementation ID can be used | |||
| to identify the verification requirements of the deployment. | to identify the verification requirements of the deployment. | |||
| * Software Component, Measurement Value - this value can uniquely | * Software Component, Measurement Value: This value can uniquely | |||
| identify a firmware release from the supply chain. In some cases, | identify a firmware release from the supply chain. In some cases, | |||
| a Verifier may maintain a record for a series of firmware | a Verifier may maintain a record for a series of firmware releases | |||
| releases, being patches to an original baseline release. A | being patches to an original baseline release. A verification | |||
| verification policy may then allow this value to match any point | policy may then allow this value to match any point on that | |||
| on that release sequence or expect some minimum level of maturity | release sequence or expect some minimum level of maturity related | |||
| related to the sequence. | to the sequence. | |||
| * Software Component, Signer ID - where present in a deployment, | * Software Component, Signer ID: Where present in a deployment, this | |||
| this could allow a Verifier to operate a more general policy than | could allow a Verifier to operate a more general policy than that | |||
| that for Measurement Value as above, by allowing a token to | for Measurement Value as above by allowing a token to contain any | |||
| contain any firmware entries signed by a known Signer ID, without | firmware entries signed by a known Signer ID without checking for | |||
| checking for a uniquely registered version. | a uniquely registered version. | |||
| * Certification Reference - if present, this value could be used as | * Certification Reference: If present, this value could be used as a | |||
| a hint to locate security certification information associated | hint to locate security certification information associated with | |||
| with the attesting device. An example could be a reference to a | the attesting device. An example could be a reference to a | |||
| [PSACertified] certificate. | [PSACertified] certificate. | |||
| 8.1. AR4SI Trustworthiness Claims Mappings | 8.1. AR4SI Trustworthiness Claims Mappings | |||
| [RATS-AR4SI] defines an information model that Verifiers can employ | [RATS-AR4SI] defines an information model that Verifiers can employ | |||
| to produce Attestation Results. AR4SI provides a set of standardized | to produce Attestation Results. AR4SI provides a set of standardized | |||
| appraisal categories and tiers that greatly simplifies the task of | appraisal categories and tiers that greatly simplifies the task of | |||
| writing Relying Party policies in multi-attester environments. | writing Relying Party policies in Multi-Attester environments. | |||
| The contents of Table 5 are intended as guidance for implementing a | The contents of Table 5 are intended as guidance for implementing a | |||
| PSA Verifier that computes its results using AR4SI. The table | PSA Verifier that computes its results using AR4SI. The table | |||
| describes which PSA Evidence claims (if any) are related to which | describes which PSA Evidence claims (if any) are related to which | |||
| AR4SI trustworthiness claim, and therefore what the Verifier must | AR4SI trustworthiness claim, and therefore what the Verifier must | |||
| consider when deciding if and how to appraise a certain feature | consider when deciding if and how to appraise a certain feature | |||
| associated with the PSA Attester. | associated with the PSA Attester. | |||
| +===================+=============================================+ | +=====================+===========================================+ | |||
| | Trustworthiness | Related PSA claims | | | Trustworthiness | Related PSA claims | | |||
| | Vector claims | | | | Vector claims | | | |||
| +===================+=============================================+ | +=====================+===========================================+ | |||
| | configuration | Software Components (Section 4.4.1) | | | "configuration" | Software Components (Section 4.4.1) | | |||
| +-------------------+---------------------------------------------+ | +---------------------+-------------------------------------------+ | |||
| | executables | ditto | | | "executables" | ditto | | |||
| +-------------------+---------------------------------------------+ | +---------------------+-------------------------------------------+ | |||
| | file-system | N/A | | | "file-system" | N/A | | |||
| +-------------------+---------------------------------------------+ | +---------------------+-------------------------------------------+ | |||
| | hardware | Implementation ID (Section 4.2.2) | | | "hardware" | Implementation ID (Section 4.2.2) | | |||
| +-------------------+---------------------------------------------+ | +---------------------+-------------------------------------------+ | |||
| | instance-identity | Instance ID (Section 4.2.1). The Security | | | "instance-identity" | Instance ID (Section 4.2.1). The | | |||
| | | Lifecycle (Section 4.3.1) can also impact | | | | Security Lifecycle (Section 4.3.1) can | | |||
| | | the derived identity. | | | | also impact the derived identity. | | |||
| +-------------------+---------------------------------------------+ | +---------------------+-------------------------------------------+ | |||
| | runtime-opaque | Indirectly derived from executables, | | | "runtime-opaque" | Indirectly derived from "executables", | | |||
| | | hardware, and instance-identity. The | | | | "hardware", and "instance-identity". The | | |||
| | | Security Lifecycle (Section 4.3.1) can also | | | | Security Lifecycle (Section 4.3.1) can | | |||
| | | be relevant: for example, any debug state | | | | also be relevant, e.g., any debug state | | |||
| | | will expose otherwise protected memory. | | | | will expose otherwise protected memory. | | |||
| +-------------------+---------------------------------------------+ | +---------------------+-------------------------------------------+ | |||
| | sourced-data | N/A | | | "sourced-data" | N/A | | |||
| +-------------------+---------------------------------------------+ | +---------------------+-------------------------------------------+ | |||
| | storage-opaque | Indirectly derived from executables, | | | "storage-opaque" | Indirectly derived from "executables", | | |||
| | | hardware, and instance-identity. | | | | "hardware", and "instance-identity". | | |||
| +-------------------+---------------------------------------------+ | +---------------------+-------------------------------------------+ | |||
| Table 5: AR4SI Claims mappings | Table 5: AR4SI Claims mappings | |||
| This document does not prescribe what value must be chosen based on | This document does not prescribe what value must be chosen based on | |||
| each possible situation: when assigning specific Trustworthiness | each possible situation. When assigning specific Trustworthiness | |||
| Claim values, an implementation is expected to follow the algorithm | Claim values, an implementation is expected to follow the algorithm | |||
| described in Section 2.3.3 of [RATS-AR4SI]. | described in Section 2.3.3 of [RATS-AR4SI]. | |||
| 8.2. Endorsements, Reference Values and Verification Key Material | 8.2. Endorsements, Reference Values, and Verification Key Material | |||
| [PSA-Endorsements] defines a protocol based on the [RATS-CoRIM] data | [PSA-Endorsements] defines a protocol based on the [RATS-CoRIM] data | |||
| model that can be used to convey PSA Endorsements, Reference Values | model that can be used to convey PSA Endorsements, Reference Values, | |||
| and verification key material to the Verifier. | and verification key material to the Verifier. | |||
| 9. Implementation Status | 9. Security and Privacy Considerations | |||
| // RFC Editor: please remove this section before pubblication. | ||||
| Implementations of this specification are provided by the Trusted | ||||
| Firmware-M project [TF-M], [IAT-VERIFIER], the Veraison project | ||||
| [Veraison], and the Xclaim [Xclaim] library. All four | ||||
| implementations are released as open-source software. | ||||
| 10. Security and Privacy Considerations | ||||
| This specification re-uses the EAT specification and therefore the | This specification reuses the EAT specification and therefore the CWT | |||
| CWT specification. Hence, the security and privacy considerations of | specification. Hence, the security and privacy considerations of | |||
| those specifications apply here as well. | those specifications apply here as well. | |||
| Since CWTs offer different ways to protect the token, this | Since CWTs offer different ways to protect the token, this | |||
| specification profiles those options and allows signatures using | specification profiles those options and allows signatures using | |||
| public key cryptography as well as message authentication codes | public key cryptography as well as message authentication codes | |||
| (MACs). COSE_Sign1 is used for digital signatures and COSE_Mac0 for | (MACs). COSE_Sign1 is used for digital signatures and COSE_Mac0 for | |||
| MACs, as defined in the COSE specification [STD96]. Note, however, | MACs as defined in the COSE specification [STD96]. Note, however, | |||
| that the use of MAC authentication is NOT RECOMMENDED due to the | that the use of MAC authentication is NOT RECOMMENDED due to the | |||
| associated infrastructure costs for key management and protocol | associated infrastructure costs for key management and protocol | |||
| complexities. | complexities. | |||
| A PSA Attester MUST NOT provide Evidence to an untrusted challenger, | A PSA Attester MUST NOT provide Evidence to an untrusted challenger, | |||
| as it may allow attackers to interpose and trick the Verifier into | as it may allow attackers to interpose and trick the Verifier into | |||
| believing the attacker is a legitimate Attester. This is especially | believing the attacker is a legitimate Attester. This is especially | |||
| relevant to protocols that use PSA attestation tokens to authenticate | relevant to protocols that use PSA attestation tokens to authenticate | |||
| the attester to a relying party. | the attester to a Relying Party. | |||
| Attestation tokens contain information that may be unique to a device | ||||
| and therefore they may allow to single out an individual device for | ||||
| tracking purposes. Deployments that have privacy requirements must | ||||
| take appropriate measures to ensure that the token is only used to | ||||
| provision anonymous/pseudonym keys. | ||||
| 11. IANA Considerations | ||||
| 11.1. CBOR Web Token Claims Registration | ||||
| IANA is requested to make permanent the following claims that have | ||||
| been assigned via early allocation in the "CBOR Web Token (CWT) | ||||
| Claims" registry [IANA-CWT]. | ||||
| 11.1.1. Client ID Claim | ||||
| * Claim Name: psa-client-id | ||||
| * Claim Description: PSA Client ID | ||||
| * JWT Claim Name: N/A | ||||
| * Claim Key: 2394 | ||||
| * Claim Value Type(s): signed integer | ||||
| * Change Controller: Hannes Tschofenig | ||||
| * Specification Document(s): Section 4.1.2 of RFCthis | ||||
| 11.1.2. Security Lifecycle Claim | ||||
| * Claim Name: psa-security-lifecycle | ||||
| * Claim Description: PSA Security Lifecycle | ||||
| * JWT Claim Name: N/A | ||||
| * Claim Key: 2395 | ||||
| * Claim Value Type(s): unsigned integer | ||||
| * Change Controller: Hannes Tschofenig | ||||
| * Specification Document(s): Section 4.3.1 of RFCthis | ||||
| 11.1.3. Implementation ID Claim | ||||
| * Claim Name: psa-implementation-id | ||||
| * Claim Description: PSA Implementation ID | ||||
| * JWT Claim Name: N/A | ||||
| * Claim Key: 2396 | ||||
| * Claim Value Type(s): byte string | ||||
| * Change Controller: Hannes Tschofenig | ||||
| * Specification Document(s): Section 4.2.2 of RFCthis | ||||
| 11.1.4. Certification Reference Claim | ||||
| * Claim Name: psa-certification-reference | ||||
| * Claim Description: PSA Certification Reference | ||||
| * JWT Claim Name: N/A | ||||
| * Claim Key: 2398 | ||||
| * Claim Value Type(s): text string | ||||
| * Change Controller: Hannes Tschofenig | ||||
| * Specification Document(s): Section 4.2.3 of RFCthis | Attestation tokens contain information that may be unique to a | |||
| device. Therefore, they may allow to single out an individual device | ||||
| for tracking purposes. Deployments that have privacy requirements | ||||
| must take appropriate measures to ensure that the token is only used | ||||
| to provision anonymous/pseudonym keys. | ||||
| 11.1.5. Software Components Claim | 10. IANA Considerations | |||
| * Claim Name: psa-software-components | 10.1. CBOR Web Token Claims Registration | |||
| * Claim Description: PSA Software Components | IANA has registered the following claims in the "CBOR Web Token (CWT) | |||
| Claims" registry [CWT]. | ||||
| * JWT Claim Name: N/A | 10.1.1. Client ID Claim | |||
| * Claim Key: 2399 | Claim Name: psa-client-id | |||
| Claim Description: PSA Client ID | ||||
| JWT Claim Name: N/A | ||||
| Claim Key: 2394 | ||||
| Claim Value Type(s): signed integer | ||||
| Change Controller: Hannes Tschofenig | ||||
| Specification Document(s): Section 4.1.2 of RFC 9783 | ||||
| * Claim Value Type(s): array | 10.1.2. Security Lifecycle Claim | |||
| * Change Controller: Hannes Tschofenig | Claim Name: psa-security-lifecycle | |||
| Claim Description: PSA Security Lifecycle | ||||
| JWT Claim Name: N/A | ||||
| Claim Key: 2395 | ||||
| Claim Value Type(s): unsigned integer | ||||
| Change Controller: Hannes Tschofenig | ||||
| Specification Document(s): Section 4.3.1 of RFC 9783 | ||||
| * Specification Document(s): Section 4.4.1 of RFCthis | 10.1.3. Implementation ID Claim | |||
| 11.1.6. Verification Service Indicator Claim | Claim Name: psa-implementation-id | |||
| Claim Description: PSA Implementation ID | ||||
| JWT Claim Name: N/A | ||||
| Claim Key: 2396 | ||||
| Claim Value Type(s): byte string | ||||
| Change Controller: Hannes Tschofenig | ||||
| Specification Document(s): Section 4.2.2 of RFC 9783 | ||||
| * Claim Name: psa-verification-service-indicator | 10.1.4. Certification Reference Claim | |||
| * Claim Description: PSA Verification Service Indicator | Claim Name: psa-certification-reference | |||
| Claim Description: PSA Certification Reference | ||||
| JWT Claim Name: N/A | ||||
| Claim Key: 2398 | ||||
| Claim Value Type(s): text string | ||||
| Change Controller: Hannes Tschofenig | ||||
| Specification Document(s): Section 4.2.3 of RFC 9783 | ||||
| * JWT Claim Name: N/A | 10.1.5. Software Components Claim | |||
| * Claim Key: 2400 | Claim Name: psa-software-components | |||
| * Claim Value Type(s): text string | Claim Description: PSA Software Components | |||
| JWT Claim Name: N/A | ||||
| Claim Key: 2399 | ||||
| Claim Value Type(s): array | ||||
| Change Controller: Hannes Tschofenig | ||||
| Specification Document(s): Section 4.4.1 of RFC 9783 | ||||
| * Change Controller: Hannes Tschofenig | 10.1.6. Verification Service Indicator Claim | |||
| * Specification Document(s): Section 4.5.1 of RFCthis | Claim Name: psa-verification-service-indicator | |||
| Claim Description: PSA Verification Service Indicator | ||||
| JWT Claim Name: N/A | ||||
| Claim Key: 2400 | ||||
| Claim Value Type(s): text string | ||||
| Change Controller: Hannes Tschofenig | ||||
| Specification Document(s): Section 4.5.1 of RFC 9783 | ||||
| 11.2. Media Types | 10.2. Media Types | |||
| No new media type registration is requested. To indicate that the | This document does not register any new media types. To indicate | |||
| transmitted content is a PSA attestation token, applications can use | that the transmitted content is a PSA attestation token, applications | |||
| the application/eat+cwt media type defined in [EAT-MEDIATYPES] with | can use the application/eat+cwt media type defined in | |||
| the eat_profile parameter set to tag:psacertified.org,2023:psa#tfm | [EAT-MEDIATYPES] with the eat_profile parameter set to | |||
| (or tag:psacertified.org,2019:psa#legacy if the token is encoded | tag:psacertified.org,2023:psa#tfm (or | |||
| according to the old profile, see Section 4.6). | tag:psacertified.org,2019:psa#legacy if the token is encoded | |||
| according to the old profile; see Section 4.6). | ||||
| 11.3. CoAP Content-Formats Registration | 10.3. CoAP Content-Formats Registration | |||
| IANA is requested to register two CoAP Content-Format IDs in the | IANA has registered two CoAP Content-Format IDs in the First Come | |||
| "CoAP Content-Formats" registry [IANA-CoAP-Content-Formats]: | First Served range of the "CoAP Content-Formats" registry | |||
| [Content-Formats]: | ||||
| * One for the application/eat+cwt media type with the eat_profile | * One for the application/eat+cwt media type with the eat_profile | |||
| parameter equal to tag:psacertified.org,2023:psa#tfm | parameter equal to tag:psacertified.org,2023:psa#tfm. | |||
| * Another for the application/eat+cwt media type with the | * Another for the application/eat+cwt media type with the | |||
| eat_profile parameter equal to | eat_profile parameter equal to | |||
| tag:psacertified.org,2019:psa#legacy | tag:psacertified.org,2019:psa#legacy. | |||
| The Content-Formats should be allocated from the First Come First | ||||
| Served range (10000-64999). | ||||
| 11.3.1. Registry Contents | 10.3.1. Registry Contents | |||
| * Media Type: application/eat+cwt; | Media Type: application/eat+cwt; | |||
| eat_profile="tag:psacertified.org,2023:psa#tfm" | eat_profile="tag:psacertified.org,2023:psa#tfm" | |||
| Encoding: - | ||||
| ID: 10003 | ||||
| Reference: RFC 9783 | ||||
| * Encoding: - | Media Type: application/eat+cwt; | |||
| * Id: [[To-be-assigned by IANA]] | ||||
| * Reference: RFCthis | ||||
| * Media Type: application/eat+cwt; | ||||
| eat_profile="tag:psacertified.org,2019:psa#legacy" | eat_profile="tag:psacertified.org,2019:psa#legacy" | |||
| Encoding: - | ||||
| ID: 10004 | ||||
| Reference: RFC 9783 | ||||
| * Encoding: - | 11. References | |||
| * Id: [[To-be-assigned by IANA]] | ||||
| * Reference: RFCthis | ||||
| 12. References | ||||
| 12.1. Normative References | 11.1. Normative References | |||
| [COSE-ALGS] | [COSE-ALGS] | |||
| Schaad, J., "CBOR Object Signing and Encryption (COSE): | 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>. | |||
| [EAN-13] GS1, "International Article Number - EAN/UPC barcodes", | [CWT] IANA, "CBOR Web Token (CWT) Claims", | |||
| 2019, <https://www.gs1.org/standards/barcodes/ean-upc>. | <https://www.iana.org/assignments/cwt>. | |||
| [EAN-13] GS1, "EAN/UPC barcodes", | ||||
| <https://www.gs1.org/standards/barcodes/ean-upc>. | ||||
| [EAT] Lundblade, L., Mandyam, G., O'Donoghue, J., and C. | [EAT] Lundblade, L., Mandyam, G., O'Donoghue, J., and C. | |||
| Wallace, "The Entity Attestation Token (EAT)", Work in | Wallace, "The Entity Attestation Token (EAT)", RFC 9711, | |||
| Progress, Internet-Draft, draft-ietf-rats-eat-31, 6 | DOI 10.17487/RFC9711, April 2025, | |||
| September 2024, <https://datatracker.ietf.org/doc/html/ | <https://www.rfc-editor.org/info/rfc9711>. | |||
| draft-ietf-rats-eat-31>. | ||||
| [EAT-MEDIATYPES] | [EAT-MEDIATYPES] | |||
| Lundblade, L., Birkholz, H., and T. Fossati, "EAT Media | Lundblade, L., Birkholz, H., and T. Fossati, "Entity | |||
| Types", Work in Progress, Internet-Draft, draft-ietf-rats- | Attestation Token (EAT) Media Types", RFC 9782, | |||
| eat-media-type-09, 21 August 2024, | DOI 10.17487/RFC9782, May 2025, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-rats- | <https://www.rfc-editor.org/info/rfc9782>. | |||
| eat-media-type-09>. | ||||
| [IANA-CWT] IANA, "CBOR Web Token (CWT) Claims", 2022, | ||||
| <https://www.iana.org/assignments/cwt/cwt.xhtml#claims- | ||||
| registry>. | ||||
| [IANA.named-information] | [NAMED-INFO] | |||
| IANA, "Named Information", | IANA, "Named Information Hash Algorithm Registry", | |||
| <https://www.iana.org/assignments/named-information>. | <https://www.iana.org/assignments/named-information>. | |||
| [PSA-Cert-Guide] | [PSA-Cert-Guide] | |||
| PSA Certified, "PSA Certified Level 2 Step by Step Guide | PSA Certified, "PSA Certified Level 2 Step by Step Guide | |||
| Version 1.1", 2020, | Version 1.1", April 2020, | |||
| <https://www.psacertified.org/app/uploads/2020/07/ | <https://www.psacertified.org/app/uploads/2020/07/ | |||
| JSADEN011-PSA_Certified_Level_2_Step-by-Step- | JSADEN011-PSA_Certified_Level_2_Step-by-Step- | |||
| 1.1-20200403.pdf>. | 1.1-20200403.pdf>. | |||
| [PSA-FF] Arm, "Platform Security Architecture Firmware Framework | [PSA-FF] Arm, "Arm PSA Firmware Framework 1.0", | |||
| 1.0 (PSA-FF)", February 2019, | ||||
| <https://developer.arm.com/documentation/den0063/a>. | <https://developer.arm.com/documentation/den0063/a>. | |||
| [PSA-SM] Arm, "Platform Security Model 1.1", December 2021, | [PSA-SM] Arm, "Platform Security Model 1.1", December 2021, | |||
| <https://www.psacertified.org/app/uploads/2021/12/ | <https://www.psacertified.org/app/uploads/2021/12/ | |||
| JSADEN014_PSA_Certified_SM_V1.1_BET0.pdf>. | JSADEN014_PSA_Certified_SM_V1.1_BET0.pdf>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
| Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
| RFC 3986, DOI 10.17487/RFC3986, January 2005, | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
| <https://www.rfc-editor.org/rfc/rfc3986>. | <https://www.rfc-editor.org/info/rfc3986>. | |||
| [RFC4151] Kindberg, T. and S. Hawke, "The 'tag' URI Scheme", | [RFC4151] Kindberg, T. and S. Hawke, "The 'tag' URI Scheme", | |||
| RFC 4151, DOI 10.17487/RFC4151, October 2005, | RFC 4151, DOI 10.17487/RFC4151, October 2005, | |||
| <https://www.rfc-editor.org/rfc/rfc4151>. | <https://www.rfc-editor.org/info/rfc4151>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/rfc/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>. | |||
| [STD94] Bormann, C. and P. Hoffman, "Concise Binary Object | [STD94] Internet Standard 94, | |||
| <https://www.rfc-editor.org/info/std94>. | ||||
| At the time of writing, this STD comprises the following: | ||||
| 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/rfc/rfc8949>. | <https://www.rfc-editor.org/info/rfc8949>. | |||
| [STD96] Schaad, J., "CBOR Object Signing and Encryption (COSE): | [STD96] Internet Standard 96, | |||
| <https://www.rfc-editor.org/info/std96>. | ||||
| At the time of writing, this STD comprises the following: | ||||
| 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/rfc/rfc9052>. | <https://www.rfc-editor.org/info/rfc9052>. | |||
| Schaad, J., "CBOR Object Signing and Encryption (COSE): | ||||
| Countersignatures", STD 96, RFC 9338, | ||||
| DOI 10.17487/RFC9338, December 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9338>. | ||||
| [X509] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [X509] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
| <https://www.rfc-editor.org/rfc/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
| 12.2. Informative References | 11.2. Informative References | |||
| [Content-Formats] | ||||
| IANA, "CoAP Content-Formats", | ||||
| <https://www.iana.org/assignments/core-parameters>. | ||||
| [COSE-X509] | [COSE-X509] | |||
| Schaad, J., "CBOR Object Signing and Encryption (COSE): | Schaad, J., "CBOR Object Signing and Encryption (COSE): | |||
| Header Parameters for Carrying and Referencing X.509 | Header Parameters for Carrying and Referencing X.509 | |||
| Certificates", RFC 9360, DOI 10.17487/RFC9360, February | Certificates", RFC 9360, DOI 10.17487/RFC9360, February | |||
| 2023, <https://www.rfc-editor.org/rfc/rfc9360>. | 2023, <https://www.rfc-editor.org/info/rfc9360>. | |||
| [I-D.kdyxy-rats-tdx-eat-profile] | ||||
| Kostal, G., Dittakavi, S., Yeluri, R., Xia, H., and J. Yu, | ||||
| "EAT profile for IntelĀ® Trust Domain Extensions (TDX) | ||||
| attestation result", Work in Progress, Internet-Draft, | ||||
| draft-kdyxy-rats-tdx-eat-profile-01, 23 April 2024, | ||||
| <https://datatracker.ietf.org/doc/html/draft-kdyxy-rats- | ||||
| tdx-eat-profile-01>. | ||||
| [I-D.mandyam-rats-qwestoken] | ||||
| Mandyam, G., Sekhar, V., and S. Mohammed, "The Qualcomm | ||||
| Wireless Edge Services (QWES) Attestation Token", Work in | ||||
| Progress, Internet-Draft, draft-mandyam-rats-qwestoken-00, | ||||
| 1 November 2019, <https://datatracker.ietf.org/doc/html/ | ||||
| draft-mandyam-rats-qwestoken-00>. | ||||
| [IANA-CoAP-Content-Formats] | ||||
| IANA, "CoAP Content-Formats", 2022, | ||||
| <https://www.iana.org/assignments/core-parameters>. | ||||
| [IAT-VERIFIER] | [IAT-VERIFIER] | |||
| Linaro, "iat-verifier", 2023, | Trusted Firmware, "iat-verifier", commit: | |||
| <https://git.trustedfirmware.org/TF-M/tf-m-tools.git/tree/ | 0b49b00195b7733d6fe74e8f42ed4d7b81242801, 18 August 2023, | |||
| iat-verifier>. | <https://git.trustedfirmware.org/plugins/gitiles/TF-M/tf- | |||
| m-tools/+/refs/heads/main/iat-verifier/>. | ||||
| [PSA] Arm, "Platform Security Architecture Resources", 2022, | [PSA] Arm, "Security - Platform Security Architecture", | |||
| <https://developer.arm.com/architectures/security- | <https://developer.arm.com/documentation/101892/0100/ | |||
| architectures/platform-security-architecture/ | Security---Platform-Security-Architecture?lang=en>. | |||
| documentation>. | ||||
| [PSA-API] Arm, "PSA Attestation API 1.0.3", 2022, <https://arm- | [PSA-API] Arm, "PSA Certified Attestation API 1.0", October 2022, | |||
| software.github.io/psa-api/attestation/1.0/IHI0085- | <https://arm-software.github.io/psa-api/attestation/1.0/ | |||
| PSA_Certified_Attestation_API-1.0.3.pdf>. | IHI0085-PSA_Certified_Attestation_API-1.0.3.pdf>. | |||
| [PSA-Endorsements] | [PSA-Endorsements] | |||
| Fossati, T., Deshpande, Y., and H. Birkholz, "Arm's | Fossati, T., Deshpande, Y., and H. Birkholz, "A CoRIM | |||
| Platform Security Architecture (PSA) Attestation Verifier | Profile for Arm's Platform Security Architecture (PSA)", | |||
| Endorsements", Work in Progress, Internet-Draft, draft- | Work in Progress, Internet-Draft, draft-fdb-rats-psa- | |||
| fdb-rats-psa-endorsements-05, 30 August 2024, | endorsements-06, 3 March 2025, | |||
| <https://datatracker.ietf.org/doc/html/draft-fdb-rats-psa- | <https://datatracker.ietf.org/doc/html/draft-fdb-rats-psa- | |||
| endorsements-05>. | endorsements-06>. | |||
| [PSA-OLD] Tschofenig, H., Frost, S., Brossard, M., Shaw, A. L., and | [PSA-OLD] Tschofenig, H., Frost, S., Brossard, M., Shaw, A. L., and | |||
| T. Fossati, "Arm's Platform Security Architecture (PSA) | T. Fossati, "Arm's Platform Security Architecture (PSA) | |||
| Attestation Token", Work in Progress, Internet-Draft, | Attestation Token", Work in Progress, Internet-Draft, | |||
| draft-tschofenig-rats-psa-token-07, 1 February 2021, | draft-tschofenig-rats-psa-token-07, 1 February 2021, | |||
| <https://datatracker.ietf.org/doc/html/draft-tschofenig- | <https://datatracker.ietf.org/doc/html/draft-tschofenig- | |||
| rats-psa-token-07>. | rats-psa-token-07>. | |||
| [PSACertified] | [PSACertified] | |||
| PSA Certified, "PSA Certified IoT Security Framework", | PSA Certified, "PSA Certified: IoT Security Framework and | |||
| 2022, <https://psacertified.org>. | Certification", <https://psacertified.org>. | |||
| [RATS-AR4SI] | [RATS-AR4SI] | |||
| Voit, E., Birkholz, H., Hardjono, T., Fossati, T., and V. | Voit, E., Birkholz, H., Hardjono, T., Fossati, T., and V. | |||
| Scarlata, "Attestation Results for Secure Interactions", | Scarlata, "Attestation Results for Secure Interactions", | |||
| Work in Progress, Internet-Draft, draft-ietf-rats-ar4si- | Work in Progress, Internet-Draft, draft-ietf-rats-ar4si- | |||
| 07, 2 September 2024, | 08, 6 February 2025, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-rats- | <https://datatracker.ietf.org/doc/html/draft-ietf-rats- | |||
| ar4si-07>. | ar4si-08>. | |||
| [RATS-CoRIM] | [RATS-CoRIM] | |||
| Birkholz, H., Fossati, T., Deshpande, Y., Smith, N., and | Birkholz, H., Fossati, T., Deshpande, Y., Smith, N., and | |||
| W. Pan, "Concise Reference Integrity Manifest", Work in | W. Pan, "Concise Reference Integrity Manifest", Work in | |||
| Progress, Internet-Draft, draft-ietf-rats-corim-05, 8 July | Progress, Internet-Draft, draft-ietf-rats-corim-07, 3 | |||
| 2024, <https://datatracker.ietf.org/doc/html/draft-ietf- | March 2025, <https://datatracker.ietf.org/doc/html/draft- | |||
| rats-corim-05>. | ietf-rats-corim-07>. | |||
| [RATS-QWESTOKEN] | ||||
| Mandyam, G., Sekhar, V., and S. Mohammed, "The Qualcomm | ||||
| Wireless Edge Services (QWES) Attestation Token", Work in | ||||
| Progress, Internet-Draft, draft-mandyam-rats-qwestoken-00, | ||||
| 1 November 2019, <https://datatracker.ietf.org/doc/html/ | ||||
| draft-mandyam-rats-qwestoken-00>. | ||||
| [RATS-TDX] Kostal, G., Dittakavi, S., Yeluri, R., Xia, H., and J. Yu, | ||||
| "EAT profile for Intel(r) Trust Domain Extensions (TDX) | ||||
| attestation result", Work in Progress, Internet-Draft, | ||||
| draft-kdyxy-rats-tdx-eat-profile-02, 13 December 2024, | ||||
| <https://datatracker.ietf.org/doc/html/draft-kdyxy-rats- | ||||
| tdx-eat-profile-02>. | ||||
| [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>. | |||
| [TF-M] Linaro, "Trusted Firmware-M", 2022, | [TF-M] Trusted Firmware, "Trusted Firmware-M", | |||
| <https://www.trustedfirmware.org/projects/tf-m/>. | <https://www.trustedfirmware.org/projects/tf-m/>. | |||
| [TLS12-IoT] | [TLS12-IoT] | |||
| Tschofenig, H., Ed. and T. Fossati, "Transport Layer | Tschofenig, H., Ed. and T. Fossati, "Transport Layer | |||
| Security (TLS) / Datagram Transport Layer Security (DTLS) | Security (TLS) / Datagram Transport Layer Security (DTLS) | |||
| Profiles for the Internet of Things", RFC 7925, | Profiles for the Internet of Things", RFC 7925, | |||
| DOI 10.17487/RFC7925, July 2016, | DOI 10.17487/RFC7925, July 2016, | |||
| <https://www.rfc-editor.org/rfc/rfc7925>. | <https://www.rfc-editor.org/info/rfc7925>. | |||
| [TLS13-IoT] | [TLS13-IoT] | |||
| Tschofenig, H., Fossati, T., and M. Richardson, "TLS/DTLS | Tschofenig, H., Fossati, T., and M. Richardson, "TLS/DTLS | |||
| 1.3 Profiles for the Internet of Things", Work in | 1.3 Profiles for the Internet of Things", Work in | |||
| Progress, Internet-Draft, draft-ietf-uta-tls13-iot- | Progress, Internet-Draft, draft-ietf-uta-tls13-iot- | |||
| profile-09, 3 March 2024, | profile-14, 5 May 2025, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-uta- | <https://datatracker.ietf.org/doc/html/draft-ietf-uta- | |||
| tls13-iot-profile-09>. | tls13-iot-profile-14>. | |||
| [Veraison] The Veraison Project, "Veraison psatoken package", 2022, | ||||
| <https://github.com/veraison/psatoken>. | ||||
| [Xclaim] Lundblade, L., "Xclaim", 2022, | ||||
| <https://github.com/laurencelundblade/xclaim>. | ||||
| Appendix A. Examples | Appendix A. Examples | |||
| The following examples show PSA attestation tokens for an | The following examples show PSA attestation tokens for a hypothetical | |||
| hypothetical system comprising a single measured software component. | system comprising a single measured software component. The | |||
| The attesting device is in a lifecycle state (Section 4.3.1) of | attesting device is in a lifecycle state (Section 4.3.1) of SECURED. | |||
| SECURED. The attestation has been requested from a client residing | The attestation has been requested from a client residing in the SPE. | |||
| in the SPE. | ||||
| The example in Appendix A.1 illustrates the case where the IAK is an | The example in Appendix A.1 illustrates the case where the IAK is an | |||
| asymmetric key. A COSE Sign1 envelope is used to wrap the PSA | asymmetric key. A COSE Sign1 envelope is used to wrap the PSA-token | |||
| claims-set. | claims set. | |||
| Appendix A.2 illustrates the case where the IAK is a symmetric key | Appendix A.2 illustrates the case where the IAK is a symmetric key | |||
| and a COSE Mac0 envelope is used instead. | and a COSE Mac0 envelope is used instead. | |||
| The claims sets are identical, except for the Instance ID which is | The claims sets are identical, except for the Instance ID which is | |||
| synthesized from the key material. | synthesized from the key material. | |||
| The examples have been created using the iat-verifier tool | The examples have been created using the iat-verifier tool | |||
| [IAT-VERIFIER]. | [IAT-VERIFIER]. | |||
| A.1. COSE Sign1 Token | A.1. COSE Sign1 Token | |||
| { | ||||
| / ueid / 256: h'01020202020202020202020202 | { | |||
| 0202020202020202020202020202020202020202', | / ueid / 256: h'01020202020202020202020202 | |||
| / psa-implementation-id / 2396: h'00000000000000000000000000 | 0202020202020202020202020202020202020202', | |||
| 00000000000000000000000000000000000000', | / psa-implementation-id / 2396: h'00000000000000000000000000 | |||
| / eat_nonce / 10: h'01010101010101010101010101 | 00000000000000000000000000000000000000', | |||
| 01010101010101010101010101010101010101', | / eat_nonce / 10: h'01010101010101010101010101 | |||
| / psa-client-id / 2394: 2147483647, | 01010101010101010101010101010101010101', | |||
| / psa-security-lifecycle / 2395: 12288, | / psa-client-id / 2394: 2147483647, | |||
| / eat_profile / 265: "tag:psacertified.org,2023:psa#tfm", | / psa-security-lifecycle / 2395: 12288, | |||
| / bootseed / 268: h'0000000000000000', | / eat_profile / 265: "tag:psacertified.org,2023:psa#tfm", | |||
| / psa-software-components / 2399: [ | / bootseed / 268: h'0000000000000000', | |||
| { | / psa-software-components / 2399: [ | |||
| / signer ID / 5: h'0404040404040404040404040404040 | { | |||
| 404040404040404040404040404040404', | / signer ID / 5: h'0404040404040404040404040404040 | |||
| / measurement value / 2: h'0303030303030303030303030303030 | 404040404040404040404040404040404', | |||
| 303030303030303030303030303030303', | / measurement value / 2: h'0303030303030303030303030303030 | |||
| / measurement type / 1: "PRoT" | 303030303030303030303030303030303', | |||
| } | / measurement type / 1: "PRoT" | |||
| ] | } | |||
| } | ] | |||
| } | ||||
| The JWK representation of the IAK used for creating the COSE Sign1 | The JWK representation of the IAK used for creating the COSE Sign1 | |||
| signature over the PSA token is: | signature over the PSA token is: | |||
| { | { | |||
| "kty": "EC", | "kty": "EC", | |||
| "crv": "P-256", | "crv": "P-256", | |||
| "alg": "ES256", | "alg": "ES256", | |||
| "x": "Tl4iCZ47zrRbRG0TVf0dw7VFlHtv18HInYhnmMNybo8", | "x": "Tl4iCZ47zrRbRG0TVf0dw7VFlHtv18HInYhnmMNybo8", | |||
| "y": "gNcLhAslaqw0pi7eEEM2TwRAlfADR0uR4Bggkq-xPy4", | "y": "gNcLhAslaqw0pi7eEEM2TwRAlfADR0uR4Bggkq-xPy4", | |||
| skipping to change at page 40, line 4 ¶ | skipping to change at line 1647 ¶ | |||
| 0119095a1a7fffffff19095b19300019010978217461673a707361636572 | 0119095a1a7fffffff19095b19300019010978217461673a707361636572 | |||
| 7469666965642e6f72672c323032333a7073612374666d19010c48000000 | 7469666965642e6f72672c323032333a7073612374666d19010c48000000 | |||
| 000000000019095f81a30558200404040404040404040404040404040404 | 000000000019095f81a30558200404040404040404040404040404040404 | |||
| 040404040404040404040404040404025820030303030303030303030303 | 040404040404040404040404040404025820030303030303030303030303 | |||
| 0303030303030303030303030303030303030303016450526f545840786e | 0303030303030303030303030303030303030303016450526f545840786e | |||
| 937a4c42667af3847399319ca95c7e7dbabdc9b50fdb8de3f6bff4ab82ff | 937a4c42667af3847399319ca95c7e7dbabdc9b50fdb8de3f6bff4ab82ff | |||
| 80c42140e2a488000219e3e10663193da69c75f52b798ea10b2f7041a90e | 80c42140e2a488000219e3e10663193da69c75f52b798ea10b2f7041a90e | |||
| 8e5a | 8e5a | |||
| A.2. COSE Mac0 Token | A.2. COSE Mac0 Token | |||
| { | ||||
| / ueid / 256: h'01C557BD4FADC83F756FCA2CD5 | { | |||
| EA2DCC8B82159BB4E7453D6A744D4EECD6D0AC60', | / ueid / 256: h'01C557BD4FADC83F756FCA2CD5 | |||
| / psa-implementation-id / 2396: h'00000000000000000000000000 | EA2DCC8B82159BB4E7453D6A744D4EECD6D0AC60', | |||
| 00000000000000000000000000000000000000', | / psa-implementation-id / 2396: h'00000000000000000000000000 | |||
| / eat_nonce / 10: h'01010101010101010101010101 | 00000000000000000000000000000000000000', | |||
| 01010101010101010101010101010101010101', | / eat_nonce / 10: h'01010101010101010101010101 | |||
| / psa-client-id / 2394: 2147483647, | 01010101010101010101010101010101010101', | |||
| / psa-security-lifecycle / 2395: 12288, | / psa-client-id / 2394: 2147483647, | |||
| / eat_profile / 265: "tag:psacertified.org,2023:psa#tfm", | / psa-security-lifecycle / 2395: 12288, | |||
| / psa-boot-seed / 268: h'0000000000000000', | / eat_profile / 265: "tag:psacertified.org,2023:psa#tfm", | |||
| / psa-software-components / 2399: [ | / psa-boot-seed / 268: h'0000000000000000', | |||
| { | / psa-software-components / 2399: [ | |||
| / signer ID / 5: h'0404040404040404040404040404040 | { | |||
| 404040404040404040404040404040404', | / signer ID / 5: h'0404040404040404040404040404040 | |||
| / measurement value / 2: h'0303030303030303030303030303030 | 404040404040404040404040404040404', | |||
| 303030303030303030303030303030303', | / measurement value / 2: h'0303030303030303030303030303030 | |||
| / measurement type / 1: "PRoT" | 303030303030303030303030303030303', | |||
| } | / measurement type / 1: "PRoT" | |||
| ] | } | |||
| } | ] | |||
| } | ||||
| The JWK representation of the IAK used for creating the COSE Mac0 | The JWK representation of the IAK used for creating the COSE Mac0 | |||
| signature over the PSA token is: | signature over the PSA token is: | |||
| ========== NOTE: '\\' line wrapping per RFC 8792 ========== | ========== NOTE: '\\' line wrapping per RFC 8792 ========== | |||
| { | { | |||
| "kty": "oct", | "kty": "oct", | |||
| "alg": "HS256", | "alg": "HS256", | |||
| "k": "3gOLNKyhJXaMXjNXq40Gs2e5qw1-i-Ek7cpH_gM6W7epPTB_8imqNv8k\ | "k": "3gOLNKyhJXaMXjNXq40Gs2e5qw1-i-Ek7cpH_gM6W7epPTB_8imqNv8k\ | |||
| skipping to change at page 41, line 37 ¶ | skipping to change at line 1716 ¶ | |||
| 0119095a1a7fffffff19095b19300019010978217461673a707361636572 | 0119095a1a7fffffff19095b19300019010978217461673a707361636572 | |||
| 7469666965642e6f72672c323032333a7073612374666d19010c48000000 | 7469666965642e6f72672c323032333a7073612374666d19010c48000000 | |||
| 000000000019095f81a30558200404040404040404040404040404040404 | 000000000019095f81a30558200404040404040404040404040404040404 | |||
| 040404040404040404040404040404025820030303030303030303030303 | 040404040404040404040404040404025820030303030303030303030303 | |||
| 0303030303030303030303030303030303030303016450526f545820cf88 | 0303030303030303030303030303030303030303016450526f545820cf88 | |||
| d330e7a5366a95cf744a4dbf0d50304d405edd8b2530e243eddbd3177820 | d330e7a5366a95cf744a4dbf0d50304d405edd8b2530e243eddbd3177820 | |||
| Acknowledgments | Acknowledgments | |||
| Thank you Carsten Bormann for help with the CDDL. Thanks to Nicholas | Thank you Carsten Bormann for help with the CDDL. Thanks to Nicholas | |||
| Wood, Eliot Lear, Yaron Sheffer, Kathleen Moriarty and Ned Smith for | Wood, Eliot Lear, Yaron Sheffer, Kathleen Moriarty, and Ned Smith for | |||
| ideas, comments and suggestions. | ideas, comments, and suggestions. | |||
| Contributors | Contributors | |||
| Laurence Lundblade | Laurence Lundblade | |||
| Security Theory LLC | Security Theory LLC | |||
| Email: lgl@securitytheory.com | Email: lgl@securitytheory.com | |||
| Tamas Ban | Tamas Ban | |||
| Arm Limited | Arm Limited | |||
| Email: Tamas.Ban@arm.com | Email: Tamas.Ban@arm.com | |||
| skipping to change at page 42, line 4 ¶ | skipping to change at line 1728 ¶ | |||
| Contributors | Contributors | |||
| Laurence Lundblade | Laurence Lundblade | |||
| Security Theory LLC | Security Theory LLC | |||
| Email: lgl@securitytheory.com | Email: lgl@securitytheory.com | |||
| Tamas Ban | Tamas Ban | |||
| Arm Limited | Arm Limited | |||
| Email: Tamas.Ban@arm.com | Email: Tamas.Ban@arm.com | |||
| Sergei Trofimov | Sergei Trofimov | |||
| Arm Limited | Arm Limited | |||
| Email: Sergei.Trofimov@arm.com | Email: Sergei.Trofimov@arm.com | |||
| Authors' Addresses | Authors' Addresses | |||
| Hannes Tschofenig | Hannes Tschofenig | |||
| University of Applied Sciences Bonn-Rhein-Sieg | ||||
| Germany | ||||
| Email: Hannes.Tschofenig@gmx.net | Email: Hannes.Tschofenig@gmx.net | |||
| Simon Frost | Simon Frost | |||
| Arm Limited | Arm Limited | |||
| Email: Simon.Frost@arm.com | Email: Simon.Frost@arm.com | |||
| Mathias Brossard | Mathias Brossard | |||
| Arm Limited | Arm Limited | |||
| Email: Mathias.Brossard@arm.com | Email: Mathias.Brossard@arm.com | |||
| End of changes. 179 change blocks. | ||||
| 641 lines changed or deleted | 599 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||