| < draft-tschofenig-rats-psa-token-07.txt | draft-tschofenig-rats-psa-token-08.txt > | |||
|---|---|---|---|---|
| RATS H. Tschofenig | RATS H. Tschofenig | |||
| Internet-Draft S. Frost | Internet-Draft S. Frost | |||
| Intended status: Informational M. Brossard | Intended status: Informational M. Brossard | |||
| Expires: 5 August 2021 A. Shaw | Expires: 25 September 2021 A. Shaw | |||
| T. Fossati | T. Fossati | |||
| Arm Limited | Arm Limited | |||
| 1 February 2021 | 24 March 2021 | |||
| Arm's Platform Security Architecture (PSA) Attestation Token | Arm's Platform Security Architecture (PSA) Attestation Token | |||
| draft-tschofenig-rats-psa-token-07 | draft-tschofenig-rats-psa-token-08 | |||
| Abstract | Abstract | |||
| The Platform Security Architecture (PSA) is a family of hardware and | The Platform Security Architecture (PSA) is a family of hardware and | |||
| firmware security specifications, as well as open-source reference | firmware security specifications, as well as open-source reference | |||
| implementations, to help device makers and chip manufacturers build | implementations, to help device makers and chip manufacturers build | |||
| best-practice security into products. Devices that are PSA compliant | best-practice security into products. Devices that are PSA compliant | |||
| are able to produce attestation tokens as described in this memo, | are able to produce attestation tokens as described in this memo, | |||
| which are the basis for a number of different protocols, including | which are the basis for a number of different protocols, including | |||
| secure provisioning and network access control. This document | secure provisioning and network access control. This document | |||
| specifies the PSA attestation token structure and semantics. | specifies the PSA attestation token structure and semantics. | |||
| At its core, the CWT (COSE Web Token) format is used and populated | The PSA attestation token is a profiled Entity Attestation Token | |||
| with a set of claims in a way similar to EAT (Entity Attestation | (EAT). | |||
| Token). This specification describes what claims are used by PSA | ||||
| compliant systems. | This specification describes what claims are used in an attestation | |||
| token generated by PSA compliant systems, how these claims get | ||||
| serialized to the wire, and how they are cryptographically protected. | ||||
| Note to Readers | Note to Readers | |||
| Source for this draft and an issue tracker can be found at | Source for this draft and an issue tracker can be found at | |||
| https://github.com/thomas-fossati/draft-psa-token | https://github.com/thomas-fossati/draft-psa-token | |||
| (https://github.com/thomas-fossati/draft-psa-token). | (https://github.com/thomas-fossati/draft-psa-token). | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| skipping to change at page 2, line 4 ¶ | skipping to change at page 2, line 9 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 5 August 2021. | ||||
| This Internet-Draft will expire on 25 September 2021. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
| extracted from this document must include Simplified BSD License text | extracted from this document must include Simplified BSD License text | |||
| as described in Section 4.e of the Trust Legal Provisions and are | as described in Section 4.e of the Trust Legal Provisions and are | |||
| provided without warranty as described in the Simplified BSD License. | provided without warranty as described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 3 | 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. Glossary . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Glossary . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. PSA Claims . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. PSA Claims . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. Caller Claims . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Caller Claims . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1.1. Nonce . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1.1. Nonce . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1.2. Client ID . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1.2. Client ID . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2. Target Identification Claims . . . . . . . . . . . . . . 5 | 3.2. Target Identification Claims . . . . . . . . . . . . . . 5 | |||
| 3.2.1. Instance ID . . . . . . . . . . . . . . . . . . . . . 5 | 3.2.1. Instance ID . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2.2. Implementation ID . . . . . . . . . . . . . . . . . . 6 | 3.2.2. Implementation ID . . . . . . . . . . . . . . . . . . 6 | |||
| 3.2.3. Certification Reference . . . . . . . . . . . . . . . 6 | 3.2.3. Certification Reference . . . . . . . . . . . . . . . 6 | |||
| 3.3. Target State Claims . . . . . . . . . . . . . . . . . . . 6 | 3.3. Target State Claims . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.3.1. Security Lifecycle . . . . . . . . . . . . . . . . . 6 | 3.3.1. Security Lifecycle . . . . . . . . . . . . . . . . . 7 | |||
| 3.3.2. Boot Seed . . . . . . . . . . . . . . . . . . . . . . 8 | 3.3.2. Boot Seed . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.4. Software Inventory Claims . . . . . . . . . . . . . . . . 8 | 3.4. Software Inventory Claims . . . . . . . . . . . . . . . . 8 | |||
| 3.4.1. Software Components . . . . . . . . . . . . . . . . . 8 | 3.4.1. Software Components . . . . . . . . . . . . . . . . . 8 | |||
| 3.4.2. No Software Measurements . . . . . . . . . . . . . . 10 | 3.4.2. No Software Measurements . . . . . . . . . . . . . . 10 | |||
| 3.5. Verification Claims . . . . . . . . . . . . . . . . . . . 11 | 3.5. Verification Claims . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.5.1. Verification Service Indicator . . . . . . . . . . . 11 | 3.5.1. Verification Service Indicator . . . . . . . . . . . 11 | |||
| 3.5.2. Profile Definition . . . . . . . . . . . . . . . . . 11 | 3.5.2. Profile Definition . . . . . . . . . . . . . . . . . 11 | |||
| 4. Token Encoding and Signing . . . . . . . . . . . . . . . . . 11 | 4. Backwards Compatibility Considerations . . . . . . . . . . . 12 | |||
| 5. Collated CDDL . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5. Token Encoding and Signing . . . . . . . . . . . . . . . . . 12 | |||
| 6. Security and Privacy Considerations . . . . . . . . . . . . . 14 | 6. Freshness Model . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 7. Verification . . . . . . . . . . . . . . . . . . . . . . . . 15 | 7. Collated CDDL . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | 8. Security and Privacy Considerations . . . . . . . . . . . . . 15 | |||
| 8.1. CBOR Web Token Claims Registration . . . . . . . . . . . 15 | 9. Verification . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 8.1.1. Nonce Claim . . . . . . . . . . . . . . . . . . . . . 15 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 8.1.2. Client ID Claim . . . . . . . . . . . . . . . . . . . 16 | 10.1. Media Type Registration . . . . . . . . . . . . . . . . 16 | |||
| 8.1.3. Instance ID Claim . . . . . . . . . . . . . . . . . . 16 | 10.2. CoAP Content-Formats Registration . . . . . . . . . . . 17 | |||
| 8.1.4. Implementation ID Claim . . . . . . . . . . . . . . . 16 | 10.2.1. Registry Contents . . . . . . . . . . . . . . . . . 17 | |||
| 8.1.5. Certification Reference Claim . . . . . . . . . . . . 17 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 8.1.6. Security Lifecycle Claim . . . . . . . . . . . . . . 17 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 18 | |||
| 8.1.7. Boot Seed Claim . . . . . . . . . . . . . . . . . . . 17 | 11.2. Informative References . . . . . . . . . . . . . . . . . 19 | |||
| 8.1.8. Software Components Claim . . . . . . . . . . . . . . 18 | Appendix A. Reference Implementation . . . . . . . . . . . . . . 20 | |||
| 8.1.9. No Software Measurements Claim . . . . . . . . . . . 18 | Appendix B. Example . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 8.1.10. Verification Service Indicator Claim . . . . . . . . 18 | Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 8.1.11. Profile Definition Claim . . . . . . . . . . . . . . 19 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 8.2. Media Type Registration . . . . . . . . . . . . . . . . . 19 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 8.3. CoAP Content-Formats Registration . . . . . . . . . . . . 20 | ||||
| 8.3.1. Registry Contents . . . . . . . . . . . . . . . . . . 20 | ||||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 20 | ||||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 22 | ||||
| Appendix A. Reference Implementation . . . . . . . . . . . . . . 22 | ||||
| Appendix B. Example . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
| Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 24 | ||||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| 1. Introduction | 1. Introduction | |||
| Trusted execution environments are now present in many devices, which | Trusted execution environments are now present in many devices, which | |||
| provide a safe environment to place security sensitive code such as | provide a safe environment to place security sensitive code such as | |||
| cryptography, secure boot, secure storage, and other essential | cryptography, secure boot, secure storage, and other essential | |||
| security functions. These security functions are typically exposed | security functions. These security functions are typically exposed | |||
| through a narrow and well-defined interface, and can be used by | through a narrow and well-defined interface, and can be used by | |||
| operating system libraries and applications. Various APIs have been | operating system libraries and applications. Various APIs have been | |||
| developed by Arm as part of the Platform Security Architecture [PSA] | developed by Arm as part of the Platform Security Architecture [PSA] | |||
| skipping to change at page 4, line 43 ¶ | skipping to change at page 4, line 36 ¶ | |||
| 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 type(s) 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 | |||
| 3.1. Caller Claims | 3.1. Caller Claims | |||
| 3.1.1. Nonce | 3.1.1. Nonce | |||
| The Nonce claim is a challenge from the caller. The length must be | The Nonce claim is used to carry the challenge provided by the caller | |||
| 32, 48, or 64 bytes. | to demonstrate freshness of the generated token. | |||
| The EAT [I-D.ietf-rats-eat] "nonce" (claim key 10) is used. The | ||||
| following constraints apply to the "nonce-type": | ||||
| * The length MUST be either 32, 48, or 64 bytes. | ||||
| * Only a single nonce value is conveyed. Per [I-D.ietf-rats-eat] | ||||
| the array notation is not 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 = ( | |||
| psa-nonce-key => psa-hash-type | 10 => psa-hash-type | |||
| ) | ) | |||
| 3.1.2. Client ID | 3.1.2. Client ID | |||
| The Client ID claim represents the security domain of the caller. | The Client ID claim represents the security domain of the caller. | |||
| In PSA, a security domain is represented by a signed integer whereby | In PSA, a security domain is represented by a signed integer whereby | |||
| negative values represent callers from the NSPE and where positive | negative values represent callers from the NSPE and where positive | |||
| IDs represent callers from the SPE. The value 0 is not permitted. | IDs represent callers from the SPE. The value 0 is not permitted. | |||
| skipping to change at page 5, line 37 ¶ | skipping to change at page 5, line 37 ¶ | |||
| 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 | |||
| ) | ) | |||
| 3.2. Target Identification Claims | 3.2. Target Identification Claims | |||
| 3.2.1. Instance ID | 3.2.1. Instance ID | |||
| The Instance ID claim represents the unique identifier of the device | The Instance ID claim represents the unique identifier of the Initial | |||
| instance. It is a 32 bytes hash of the public key corresponding to | Attestation Key (IAK). The full definition is in [PSA-SM]. | |||
| the Initial Attestation Key (IAK). If the IAK is a symmetric key | ||||
| then the Instance ID is a hash of the hash of the IAK itself. It is | The EAT "ueid" (claim key 11) of type RAND is used. The following | |||
| encoded as a Universal Entity ID of type RAND [I-D.ietf-rats-eat], | constraints apply to the "ueid-type": | |||
| i.e., prepending a 0x01 type byte to the key hash. The full | ||||
| definition is in [PSA-SM]. | * The length MUST be 33 bytes. | |||
| * The first byte MUST be 0x01 (RAND) followed by the 32-bytes key | ||||
| hash. | ||||
| This claim MUST be present in a PSA attestation token. | This claim MUST be present in a PSA attestation token. | |||
| psa-instance-id-type = bytes .size 33 | psa-instance-id-type = bytes .size 33 | |||
| psa-instance-id = ( | psa-instance-id = ( | |||
| psa-instance-id-key => psa-instance-id-type | 11 => psa-instance-id-type | |||
| ) | ) | |||
| 3.2.2. Implementation ID | 3.2.2. Implementation ID | |||
| The Implementation ID claim uniquely identifies the underlying | The Implementation ID claim uniquely identifies the underlying | |||
| immutable PSA RoT. A verification service can use this claim to | immutable PSA RoT. A verification service can use this claim to | |||
| locate the details of the verification process. Such details include | locate the details of the verification process. Such details include | |||
| the implementation's origin and associated certification state. The | the implementation's origin and associated certification state. The | |||
| full definition is in [PSA-SM]. | full definition is in [PSA-SM]. | |||
| skipping to change at page 11, line 30 ¶ | skipping to change at page 11, line 30 ¶ | |||
| 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 | |||
| ) | ) | |||
| 3.5.2. Profile Definition | 3.5.2. Profile Definition | |||
| The Profile Definition claim contains the name of a document that | The Profile Definition claim encodes the unique identifier that | |||
| describes the "profile" of the report. The document name may include | corresponds to the EAT profile described by this document. This | |||
| versioning. The value for this specification MUST be | allows a receiver to assign the intended semantics to the rest of the | |||
| PSA_IOT_PROFILE_1. | claims found in the token. | |||
| psa-profile-type = "PSA_IOT_PROFILE_1" | The EAT "profile" (claim key 18) is used. The following constraints | |||
| apply to its type: | ||||
| * The URI encoding MUST be used. | ||||
| * The value MUST be "http://arm.com/psa/2.0.0". | ||||
| This claim MUST be present in a PSA attestation token. | ||||
| See Section 4, for considerations about backwards compatibility with | ||||
| previous versions of the PSA attestation token format. | ||||
| psa-profile-type = "http://arm.com/psa/2.0.0" | ||||
| psa-profile = ( | psa-profile = ( | |||
| ? psa-profile-key => psa-profile-type | 18 => psa-profile-type | |||
| ) | ) | |||
| 4. Token Encoding and Signing | 4. Backwards Compatibility Considerations | |||
| The report is encoded as a COSE Web Token (CWT) [RFC8392], similar to | Previous versions of this specification used different claim key | |||
| the Entity Attestation Token (EAT) [I-D.ietf-rats-eat]. The token | values for the following claims: | |||
| consists of a series of claims declaring evidence as to the nature of | ||||
| the instance of hardware and software. The claims are encoded in | * Nonce (claim key -75008); | |||
| CBOR [RFC7049] format. For asymmetric key algorithms, the signature | ||||
| structure MUST be COSE_Sign1. For symmetric key algorithms, the | * Instance ID (claim key -75009); | |||
| structure MUST be COSE_Mac0. | ||||
| * Profile Description (claim key -75000 and value | ||||
| "PSA_IOT_PROFILE_1"). | ||||
| These claim keys have been retired and their use is deprecated. | ||||
| Unless compatibility with existing infrastructure is a concern, | ||||
| emitters (e.g., devices that implement the PSA Attestation API) | ||||
| SHOULD produce tokens with their standard equivalent instead, as | ||||
| described in Section 3.1.1, Section 3.2.1 and Section 3.5.2 | ||||
| respectively. | ||||
| To simplify the transition to the token format described in this | ||||
| document it is RECOMMENDED that receivers (e.g., PSA Attestation | ||||
| Verifiers) accept tokens encoded according to the old profile | ||||
| ("PROFILE_IOT_1") as well as to the new profile ("http://arm.com/ | ||||
| psa/2.0.0"), at least for the time needed to their clients to | ||||
| upgrade. | ||||
| 5. Token Encoding and Signing | ||||
| The PSA attestation token is encoded in CBOR [RFC7049] format. Only | ||||
| definite-length string, arrays, and maps are allowed. | ||||
| Cryptographic protection is obtained by wrapping the "psa-token" map | ||||
| in a COSE Web Token (CWT) [RFC8392]. For asymmetric key algorithms, | ||||
| the signature structure MUST be COSE_Sign1. For symmetric key | ||||
| algorithms, the signature structure MUST be COSE_Mac0. | ||||
| The CWT CBOR tag (61) is not used. An application that needs to | ||||
| exchange PSA attestation tokens can use the media type defined in | ||||
| Section 10.1 or the CoAP Content-Format defined in Section 10.2. | ||||
| 6. Freshness Model | ||||
| The PSA Token supports the freshness models for attestation Evidence | ||||
| based on nonces and epoch handles (Section 10.2 and 10.3 of | ||||
| [I-D.ietf-rats-architecture]) using the "nonce" claim to convey the | ||||
| nonce or epoch handle supplied by the Verifier. No further | ||||
| assumption on the specific remote attestation protocol is made. | ||||
| 7. Collated CDDL | ||||
| 5. 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, | |||
| psa-lifecycle, | psa-lifecycle, | |||
| psa-certification-reference, | psa-certification-reference, | |||
| psa-boot-seed, | psa-boot-seed, | |||
| skipping to change at page 13, line 4 ¶ | skipping to change at page 14, line 6 ¶ | |||
| psa-client-id = ( | psa-client-id = ( | |||
| psa-client-id-key => psa-client-id-type | psa-client-id-key => psa-client-id-type | |||
| ) | ) | |||
| psa-certification-reference-type = text .regexp "[0-9]{13}" | psa-certification-reference-type = text .regexp "[0-9]{13}" | |||
| psa-certification-reference = ( | psa-certification-reference = ( | |||
| ? psa-certification-reference-key => | ? psa-certification-reference-key => | |||
| psa-certification-reference-type | psa-certification-reference-type | |||
| ) | ) | |||
| psa-implementation-id-type = bytes .size 32 | psa-implementation-id-type = bytes .size 32 | |||
| psa-implementation-id = ( | psa-implementation-id = ( | |||
| psa-implementation-id-key => psa-implementation-id-type | psa-implementation-id-key => psa-implementation-id-type | |||
| ) | ) | |||
| psa-instance-id-type = bytes .size 33 | psa-instance-id-type = bytes .size 33 | |||
| psa-instance-id = ( | psa-instance-id = ( | |||
| psa-instance-id-key => psa-instance-id-type | 11 => psa-instance-id-type | |||
| ) | ) | |||
| psa-no-sw-measurements-type = 1 | psa-no-sw-measurements-type = 1 | |||
| psa-no-sw-measurement = ( | psa-no-sw-measurement = ( | |||
| psa-no-sw-measurement-key => psa-no-sw-measurements-type | psa-no-sw-measurement-key => psa-no-sw-measurements-type | |||
| ) | ) | |||
| psa-nonce = ( | psa-nonce = ( | |||
| psa-nonce-key => psa-hash-type | 10 => psa-hash-type | |||
| ) | ) | |||
| psa-profile-type = "PSA_IOT_PROFILE_1" | psa-profile-type = "http://arm.com/psa/2.0.0" | |||
| psa-profile = ( | psa-profile = ( | |||
| ? psa-profile-key => psa-profile-type | 18 => psa-profile-type | |||
| ) | ) | |||
| psa-lifecycle-unknown-type = 0x0000..0x00ff | psa-lifecycle-unknown-type = 0x0000..0x00ff | |||
| psa-lifecycle-assembly-and-test-type = 0x1000..0x10ff | psa-lifecycle-assembly-and-test-type = 0x1000..0x10ff | |||
| psa-lifecycle-psa-rot-provisioning-type = 0x2000..0x20ff | psa-lifecycle-psa-rot-provisioning-type = 0x2000..0x20ff | |||
| psa-lifecycle-secured-type = 0x3000..0x30ff | psa-lifecycle-secured-type = 0x3000..0x30ff | |||
| psa-lifecycle-non-psa-rot-debug-type = 0x4000..0x40ff | psa-lifecycle-non-psa-rot-debug-type = 0x4000..0x40ff | |||
| psa-lifecycle-recoverable-psa-rot-debug-type = 0x5000..0x50ff | psa-lifecycle-recoverable-psa-rot-debug-type = 0x5000..0x50ff | |||
| psa-lifecycle-decommissioned-type = 0x6000..0x60ff | psa-lifecycle-decommissioned-type = 0x6000..0x60ff | |||
| skipping to change at page 14, line 4 ¶ | skipping to change at page 15, line 8 ¶ | |||
| psa-lifecycle-assembly-and-test-type / | psa-lifecycle-assembly-and-test-type / | |||
| psa-lifecycle-psa-rot-provisioning-type / | psa-lifecycle-psa-rot-provisioning-type / | |||
| psa-lifecycle-secured-type / | psa-lifecycle-secured-type / | |||
| psa-lifecycle-non-psa-rot-debug-type / | psa-lifecycle-non-psa-rot-debug-type / | |||
| psa-lifecycle-recoverable-psa-rot-debug-type / | psa-lifecycle-recoverable-psa-rot-debug-type / | |||
| psa-lifecycle-decommissioned-type | psa-lifecycle-decommissioned-type | |||
| psa-lifecycle = ( | psa-lifecycle = ( | |||
| psa-lifecycle-key => psa-lifecycle-type | psa-lifecycle-key => psa-lifecycle-type | |||
| ) | ) | |||
| psa-software-component = { | psa-software-component = { | |||
| ? 1 => text, ; measurement type | ? 1 => text, ; measurement type | |||
| 2 => psa-hash-type, ; measurement value | 2 => psa-hash-type, ; measurement value | |||
| ? 4 => text, ; version | ? 4 => text, ; version | |||
| 5 => psa-hash-type, ; signer id | 5 => psa-hash-type, ; signer id | |||
| ? 6 => text, ; measurement description | ? 6 => text, ; measurement description | |||
| } | } | |||
| 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 | |||
| ) | ) | |||
| 6. Security and Privacy Considerations | 8. Security and Privacy Considerations | |||
| This specification re-uses the CWT and the EAT specification. Hence, | This specification re-uses the CWT and the EAT specification. Hence, | |||
| the security and privacy considerations of those specifications apply | the security and privacy considerations of those specifications apply | |||
| here as well. | 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 based on | specification profiles those options and allows signatures based on | |||
| use of public key cryptography as well as MAC authentication. The | use of public key cryptography as well as MAC authentication. The | |||
| token MUST be signed following the structure of the COSE | token MUST be signed following the structure of the COSE | |||
| specification [RFC8152]. The COSE type MUST be COSE_Sign1 for public | specification [RFC8152]. The COSE type MUST be COSE_Sign1 for public | |||
| skipping to change at page 15, line 5 ¶ | skipping to change at page 16, line 5 ¶ | |||
| associated infrastructure costs for key management and protocol | associated infrastructure costs for key management and protocol | |||
| complexities. It may also restrict the ability to interoperate with | complexities. It may also restrict the ability to interoperate with | |||
| third parties. | third parties. | |||
| Attestation tokens contain information that may be unique to a device | Attestation tokens contain information that may be unique to a device | |||
| and therefore they may allow to single out an individual device for | and therefore they may allow to single out an individual device for | |||
| tracking purposes. Implementations that have privacy requirements | tracking purposes. Implementations that have privacy requirements | |||
| must take appropriate measures to ensure that the token is only used | must take appropriate measures to ensure that the token is only used | |||
| to provision anonymous/pseudonym keys. | to provision anonymous/pseudonym keys. | |||
| 7. Verification | 9. Verification | |||
| To verify the token, the primary need is to check correct formation | To verify the token, the primary need is to check correct formation | |||
| and signing as for any CWT token. In addition though, the verifier | and signing as for any CWT token. In addition though, the verifier | |||
| can operate a policy where values of some of the claims in this | can operate a policy where values of some of the claims in this | |||
| profile can be compared to reference values, registered with the | profile can be compared to reference values, registered with the | |||
| verifier for a given deployment, in order to confirm that the device | verifier for a given deployment, in order to confirm that the device | |||
| is endorsed by the manufacturer supply chain. The policy may require | is endorsed by the manufacturer supply chain. The policy may require | |||
| that the relevant claims must have a match to a registered reference | that the relevant claims must have a match to a registered reference | |||
| value. All claims may be worthy of additional appraisal. It is | value. All claims may be worthy of additional appraisal. It is | |||
| likely that most deployments would include a policy with appraisal | likely that most deployments would include a policy with appraisal | |||
| skipping to change at page 15, line 39 ¶ | skipping to change at page 16, line 39 ¶ | |||
| verification policy may then allow this value to match any point | verification policy may then allow this value to match any point | |||
| on that release sequence or expect some minimum level of maturity | on that release sequence or expect some minimum level of maturity | |||
| related to the sequence. | related to the sequence. | |||
| * Software Component, Signer ID - where present in a deployment, | * Software Component, Signer ID - where present in a deployment, | |||
| this could allow a verifier to operate a more general policy than | this could allow a verifier to operate a more general policy than | |||
| that for Measurement Value as above, by allowing a token to | that for Measurement Value as above, by allowing a token to | |||
| contain any firmware entries signed by a known Signer ID, without | contain any firmware entries signed by a known Signer ID, without | |||
| checking for a uniquely registered version. | checking for a uniquely registered version. | |||
| 8. IANA Considerations | 10. IANA Considerations | |||
| 8.1. CBOR Web Token Claims Registration | ||||
| This specification registers the following claims in the IANA "CBOR | ||||
| Web Token (CWT) Claims" registry [IANA-CWT], established by | ||||
| [RFC8392]. | ||||
| 8.1.1. Nonce Claim | ||||
| * Claim Name: "psa-nonce" | ||||
| * Claim Description: Nonce | ||||
| * JWT Claim Name: "psa-nonce" | ||||
| * Claim Key: [[Proposed: -75008]] | ||||
| * Claim Value Type(s): bytes (32, 48, or 64 bytes in length) | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.1.1 of [[this RFC]] | ||||
| 8.1.2. Client ID Claim | ||||
| * Claim Name: "psa-client-id" | ||||
| * Claim Description: Client ID | ||||
| * JWT Claim Name: "psa-client-id" | ||||
| * Claim Key: [[Proposed: -75001]] | ||||
| * Claim Value Type(s): signed integer | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.1.2 of [[this RFC]] | ||||
| 8.1.3. Instance ID Claim | ||||
| * Claim Name: "psa-instance-id" | ||||
| * Claim Description: Instance ID | ||||
| * JWT Claim Name: "psa-instance-id" | ||||
| * Claim Key: [[Proposed: -75009]] | ||||
| * Claim Value Type(s): bytes (33 bytes in length) | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.2.1 of [[this RFC]] | ||||
| 8.1.4. Implementation ID Claim | ||||
| * Claim Name: "psa-implementation-id" | ||||
| * Claim Description: Implementation ID | ||||
| * JWT Claim Name: "psa-implementation-id" | ||||
| * Claim Key: [[Proposed: -75003]] | ||||
| * Claim Value Type(s): bytes (32 bytes in length) | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.2.2 of [[this RFC]] | ||||
| 8.1.5. Certification Reference Claim | ||||
| * Claim Name: "psa-certification-reference" | ||||
| * Claim Description: Certification Reference | ||||
| * JWT Claim Name: "psa-certification-reference" | ||||
| * Claim Key: [[Proposed: -75005]] | ||||
| * Claim Value Type(s): text | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.2.3 of [[this RFC]] | ||||
| 8.1.6. Security Lifecycle Claim | ||||
| * Claim Name: "psa-lifecycle" | ||||
| * Claim Description: Security Lifecycle | ||||
| * JWT Claim Name: "psa-lifecycle" | ||||
| * Claim Key: [[Proposed: -75002]] | ||||
| * Claim Value Type(s): unsigned integer | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.3.1 of [[this RFC]] | ||||
| 8.1.7. Boot Seed Claim | ||||
| * Claim Name: "psa-boot-seed" | ||||
| * Claim Description: Boot Seed | ||||
| * JWT Claim Name: "psa-boot-seed" | ||||
| * Claim Key: [[Proposed: -75004]] | ||||
| * Claim Value Type(s): bytes (32 bytes in length) | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.3.2 of [[this RFC]] | ||||
| 8.1.8. Software Components Claim | ||||
| * Claim Name: "psa-software-components" | ||||
| * Claim Description: Software Components | ||||
| * JWT Claim Name: "psa-software-components" | ||||
| * Claim Key: [[Proposed: -75006]] | ||||
| * Claim Value Type(s): array | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.4.1 of [[this RFC]] | ||||
| 8.1.9. No Software Measurements Claim | ||||
| * Claim Name: "psa-no-sw-measurement" | ||||
| * Claim Description: No Software Measurements | ||||
| * JWT Claim Name: "psa-no-sw-measurement" | ||||
| * Claim Key: [[Proposed: -75007]] | ||||
| * Claim Value Type(s): unsigned integer | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.4.2 of [[this RFC]] | ||||
| 8.1.10. Verification Service Indicator Claim | ||||
| * Claim Name: "psa-verification-service-indicator" | ||||
| * Claim Description: Verification Service Indicator | ||||
| * JWT Claim Name: "psa-verification-service-indicator" | ||||
| * Claim Key: [[Proposed: -75010]] | ||||
| * Claim Value Type(s): text | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.5.1 of [[this RFC]] | ||||
| 8.1.11. Profile Definition Claim | ||||
| * Claim Name: "psa-profile" | ||||
| * Claim Description: Profile Definition | ||||
| * JWT Claim Name: "psa-profile" | ||||
| * Claim Key: [[Proposed: -75000]] | ||||
| * Claim Value Type(s): text | ||||
| * Change Controller: [[Authors of this RFC]] | ||||
| * Specification Document(s): Section 3.5.2 of [[this RFC]] | ||||
| 8.2. Media Type Registration | 10.1. Media Type Registration | |||
| IANA is requested to register the "application/psa-attestation-token" | IANA is requested to register the "application/psa-attestation-token" | |||
| media type [RFC2046] in the "Media Types" registry [IANA-MediaTypes] | media type [RFC2046] in the "Media Types" registry [IANA-MediaTypes] | |||
| in the manner described in RFC 6838 [RFC6838], which can be used to | in the manner described in RFC 6838 [RFC6838], which can be used to | |||
| indicate that the content is a PSA Attestation Token. | indicate that the content is a PSA Attestation Token. | |||
| * Type name: application | * Type name: application | |||
| * Subtype name: psa-attestation-token | * Subtype name: psa-attestation-token | |||
| skipping to change at page 20, line 33 ¶ | skipping to change at page 17, line 42 ¶ | |||
| * Intended usage: COMMON | * Intended usage: COMMON | |||
| * Restrictions on usage: none | * Restrictions on usage: none | |||
| * Author: Hannes Tschofenig, Hannes.Tschofenig@arm.com | * Author: Hannes Tschofenig, Hannes.Tschofenig@arm.com | |||
| * Change controller: IESG | * Change controller: IESG | |||
| * Provisional registration? No | * Provisional registration? No | |||
| 8.3. CoAP Content-Formats Registration | 10.2. CoAP Content-Formats Registration | |||
| IANA is requested to register the CoAP Content-Format ID for the | IANA is requested to register the CoAP Content-Format ID for the | |||
| "application/psa-attestation-token" media type in the "CoAP Content- | "application/psa-attestation-token" media type in the "CoAP Content- | |||
| Formats" registry [IANA-CoAP-Content-Formats]. | Formats" registry [IANA-CoAP-Content-Formats]. | |||
| 8.3.1. Registry Contents | 10.2.1. Registry Contents | |||
| * Media Type: application/psa-attestation-token | * Media Type: application/psa-attestation-token | |||
| * Encoding: - | * Encoding: - | |||
| * Id: [[To-be-assigned by IANA]] | * Id: [[To-be-assigned by IANA]] | |||
| * Reference: [[this RFC]] | * Reference: [[this RFC]] | |||
| 9. References | 11. References | |||
| 9.1. Normative References | 11.1. Normative References | |||
| [EAN-13] GS1, "International Article Number - EAN/UPC barcodes", | [EAN-13] GS1, "International Article Number - EAN/UPC barcodes", | |||
| 2019, <https://www.gs1.org/standards/barcodes/ean-upc>. | 2019, <https://www.gs1.org/standards/barcodes/ean-upc>. | |||
| [I-D.ietf-rats-eat] | ||||
| Mandyam, G., Lundblade, L., Ballesteros, M., and J. | ||||
| O'Donoghue, "The Entity Attestation Token (EAT)", Work in | ||||
| Progress, Internet-Draft, draft-ietf-rats-eat-06, 2 | ||||
| December 2020, <http://www.ietf.org/internet-drafts/draft- | ||||
| ietf-rats-eat-06.txt>. | ||||
| [PSA-FF] Arm, "Platform Security Architecture Firmware Framework | [PSA-FF] Arm, "Platform Security Architecture Firmware Framework | |||
| 1.0 (PSA-FF)", February 2019, <https://developer.arm.com/- | 1.0 (PSA-FF)", February 2019, <https://developer.arm.com/- | |||
| /media/Files/pdf/PlatformSecurityArchitecture/Architect/ | /media/Files/pdf/PlatformSecurityArchitecture/Architect/ | |||
| DEN0063-PSA_Firmware_Framework-1.0.0-2.pdf>. | DEN0063-PSA_Firmware_Framework-1.0.0-2.pdf>. | |||
| [PSA-SM] Arm, "Platform Security Architecture Security Model 1.0 | [PSA-SM] Arm, "Platform Security Architecture Security Model 1.0 | |||
| (PSA-SM)", February 2019, <https://developer.arm.com/- | (PSA-SM)", February 2019, <https://developer.arm.com/- | |||
| /media/Files/pdf/PlatformSecurityArchitecture/Architect/ | /media/Files/pdf/PlatformSecurityArchitecture/Architect/ | |||
| DEN0079_PSA_SM_ALPHA-03_RC01.pdf>. | DEN0079_PSA_SM_ALPHA-03_RC01.pdf>. | |||
| skipping to change at page 22, line 11 ¶ | skipping to change at page 19, line 23 ¶ | |||
| [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/info/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/info/rfc8610>. | June 2019, <https://www.rfc-editor.org/info/rfc8610>. | |||
| 9.2. Informative References | 11.2. Informative References | |||
| [I-D.ietf-rats-architecture] | [I-D.ietf-rats-architecture] | |||
| Birkholz, H., Thaler, D., Richardson, M., Smith, N., and | Birkholz, H., Thaler, D., Richardson, M., Smith, N., and | |||
| W. Pan, "Remote Attestation Procedures Architecture", Work | W. Pan, "Remote Attestation Procedures Architecture", Work | |||
| in Progress, Internet-Draft, draft-ietf-rats-architecture- | in Progress, Internet-Draft, draft-ietf-rats-architecture- | |||
| 08, 8 December 2020, <http://www.ietf.org/internet-drafts/ | 08, 8 December 2020, <http://www.ietf.org/internet-drafts/ | |||
| draft-ietf-rats-architecture-08.txt>. | draft-ietf-rats-architecture-08.txt>. | |||
| [I-D.ietf-rats-eat] | ||||
| Mandyam, G., Lundblade, L., Ballesteros, M., and J. | ||||
| O'Donoghue, "The Entity Attestation Token (EAT)", Work in | ||||
| Progress, Internet-Draft, draft-ietf-rats-eat-06, 2 | ||||
| December 2020, <http://www.ietf.org/internet-drafts/draft- | ||||
| ietf-rats-eat-06.txt>. | ||||
| [IANA-CoAP-Content-Formats] | [IANA-CoAP-Content-Formats] | |||
| IANA, "CoAP Content-Formats", 2021, | IANA, "CoAP Content-Formats", 2021, | |||
| <https://www.iana.org/assignments/core-parameters>. | <https://www.iana.org/assignments/core-parameters>. | |||
| [IANA-CWT] IANA, "CBOR Web Token (CWT) Claims", 2021, | [IANA-CWT] IANA, "CBOR Web Token (CWT) Claims", 2021, | |||
| <https://www.iana.org/assignments/cwt/cwt.xhtml>. | <https://www.iana.org/assignments/cwt/cwt.xhtml>. | |||
| [IANA-MediaTypes] | [IANA-MediaTypes] | |||
| IANA, "Media Types", 2021, | IANA, "Media Types", 2021, | |||
| <http://www.iana.org/assignments/media-types>. | <http://www.iana.org/assignments/media-types>. | |||
| skipping to change at page 23, line 14 ¶ | skipping to change at page 20, line 19 ¶ | |||
| Appendix B. Example | Appendix B. Example | |||
| The following example shows a PSA attestation token for an | The following example shows a PSA attestation token for an | |||
| hypothetical system comprising two measured software components (a | hypothetical system comprising two measured software components (a | |||
| boot loader and a trusted RTOS). The attesting device is in a | boot loader and a trusted RTOS). The attesting device is in a | |||
| lifecycle state Section 3.3.1 of SECURED. The attestation has been | lifecycle state Section 3.3.1 of SECURED. The attestation has been | |||
| requested from a client residing in the SPE: | requested from a client residing in the SPE: | |||
| { | { | |||
| / psa-profile / -75000: "PSA_IOT_PROFILE_1", | / profile / 18: "http://arm.com/psa/2.0.0", | |||
| / psa-client-id / -75001: 1, | / psa-client-id / -75001: 1, | |||
| / psa-lifecycle / -75002: 12288, | / psa-lifecycle / -75002: 12288, | |||
| / psa-implementation-id / -75003: h'50515253545556575051 | / psa-implementation-id / -75003: h'50515253545556575051 | |||
| 52535455565750515253545556575051525354555657', | 52535455565750515253545556575051525354555657', | |||
| / psa-boot-seed / -75004: h'DEADBEEFDEADBEEFDEAD | / psa-boot-seed / -75004: h'DEADBEEFDEADBEEFDEAD | |||
| BEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF', | BEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF', | |||
| / psa-certification-reference / -75005: "1234567890123", | / psa-certification-reference / -75005: "1234567890123", | |||
| / psa-software-components / -75006: [ | / psa-software-components / -75006: [ | |||
| { | { | |||
| / measurement type / 1: "BL", | / measurement type / 1: "BL", | |||
| skipping to change at page 23, line 38 ¶ | skipping to change at page 20, line 43 ¶ | |||
| F519200FF519200FF519200FF519200FF' | F519200FF519200FF519200FF519200FF' | |||
| }, | }, | |||
| { | { | |||
| / measurement type / 1: "PRoT", | / measurement type / 1: "PRoT", | |||
| / measurement value / 2: h'0506070805060708050607080506070 | / measurement value / 2: h'0506070805060708050607080506070 | |||
| 805060708050607080506070805060708', | 805060708050607080506070805060708', | |||
| / signer ID / 5: h'519200FF519200FF519200FF519200F | / signer ID / 5: h'519200FF519200FF519200FF519200F | |||
| F519200FF519200FF519200FF519200FF' | F519200FF519200FF519200FF519200FF' | |||
| } | } | |||
| ], | ], | |||
| / psa-nonce / -75008: h'00010203000102030001020300010203 | / nonce / 10: h'00010203000102030001020300010203 | |||
| 00010203000102030001020300010203', | 00010203000102030001020300010203', | |||
| / psa-instance-id / -75009: h'01A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2 | / ueid / 11: h'01A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2 | |||
| A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3', | A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3', | |||
| / psa-verification-service-indicator / -75010: "https://psa-ve | / psa-verification-service-indicator / -75010: "https://psa-ve | |||
| rifier.org" | rifier.org" | |||
| } | } | |||
| The JWK representation of the IAK used for creating the COSE Sign1 | The JWK representation of the IAK used for creating the COSE Sign1 | |||
| signature over the PSA token is: | signature over the PSA token is: | |||
| { | { | |||
| "kty": "EC", | "kty": "EC", | |||
| skipping to change at page 24, line 21 ¶ | skipping to change at page 21, line 21 ¶ | |||
| "use": "enc", | "use": "enc", | |||
| "kid": "1" | "kid": "1" | |||
| } | } | |||
| The resulting COSE object is: | The resulting COSE object is: | |||
| 18( | 18( | |||
| [ | [ | |||
| / protected / h'A10126', | / protected / h'A10126', | |||
| / unprotected / {}, | / unprotected / {}, | |||
| / payload / h'AA3A000124F7715053415F494F545F50524F46494C | / payload / h'AD127818687474703A2F2F61726D2E636F6D2F7073 | |||
| 455F313A000124F8013A000124F91930003A000124FA58205051525354555657 | 612F322E302E303A000124F8013A000124F91930003A000124FA582050515253 | |||
| 5051525354555657505152535455565750515253545556573A000124FB5820DE | 545556575051525354555657505152535455565750515253545556573A000124 | |||
| ADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF3A | FB5820DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDE | |||
| 000124FC6D313233343536373839303132333A000124FD82A30162424C025820 | ADBEEF3A000124FC6D313233343536373839303132333A000124FD82A3016242 | |||
| 0001020400010204000102040001020400010204000102040001020400010204 | 4C02582000010204000102040001020400010204000102040001020400010204 | |||
| 055820519200FF519200FF519200FF519200FF519200FF519200FF519200FF51 | 00010204055820519200FF519200FF519200FF519200FF519200FF519200FF51 | |||
| 9200FFA3016450526F5402582005060708050607080506070805060708050607 | 9200FF519200FFA3016450526F54025820050607080506070805060708050607 | |||
| 08050607080506070805060708055820519200FF519200FF519200FF519200FF | 0805060708050607080506070805060708055820519200FF519200FF519200FF | |||
| 519200FF519200FF519200FF519200FF3A000124FF5820000102030001020300 | 519200FF519200FF519200FF519200FF519200FF0A5820000102030001020300 | |||
| 01020300010203000102030001020300010203000102033A00012500582101A0 | 01020300010203000102030001020300010203000102030B582101A0A1A2A3A0 | |||
| A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A33A | A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A33A00012501 | |||
| 00012501781868747470733A2F2F7073612D76657269666965722E6F7267', | 781868747470733A2F2F7073612D76657269666965722E6F72673A00012500F6 | |||
| / signature / h'7C0FA38F80E5EA2A5C710A4BB37ABE63B26B25F17D | 3A000124F7F63A000124FFF6', | |||
| B6BE9489587F9B3F8FEB80E0E410D8CDAAFAE5588024CB3E18D60C1F96CED9E0 | / signature / h'8C92FDC99CFDB0016F27008744B3730266342D2881 | |||
| 6743824614019E99BF13FE' | 861DC9A3F89E02394DE7F906EE2D1A3C164A59D580CDD7DFA077290CBFB55069 | |||
| C55A5D9A2AE17FA31D2108' | ||||
| ] | ] | |||
| ) | ) | |||
| Contributors | Contributors | |||
| We would like to thank the following colleagues for their | We would like to thank the following colleagues for their | |||
| contributions: | contributions: | |||
| * Laurence Lundblade | * Laurence Lundblade | |||
| Security Theory LLC | Security Theory LLC | |||
| End of changes. 40 change blocks. | ||||
| 282 lines changed or deleted | 162 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||