| < draft-ietf-rats-architecture-05.txt | draft-ietf-rats-architecture-07.txt > | |||
|---|---|---|---|---|
| RATS Working Group H. Birkholz | RATS Working Group H. Birkholz | |||
| Internet-Draft Fraunhofer SIT | Internet-Draft Fraunhofer SIT | |||
| Intended status: Informational D. Thaler | Intended status: Informational D. Thaler | |||
| Expires: 11 January 2021 Microsoft | Expires: 19 April 2021 Microsoft | |||
| M. Richardson | M. Richardson | |||
| Sandelman Software Works | Sandelman Software Works | |||
| N. Smith | N. Smith | |||
| Intel | Intel | |||
| W. Pan | W. Pan | |||
| Huawei Technologies | Huawei Technologies | |||
| 10 July 2020 | 16 October 2020 | |||
| Remote Attestation Procedures Architecture | Remote Attestation Procedures Architecture | |||
| draft-ietf-rats-architecture-05 | draft-ietf-rats-architecture-07 | |||
| Abstract | Abstract | |||
| In network protocol exchanges, it is often the case that one entity | In network protocol exchanges, it is often the case that one entity | |||
| (a Relying Party) requires evidence about a remote peer to assess the | (a Relying Party) requires evidence about a remote peer to assess the | |||
| peer's trustworthiness, and a way to appraise such evidence. The | peer's trustworthiness, and a way to appraise such evidence. The | |||
| evidence is typically a set of claims about its software and hardware | evidence is typically a set of claims about its software and hardware | |||
| platform. This document describes an architecture for such remote | platform. This document describes an architecture for such remote | |||
| attestation procedures (RATS). | attestation procedures (RATS). | |||
| skipping to change at page 2, line 10 ¶ | skipping to change at page 2, line 10 ¶ | |||
| 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 11 January 2021. | This Internet-Draft will expire on 19 April 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Reference Use Cases . . . . . . . . . . . . . . . . . . . . . 5 | 3. Reference Use Cases . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. Network Endpoint Assessment . . . . . . . . . . . . . . . 5 | 3.1. Network Endpoint Assessment . . . . . . . . . . . . . . . 6 | |||
| 3.2. Confidential Machine Learning (ML) Model Protection . . . 6 | 3.2. Confidential Machine Learning (ML) Model Protection . . . 6 | |||
| 3.3. Confidential Data Retrieval . . . . . . . . . . . . . . . 6 | 3.3. Confidential Data Retrieval . . . . . . . . . . . . . . . 7 | |||
| 3.4. Critical Infrastructure Control . . . . . . . . . . . . . 6 | 3.4. Critical Infrastructure Control . . . . . . . . . . . . . 7 | |||
| 3.5. Trusted Execution Environment (TEE) Provisioning . . . . 7 | 3.5. Trusted Execution Environment (TEE) Provisioning . . . . 7 | |||
| 3.6. Hardware Watchdog . . . . . . . . . . . . . . . . . . . . 7 | 3.6. Hardware Watchdog . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4. Architectural Overview . . . . . . . . . . . . . . . . . . . 8 | 3.7. FIDO Biometric Authentication . . . . . . . . . . . . . . 8 | |||
| 4.1. Appraisal Policies . . . . . . . . . . . . . . . . . . . 9 | 4. Architectural Overview . . . . . . . . . . . . . . . . . . . 9 | |||
| 4.2. Two Types of Environments of an Attester . . . . . . . . 9 | 4.1. Appraisal Policies . . . . . . . . . . . . . . . . . . . 10 | |||
| 4.3. Layered Attestation Environments . . . . . . . . . . . . 10 | 4.2. Reference Values . . . . . . . . . . . . . . . . . . . . 10 | |||
| 4.4. Composite Device . . . . . . . . . . . . . . . . . . . . 12 | 4.3. Two Types of Environments of an Attester . . . . . . . . 10 | |||
| 5. Topological Models . . . . . . . . . . . . . . . . . . . . . 15 | 4.4. Layered Attestation Environments . . . . . . . . . . . . 11 | |||
| 5.1. Passport Model . . . . . . . . . . . . . . . . . . . . . 15 | 4.5. Composite Device . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.2. Background-Check Model . . . . . . . . . . . . . . . . . 16 | 5. Topological Models . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 5.3. Combinations . . . . . . . . . . . . . . . . . . . . . . 17 | 5.1. Passport Model . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6. Roles and Entities . . . . . . . . . . . . . . . . . . . . . 18 | 5.2. Background-Check Model . . . . . . . . . . . . . . . . . 17 | |||
| 7. Trust Model . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 5.3. Combinations . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 7.1. Relying Party . . . . . . . . . . . . . . . . . . . . . . 19 | 6. Roles and Entities . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 7.2. Attester . . . . . . . . . . . . . . . . . . . . . . . . 20 | 7. Trust Model . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 7.3. Relying Party Owner . . . . . . . . . . . . . . . . . . . 20 | 7.1. Relying Party . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 7.4. Verifier . . . . . . . . . . . . . . . . . . . . . . . . 20 | 7.2. Attester . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 7.5. Endorser and Verifier Owner . . . . . . . . . . . . . . . 21 | 7.3. Relying Party Owner . . . . . . . . . . . . . . . . . . . 21 | |||
| 7.4. Verifier . . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| 8. Conceptual Messages . . . . . . . . . . . . . . . . . . . . . 21 | 7.5. Endorser, Reference Value Provider, and Verifier Owner . 23 | |||
| 8.1. Evidence . . . . . . . . . . . . . . . . . . . . . . . . 21 | 8. Conceptual Messages . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 8.2. Endorsements . . . . . . . . . . . . . . . . . . . . . . 21 | 8.1. Evidence . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 8.3. Attestation Results . . . . . . . . . . . . . . . . . . . 22 | 8.2. Endorsements . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 9. Claims Encoding Formats . . . . . . . . . . . . . . . . . . . 23 | 8.3. Attestation Results . . . . . . . . . . . . . . . . . . . 24 | |||
| 10. Freshness . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 9. Claims Encoding Formats . . . . . . . . . . . . . . . . . . . 25 | |||
| 11. Privacy Considerations . . . . . . . . . . . . . . . . . . . 27 | 10. Freshness . . . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 12. Security Considerations . . . . . . . . . . . . . . . . . . . 27 | 11. Privacy Considerations . . . . . . . . . . . . . . . . . . . 29 | |||
| 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | 12. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | |||
| 14. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 28 | 12.1. Attester and Attestation Key Protection . . . . . . . . 30 | |||
| 15. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 29 | 12.1.1. On-Device Attester and Key Protection . . . . . . . 30 | |||
| 16. Appendix A: Time Considerations . . . . . . . . . . . . . . . 29 | 12.1.2. Attestation Key Provisioning Processes . . . . . . . 31 | |||
| 16.1. Example 1: Timestamp-based Passport Model Example . . . 30 | 12.2. Integrity Protection . . . . . . . . . . . . . . . . . . 31 | |||
| 16.2. Example 2: Nonce-based Passport Model Example . . . . . 32 | 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 16.3. Example 3: Timestamp-based Background-Check Model | 14. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| Example . . . . . . . . . . . . . . . . . . . . . . . . 33 | 15. Notable Contributions . . . . . . . . . . . . . . . . . . . . 33 | |||
| 16.4. Example 4: Nonce-based Background-Check Model Example . 33 | 16. Appendix A: Time Considerations . . . . . . . . . . . . . . . 33 | |||
| 17. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | 16.1. Example 1: Timestamp-based Passport Model Example . . . 34 | |||
| 17.1. Normative References . . . . . . . . . . . . . . . . . . 34 | 16.2. Example 2: Nonce-based Passport Model Example . . . . . 36 | |||
| 17.2. Informative References . . . . . . . . . . . . . . . . . 34 | 16.3. Example 3: Handle-based Passport Model Example . . . . . 37 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | 16.4. Example 4: Timestamp-based Background-Check Model | |||
| Example . . . . . . . . . . . . . . . . . . . . . . . . 39 | ||||
| 16.5. Example 5: Nonce-based Background-Check Model Example . 39 | ||||
| 17. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 | ||||
| 17.1. Normative References . . . . . . . . . . . . . . . . . . 40 | ||||
| 17.2. Informative References . . . . . . . . . . . . . . . . . 40 | ||||
| Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 41 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
| 1. Introduction | 1. Introduction | |||
| In Remote Attestation Procedures (RATS), one peer (the "Attester") | In Remote Attestation Procedures (RATS), one peer (the "Attester") | |||
| produces believable information about itself - Evidence - to enable a | produces believable information about itself - Evidence - to enable a | |||
| remote peer (the "Relying Party") to decide whether to consider that | remote peer (the "Relying Party") to decide whether to consider that | |||
| Attester a trustworthy peer or not. RATS are facilitated by an | Attester a trustworthy peer or not. RATS are facilitated by an | |||
| additional vital party, the Verifier. | additional vital party, the Verifier. | |||
| The Verifier appraises Evidence via Appraisal Policies and creates | The Verifier appraises Evidence via appraisal policies and creates | |||
| the Attestation Results to support Relying Parties in their decision | the Attestation Results to support Relying Parties in their decision | |||
| process. This documents defines a flexible architecture consisting | process. This documents defines a flexible architecture consisting | |||
| of attestation roles and their interactions via conceptual messages. | of attestation roles and their interactions via conceptual messages. | |||
| Additionally, this document defines a universal set of terms that can | Additionally, this document defines a universal set of terms that can | |||
| be mapped to various existing and emerging Remote Attestation | be mapped to various existing and emerging Remote Attestation | |||
| Procedures. Common topological models and the data flows associated | Procedures. Common topological models and the data flows associated | |||
| with them, such as the "Passport Model" and the "Background-Check | with them, such as the "Passport Model" and the "Background-Check | |||
| Model" are illustrated. The purpose is to define useful terminology | Model" are illustrated. The purpose is to define useful terminology | |||
| for attestation and enable readers to map their solution architecture | for attestation and enable readers to map their solution architecture | |||
| to the canonical attestation architecture provided here. Having a | to the canonical attestation architecture provided here. Having a | |||
| skipping to change at page 4, line 40 ¶ | skipping to change at page 4, line 45 ¶ | |||
| vouches for the validity of the results | vouches for the validity of the results | |||
| Attester: A role performed by an entity (typically a device) whose | Attester: A role performed by an entity (typically a device) whose | |||
| Evidence must be appraised in order to infer the extent to which | Evidence must be appraised in order to infer the extent to which | |||
| the Attester is considered trustworthy, such as when deciding | the Attester is considered trustworthy, such as when deciding | |||
| whether it is authorized to perform some operation | whether it is authorized to perform some operation | |||
| Claim: A piece of asserted information, often in the form of a name/ | Claim: A piece of asserted information, often in the form of a name/ | |||
| value pair. (Compare /claim/ in [RFC7519]) | value pair. (Compare /claim/ in [RFC7519]) | |||
| Endorsement: A secure statement that some entity (typically a | Endorsement: A secure statement that an Endorser vouches for the | |||
| manufacturer) vouches for the integrity of an Attester's signing | integrity of an Attester's various capabilities such as Claims | |||
| capability | collection and Evidence signing | |||
| Endorser: An entity (typically a manufacturer) whose Endorsements | Endorser: An entity (typically a manufacturer) whose Endorsements | |||
| help Verifiers appraise the authenticity of Evidence | help Verifiers appraise the authenticity of Evidence | |||
| Evidence: A set of information about an Attester that is to be | Evidence: A set of information about an Attester that is to be | |||
| appraised by a Verifier. Evidence may include configuration data, | appraised by a Verifier. Evidence may include configuration data, | |||
| measurements, telemetry, or inferences. | measurements, telemetry, or inferences. | |||
| Reference Value Provider: An entity (typically a manufacturer) whose | ||||
| Reference Values help Verifiers appraise the authenticity of | ||||
| Evidence. | ||||
| Reference Values: A set of values against which values of Claims can | ||||
| be compared as part of applying an Appraisal Policy for Evidence. | ||||
| Reference Values are sometimes referred to in other documents as | ||||
| known-good values, golden measurements, or nominal values, | ||||
| although those terms typically assume comparison for equality, | ||||
| whereas here Reference Values might be more general and be used in | ||||
| any sort of comparison. | ||||
| Relying Party: A role performed by an entity that depends on the | Relying Party: A role performed by an entity that depends on the | |||
| validity of information about an Attester, for purposes of | validity of information about an Attester, for purposes of | |||
| reliably applying application specific actions. Compare /relying | reliably applying application specific actions. Compare /relying | |||
| party/ in [RFC4949] | party/ in [RFC4949] | |||
| Relying Party Owner: An entity (typically an administrator), that is | Relying Party Owner: An entity (typically an administrator), that is | |||
| authorized to configure Appraisal Policy for Attestation Results | authorized to configure Appraisal Policy for Attestation Results | |||
| in a Relying Party | in a Relying Party | |||
| Verifier: A role performed by an entity that appraises the validity | Verifier: A role performed by an entity that appraises the validity | |||
| skipping to change at page 5, line 46 ¶ | skipping to change at page 6, line 18 ¶ | |||
| and version of information of the hardware and software on the | and version of information of the hardware and software on the | |||
| machines attached to their network, for purposes such as inventory, | machines attached to their network, for purposes such as inventory, | |||
| audit, anomaly detection, record maintenance and/or trending reports | audit, anomaly detection, record maintenance and/or trending reports | |||
| (logging). The network operator may also want a policy by which full | (logging). The network operator may also want a policy by which full | |||
| access is only granted to devices that meet some definition of | access is only granted to devices that meet some definition of | |||
| hygiene, and so wants to get claims about such information and verify | hygiene, and so wants to get claims about such information and verify | |||
| their validity. Remote attestation is desired to prevent vulnerable | their validity. Remote attestation is desired to prevent vulnerable | |||
| or compromised devices from getting access to the network and | or compromised devices from getting access to the network and | |||
| potentially harming others. | potentially harming others. | |||
| Typically, solutions start with a specific component (called a "Root | Typically, solutions start with a specific component (called a "root | |||
| of Trust") that provides device identity and protected storage for | of trust") that provides device identity and protected storage for | |||
| measurements. The system components perform a series of measurements | measurements. The system components perform a series of measurements | |||
| that may be signed by the Root of Trust, considered as Evidence about | that may be signed by the root of trust, considered as Evidence about | |||
| the hardware, firmware, BIOS, software, etc. that is running. | the hardware, firmware, BIOS, software, etc. that is running. | |||
| Attester: A device desiring access to a network | Attester: A device desiring access to a network | |||
| Relying Party: A network infrastructure device such as a router, | Relying Party: A network infrastructure device such as a router, | |||
| switch, or access point | switch, or access point | |||
| 3.2. Confidential Machine Learning (ML) Model Protection | 3.2. Confidential Machine Learning (ML) Model Protection | |||
| A device manufacturer wants to protect its intellectual property. | A device manufacturer wants to protect its intellectual property. | |||
| skipping to change at page 6, line 25 ¶ | skipping to change at page 6, line 44 ¶ | |||
| preventing attackers, potentially the customer themselves, from | preventing attackers, potentially the customer themselves, from | |||
| seeing the details of the model. | seeing the details of the model. | |||
| This typically works by having some protected environment in the | This typically works by having some protected environment in the | |||
| device go through a remote attestation with some manufacturer service | device go through a remote attestation with some manufacturer service | |||
| that can assess its trustworthiness. If remote attestation succeeds, | that can assess its trustworthiness. If remote attestation succeeds, | |||
| then the manufacturer service releases either the model, or a key to | then the manufacturer service releases either the model, or a key to | |||
| decrypt a model the Attester already has in encrypted form, to the | decrypt a model the Attester already has in encrypted form, to the | |||
| requester. | requester. | |||
| Attester: A device desiring to run an ML model to do inferencing | Attester: A device desiring to run an ML model | |||
| Relying Party: A server or service holding ML models it desires to | Relying Party: A server or service holding ML models it desires to | |||
| protect | protect | |||
| 3.3. Confidential Data Retrieval | 3.3. Confidential Data Retrieval | |||
| This is a generalization of the ML model use case above, where the | This is a generalization of the ML model use case above, where the | |||
| data can be any highly confidential data, such as health data about | data can be any highly confidential data, such as health data about | |||
| customers, payroll data about employees, future business plans, etc. | customers, payroll data about employees, future business plans, etc. | |||
| An assessment of system state is made against a set of policies to | An assessment of system state is made against a set of policies to | |||
| skipping to change at page 8, line 7 ¶ | skipping to change at page 8, line 30 ¶ | |||
| If the watchdog does not receive regular, and fresh, Attestation | If the watchdog does not receive regular, and fresh, Attestation | |||
| Results as to the systems' health, then it forces a reboot. | Results as to the systems' health, then it forces a reboot. | |||
| Attester: The device that is desired to keep from being held hostage | Attester: The device that is desired to keep from being held hostage | |||
| for a long period of time | for a long period of time | |||
| Relying Party: A remote server that will securely grant the Attester | Relying Party: A remote server that will securely grant the Attester | |||
| permission to continue operating (i.e., not reboot) for a period | permission to continue operating (i.e., not reboot) for a period | |||
| of time | of time | |||
| 3.7. FIDO Biometric Authentication | ||||
| In the Fast IDentity Online (FIDO) protocol [WebAuthN], [CTAP], the | ||||
| device in the user's hand authenticates the human user, whether by | ||||
| biometrics (such as fingerprints), or by PIN and password. FIDO | ||||
| authentication puts a large amount of trust in the device compared to | ||||
| typical password authentication because it is the device that | ||||
| verifies the biometric, PIN and password inputs from the user, not | ||||
| the server. For the Relying Party to know that the authentication is | ||||
| trustworthy, the Relying Party needs to know that the Authenticator | ||||
| part of the device is trustworthy. The FIDO protocol employs remote | ||||
| attestation for this. | ||||
| The FIDO protocol supports several remote attestation protocols and a | ||||
| mechanism by which new ones can be registered and added. Remote | ||||
| attestation defined by RATS is thus a candidate for use in the FIDO | ||||
| protocol. | ||||
| Other biometric authentication protocols such as the Chinese IFAA | ||||
| standard and WeChat Pay as well as Google Pay make use of attestation | ||||
| in one form or another. | ||||
| Attester: Every FIDO Authenticator contains an Attester. | ||||
| Relying Party: Any web site, mobile application back end or service | ||||
| that does biometric authentication. | ||||
| 4. Architectural Overview | 4. Architectural Overview | |||
| Figure 1 depicts the data that flows between different roles, | Figure 1 depicts the data that flows between different roles, | |||
| independent of protocol or use case. | independent of protocol or use case. | |||
| ************ ************ **************** | ************ ************* ************ ***************** | |||
| * Endorser * * Verifier * * Relying Party* | * Endorser * * Reference * * Verifier * * Relying Party * | |||
| ************ * Owner * * Owner * | ************ * Value * * Owner * * Owner * | |||
| | ************ **************** | | * Provider * ************ ***************** | |||
| | | | | | ************* | | | |||
| Endorsements| | | | | | | | | |||
| | |Appraisal | | |Endorsements |Reference |Appraisal |Appraisal | |||
| | |Policy | | | |Values |Policy |Policy for | |||
| | |for | Appraisal | | | |for |Attestation | |||
| | |Evidence | Policy for | .-----------. | |Evidence |Results | |||
| | | | Attestation | | | | | | |||
| | | | Results | | | | | | |||
| v v | | v v v | | |||
| .-----------------. | | .---------------------------. | | |||
| .----->| Verifier |------. | | .----->| Verifier |------. | | |||
| | '-----------------' | | | | '---------------------------' | | | |||
| | | | | | | | | |||
| | Attestation| | | | Attestation| | | |||
| | Results | | | | Results | | | |||
| | Evidence | | | | Evidence | | | |||
| | | | | | | | | |||
| | v v | | v v | |||
| .----------. .-----------------. | .----------. .---------------. | |||
| | Attester | | Relying Party | | | Attester | | Relying Party | | |||
| '----------' '-----------------' | '----------' '---------------' | |||
| Figure 1: Conceptual Data Flow | Figure 1: Conceptual Data Flow | |||
| An Attester creates Evidence that is conveyed to a Verifier. | An Attester creates Evidence that is conveyed to a Verifier. | |||
| The Verifier uses the Evidence, and any Endorsements from Endorsers, | The Verifier uses the Evidence, and any Endorsements from Endorsers, | |||
| by applying an Evidence Appraisal Policy to assess the | by applying an Appraisal Policy for Evidence to assess the | |||
| trustworthiness of the Attester, and generates Attestation Results | trustworthiness of the Attester, and generates Attestation Results | |||
| for use by Relying Parties. The Appraisal Policy for Evidence might | for use by Relying Parties. The Appraisal Policy for Evidence might | |||
| be obtained from an Endorser along with the Endorsements, or might be | be obtained from an Endorser along with the Endorsements, and/or | |||
| obtained via some other mechanism such as being configured in the | might be obtained via some other mechanism such as being configured | |||
| Verifier by an administrator. | in the Verifier by the Verifier Owner. | |||
| The Relying Party uses Attestation Results by applying its own | The Relying Party uses Attestation Results by applying its own | |||
| Appraisal Policy to make application-specific decisions such as | pppraisal policy to make application-specific decisions such as | |||
| authorization decisions. The Appraisal Policy for Attestation | authorization decisions. The Appraisal Policy for Attestation | |||
| Results might, for example, be configured in the Relying Party by an | Results is configured in the Relying Party by the Relying Party | |||
| administrator. | Owner, and/or is programmed into the Relying Party. | |||
| 4.1. Appraisal Policies | 4.1. Appraisal Policies | |||
| The Verifier, when appraising Evidence, or the Relying Party, when | The Verifier, when appraising Evidence, or the Relying Party, when | |||
| appraising Attestation Results, checks the values of some claims | appraising Attestation Results, checks the values of some claims | |||
| against constraints specified in its Appraisal Policy. Such | against constraints specified in its appraisal policy. Such | |||
| constraints might involve a comparison for equality against a | constraints might involve a comparison for equality against a | |||
| reference value, or a check for being in a range bounded by reference | Reference Value, or a check for being in a range bounded by Reference | |||
| values, or membership in a set of reference values, or a check | Values, or membership in a set of Reference Values, or a check | |||
| against values in other claims, or any other test. | against values in other claims, or any other test. | |||
| Such reference values might be specified as part of the Appraisal | 4.2. Reference Values | |||
| Policy itself, or might be obtained from a separate source, such as | ||||
| an Endorsement, and then used by the Appraisal Policy. | ||||
| The actual data format and semantics of any reference values are | Reference Values used in appraisal might be specified as part of the | |||
| appraisal policy itself, or might be obtained from a separate source, | ||||
| such as an Endorsement, and then used by the appraisal policy. | ||||
| The actual data format and semantics of any Reference Values are | ||||
| specific to claims and implementations. This architecture document | specific to claims and implementations. This architecture document | |||
| does not define any general purpose format for them or general means | does not define any general purpose format for them or general means | |||
| for comparison. | for comparison. | |||
| 4.2. Two Types of Environments of an Attester | 4.3. Two Types of Environments of an Attester | |||
| An Attester consists of at least one Attesting Environment and at | An Attester consists of at least one Attesting Environment and at | |||
| least one Target Environment. In some implementations, the Attesting | least one Target Environment. In some implementations, the Attesting | |||
| and Target Environments might be combined. Other implementations | and Target Environments might be combined. Other implementations | |||
| might have multiple Attesting and Target Environments, such as in the | might have multiple Attesting and Target Environments, such as in the | |||
| examples described in more detail in Section 4.3 and Section 4.4. | examples described in more detail in Section 4.4 and Section 4.5. | |||
| Other examples may exist, and the examples discussed could even be | Other examples may exist, and the examples discussed could even be | |||
| combined into even more complex implementations. | combined into even more complex implementations. | |||
| Claims are collected from Target Environments, as shown in Figure 2. | Claims are collected from Target Environments, as shown in Figure 2. | |||
| That is, Attesting Environments collect the raw values and the | That is, Attesting Environments collect the values and the | |||
| information to be represented in claims, such as by doing some | information to be represented in Claims, by reading system registers | |||
| measurement of a Target Environment's code, memory, and/or registers. | and variables, calling into subsystems, taking measurements on code | |||
| Attesting Environments then format the claims appropriately, and | or memory and so on of the Target Environment. Attesting | |||
| typically use key material and cryptographic functions, such as | Environments then format the claims appropriately, and typically use | |||
| signing or cipher algorithms, to create Evidence. Places that | key material and cryptographic functions, such as signing or cipher | |||
| Attesting Environments can exist include Trusted Execution | algorithms, to create Evidence. There is no limit to or requirement | |||
| Environments (TEE), embedded Secure Elements (eSE), and BIOS | on the places that an Attesting Environment can exist, but they | |||
| firmware. An execution environment may not, by default, be capable | typically are in Trusted Execution Environments (TEE), embedded | |||
| of claims collection for a given Target Environment. Execution | Secure Elements (eSE), and BIOS firmware. An execution environment | |||
| environments that are designed to be capable of claims collection are | may not, by default, be capable of claims collection for a given | |||
| referred to in this document as Attesting Environments. | Target Environment. Execution environments that are designed to be | |||
| capable of claims collection are referred to in this document as | ||||
| Attesting Environments. | ||||
| .--------------------------------. | .--------------------------------. | |||
| | | | | | | |||
| | Verifier | | | Verifier | | |||
| | | | | | | |||
| '--------------------------------' | '--------------------------------' | |||
| ^ | ^ | |||
| | | | | |||
| .-------------------------|----------. | .-------------------------|----------. | |||
| | | | | | | | | |||
| skipping to change at page 10, line 35 ¶ | skipping to change at page 11, line 39 ¶ | |||
| | .-------------. | | | .-------------. | | |||
| | | Attesting | | | | | Attesting | | | |||
| | | Environment | | | | | Environment | | | |||
| | | | | | | | | | | |||
| | '-------------' | | | '-------------' | | |||
| | Attester | | | Attester | | |||
| '------------------------------------' | '------------------------------------' | |||
| Figure 2: Two Types of Environments | Figure 2: Two Types of Environments | |||
| 4.3. Layered Attestation Environments | 4.4. Layered Attestation Environments | |||
| By definition, the Attester role creates Evidence. An Attester may | By definition, the Attester role creates Evidence. An Attester may | |||
| consist of one or more nested or staged environments, adding | consist of one or more nested or staged environments, adding | |||
| complexity to the architectural structure. The unifying component is | complexity to the architectural structure. The unifying component is | |||
| the Root of Trust and the nested, staged, or chained attestation | the root of trust and the nested, staged, or chained attestation | |||
| Evidence produced. The nested or chained structure includes Claims, | Evidence produced. The nested or chained structure includes Claims, | |||
| collected by the Attester to aid in the assurance or believability of | collected by the Attester to aid in the assurance or believability of | |||
| the attestation Evidence. | the attestation Evidence. | |||
| Figure 3 depicts an example of a device that includes (A) a BIOS | Figure 3 depicts an example of a device that includes (A) a BIOS | |||
| stored in read-only memory in this example, (B) an updatable | stored in read-only memory in this example, (B) an updatable | |||
| bootloader, and (C) an operating system kernel. | bootloader, and (C) an operating system kernel. | |||
| .----------. .----------. | .----------. .----------. | |||
| | | | | | | | | | | |||
| skipping to change at page 12, line 29 ¶ | skipping to change at page 13, line 29 ¶ | |||
| Environment. This would result in a third set of Claims in the | Environment. This would result in a third set of Claims in the | |||
| Evidence pertaining to that application. | Evidence pertaining to that application. | |||
| The essence of this example is a cascade of staged environments. | The essence of this example is a cascade of staged environments. | |||
| Each environment has the responsibility of measuring the next | Each environment has the responsibility of measuring the next | |||
| environment before the next environment is started. In general, the | environment before the next environment is started. In general, the | |||
| number of layers may vary by device or implementation, and an | number of layers may vary by device or implementation, and an | |||
| Attesting Environment might even have multiple Target Environments | Attesting Environment might even have multiple Target Environments | |||
| that it measures, rather than only one as shown in Figure 3. | that it measures, rather than only one as shown in Figure 3. | |||
| 4.4. Composite Device | 4.5. Composite Device | |||
| A Composite Device is an entity composed of multiple sub-entities | A Composite Device is an entity composed of multiple sub-entities | |||
| such that its trustworthiness has to be determined by the appraisal | such that its trustworthiness has to be determined by the appraisal | |||
| of all these sub-entities. | of all these sub-entities. | |||
| Each sub-entity has at least one Attesting Environment collecting the | Each sub-entity has at least one Attesting Environment collecting the | |||
| claims from at least one Target Environment, then this sub-entity | claims from at least one Target Environment, then this sub-entity | |||
| generates Evidence about its trustworthiness. Therefore each sub- | generates Evidence about its trustworthiness. Therefore each sub- | |||
| entity can be called an Attester. Among all the Attesters, there may | entity can be called an Attester. Among all the Attesters, there may | |||
| be only some which have the ability to communicate with the Verifier | be only some which have the ability to communicate with the Verifier | |||
| skipping to change at page 14, line 30 ¶ | skipping to change at page 15, line 30 ¶ | |||
| | | | Environment(s) | | |<------------| ... | | | | | | Environment(s) | | |<------------| ... | | | |||
| | | | | '------------' | Evidence '------------' | | | | | | '------------' | Evidence '------------' | | |||
| | | '----------------' | of | | | | '----------------' | of | | |||
| | | | Attesters | | | | | Attesters | | |||
| | | lead Attester A | (via Internal Links or | | | | lead Attester A | (via Internal Links or | | |||
| | '--------------------------------------' Network Connections) | | | '--------------------------------------' Network Connections) | | |||
| | | | | | | |||
| | Composite Device | | | Composite Device | | |||
| '------------------------------------------------------------------' | '------------------------------------------------------------------' | |||
| Figure 4: Conceptual Data Flow for a Composite Device | Figure 4: Composite Device | |||
| In the Composite Device, each Attester generates its own Evidence by | In the Composite Device, each Attester generates its own Evidence by | |||
| its Attesting Environment(s) collecting the claims from its Target | its Attesting Environment(s) collecting the claims from its Target | |||
| Environment(s). The lead Attester collects the Evidence of all other | Environment(s). The lead Attester collects the Evidence of all other | |||
| Attesters and then generates the Evidence of the whole Composite | Attesters and then generates the Evidence of the whole Composite | |||
| Attester. | Attester. | |||
| An entity can take on multiple RATS roles (e.g., Attester, Verifier, | An entity can take on multiple RATS roles (e.g., Attester, Verifier, | |||
| Relying Party, etc.) at the same time. The combination of roles can | Relying Party, etc.) at the same time. The combination of roles can | |||
| be arbitrary. For example, in this Composite Device scenario, the | be arbitrary. For example, in this Composite Device scenario, the | |||
| entity inside the lead Attester can also take on the role of a | entity inside the lead Attester can also take on the role of a | |||
| Verifier, and the outside entity of Verifier can take on the role of | Verifier, and the outside entity of Verifier can take on the role of | |||
| a Relying Party. After collecting the Evidence of other Attesters, | a Relying Party. After collecting the Evidence of other Attesters, | |||
| this inside Verifier uses Endorsements and Appraisal Policies | this inside Verifier uses Endorsements and appraisal policies | |||
| (obtained the same way as any other Verifier) in the verification | (obtained the same way as any other Verifier) in the verification | |||
| process to generate Attestation Results. The inside Verifier then | process to generate Attestation Results. The inside Verifier then | |||
| conveys the Attestation Results of other Attesters, whether in the | conveys the Attestation Results of other Attesters, whether in the | |||
| same conveyance protocol as the Evidence or not, to the outside | same conveyance protocol as the Evidence or not, to the outside | |||
| Verifier. | Verifier. | |||
| In this situation, the trust model described in Section 7 is also | In this situation, the trust model described in Section 7 is also | |||
| suitable for this inside Verifier. | suitable for this inside Verifier. | |||
| 5. Topological Models | 5. Topological Models | |||
| skipping to change at page 15, line 30 ¶ | skipping to change at page 16, line 30 ¶ | |||
| is specific to the country involved. The citizen retains control of | is specific to the country involved. The citizen retains control of | |||
| the resulting passport document and presents it to other entities | the resulting passport document and presents it to other entities | |||
| when it needs to assert a citizenship or identity claim, such as an | when it needs to assert a citizenship or identity claim, such as an | |||
| airport immigration desk. The passport is considered sufficient | airport immigration desk. The passport is considered sufficient | |||
| because it vouches for the citizenship and identity claims, and it is | because it vouches for the citizenship and identity claims, and it is | |||
| issued by a trusted authority. Thus, in this immigration desk | issued by a trusted authority. Thus, in this immigration desk | |||
| analogy, the passport issuing agency is a Verifier, the passport is | analogy, the passport issuing agency is a Verifier, the passport is | |||
| an Attestation Result, and the immigration desk is a Relying Party. | an Attestation Result, and the immigration desk is a Relying Party. | |||
| In this model, an Attester conveys Evidence to a Verifier, which | In this model, an Attester conveys Evidence to a Verifier, which | |||
| compares the Evidence against its Appraisal Policy. The Verifier | compares the Evidence against its appraisal policy. The Verifier | |||
| then gives back an Attestation Result. If the Attestation Result was | then gives back an Attestation Result. If the Attestation Result was | |||
| a successful one, the Attester can then present the Attestation | a successful one, the Attester can then present the Attestation | |||
| Result to a Relying Party, which then compares the Attestation Result | Result to a Relying Party, which then compares the Attestation Result | |||
| against its own Appraisal Policy. | against its own appraisal policy. | |||
| There are three ways in which the process may fail. First, the | There are three ways in which the process may fail. First, the | |||
| Verifier may refuse to issue the Attestation Result due to some error | Verifier may refuse to issue the Attestation Result due to some error | |||
| in processing, or some missing input to the Verifier. The second way | in processing, or some missing input to the Verifier. The second way | |||
| in which the process may fail is when the Attestation Result is | in which the process may fail is when the Attestation Result is | |||
| examined by the Relying Party, and based upon the Appraisal Policy, | examined by the Relying Party, and based upon the appraisal policy, | |||
| the result does not pass the policy. The third way is when the | the result does not pass the policy. The third way is when the | |||
| Verifier is unreachable. | Verifier is unreachable. | |||
| Since the resource access protocol between the Attester and Relying | Since the resource access protocol between the Attester and Relying | |||
| Party includes an Attestation Result, in this model the details of | Party includes an Attestation Result, in this model the details of | |||
| that protocol constrain the serialization format of the Attestation | that protocol constrain the serialization format of the Attestation | |||
| Result. The format of the Evidence on the other hand is only | Result. The format of the Evidence on the other hand is only | |||
| constrained by the Attester-Verifier remote attestation protocol. | constrained by the Attester-Verifier remote attestation protocol. | |||
| +-------------+ | +-------------+ | |||
| | | Compare Evidence | | | Compare Evidence | |||
| | Verifier | against Appraisal Policy | | Verifier | against appraisal policy | |||
| | | | | | | |||
| +-------------+ | +-------------+ | |||
| ^ | | ^ | | |||
| Evidence| |Attestation | Evidence| |Attestation | |||
| | | Result | | | Result | |||
| | v | | v | |||
| +----------+ +---------+ | +----------+ +---------+ | |||
| | |------------->| |Compare Attestation | | |------------->| |Compare Attestation | |||
| | Attester | Attestation | Relying | Result against | | Attester | Attestation | Relying | Result against | |||
| | | Result | Party | Appraisal | | | Result | Party | appraisal | |||
| +----------+ +---------+ Policy | +----------+ +---------+ policy | |||
| Figure 5: Passport Model | Figure 5: Passport Model | |||
| 5.2. Background-Check Model | 5.2. Background-Check Model | |||
| The background-check model is so named because of the resemblance of | The background-check model is so named because of the resemblance of | |||
| how employers and volunteer organizations perform background checks. | how employers and volunteer organizations perform background checks. | |||
| When a prospective employee provides claims about education or | When a prospective employee provides claims about education or | |||
| previous experience, the employer will contact the respective | previous experience, the employer will contact the respective | |||
| institutions or former employers to validate the claim. Volunteer | institutions or former employers to validate the claim. Volunteer | |||
| organizations often perform police background checks on volunteers in | organizations often perform police background checks on volunteers in | |||
| order to determine the volunteer's trustworthiness. Thus, in this | order to determine the volunteer's trustworthiness. Thus, in this | |||
| analogy, a prospective volunteer is an Attester, the organization is | analogy, a prospective volunteer is an Attester, the organization is | |||
| the Relying Party, and a former employer or government agency that | the Relying Party, and a former employer or government agency that | |||
| issues a report is a Verifier. | issues a report is a Verifier. | |||
| In this model, an Attester conveys Evidence to a Relying Party, which | In this model, an Attester conveys Evidence to a Relying Party, which | |||
| simply passes it on to a Verifier. The Verifier then compares the | simply passes it on to a Verifier. The Verifier then compares the | |||
| Evidence against its Appraisal Policy, and returns an Attestation | Evidence against its appraisal policy, and returns an Attestation | |||
| Result to the Relying Party. The Relying Party then compares the | Result to the Relying Party. The Relying Party then compares the | |||
| Attestation Result against its own appraisal policy. | Attestation Result against its own appraisal policy. | |||
| The resource access protocol between the Attester and Relying Party | The resource access protocol between the Attester and Relying Party | |||
| includes Evidence rather than an Attestation Result, but that | includes Evidence rather than an Attestation Result, but that | |||
| Evidence is not processed by the Relying Party. Since the Evidence | Evidence is not processed by the Relying Party. Since the Evidence | |||
| is merely forwarded on to a trusted Verifier, any serialization | is merely forwarded on to a trusted Verifier, any serialization | |||
| format can be used for Evidence because the Relying Party does not | format can be used for Evidence because the Relying Party does not | |||
| need a parser for it. The only requirement is that the Evidence can | need a parser for it. The only requirement is that the Evidence can | |||
| be _encapsulated in_ the format required by the resource access | be _encapsulated in_ the format required by the resource access | |||
| skipping to change at page 17, line 14 ¶ | skipping to change at page 18, line 14 ¶ | |||
| constrained node whose purpose is to serve a given type resource | constrained node whose purpose is to serve a given type resource | |||
| using a standard resource access protocol, it already needs the | using a standard resource access protocol, it already needs the | |||
| parser(s) required by that existing protocol. Hence, the ability to | parser(s) required by that existing protocol. Hence, the ability to | |||
| let the Relying Party obtain an Attestation Result in the same | let the Relying Party obtain an Attestation Result in the same | |||
| serialization format allows minimizing the code footprint and attack | serialization format allows minimizing the code footprint and attack | |||
| surface area of the Relying Party, especially if the Relying Party is | surface area of the Relying Party, especially if the Relying Party is | |||
| a constrained node. | a constrained node. | |||
| +-------------+ | +-------------+ | |||
| | | Compare Evidence | | | Compare Evidence | |||
| | Verifier | against Appraisal | | Verifier | against appraisal | |||
| | | Policy | | | policy | |||
| +-------------+ | +-------------+ | |||
| ^ | | ^ | | |||
| Evidence| |Attestation | Evidence| |Attestation | |||
| | | Result | | | Result | |||
| | v | | v | |||
| +------------+ +-------------+ | +------------+ +-------------+ | |||
| | |-------------->| | Compare Attestation | | |-------------->| | Compare Attestation | |||
| | Attester | Evidence | Relying | Result against | | Attester | Evidence | Relying | Result against | |||
| | | | Party | Appraisal Policy | | | | Party | appraisal policy | |||
| +------------+ +-------------+ | +------------+ +-------------+ | |||
| Figure 6: Background-Check Model | Figure 6: Background-Check Model | |||
| 5.3. Combinations | 5.3. Combinations | |||
| One variation of the background-check model is where the Relying | One variation of the background-check model is where the Relying | |||
| Party and the Verifier are on the same machine, performing both | Party and the Verifier are on the same machine, performing both | |||
| functions together. In this case, there is no need for a protocol | functions together. In this case, there is no need for a protocol | |||
| between the two. | between the two. | |||
| skipping to change at page 18, line 7 ¶ | skipping to change at page 19, line 7 ¶ | |||
| uses the passport model, whereas Relying Party 2 uses an extension of | uses the passport model, whereas Relying Party 2 uses an extension of | |||
| the background-check model. Specifically, in addition to the basic | the background-check model. Specifically, in addition to the basic | |||
| functionality shown in Figure 6, Relying Party 2 actually provides | functionality shown in Figure 6, Relying Party 2 actually provides | |||
| the Attestation Result back to the Attester, allowing the Attester to | the Attestation Result back to the Attester, allowing the Attester to | |||
| use it with other Relying Parties. This is the model that the | use it with other Relying Parties. This is the model that the | |||
| Trusted Application Manager plans to support in the TEEP architecture | Trusted Application Manager plans to support in the TEEP architecture | |||
| [I-D.ietf-teep-architecture]. | [I-D.ietf-teep-architecture]. | |||
| +-------------+ | +-------------+ | |||
| | | Compare Evidence | | | Compare Evidence | |||
| | Verifier | against Appraisal Policy | | Verifier | against appraisal policy | |||
| | | | | | | |||
| +-------------+ | +-------------+ | |||
| ^ | | ^ | | |||
| Evidence| |Attestation | Evidence| |Attestation | |||
| | | Result | | | Result | |||
| | v | | v | |||
| +-------------+ | +-------------+ | |||
| | | Compare | | | Compare | |||
| | Relying | Attestation Result | | Relying | Attestation Result | |||
| | Party 2 | against Appraisal Policy | | Party 2 | against appraisal policy | |||
| +-------------+ | +-------------+ | |||
| ^ | | ^ | | |||
| Evidence| |Attestation | Evidence| |Attestation | |||
| | | Result | | | Result | |||
| | v | | v | |||
| +----------+ +----------+ | +----------+ +----------+ | |||
| | |-------------->| | Compare Attestation | | |-------------->| | Compare Attestation | |||
| | Attester | Attestation | Relying | Result against | | Attester | Attestation | Relying | Result against | |||
| | | Result | Party 1 | Appraisal Policy | | | Result | Party 1 | appraisal policy | |||
| +----------+ +----------+ | +----------+ +----------+ | |||
| Figure 7: Example Combination | Figure 7: Example Combination | |||
| 6. Roles and Entities | 6. Roles and Entities | |||
| An entity in the RATS architecture includes at least one of the roles | An entity in the RATS architecture includes at least one of the roles | |||
| defined in this document. An entity can aggregate more than one role | defined in this document. An entity can aggregate more than one role | |||
| into itself. These collapsed roles combine the duties of multiple | into itself. These collapsed roles combine the duties of multiple | |||
| roles. | roles. | |||
| skipping to change at page 19, line 42 ¶ | skipping to change at page 20, line 42 ¶ | |||
| information about itself that the Relying Party can use to assess the | information about itself that the Relying Party can use to assess the | |||
| trustworthiness of the Verifier before accepting its Attestation | trustworthiness of the Verifier before accepting its Attestation | |||
| Results. | Results. | |||
| For example, one explicit way for a Relying Party "A" to establish | For example, one explicit way for a Relying Party "A" to establish | |||
| such trust in a Verifier "B", would be for B to first act as an | such trust in a Verifier "B", would be for B to first act as an | |||
| Attester where A acts as a combined Verifier/Relying Party. If A | Attester where A acts as a combined Verifier/Relying Party. If A | |||
| then accepts B as trustworthy, it can choose to accept B as a | then accepts B as trustworthy, it can choose to accept B as a | |||
| Verifier for other Attesters. | Verifier for other Attesters. | |||
| As another example, the Relying Party can establish trust in the | ||||
| Verifier by out of band establishment of key material, combined with | ||||
| a protocol like TLS to communicate. There is an assumption that | ||||
| between the establishment of the trusted key material and the | ||||
| creation of the Evidence, that the Verifier has not been compromised. | ||||
| Similarly, the Relying Party also needs to trust the Relying Party | Similarly, the Relying Party also needs to trust the Relying Party | |||
| Owner for providing its Appraisal Policy for Attestation Results, and | Owner for providing its Appraisal Policy for Attestation Results, and | |||
| in some scenarios the Relying Party might even require that the | in some scenarios the Relying Party might even require that the | |||
| Relying Party Owner go through a remote attestation procedure with it | Relying Party Owner go through a remote attestation procedure with it | |||
| before the Relying Party will accept an updated policy. This can be | before the Relying Party will accept an updated policy. This can be | |||
| done similarly to how a Relying Party could establish trust in a | done similarly to how a Relying Party could establish trust in a | |||
| Verifier as discussed above. | Verifier as discussed above. | |||
| 7.2. Attester | 7.2. Attester | |||
| In some scenarios, Evidence might contain sensitive information such | In some scenarios, Evidence might contain sensitive information such | |||
| as Personally Identifiable Information. Thus, an Attester must trust | as Personally Identifiable Information. Thus, an Attester must trust | |||
| entities to which it conveys Evidence, to not reveal sensitive data | entities to which it conveys Evidence, to not reveal sensitive data | |||
| to unauthorized parties. The Verifier might share this information | to unauthorized parties. The Verifier might share this information | |||
| with other authorized parties, according to rules that it controls. | with other authorized parties, according to rules that it controls. | |||
| In the background-check model, this Evidence may also be revealed to | In the background-check model, this Evidence may also be revealed to | |||
| Relying Party(s). | Relying Party(s). | |||
| In some cases where Evidence contains sensitive information, an | In some cases where Evidence contains sensitive information, an | |||
| Attester might even require that a Verifier first go through a remote | Attester might even require that a Verifier first go through a TLS | |||
| attestation procedure with it before the Attester will send the | authentication or a remote attestation procedure with it before the | |||
| sensitive Evidence. This can be done by having the Attester first | Attester will send the sensitive Evidence. This can be done by | |||
| act as a Verifier/Relying Party, and the Verifier act as its own | having the Attester first act as a Verifier/Relying Party, and the | |||
| Attester, as discussed above. | Verifier act as its own Attester, as discussed above. | |||
| 7.3. Relying Party Owner | 7.3. Relying Party Owner | |||
| The Relying Party Owner might also require that the Relying Party | The Relying Party Owner might also require that the Relying Party | |||
| first act as an Attester, providing Evidence that the Owner can | first act as an Attester, providing Evidence that the Owner can | |||
| appraise, before the Owner would give the Relying Party an updated | appraise, before the Owner would give the Relying Party an updated | |||
| policy that might contain sensitive information. In such a case, | policy that might contain sensitive information. In such a case, | |||
| mutual attestation might be needed, in which case typically one | mutual authentication or attestation might be needed, in which case | |||
| side's Evidence must be considered safe to share with an untrusted | typically one side's Evidence must be considered safe to share with | |||
| entity, in order to bootstrap the sequence. | an untrusted entity, in order to bootstrap the sequence. | |||
| 7.4. Verifier | 7.4. Verifier | |||
| The Verifier trusts (or more specifically, the Verifier's security | The Verifier trusts (or more specifically, the Verifier's security | |||
| policy is written in a way that configures the Verifier to trust) a | policy is written in a way that configures the Verifier to trust) a | |||
| manufacturer, or the manufacturer's hardware, so as to be able to | manufacturer, or the manufacturer's hardware, so as to be able to | |||
| appraise the trustworthiness of that manufacturer's devices. In | appraise the trustworthiness of that manufacturer's devices. In a | |||
| solutions with weaker security, a Verifier might be configured to | typical solution, a Verifier comes to trust an Attester indirectly by | |||
| implicitly trust firmware or even software (e.g., a hypervisor). | having an Endorser (such as a manufacturer) vouch for the Attester's | |||
| ability to securely generate Evidence. | ||||
| In some solutions, a Verifier might be configured to directly trust | ||||
| an Attester by having the Verifier have the Attester's key material | ||||
| (rather than the Endorser's) in its trust anchor store. | ||||
| Such direct trust must first be established at the time of trust | ||||
| anchor store configuration either by checking with an Endorser at | ||||
| that time, or by conducting a security analysis of the specific | ||||
| device. Having the Attester directly in the trust anchor store | ||||
| narrows the Verifier's trust to only specific devices rather than all | ||||
| devices the Endorser might vouch for, such as all devices | ||||
| manufactured by the same manufacturer in the case that the Endorser | ||||
| is a manufacturer. | ||||
| Such narrowing is often important since physical possession of a | ||||
| device can also be used to conduct a number of attacks, and so a | ||||
| device in a physically secure environment (such as one's own | ||||
| premises) may be considered trusted whereas devices owned by others | ||||
| would not be. This often results in a desire to either have the | ||||
| owner run their own Endorser that would only Endorse devices one | ||||
| owns, or to use Attesters directly in the trust anchor store. When | ||||
| there are many Attesters owned, the use of an Endorser becomes more | ||||
| scalable. | ||||
| That is, it might appraise the trustworthiness of an application | That is, it might appraise the trustworthiness of an application | |||
| component, operating system component, or service under the | component, operating system component, or service under the | |||
| assumption that information provided about it by the lower-layer | assumption that information provided about it by the lower-layer | |||
| hypervisor or firmware is true. A stronger level of assurance of | firmware or software is true. A stronger level of assurance of | |||
| security comes when information can be vouched for by hardware or by | security comes when information can be vouched for by hardware or by | |||
| ROM code, especially if such hardware is physically resistant to | ROM code, especially if such hardware is physically resistant to | |||
| hardware tampering. The component that is implicitly trusted is | hardware tampering. In most cases, components that have to be | |||
| often referred to as a Root of Trust. | vouched for via Endorsements because no Evidence is generated about | |||
| them are referred to as roots of trust. | ||||
| The manufacturer of the Attester arranges for its Attesting | ||||
| Environment to be provisioned with key material. The key material is | ||||
| typically in the form of an asymmetric key pair (e.g., an RSA or | ||||
| ECDSA private key and a manufacturer-signed IDevID certificate) | ||||
| secured in the Attester. | ||||
| The Verifier is provided with an appropriate trust anchor, or | ||||
| provided with a database of public keys (rather than certificates), | ||||
| or even carefully secured lists of symmetric keys. The nature of how | ||||
| the Verifier manages to validate the signatures produced by the | ||||
| Attester is critical to the secure operation an Attestation system, | ||||
| but is not the subject of standardization within this architecture. | ||||
| A conveyance protocol that provides authentication and integrity | A conveyance protocol that provides authentication and integrity | |||
| protection can be used to convey unprotected Evidence, assuming the | protection can be used to convey unprotected Evidence, assuming the | |||
| following properties exists: | following properties exists: | |||
| 1. The key material used to authenticate and integrity protect the | 1. The key material used to authenticate and integrity protect the | |||
| conveyance channel is trusted by the Verifier to speak for the | conveyance channel is trusted by the Verifier to speak for the | |||
| Attesting Environment(s) that collected claims about the Target | Attesting Environment(s) that collected claims about the Target | |||
| Environment(s). | Environment(s). | |||
| 2. All unprotected Evidence that is conveyed is supplied exclusively | 2. All unprotected Evidence that is conveyed is supplied exclusively | |||
| by the Attesting Environment that has the key material that | by the Attesting Environment that has the key material that | |||
| protects the conveyance channel | protects the conveyance channel | |||
| 3. The Root of Trust protects both the conveyance channel key | 3. The root of trust protects both the conveyance channel key | |||
| material and the Attesting Environment with equivalent strength | material and the Attesting Environment with equivalent strength | |||
| protections. | protections. | |||
| 7.5. Endorser and Verifier Owner | See Section 12 for discussion on security strength. | |||
| In some scenarios, the Endorser and Verifier Owner may need to trust | 7.5. Endorser, Reference Value Provider, and Verifier Owner | |||
| the Verifier before giving the Endorsement and Appraisal Policy to | ||||
| it. This can be done similarly to how a Relying Party might | In some scenarios, the Endorser, Reference Value Provider, and | |||
| establish trust in a Verifier as discussed above, and in such a case, | Verifier Owner may need to trust the Verifier before giving the | |||
| mutual attestation might even be needed as discussed in Section 7.3. | Endorsement, Reference Values, or appraisal policy to it. This can | |||
| be done similarly to how a Relying Party might establish trust in a | ||||
| Verifier as discussed above, and in such a case, mutual | ||||
| authentication or attestation might even be needed as discussed in | ||||
| Section 7.3. | ||||
| 8. Conceptual Messages | 8. Conceptual Messages | |||
| 8.1. Evidence | 8.1. Evidence | |||
| Evidence is a set of claims about the target environment that reveal | Evidence is a set of claims about the target environment that reveal | |||
| operational status, health, configuration or construction that have | operational status, health, configuration or construction that have | |||
| security relevance. Evidence is evaluated by a Verifier to establish | security relevance. Evidence is evaluated by a Verifier to establish | |||
| its relevance, compliance, and timeliness. Claims need to be | its relevance, compliance, and timeliness. Claims need to be | |||
| collected in a manner that is reliable. Evidence needs to be | collected in a manner that is reliable. Evidence needs to be | |||
| skipping to change at page 22, line 4 ¶ | skipping to change at page 24, line 14 ¶ | |||
| 8.2. Endorsements | 8.2. Endorsements | |||
| An Endorsement is a secure statement that some entity (e.g., a | An Endorsement is a secure statement that some entity (e.g., a | |||
| manufacturer) vouches for the integrity of the device's signing | manufacturer) vouches for the integrity of the device's signing | |||
| capability. For example, if the signing capability is in hardware, | capability. For example, if the signing capability is in hardware, | |||
| then an Endorsement might be a manufacturer certificate that signs a | then an Endorsement might be a manufacturer certificate that signs a | |||
| public key whose corresponding private key is only known inside the | public key whose corresponding private key is only known inside the | |||
| device's hardware. Thus, when Evidence and such an Endorsement are | device's hardware. Thus, when Evidence and such an Endorsement are | |||
| used together, an appraisal procedure can be conducted based on | used together, an appraisal procedure can be conducted based on | |||
| Appraisal Policies that may not be specific to the device instance, | appraisal policies that may not be specific to the device instance, | |||
| but merely specific to the manufacturer providing the Endorsement. | but merely specific to the manufacturer providing the Endorsement. | |||
| For example, an Appraisal Policy might simply check that devices from | For example, an appraisal policy might simply check that devices from | |||
| a given manufacturer have information matching a set of known-good | a given manufacturer have information matching a set of Reference | |||
| reference values, or an Appraisal Policy might have a set of more | Values, or an appraisal policy might have a set of more complex logic | |||
| complex logic on how to appraise the validity of information. | on how to appraise the validity of information. | |||
| However, while an Appraisal Policy that treats all devices from a | However, while an appraisal policy that treats all devices from a | |||
| given manufacturer the same may be appropriate for some use cases, it | given manufacturer the same may be appropriate for some use cases, it | |||
| would be inappropriate to use such an Appraisal Policy as the sole | would be inappropriate to use such an appraisal policy as the sole | |||
| means of authorization for use cases that wish to constrain _which_ | means of authorization for use cases that wish to constrain _which_ | |||
| compliant devices are considered authorized for some purpose. For | compliant devices are considered authorized for some purpose. For | |||
| example, an enterprise using remote attestation for Network Endpoint | example, an enterprise using remote attestation for Network Endpoint | |||
| Assessment may not wish to let every healthy laptop from the same | Assessment may not wish to let every healthy laptop from the same | |||
| manufacturer onto the network, but instead only want to let devices | manufacturer onto the network, but instead only want to let devices | |||
| that it legally owns onto the network. Thus, an Endorsement may be | that it legally owns onto the network. Thus, an Endorsement may be | |||
| helpful information in authenticating information about a device, but | helpful information in authenticating information about a device, but | |||
| is not necessarily sufficient to authorize access to resources which | is not necessarily sufficient to authorize access to resources which | |||
| may need device-specific information such as a public key for the | may need device-specific information such as a public key for the | |||
| device or component or user on the device. | device or component or user on the device. | |||
| 8.3. Attestation Results | 8.3. Attestation Results | |||
| Attestation Results may indicate compliance or non-compliance with a | Attestation Results are the input used by the Relying Party to decide | |||
| Verifier's Appraisal Policy. A result that indicates non-compliance | the extent to which it will trust a particular Attester, and allow it | |||
| can be used by an Attester (in the passport model) or a Relying Party | to access some data or perform some operation. Attestation Results | |||
| (in the background-check model) to indicate that the Attester should | may be a Boolean simply indicating compliance or non-compliance with | |||
| not be treated as authorized and may be in need of remediation. In | a Verifier's appraisal policy, or a rich set of Claims about the | |||
| some cases, it may even indicate that the Evidence itself cannot be | Attester, against which the Relying Party applies its Appraisal | |||
| authenticated as being correct. | Policy for Attestation Results. | |||
| A result that indicates non-compliance can be used by an Attester (in | ||||
| the passport model) or a Relying Party (in the background-check | ||||
| model) to indicate that the Attester should not be treated as | ||||
| authorized and may be in need of remediation. In some cases, it may | ||||
| even indicate that the Evidence itself cannot be authenticated as | ||||
| being correct. | ||||
| An Attestation Result that indicates compliance can be used by a | An Attestation Result that indicates compliance can be used by a | |||
| Relying Party to make authorization decisions based on the Relying | Relying Party to make authorization decisions based on the Relying | |||
| Party's Appraisal Policy. The simplest such policy might be to | Party's appraisal policy. The simplest such policy might be to | |||
| simply authorize any party supplying a compliant Attestation Result | simply authorize any party supplying a compliant Attestation Result | |||
| signed by a trusted Verifier. A more complex policy might also | signed by a trusted Verifier. A more complex policy might also | |||
| entail comparing information provided in the result against known- | entail comparing information provided in the result against Reference | |||
| good reference values, or applying more complex logic on such | Values, or applying more complex logic on such information. | |||
| information. | ||||
| Thus, Attestation Results often need to include detailed information | Thus, Attestation Results often need to include detailed information | |||
| about the Attester, for use by Relying Parties, much like physical | about the Attester, for use by Relying Parties, much like physical | |||
| passports and drivers licenses include personal information such as | passports and drivers licenses include personal information such as | |||
| name and date of birth. Unlike Evidence, which is often very device- | name and date of birth. Unlike Evidence, which is often very device- | |||
| and vendor-specific, Attestation Results can be vendor-neutral if the | and vendor-specific, Attestation Results can be vendor-neutral if the | |||
| Verifier has a way to generate vendor-agnostic information based on | Verifier has a way to generate vendor-agnostic information based on | |||
| the appraisal of vendor-specific information in Evidence. This | the appraisal of vendor-specific information in Evidence. This | |||
| allows a Relying Party's Appraisal Policy to be simpler, potentially | allows a Relying Party's appraisal policy to be simpler, potentially | |||
| based on standard ways of expressing the information, while still | based on standard ways of expressing the information, while still | |||
| allowing interoperability with heterogeneous devices. | allowing interoperability with heterogeneous devices. | |||
| Finally, whereas Evidence is signed by the device (or indirectly by a | Finally, whereas Evidence is signed by the device (or indirectly by a | |||
| manufacturer, if Endorsements are used), Attestation Results are | manufacturer, if Endorsements are used), Attestation Results are | |||
| signed by a Verifier, allowing a Relying Party to only need a trust | signed by a Verifier, allowing a Relying Party to only need a trust | |||
| relationship with one entity, rather than a larger set of entities, | relationship with one entity, rather than a larger set of entities, | |||
| for purposes of its Appraisal Policy. | for purposes of its appraisal policy. | |||
| 9. Claims Encoding Formats | 9. Claims Encoding Formats | |||
| The following diagram illustrates a relationship to which remote | The following diagram illustrates a relationship to which remote | |||
| attestation is desired to be added: | attestation is desired to be added: | |||
| +-------------+ +------------+ Evaluate | +-------------+ +------------+ Evaluate | |||
| | |-------------->| | request | | |-------------->| | request | |||
| | Attester | Access some | Relying | against | | Attester | Access some | Relying | against | |||
| | | resource | Party | security | | | resource | Party | security | |||
| skipping to change at page 25, line 27 ¶ | skipping to change at page 27, line 27 ¶ | |||
| '--------------' '------------' `-------------------' | '--------------' '------------' `-------------------' | |||
| .--------------. other ^ | other .-------------------. | .--------------. other ^ | other .-------------------. | |||
| | Attester-E |------------' '----------->| Relying Party Z | | | Attester-E |------------' '----------->| Relying Party Z | | |||
| '--------------' `-------------------' | '--------------' `-------------------' | |||
| Figure 9: Multiple Attesters and Relying Parties with Different | Figure 9: Multiple Attesters and Relying Parties with Different | |||
| Formats | Formats | |||
| 10. Freshness | 10. Freshness | |||
| A remote entity (Verifier or Relying Party) may need to learn the | A Verifier or Relying Party may need to learn the point in time | |||
| point in time (i.e., the "epoch") an Evidence or Attestation Result | (i.e., the "epoch") an Evidence or Attestation Result has been | |||
| has been produced. This is essential in deciding whether the | produced. This is essential in deciding whether the included Claims | |||
| included Claims and their values can be considered fresh, meaning | and their values can be considered fresh, meaning they still reflect | |||
| they still reflect the latest state of the Attester, and that any | the latest state of the Attester, and that any Attestation Result was | |||
| Attestation Result was generated using the latest Appraisal Policy | generated using the latest Appraisal Policy for Evidence. | |||
| for Evidence. | ||||
| Freshness is assessed based on a policy defined by the consuming | Freshness is assessed based on the Appraisal Policy for Evidence or | |||
| entity, Verifier or Relying Party, that compares the estimated epoch | Attestation Results, that compares the estimated epoch against an | |||
| against an "expiry" threshold defined locally to that policy. There | "expiry" threshold defined locally to that policy. There is, | |||
| is, however, always a race condition possible in that the state of | however, always a race condition possible in that the state of the | |||
| the Attester, and the Appraisal Policy for Evidence, might change | Attester, and the appraisal policies might change immediately after | |||
| immediately after the Evidence or Attestation Result was generated. | the Evidence or Attestation Result was generated. The goal is merely | |||
| The goal is merely to narrow their recentness to something the | to narrow their recentness to something the Verifier (for Evidence) | |||
| Verifier (for Evidence) or Relying Party (for Attestation Result) is | or Relying Party (for Attestation Result) is willing to accept. | |||
| willing to accept. Freshness is a key component for enabling caching | Freshness is a key component for enabling caching and reuse of both | |||
| and reuse of both Evidence and Attestation Results, which is | Evidence and Attestation Results, which is especially valuable in | |||
| especially valuable in cases where their computation uses a | cases where their computation uses a substantial part of the resource | |||
| substantial part of the resource budget (e.g., energy in constrained | budget (e.g., energy in constrained devices). | |||
| devices). | ||||
| There are two common approaches for determining the epoch of an | There are two common approaches for determining the epoch of an | |||
| Evidence or Attestation Result. | Evidence or Attestation Result. | |||
| The first approach is to rely on synchronized and trustworthy clocks, | The first approach is to rely on synchronized and trustworthy clocks, | |||
| and include a signed timestamp (see [I-D.birkholz-rats-tuda]) along | and include a signed timestamp (see [I-D.birkholz-rats-tuda]) along | |||
| with the Claims in the Evidence or Attestation Result. Timestamps | with the Claims in the Evidence or Attestation Result. Timestamps | |||
| can be added on a per-Claim basis, to distinguish the time of | can be added on a per-Claim basis, to distinguish the time of | |||
| creation of Evidence or Attestation Result from the time that a | creation of Evidence or Attestation Result from the time that a | |||
| specific Claim was generated. The clock's trustworthiness typically | specific Claim was generated. The clock's trustworthiness typically | |||
| requires additional Claims about the signer's time synchronization | requires additional Claims about the signer's time synchronization | |||
| mechanism. | mechanism. | |||
| A second approach places the onus of timekeeping solely on the | A second approach places the onus of timekeeping solely on the | |||
| appraising entity, i.e., the Verifier (for Evidence), or the Relying | Verifier (for Evidence), or the Relying Party (for Attestation | |||
| Party (for Attestation Results), and might be suitable, for example, | Results), and might be suitable, for example, in case the Attester | |||
| in case the Attester does not have a reliable clock or time | does not have a reliable clock or time synchronisation is otherwise | |||
| synchronisation is otherwise impaired. In this approach, a non- | impaired. In this approach, a non-predictable nonce is sent by the | |||
| predictable nonce is sent by the appraising entity, and the nonce is | appraising entity, and the nonce is then signed and included along | |||
| then signed and included along with the Claims in the Evidence or | with the Claims in the Evidence or Attestation Result. After | |||
| Attestation Result. After checking that the sent and received nonces | checking that the sent and received nonces are the same, the | |||
| are the same, the appraising entity knows that the Claims were signed | appraising entity knows that the Claims were signed after the nonce | |||
| after the nonce was generated. This allows associating a "rough" | was generated. This allows associating a "rough" epoch to the | |||
| epoch to the Evidence or Attestation Result. In this case the epoch | Evidence or Attestation Result. In this case the epoch is said to be | |||
| is said to be rough because: | rough because: | |||
| * The epoch applies to the entire claim set instead of a more | * The epoch applies to the entire claim set instead of a more | |||
| granular association, and | granular association, and | |||
| * The time between the creation of Claims and the collection of | * The time between the creation of Claims and the collection of | |||
| Claims is indistinguishable. | Claims is indistinguishable. | |||
| Implicit and explicit timekeeping can be combined into hybrid | Implicit and explicit timekeeping can be combined into hybrid | |||
| mechanisms. For example, if clocks exist and are considered | mechanisms. For example, if clocks exist and are considered | |||
| trustworthy but are not synchronized, a nonce-based exchange may be | trustworthy but are not synchronized, a nonce-based exchange may be | |||
| skipping to change at page 27, line 47 ¶ | skipping to change at page 30, line 4 ¶ | |||
| Furthermore, because Evidence might contain sensitive information, | Furthermore, because Evidence might contain sensitive information, | |||
| Attesters are responsible for only sending such Evidence to trusted | Attesters are responsible for only sending such Evidence to trusted | |||
| Verifiers. Some Attesters might want a stronger level of assurance | Verifiers. Some Attesters might want a stronger level of assurance | |||
| of the trustworthiness of a Verifier before sending Evidence to it. | of the trustworthiness of a Verifier before sending Evidence to it. | |||
| In such cases, an Attester can first act as a Relying Party and ask | In such cases, an Attester can first act as a Relying Party and ask | |||
| for the Verifier's own Attestation Result, and appraising it just as | for the Verifier's own Attestation Result, and appraising it just as | |||
| a Relying Party would appraise an Attestation Result for any other | a Relying Party would appraise an Attestation Result for any other | |||
| purpose. | purpose. | |||
| 12. Security Considerations | 12. Security Considerations | |||
| 12.1. Attester and Attestation Key Protection | ||||
| Implementers need to pay close attention to the isolation and | ||||
| protection of the Attester and the factory processes for provisioning | ||||
| the Attestation Key Material. When either of these are compromised, | ||||
| the remote attestation becomes worthless because the attacker can | ||||
| forge Evidence. | ||||
| Remote attestation applies to use cases with a range of security | ||||
| requirements, so the protections discussed here range from low to | ||||
| high security where low security may be only application or process | ||||
| isolation by the device's operating system and high security involves | ||||
| specialized hardware to defend against physical attacks on a chip. | ||||
| 12.1.1. On-Device Attester and Key Protection | ||||
| It is assumed that the Attester is located in an isolated environment | ||||
| of a device like a process, a dedicated chip a TEE or such that | ||||
| collects the Claims, formats them and signs them with an Attestation | ||||
| Key. The Attester must be protected from unauthorized modification to | ||||
| ensure it behaves correctly. There must also be confidentiality so | ||||
| that the signing key is not captured and used elsewhere to forge | ||||
| evidence. | ||||
| In many cases the user or owner of the device must not be able to | ||||
| modify or exfiltrate keys from the Attesting Environment of the | ||||
| Attester. For example the owner or user of a mobile phone or FIDO | ||||
| authenticator is not trusted. The point of remote attestation is for | ||||
| the Relying Party to be able to trust the Attester even though they | ||||
| don't trust the user or owner. | ||||
| Some of the measures for low level security include process or | ||||
| application isolation by a high-level operating system, and perhaps | ||||
| restricting access to root or system privilege. For extremely simple | ||||
| single-use devices that don't use a protected mode operating system, | ||||
| like a Bluetooth speaker, the isolation might only be the plastic | ||||
| housing for the device. | ||||
| At medium level security, a special restricted operating environment | ||||
| like a Trusted Execution Environment (TEE) might be used. In this | ||||
| case, only security-oriented software has access to the Attester and | ||||
| key material. | ||||
| For high level security, specialized hardware will likely be used | ||||
| providing protection against chip decapping attacks, power supply and | ||||
| clock glitching, faulting injection and RF and power side channel | ||||
| attacks. | ||||
| 12.1.2. Attestation Key Provisioning Processes | ||||
| Attestation key provisioning is the process that occurs in the | ||||
| factory or elsewhere that establishes the signing key material on the | ||||
| device and the verification key material off the device. Sometimes | ||||
| this is referred to as "personalization". | ||||
| One way to provision a key is to first generate it external to the | ||||
| device and then copy the key onto the device. In this case, | ||||
| confidentiality of the generator, as well as the path over which the | ||||
| key is provisioned, is necessary. This can be achieved in a number | ||||
| of ways. | ||||
| Confidentiality can be achieved entirely with physical provisioning | ||||
| facility security involving no encryption at all. For low-security | ||||
| use cases, this might be simply locking doors and limiting personnel | ||||
| that can enter the facility. For high-security use cases, this might | ||||
| involve a special area of the facility accessible only to select | ||||
| security-trained personnel. | ||||
| Cryptography can also be used to support confidentiality, but keys | ||||
| that are used to then provision attestation keys must somehow have | ||||
| been provisioned securely beforehand (a recursive problem). | ||||
| In many cases both some physical security and some cryptography will | ||||
| be necessary and useful to establish confidentiality. | ||||
| Another way to provision the key material is to generate it on the | ||||
| device and export the verification key. If public key cryptography | ||||
| is being used, then only integrity is necessary. Confidentiality is | ||||
| not necessary. | ||||
| In all cases, the Attestation Key provisioning process must ensure | ||||
| that only attestation key material that is generated by a valid | ||||
| Endorser is established in Attesters and then configured correctly. | ||||
| For many use cases, this will involve physical security at the | ||||
| facility, to prevent unauthorized devices from being manufactured | ||||
| that may be counterfeit or incorrectly configured. | ||||
| 12.2. Integrity Protection | ||||
| Any solution that conveys information used for security purposes, | Any solution that conveys information used for security purposes, | |||
| whether such information is in the form of Evidence, Attestation | whether such information is in the form of Evidence, Attestation | |||
| Results, Endorsements, or Appraisal Policy must support end-to-end | Results, Endorsements, or appraisal policy must support end-to-end | |||
| integrity protection and replay attack prevention, and often also | integrity protection and replay attack prevention, and often also | |||
| needs to support additional security properties, including: | needs to support additional security properties, including: | |||
| * end-to-end encryption, | * end-to-end encryption, | |||
| * denial of service protection, | * denial of service protection, | |||
| * authentication, | * authentication, | |||
| * auditing, | * auditing, | |||
| * fine grained access controls, and | * fine grained access controls, and | |||
| * logging. | * logging. | |||
| Section 10 discusses ways in which freshness can be used in this | Section 10 discusses ways in which freshness can be used in this | |||
| architecture to protect against replay attacks. | architecture to protect against replay attacks. | |||
| To assess the security provided by a particular Appraisal Policy, it | To assess the security provided by a particular appraisal policy, it | |||
| is important to understand the strength of the Root of Trust, e.g., | is important to understand the strength of the root of trust, e.g., | |||
| whether it is mutable software, or firmware that is read-only after | whether it is mutable software, or firmware that is read-only after | |||
| boot, or immutable hardware/ROM. | boot, or immutable hardware/ROM. | |||
| It is also important that the Appraisal Policy was itself obtained | It is also important that the appraisal policy was itself obtained | |||
| securely. As such, if Appraisal Policies for a Relying Party or for | securely. As such, if appraisal policies for a Relying Party or for | |||
| a Verifier can be configured via a network protocol, the ability to | a Verifier can be configured via a network protocol, the ability to | |||
| create Evidence about the integrity of the entity providing the | create Evidence about the integrity of the entity providing the | |||
| Appraisal Policy needs to be considered. | appraisal policy needs to be considered. | |||
| The security of conveyed information may be applied at different | The security of conveyed information may be applied at different | |||
| layers, whether by a conveyance protocol, or an information encoding | layers, whether by a conveyance protocol, or an information encoding | |||
| format. This architecture expects attestation messages (i.e., | format. This architecture expects attestation messages (i.e., | |||
| Evidence, Attestation Results, Endorsements and Policies) are end-to- | Evidence, Attestation Results, Endorsements and Policies) are end-to- | |||
| end protected based on the role interaction context. For example, if | end protected based on the role interaction context. For example, if | |||
| an Attester produces Evidence that is relayed through some other | an Attester produces Evidence that is relayed through some other | |||
| entity that doesn't implement the Attester or the intended Verifier | entity that doesn't implement the Attester or the intended Verifier | |||
| roles, then the relaying entity should not expect to have access to | roles, then the relaying entity should not expect to have access to | |||
| the Evidence. | the Evidence. | |||
| skipping to change at page 29, line 5 ¶ | skipping to change at page 33, line 5 ¶ | |||
| 13. IANA Considerations | 13. IANA Considerations | |||
| This document does not require any actions by IANA. | This document does not require any actions by IANA. | |||
| 14. Acknowledgments | 14. Acknowledgments | |||
| Special thanks go to Joerg Borchert, Nancy Cam-Winget, Jessica | Special thanks go to Joerg Borchert, Nancy Cam-Winget, Jessica | |||
| Fitzgerald-McKay, Thomas Fossati, Diego Lopez, Laurence Lundblade, | Fitzgerald-McKay, Thomas Fossati, Diego Lopez, Laurence Lundblade, | |||
| Paul Rowe, Hannes Tschofenig, Frank Xia, and David Wooten. | Paul Rowe, Hannes Tschofenig, Frank Xia, and David Wooten. | |||
| 15. Contributors | 15. Notable Contributions | |||
| Thomas Hardjono created older versions of the terminology section in | Thomas Hardjono created older versions of the terminology section in | |||
| collaboration with Ned Smith. Eric Voit provided the conceptual | collaboration with Ned Smith. Eric Voit provided the conceptual | |||
| separation between Attestation Provision Flows and Attestation | separation between Attestation Provision Flows and Attestation | |||
| Evidence Flows. Monty Wisemen created the content structure of the | Evidence Flows. Monty Wisemen created the content structure of the | |||
| first three architecture drafts. Carsten Bormann provided many of | first three architecture drafts. Carsten Bormann provided many of | |||
| the motivational building blocks with respect to the Internet Threat | the motivational building blocks with respect to the Internet Threat | |||
| Model. | Model. | |||
| 16. Appendix A: Time Considerations | 16. Appendix A: Time Considerations | |||
| The table below defines a number of relevant events, with an ID that | The table below defines a number of relevant events, with an ID that | |||
| is used in subsequent diagrams. The times of said events might be | is used in subsequent diagrams. The times of said events might be | |||
| defined in terms of an absolute clock time such as Coordinated | defined in terms of an absolute clock time such as Coordinated | |||
| Universal Time, or might be defined relative to some other timestamp | Universal Time, or might be defined relative to some other timestamp | |||
| or timeticks counter. | or timeticks counter. | |||
| +====+==============+===============================================+ | +====+==============+=============================================+ | |||
| | ID | Event | Explanation of event | | | ID | Event | Explanation of event | | |||
| +====+==============+===============================================+ | +====+==============+=============================================+ | |||
| | VG | Value | A value to appear in a Claim was | | | VG | Value | A value to appear in a Claim was created. | | |||
| | | generation | created. | | | | generated | In some cases, a value may have technically | | |||
| +----+--------------+-----------------------------------------------+ | | | | existed before an Attester became aware of | | |||
| | AA | Attester | An Attesting Environment starts to | | | | | it but the Attester might have no idea how | | |||
| | | awareness | be aware of a new/changed Claim | | | | | long it has had that value. In such a | | |||
| | | | value. | | | | | case, the Value created time is the time at | | |||
| +----+--------------+-----------------------------------------------+ | | | | which the Claim containing the copy of the | | |||
| | HD | Handle | A centrally generated identifier for | | | | | value was created. | | |||
| | | distribution | time-bound recentness across a | | +----+--------------+---------------------------------------------+ | |||
| | | | domain of devices is successfully | | | HD | Handle | A centrally generated identifier for time- | | |||
| | | | distributed to Attesters. | | | | distribution | bound recentness across a domain of devices | | |||
| +----+--------------+-----------------------------------------------+ | | | | is successfully distributed to Attesters. | | |||
| | NS | Nonce sent | A nonce not predictable to an | | +----+--------------+---------------------------------------------+ | |||
| | | | Attester (recentness & uniqueness) | | | NS | Nonce sent | A nonce not predictable to an Attester | | |||
| | | | is sent to an Attester. | | | | | (recentness & uniqueness) is sent to an | | |||
| +----+--------------+-----------------------------------------------+ | | | | Attester. | | |||
| | NR | Nonce | A nonce is relayed to an Attester by | | +----+--------------+---------------------------------------------+ | |||
| | | relayed | another entity. | | | NR | Nonce | A nonce is relayed to an Attester by | | |||
| +----+--------------+-----------------------------------------------+ | | | relayed | another entity. | | |||
| | EG | Evidence | An Attester creates Evidence from | | +----+--------------+---------------------------------------------+ | |||
| | | generation | collected Claims. | | | HR | Handle | A handle distributed by a Handle | | |||
| +----+--------------+-----------------------------------------------+ | | | received | Distributor was received. | | |||
| | ER | Evidence | A Relying Party relays Evidence to a | | +----+--------------+---------------------------------------------+ | |||
| | | relayed | Verifier. | | | EG | Evidence | An Attester creates Evidence from collected | | |||
| +----+--------------+-----------------------------------------------+ | | | generation | Claims. | | |||
| | RG | Result | A Verifier appraises Evidence and | | +----+--------------+---------------------------------------------+ | |||
| | | generation | generates an Attestation Result. | | | ER | Evidence | A Relying Party relays Evidence to a | | |||
| +----+--------------+-----------------------------------------------+ | | | relayed | Verifier. | | |||
| | RR | Result | A Relying Party relays an | | +----+--------------+---------------------------------------------+ | |||
| | | relayed | Attestation Result to a Relying | | | RG | Result | A Verifier appraises Evidence and generates | | |||
| | | | Party. | | | | generation | an Attestation Result. | | |||
| +----+--------------+-----------------------------------------------+ | +----+--------------+---------------------------------------------+ | |||
| | RA | Result | The Relying Party appraises | | | RR | Result | A Relying Party relays an Attestation | | |||
| | | appraised | Attestation Results. | | | | relayed | Result to a Relying Party. | | |||
| +----+--------------+-----------------------------------------------+ | +----+--------------+---------------------------------------------+ | |||
| | OP | Operation | The Relying Party performs some | | | RA | Result | The Relying Party appraises Attestation | | |||
| | | performed | operation requested by the Attester. | | | | appraised | Results. | | |||
| | | | For example, acting upon some | | +----+--------------+---------------------------------------------+ | |||
| | | | message just received across a | | | OP | Operation | The Relying Party performs some operation | | |||
| | | | session created earlier at time(RA). | | | | performed | requested by the Attester. For example, | | |||
| +----+--------------+-----------------------------------------------+ | | | | acting upon some message just received | | |||
| | RX | Result | An Attestation Result should no | | | | | across a session created earlier at | | |||
| | | expiry | longer be accepted, according to the | | | | | time(RA). | | |||
| | | | Verifier that generated it. | | +----+--------------+---------------------------------------------+ | |||
| +----+--------------+-----------------------------------------------+ | | RX | Result | An Attestation Result should no longer be | | |||
| | | expiry | accepted, according to the Verifier that | | ||||
| | | | generated it. | | ||||
| +----+--------------+---------------------------------------------+ | ||||
| Table 1 | Table 1 | |||
| Using the table above, a number of hypothetical examples of how a | Using the table above, a number of hypothetical examples of how a | |||
| solution might be built are illustrated below. a solution might be | solution might be built are illustrated below. a solution might be | |||
| built. This list is not intended to be complete, but is just | built. This list is not intended to be complete, but is just | |||
| representative enough to highlight various timing considerations. | representative enough to highlight various timing considerations. | |||
| All times are relative to the local clocks, indicated by an "a" | ||||
| (Attester), "v" (Verifier), or "r" (Relying Party) suffix. | ||||
| How and if clocks are synchronized depends upon the model. | ||||
| 16.1. Example 1: Timestamp-based Passport Model Example | 16.1. Example 1: Timestamp-based Passport Model Example | |||
| The following example illustrates a hypothetical Passport Model | The following example illustrates a hypothetical Passport Model | |||
| solution that uses timestamps and requires roughly synchronized | solution that uses timestamps and requires roughly synchronized | |||
| clocks between the Attester, Verifier, and Relying Party, which | clocks between the Attester, Verifier, and Relying Party, which | |||
| depends on using a secure clock synchronization mechanism. | depends on using a secure clock synchronization mechanism. As a | |||
| result, the receiver of a conceptual message containing a timestamp | ||||
| can directly compare it to its own clock and timestamps. | ||||
| .----------. .----------. .---------------. | .----------. .----------. .---------------. | |||
| | Attester | | Verifier | | Relying Party | | | Attester | | Verifier | | Relying Party | | |||
| '----------' '----------' '---------------' | '----------' '----------' '---------------' | |||
| time(VG) | | | time(VG_a) | | | |||
| | | | | | | | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| time(EG) | | | time(EG_a) | | | |||
| |------Evidence{time(EG)}-------->| | | |------Evidence{time(EG_a)}------>| | | |||
| | time(RG) | | | time(RG_v) | | |||
| |<-----Attestation Result---------| | | |<-----Attestation Result---------| | | |||
| | {time(RG),time(RX)} | | | | {time(RG_v),time(RX_v)} | | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| |------Attestation Result{time(RG),time(RX)}-->time(RA) | |----Attestation Result{time(RG_v),time(RX_v)}-->time(RA_r) | |||
| | | | | | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| | time(OP) | | time(OP_r) | |||
| | | | | | | |||
| The Verifier can check whether the Evidence is fresh when appraising | The Verifier can check whether the Evidence is fresh when appraising | |||
| it at time(RG) by checking "time(RG) - time(EG) < Threshold", where | it at time(RG_v) by checking "time(RG_v) - time(EG_a) < Threshold", | |||
| the Verifier's threshold is large enough to account for the maximum | where the Verifier's threshold is large enough to account for the | |||
| permitted clock skew between the Verifier and the Attester. | maximum permitted clock skew between the Verifier and the Attester. | |||
| If time(VG) is also included in the Evidence along with the claim | If time(VG_a) is also included in the Evidence along with the claim | |||
| value generated at that time, and the Verifier decides that it can | value generated at that time, and the Verifier decides that it can | |||
| trust the time(VG) value, the Verifier can also determine whether the | trust the time(VG_a) value, the Verifier can also determine whether | |||
| claim value is recent by checking "time(RG) - time(VG) < Threshold", | the claim value is recent by checking "time(RG_v) - time(VG_a) < | |||
| again where the threshold is large enough to account for the maximum | Threshold", again where the threshold is large enough to account for | |||
| permitted clock skew between the Verifier and the Attester. | the maximum permitted clock skew between the Verifier and the | |||
| Attester. | ||||
| The Relying Party can check whether the Attestation Result is fresh | The Relying Party can check whether the Attestation Result is fresh | |||
| when appraising it at time(RA) by checking "time(RA) - time(RG) < | when appraising it at time(RA_r) by checking "time(RA_r) - time(RG_v) | |||
| Threshold", where the Relying Party's threshold is large enough to | < Threshold", where the Relying Party's threshold is large enough to | |||
| account for the maximum permitted clock skew between the Relying | account for the maximum permitted clock skew between the Relying | |||
| Party and the Verifier. The result might then be used for some time | Party and the Verifier. The result might then be used for some time | |||
| (e.g., throughout the lifetime of a connection established at | (e.g., throughout the lifetime of a connection established at | |||
| time(RA)). The Relying Party must be careful, however, to not allow | time(RA_r)). The Relying Party must be careful, however, to not | |||
| continued use beyond the period for which it deems the Attestation | allow continued use beyond the period for which it deems the | |||
| Result to remain fresh enough. Thus, it might allow use (at | Attestation Result to remain fresh enough. Thus, it might allow use | |||
| time(OP)) as long as "time(OP) - time(RG) < Threshold". However, if | (at time(OP_r)) as long as "time(OP_r) - time(RG_v) < Threshold". | |||
| the Attestation Result contains an expiry time time(RX) then it could | However, if the Attestation Result contains an expiry time time(RX_v) | |||
| explicitly check "time(OP) < time(RX)". | then it could explicitly check "time(OP_r) < time(RX_v)". | |||
| 16.2. Example 2: Nonce-based Passport Model Example | 16.2. Example 2: Nonce-based Passport Model Example | |||
| The following example illustrates a hypothetical Passport Model | The following example illustrates a hypothetical Passport Model | |||
| solution that uses nonces and thus does not require that any clocks | solution that uses nonces and thus does not require that any clocks | |||
| are synchronized. | are synchronized. | |||
| As a result, the receiver of a conceptual message containing a | ||||
| timestamp cannot directly compare it to its own clock or timestamps. | ||||
| Thus we use a suffix ("a" for Attester, "v" for Verifier, and "r" for | ||||
| Relying Party) on the IDs below indicating which clock generated | ||||
| them, since times from different clocks cannot be compared. Only the | ||||
| delta between two events from the sender can be used by the receiver. | ||||
| .----------. .----------. .---------------. | .----------. .----------. .---------------. | |||
| | Attester | | Verifier | | Relying Party | | | Attester | | Verifier | | Relying Party | | |||
| '----------' '----------' '---------------' | '----------' '----------' '---------------' | |||
| time(VG) | | | time(VG_a) | | | |||
| | | | | | | | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| |<---Nonce1--------------------time(NS) | | |<--Nonce1---------------------time(NS_v) | | |||
| time(EG) | | | time(EG_a) | | | |||
| |----Evidence-------------------->| | | |---Evidence--------------------->| | | |||
| | {Nonce1, time(EG)-time(VG)} | | | | {Nonce1, time(EG_a)-time(VG_a)} | | | |||
| | time(RG) | | | time(RG_v) | | |||
| |<---Attestation Result-----------| | | |<--Attestation Result------------| | | |||
| | {time(RX)-time(RG)} | | | | {time(RX_v)-time(RG_v)} | | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| |<---Nonce2------------------------------------time(NS') | |<--Nonce2-------------------------------------time(NS_r) | |||
| time(RR) | time(RRa) | |||
| |----Attestation Result{time(RX)-time(RG)}---->time(RA) | |---Attestation Result{time(RX_v)-time(RG_v)}->time(RA_r) | |||
| | Nonce2, time(RR)-time(EG) | | | Nonce2, time(RR_a)-time(EG_a) | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| | time(OP) | | time(OP_r) | |||
| In this example solution, the Verifier can check whether the Evidence | In this example solution, the Verifier can check whether the Evidence | |||
| is fresh at time(RG) by verifying that "time(RG) - time(NS) < | is fresh at "time(RG_v)" by verifying that "time(RG_v)-time(NS_v) < | |||
| Threshold". | Threshold". | |||
| The Verifier cannot, however, simply rely on a Nonce to determine | The Verifier cannot, however, simply rely on a Nonce to determine | |||
| whether the value of a claim is recent, since the claim value might | whether the value of a claim is recent, since the claim value might | |||
| have been generated long before the nonce was sent by the Verifier. | have been generated long before the nonce was sent by the Verifier. | |||
| However, if the Verifier decides that the Attester can be trusted to | However, if the Verifier decides that the Attester can be trusted to | |||
| correctly provide the delta time(EG)-time(VG), then it can determine | correctly provide the delta "time(EG_a)-time(VG_a)", then it can | |||
| recency by checking "time(RG)-time(NS) + time(EG)-time(VG) < | determine recency by checking "time(RG_v)-time(NS_v) + time(EG_a)- | |||
| Threshold". | time(VG_a) < Threshold". | |||
| Similarly if, based on an Attestation Result from a Verifier it | Similarly if, based on an Attestation Result from a Verifier it | |||
| trusts, the Relying Party decides that the Attester can be trusted to | trusts, the Relying Party decides that the Attester can be trusted to | |||
| correctly provide time deltas, then it can determine whether the | correctly provide time deltas, then it can determine whether the | |||
| Attestation Result is fresh by checking "time(OP) - time(NS') + | Attestation Result is fresh by checking "time(OP_r)-time(NS_r) + | |||
| time(RR)-time(EG) < Threshold". Although the Nonce2 and time(RR)- | time(RR_a)-time(EG_a) < Threshold". Although the Nonce2 and | |||
| time(EG) values cannot be inside the Attestation Result, they might | "time(RR_a)-time(EG_a)" values cannot be inside the Attestation | |||
| be signed by the Attester such that the Attestation Result vouches | Result, they might be signed by the Attester such that the | |||
| for the Attester's signing capability. | Attestation Result vouches for the Attester's signing capability. | |||
| The Relying Party must still be careful, however, to not allow | The Relying Party must still be careful, however, to not allow | |||
| continued use beyond the period for which it deems the Attestation | continued use beyond the period for which it deems the Attestation | |||
| Result to remain valid. Thus, if the Attestation Result sends a | Result to remain valid. Thus, if the Attestation Result sends a | |||
| validity lifetime in terms of time(RX)-time(RG), then the Relying | validity lifetime in terms of "time(RX_v)-time(RG_v)", then the | |||
| Party can check "time(OP) - time(NS') < time(RX)-time(RG)". | Relying Party can check "time(OP_r)-time(NS_r) < time(RX_v)- | |||
| time(RG_v)". | ||||
| 16.3. Example 3: Timestamp-based Background-Check Model Example | 16.3. Example 3: Handle-based Passport Model Example | |||
| Handles are a third option to establish time-keeping next to nonces | ||||
| or timestamps. Handles are opaque data intended to be available to | ||||
| all RATS roles that interact with each other, such as the Attester or | ||||
| Verifier, in specified intervals. To enable this availability, | ||||
| handles are distributed centrally by the Handle Distributor role over | ||||
| the network. As any other role, the Handle Distributor role can be | ||||
| taken on by a dedicated entity or collapsed with other roles, such as | ||||
| a Verifier. The use of handles can compensate for a lack of clocks | ||||
| or other sources of time on entities taking on RATS roles. The only | ||||
| entity that requires access to a source of time is the entity taking | ||||
| on the role of Handle Distributor. | ||||
| Handles are different from nonces as they can be used more than once | ||||
| and can be used by more than one entity at the same time. Handles | ||||
| are different from timestamps as they do not have to convey | ||||
| information about a point in time, but their reception creates that | ||||
| information. The reception of a handle is similar to the event that | ||||
| increments a relative tickcounter. Receipt of a new handle | ||||
| invalidates a previously received handle. | ||||
| In this example, Evidence generation based on received handles always | ||||
| uses the current (most recent) handle. As handles are distributed | ||||
| over the network, all involved entities receive a fresh handle at | ||||
| roughly the same time. Due to distribution over the network, there | ||||
| is some jitter with respect to the time the Handle is received, | ||||
| time(HR), for each involved entity. To compensate for this jitter, | ||||
| there is a small period of overlap (a specified offset) in which both | ||||
| a current handle and corresponding former handle are valid in | ||||
| Evidence appraisal: "validity-duration = time(HR'_v) + offset - | ||||
| time(HR_v)". The offset is typically based on a network's round trip | ||||
| time. Analogously, the generation of valid Evidence is only | ||||
| possible, if the age of the handle used is lower than the validity- | ||||
| duration: "time(HR_v) - time(EG_a) < validity-duration". | ||||
| From the point of view of a Verifier, the generation of valid | ||||
| Evidence is only possible, if the age of the handle used in the | ||||
| Evidence generation is younger than the duration of the distribution | ||||
| interval - "(time(HR'_v)-time(HR_v)) - (time(HR_a)-time(EG_a)) < | ||||
| validity-duration". | ||||
| Due to the validity-duration of handles, multiple different pieces of | ||||
| Evidence can be generated based on the same handle. The resulting | ||||
| granularity (time resolution) of Evidence freshness is typically | ||||
| lower than the resolution of clock-based tickcounters. | ||||
| The following example illustrates a hypothetical Background-Check | ||||
| Model solution that uses handles and requires a trustworthy time | ||||
| source available to the Handle Distributor role. | ||||
| .-------------. | ||||
| .----------. | Handle | .----------. .---------------. | ||||
| | Attester | | Distributor | | Verifier | | Relying Party | | ||||
| '----------' '-------------' '----------' '---------------' | ||||
| time(VG_a) | | | | ||||
| | | | | | ||||
| ~ ~ ~ ~ | ||||
| | | | | | ||||
| time(HR_a)<---------+-------------time(HR_v)------>time(HR_r) | ||||
| | | | | | ||||
| time(EG_a) | | | | ||||
| |----Evidence{time(EG_a)}-------->| | | ||||
| | {Handle1,time(EG_a)-time(VG_a)}| | | ||||
| | | time(RG_v) | | ||||
| |<-----Attestation Result---------| | | ||||
| | {time(RG_v),time(RX_v)} | | | ||||
| | | | | ||||
| ~ ~ ~ | ||||
| | | | | ||||
| time(HR_a')<--------'---------------------------->time(HR_r') | ||||
| | | | ||||
| time(RR_a) / | ||||
| |--Attestation Result{time(RX_v)-time(RG_v)}-->time(RA_r) | ||||
| | {Handle2, time(RR_a)-time(EG_a)} | | ||||
| ~ ~ | ||||
| | | | ||||
| | time(OP_r) | ||||
| | | | ||||
| 16.4. Example 4: Timestamp-based Background-Check Model Example | ||||
| The following example illustrates a hypothetical Background-Check | The following example illustrates a hypothetical Background-Check | |||
| Model solution that uses timestamps and requires roughly synchronized | Model solution that uses timestamps and requires roughly synchronized | |||
| clocks between the Attester, Verifier, and Relying Party. | clocks between the Attester, Verifier, and Relying Party. | |||
| .----------. .---------------. .----------. | .----------. .---------------. .----------. | |||
| | Attester | | Relying Party | | Verifier | | | Attester | | Relying Party | | Verifier | | |||
| '----------' '---------------' '----------' | '----------' '---------------' '----------' | |||
| time(VG) | | | time(VG_a) | | | |||
| | | | | | | | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| time(EG) | | | time(EG_a) | | | |||
| |----Evidence------->| | | |----Evidence------->| | | |||
| | {time(EG)} time(ER)--Evidence{time(EG)}-->| | | {time(EG_a)} time(ER_r)--Evidence{time(EG_a)}->| | |||
| | | time(RG) | | | time(RG_v) | |||
| | time(RA)<-Attestation Result---| | | time(RA_r)<-Attestation Result---| | |||
| | | {time(RX)} | | | | {time(RX_v)} | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| | time(OP) | | | time(OP_r) | | |||
| The time considerations in this example are equivalent to those | The time considerations in this example are equivalent to those | |||
| discussed under Example 1 above. | discussed under Example 1 above. | |||
| 16.4. Example 4: Nonce-based Background-Check Model Example | 16.5. Example 5: Nonce-based Background-Check Model Example | |||
| The following example illustrates a hypothetical Background-Check | The following example illustrates a hypothetical Background-Check | |||
| Model solution that uses nonces and thus does not require that any | Model solution that uses nonces and thus does not require that any | |||
| clocks are synchronized. In this example solution, a nonce is | clocks are synchronized. In this example solution, a nonce is | |||
| generated by a Verifier at the request of a Relying Party, when the | generated by a Verifier at the request of a Relying Party, when the | |||
| Relying Party needs to send one to an Attester. | Relying Party needs to send one to an Attester. | |||
| .----------. .---------------. .----------. | .----------. .---------------. .----------. | |||
| | Attester | | Relying Party | | Verifier | | | Attester | | Relying Party | | Verifier | | |||
| '----------' '---------------' '----------' | '----------' '---------------' '----------' | |||
| time(VG) | | | time(VG_a) | | | |||
| | | | | | | | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| | |<-----Nonce-------------time(NS) | | |<-------Nonce-----------time(NS_v) | |||
| |<---Nonce-----------time(NR) | | |<---Nonce-----------time(NR_r) | | |||
| time(EG) | | | time(EG_a) | | | |||
| |----Evidence{Nonce}--->| | | |----Evidence{Nonce}--->| | | |||
| | time(ER)--Evidence{Nonce}----->| | | time(ER_r)--Evidence{Nonce}--->| | |||
| | | time(RG) | | | time(RG_v) | |||
| | time(RA)<-Attestation Result---| | | time(RA_r)<-Attestation Result-| | |||
| | | {time(RX)-time(RG)} | | | | {time(RX_v)-time(RG_v)} | | |||
| ~ ~ ~ | ~ ~ ~ | |||
| | | | | | | | | |||
| | time(OP) | | | time(OP_r) | | |||
| The Verifier can check whether the Evidence is fresh, and whether a | The Verifier can check whether the Evidence is fresh, and whether a | |||
| claim value is recent, the same as in Example 2 above. | claim value is recent, the same as in Example 2 above. | |||
| However, unlike in Example 2, the Relying Party can use the Nonce to | However, unlike in Example 2, the Relying Party can use the Nonce to | |||
| determine whether the Attestation Result is fresh, by verifying that | determine whether the Attestation Result is fresh, by verifying that | |||
| "time(OP) - time(NR) < Threshold". | "time(OP_r)-time(NR_r) < Threshold". | |||
| The Relying Party must still be careful, however, to not allow | The Relying Party must still be careful, however, to not allow | |||
| continued use beyond the period for which it deems the Attestation | continued use beyond the period for which it deems the Attestation | |||
| Result to remain valid. Thus, if the Attestation Result sends a | Result to remain valid. Thus, if the Attestation Result sends a | |||
| validity lifetime in terms of time(RX)-time(RG), then the Relying | validity lifetime in terms of "time(RX_v)-time(RG_v)", then the | |||
| Party can check "time(OP) - time(ER) < time(RX)-time(RG)". | Relying Party can check "time(OP_r)-time(ER_r) < time(RX_v)- | |||
| time(RG_v)". | ||||
| 17. References | 17. References | |||
| 17.1. Normative References | 17.1. Normative References | |||
| [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | |||
| (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | |||
| <https://www.rfc-editor.org/info/rfc7519>. | <https://www.rfc-editor.org/info/rfc7519>. | |||
| [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>. | |||
| 17.2. Informative References | 17.2. Informative References | |||
| [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | [CTAP] FIDO Alliance, "Client to Authenticator Protocol", n.d., | |||
| FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | <https://fidoalliance.org/specs/fido-v2.0-id-20180227/ | |||
| <https://www.rfc-editor.org/info/rfc4949>. | fido-client-to-authenticator-protocol-v2.0-id- | |||
| 20180227.html>. | ||||
| [RFC8322] Field, J., Banghart, S., and D. Waltermire, "Resource- | ||||
| Oriented Lightweight Information Exchange (ROLIE)", | ||||
| RFC 8322, DOI 10.17487/RFC8322, February 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8322>. | ||||
| [OPCUA] OPC Foundation, "OPC Unified Architecture Specification, | ||||
| Part 2: Security Model, Release 1.03", OPC 10000-2 , 25 | ||||
| November 2015, <https://opcfoundation.org/developer-tools/ | ||||
| specifications-unified-architecture/part-2-security- | ||||
| model/>. | ||||
| [I-D.birkholz-rats-tuda] | [I-D.birkholz-rats-tuda] | |||
| Fuchs, A., Birkholz, H., McDonald, I., and C. Bormann, | Fuchs, A., Birkholz, H., McDonald, I., and C. Bormann, | |||
| "Time-Based Uni-Directional Attestation", Work in | "Time-Based Uni-Directional Attestation", Work in | |||
| Progress, Internet-Draft, draft-birkholz-rats-tuda-02, 9 | Progress, Internet-Draft, draft-birkholz-rats-tuda-03, 13 | |||
| March 2020, <http://www.ietf.org/internet-drafts/draft- | July 2020, <http://www.ietf.org/internet-drafts/draft- | |||
| birkholz-rats-tuda-02.txt>. | birkholz-rats-tuda-03.txt>. | |||
| [I-D.ietf-teep-architecture] | [I-D.ietf-teep-architecture] | |||
| Pei, M., Tschofenig, H., Thaler, D., and D. Wheeler, | Pei, M., Tschofenig, H., Thaler, D., and D. Wheeler, | |||
| "Trusted Execution Environment Provisioning (TEEP) | "Trusted Execution Environment Provisioning (TEEP) | |||
| Architecture", Work in Progress, Internet-Draft, draft- | Architecture", Work in Progress, Internet-Draft, draft- | |||
| ietf-teep-architecture-11, 2 July 2020, | ietf-teep-architecture-12, 13 July 2020, | |||
| <http://www.ietf.org/internet-drafts/draft-ietf-teep- | <http://www.ietf.org/internet-drafts/draft-ietf-teep- | |||
| architecture-11.txt>. | architecture-12.txt>. | |||
| [OPCUA] OPC Foundation, "OPC Unified Architecture Specification, | ||||
| Part 2: Security Model, Release 1.03", OPC 10000-2 , 25 | ||||
| November 2015, <https://opcfoundation.org/developer-tools/ | ||||
| specifications-unified-architecture/part-2-security- | ||||
| model/>. | ||||
| [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | ||||
| FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | ||||
| <https://www.rfc-editor.org/info/rfc4949>. | ||||
| [RFC8322] Field, J., Banghart, S., and D. Waltermire, "Resource- | ||||
| Oriented Lightweight Information Exchange (ROLIE)", | ||||
| RFC 8322, DOI 10.17487/RFC8322, February 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8322>. | ||||
| [TCGarch] Trusted Computing Group, "Trusted Platform Module Library | [TCGarch] Trusted Computing Group, "Trusted Platform Module Library | |||
| - Part 1: Architecture", 7 July 2020, | - Part 1: Architecture", n.d., | |||
| <https://trustedcomputinggroup.org/wp-content/uploads/ | <https://trustedcomputinggroup.org/wp-content/uploads/ | |||
| TCG_TPM2_r1p62_Part1_Architecture_7july2020.pdf>. | TCG_TPM2_r1p62_Part1_Architecture_7july2020.pdf>. | |||
| [WebAuthN] W3C, "Web Authentication: An API for accessing Public Key | ||||
| Credentials", n.d., <https://www.w3.org/TR/webauthn-1/>. | ||||
| Contributors | ||||
| Monty Wiseman | ||||
| Email: montywiseman32@gmail.com | ||||
| Liang Xia | ||||
| Email: frank.xialiang@huawei.com | ||||
| Laurence Lundblade | ||||
| Email: lgl@island-resort.com | ||||
| Eliot Lear | ||||
| Email: elear@cisco.com | ||||
| Jessica Fitzgerald-McKay | ||||
| Sarah C. Helbe | ||||
| Andrew Guinn | ||||
| Peter Lostcco | ||||
| Email: pete.loscocco@gmail.com | ||||
| Eric Voit | ||||
| Thomas Fossati | ||||
| Email: thomas.fossati@arm.com | ||||
| Paul Rowe | ||||
| Carsten Bormann | ||||
| Email: cabo@tzi.org | ||||
| Giri Mandyam | ||||
| Email: mandyam@qti.qualcomm.com | ||||
| Authors' Addresses | Authors' Addresses | |||
| Henk Birkholz | Henk Birkholz | |||
| Fraunhofer SIT | Fraunhofer SIT | |||
| Rheinstrasse 75 | Rheinstrasse 75 | |||
| 64295 Darmstadt | 64295 Darmstadt | |||
| Germany | Germany | |||
| Email: henk.birkholz@sit.fraunhofer.de | Email: henk.birkholz@sit.fraunhofer.de | |||
| Dave Thaler | Dave Thaler | |||
| Microsoft | Microsoft | |||
| United States of America | United States of America | |||
| Email: dthaler@microsoft.com | Email: dthaler@microsoft.com | |||
| Michael Richardson | Michael Richardson | |||
| Sandelman Software Works | Sandelman Software Works | |||
| Canada | Canada | |||
| End of changes. 109 change blocks. | ||||
| 352 lines changed or deleted | 694 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/ | ||||