rfc9783.original | rfc9783.txt | |||
---|---|---|---|---|
Network Working Group H. Tschofenig | Independent Submission H. Tschofenig | |||
Internet-Draft | Request for Comments: 9783 | |||
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 | May 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 | The Arm Platform Security Architecture (PSA) is a family of hardware | |||
and firmware security specifications, as well as open-source | and firmware security specifications, as well as open-source | |||
reference implementations, to help device makers and chip | reference implementations, to help device makers and chip | |||
manufacturers build best-practice security into products. Devices | manufacturers build best-practice security into products. Devices | |||
that are PSA compliant can produce attestation tokens as described in | that are PSA-compliant can produce attestation tokens as described in | |||
this memo, which are the basis for many different protocols, | this memo. Attestation tokens are the basis for many different | |||
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 PSA attestation token structure and | |||
semantics. | ||||
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 what claims are 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 get serialized to the wire, and how they are cryptographically | |||
protected. | 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 outside of the SPE, the Application domain, | |||
the SPE, the Application domain, typically containing the | typically containing 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 45 ¶ | skipping to change at line 251 ¶ | |||
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. It 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 303 ¶ | |||
| | 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 Nonce claim is used to carry the challenge provided by the caller | |||
to demonstrate freshness of the generated token. | to demonstrate freshness of the generated token. | |||
The EAT [EAT] nonce (claim key 10) is used. Since the EAT nonce | The EAT [EAT] nonce (claim key 10) is used. Since the EAT nonce | |||
claim offers flexiblity for different attestation technologies, this | claim offers flexiblity for different attestation technologies, this | |||
specifications applies the following constraints to the nonce-type: | specification applies the following 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 388 ¶ | |||
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 48 ¶ | skipping to change at line 441 ¶ | |||
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. It MUST be represented as a string made of | |||
nineteen numeric characters: a thirteen-digit [EAN-13], followed by a | nineteen numeric characters: a thirteen-digit EAN-13 [EAN-13], | |||
dash "-", followed by the five-digit versioning information described | followed by a dash "-", and followed by the five-digit versioning | |||
in [PSA-Cert-Guide]. | 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 38 ¶ | skipping to change at line 597 ¶ | |||
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 625 ¶ | |||
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 675 ¶ | |||
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 are part of the PSA token (and are therefore | |||
Evidence) but aim to help receivers, including relying parties, with | still Evidence). However, they aim to help receivers, including | |||
the processing of the received attestation Evidence. | Relying Parties, with the processing of 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 807 ¶ | |||
+--------------+-----------------+---------------------------------+ | +--------------+-----------------+---------------------------------+ | |||
|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 "Boot Seed" 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-set in a COSE Web Token (CWT) [RFC8392]. For asymmetric key | claims-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 claims-set (Section 4) is never carried in a Detached EAT bundle | |||
(Section 5 of [EAT]). | (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 handle | |||
skipping to change at page 22, line 8 ¶ | skipping to change at line 894 ¶ | |||
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 1082 ¶ | |||
? &(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 certifications 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 certification 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 | certifications 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 certifcations 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 | In addition, the Verifier will typically operate a policy where | |||
values of some of the claims in this profile can be compared to | values of some of the claims in this profile can be compared to | |||
reference values, registered with the Verifier for a given | reference values, registered with the Verifier for a given | |||
deployment, in order to confirm that the device is endorsed by the | deployment, in order to confirm that the device is endorsed by the | |||
manufacturer supply chain. The policy may require that the relevant | manufacturer supply chain. The policy may require that the relevant | |||
claims must have a match to a registered reference value. All claims | claims must have a match to a registered reference value. All claims | |||
may be worthy of additional appraisal. It is likely that most | may be worthy of additional appraisal. It is likely that most | |||
deployments would include a policy with appraisal for the following | deployments would include a policy with 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: | |||
0b49b00195b7733d6fe74e8f42ed4d7b81242801, 18 August 2023, | ||||
<https://git.trustedfirmware.org/TF-M/tf-m-tools.git/tree/ | <https://git.trustedfirmware.org/TF-M/tf-m-tools.git/tree/ | |||
iat-verifier>. | iat-verifier>. | |||
[PSA] Arm, "Platform Security Architecture Resources", 2022, | [PSA] Arm, "Platform Security Architecture Resources", | |||
<https://developer.arm.com/architectures/security- | <https://developer.arm.com/architectures/security- | |||
architectures/platform-security-architecture/ | architectures/platform-security-architecture/ | |||
documentation>. | 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-08, 24 March 2021, | |||
<https://datatracker.ietf.org/doc/html/draft-tschofenig- | <https://datatracker.ietf.org/doc/html/draft-tschofenig- | |||
rats-psa-token-07>. | rats-psa-token-08>. | |||
[PSACertified] | [PSACertified] | |||
PSA Certified, "PSA Certified IoT Security Framework", | PSA Certified, "PSA Certified IoT Security Framework", | |||
2022, <https://psacertified.org>. | <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 an | |||
hypothetical system comprising a single measured software component. | hypothetical system comprising a single measured software component. | |||
The attesting device is in a lifecycle state (Section 4.3.1) of | The attesting device is in a lifecycle state (Section 4.3.1) of | |||
SECURED. The attestation has been requested from a client residing | SECURED. 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 | |||
skipping to change at page 41, line 37 ¶ | skipping to change at line 1717 ¶ | |||
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 | |||
End of changes. 166 change blocks. | ||||
553 lines changed or deleted | 507 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |