| < draft-ietf-teep-architecture-11.txt | draft-ietf-teep-architecture-12.txt > | |||
|---|---|---|---|---|
| TEEP M. Pei | TEEP M. Pei | |||
| Internet-Draft Broadcom | Internet-Draft Broadcom | |||
| Intended status: Informational H. Tschofenig | Intended status: Informational H. Tschofenig | |||
| Expires: January 3, 2021 Arm Limited | Expires: January 14, 2021 Arm Limited | |||
| D. Thaler | D. Thaler | |||
| Microsoft | Microsoft | |||
| D. Wheeler | D. Wheeler | |||
| Intel | Intel | |||
| July 02, 2020 | July 13, 2020 | |||
| Trusted Execution Environment Provisioning (TEEP) Architecture | Trusted Execution Environment Provisioning (TEEP) Architecture | |||
| draft-ietf-teep-architecture-11 | draft-ietf-teep-architecture-12 | |||
| Abstract | Abstract | |||
| A Trusted Execution Environment (TEE) is an environment that enforces | A Trusted Execution Environment (TEE) is an environment that enforces | |||
| that any code within that environment cannot be tampered with, and | that any code within that environment cannot be tampered with, and | |||
| that any data used by such code cannot be read or tampered with by | that any data used by such code cannot be read or tampered with by | |||
| any code outside that environment. This architecture document | any code outside that environment. This architecture document | |||
| motivates the design and standardization of a protocol for managing | motivates the design and standardization of a protocol for managing | |||
| the lifecycle of trusted applications running inside such a TEE. | the lifecycle of trusted applications running inside such a TEE. | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 January 3, 2021. | This Internet-Draft will expire on January 14, 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 | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 29 ¶ | skipping to change at page 2, line 29 ¶ | |||
| not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
| it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.2. Authentication . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Authentication . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.3. Internet of Things . . . . . . . . . . . . . . . . . . . 8 | 3.3. Internet of Things . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.4. Confidential Cloud Computing . . . . . . . . . . . . . . 8 | 3.4. Confidential Cloud Computing . . . . . . . . . . . . . . 8 | |||
| 4. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.1. System Components . . . . . . . . . . . . . . . . . . . . 8 | 4.1. System Components . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.2. Multiple TEEs in a Device . . . . . . . . . . . . . . . . 11 | 4.2. Multiple TEEs in a Device . . . . . . . . . . . . . . . . 11 | |||
| 4.3. Multiple TAMs and Relationship to TAs . . . . . . . . . . 13 | 4.3. Multiple TAMs and Relationship to TAs . . . . . . . . . . 13 | |||
| 4.4. Untrusted Apps, Trusted Apps, and Personalization Data . 14 | 4.4. Untrusted Apps, Trusted Apps, and Personalization Data . 14 | |||
| 4.4.1. Example: Application Delivery Mechanisms in Intel SGX 15 | 4.4.1. Example: Application Delivery Mechanisms in Intel SGX 16 | |||
| 4.4.2. Example: Application Delivery Mechanisms in Arm | 4.4.2. Example: Application Delivery Mechanisms in Arm | |||
| TrustZone . . . . . . . . . . . . . . . . . . . . . . 16 | TrustZone . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 4.5. Entity Relations . . . . . . . . . . . . . . . . . . . . 17 | 4.5. Entity Relations . . . . . . . . . . . . . . . . . . . . 17 | |||
| 5. Keys and Certificate Types . . . . . . . . . . . . . . . . . 18 | 5. Keys and Certificate Types . . . . . . . . . . . . . . . . . 18 | |||
| 5.1. Trust Anchors in a TEEP Agent . . . . . . . . . . . . . . 20 | 5.1. Trust Anchors in a TEEP Agent . . . . . . . . . . . . . . 20 | |||
| 5.2. Trust Anchors in a TEE . . . . . . . . . . . . . . . . . 20 | 5.2. Trust Anchors in a TEE . . . . . . . . . . . . . . . . . 20 | |||
| 5.3. Trust Anchors in a TAM . . . . . . . . . . . . . . . . . 20 | 5.3. Trust Anchors in a TAM . . . . . . . . . . . . . . . . . 20 | |||
| 5.4. Scalability . . . . . . . . . . . . . . . . . . . . . . . 20 | 5.4. Scalability . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.5. Message Security . . . . . . . . . . . . . . . . . . . . 21 | 5.5. Message Security . . . . . . . . . . . . . . . . . . . . 21 | |||
| 6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| skipping to change at page 3, line 12 ¶ | skipping to change at page 3, line 12 ¶ | |||
| 6.2.1. TEEP Broker APIs . . . . . . . . . . . . . . . . . . 22 | 6.2.1. TEEP Broker APIs . . . . . . . . . . . . . . . . . . 22 | |||
| 6.2.2. TEEP Broker Distribution . . . . . . . . . . . . . . 23 | 6.2.2. TEEP Broker Distribution . . . . . . . . . . . . . . 23 | |||
| 7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 7.1. Information Required in TEEP Claims . . . . . . . . . . . 25 | 7.1. Information Required in TEEP Claims . . . . . . . . . . . 25 | |||
| 8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 25 | 8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 25 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | |||
| 9.1. Broker Trust Model . . . . . . . . . . . . . . . . . . . 26 | 9.1. Broker Trust Model . . . . . . . . . . . . . . . . . . . 26 | |||
| 9.2. Data Protection . . . . . . . . . . . . . . . . . . . . . 26 | 9.2. Data Protection . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 9.3. Compromised REE . . . . . . . . . . . . . . . . . . . . . 27 | 9.3. Compromised REE . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 9.4. Compromised CA . . . . . . . . . . . . . . . . . . . . . 27 | 9.4. Compromised CA . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 9.5. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 28 | 9.5. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 9.6. Malicious TA Removal . . . . . . . . . . . . . . . . . . 28 | 9.6. Malicious TA Removal . . . . . . . . . . . . . . . . . . 28 | |||
| 9.7. Certificate Expiry and Renewal . . . . . . . . . . . . . 28 | 9.7. Certificate Expiry and Renewal . . . . . . . . . . . . . 29 | |||
| 9.8. Keeping Secrets from the TAM . . . . . . . . . . . . . . 29 | 9.8. Keeping Secrets from the TAM . . . . . . . . . . . . . . 30 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 29 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 29 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 13. Informative References . . . . . . . . . . . . . . . . . . . 30 | 13. Informative References . . . . . . . . . . . . . . . . . . . 30 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 1. Introduction | 1. Introduction | |||
| Applications executing in a device are exposed to many different | Applications executing in a device are exposed to many different | |||
| attacks intended to compromise the execution of the application or | attacks intended to compromise the execution of the application or | |||
| reveal the data upon which those applications are operating. These | reveal the data upon which those applications are operating. These | |||
| attacks increase with the number of other applications on the device, | attacks increase with the number of other applications on the device, | |||
| with such other applications coming from potentially untrustworthy | with such other applications coming from potentially untrustworthy | |||
| sources. The potential for attacks further increases with the | sources. The potential for attacks further increases with the | |||
| complexity of features and applications on devices, and the | complexity of features and applications on devices, and the | |||
| skipping to change at page 5, line 11 ¶ | skipping to change at page 5, line 11 ¶ | |||
| confidential wants to determine security-relevant information of a | confidential wants to determine security-relevant information of a | |||
| device before allowing their TA to be provisioned to the TEE | device before allowing their TA to be provisioned to the TEE | |||
| within the device. An example is the verification of the type of | within the device. An example is the verification of the type of | |||
| TEE included in a device and that it is capable of providing the | TEE included in a device and that it is capable of providing the | |||
| security protections required. | security protections required. | |||
| - A TEE in a device wants to determine whether an entity that wants | - A TEE in a device wants to determine whether an entity that wants | |||
| to manage a TA in the device is authorized to manage TAs in the | to manage a TA in the device is authorized to manage TAs in the | |||
| TEE, and what TAs the entity is permitted to manage. | TEE, and what TAs the entity is permitted to manage. | |||
| - A TAM (e.g., operated by a device administrator) wants to | - A Device Administrator wants to determine if a TA exists (is | |||
| determine if a TA exists (is installed) on a device (in the TEE), | installed) on a device (in the TEE), and if not, install the TA in | |||
| and if not, install the TA in the TEE. | the TEE. | |||
| - A TAM wants to check whether a TA in a device's TEE is the most | - A Device Administrator wants to check whether a TA in a device's | |||
| up-to-date version, and if not, update the TA in the TEE. | TEE is the most up-to-date version, and if not, update the TA in | |||
| the TEE. | ||||
| - A Device Administrator wants to remove a TA from a device's TEE if | - A Device Administrator wants to remove a TA from a device's TEE if | |||
| the TA developer is no longer maintaining that TA, when the TA has | the TA developer is no longer maintaining that TA, when the TA has | |||
| been revoked or is not used for other reasons anymore (e.g., due | been revoked or is not used for other reasons anymore (e.g., due | |||
| to an expired subscription). | to an expired subscription). | |||
| - A TA developer wants to define the relationship between | - A TA developer wants to define the relationship between | |||
| cooperating TAs under the TA developer's control, and specify | cooperating TAs under the TA developer's control, and specify | |||
| whether the TAs can communicate, share data, and/or share key | whether the TAs can communicate, share data, and/or share key | |||
| material. | material. | |||
| 2. Terminology | 2. Terminology | |||
| The following terms are used: | The following terms are used: | |||
| - Device: A physical piece of hardware that hosts one or more TEEs, | - Device: A physical piece of hardware that hosts one or more TEEs, | |||
| often along with a REE. A device contains a default list of Trust | often along with an REE. | |||
| Anchors that identify entities (e.g., TAMs) that are trusted by | ||||
| the device. This list is normally set by the device manufacturer, | ||||
| and may be governed by the device's network carrier when it is a | ||||
| mobile device. The list of Trust Anchors is normally modifiable | ||||
| by the device's owner or Device Administrator. However the device | ||||
| manufacturer or network carrier (in the mobile device case) may | ||||
| restrict some modifications, for example, by not allowing the | ||||
| manufacturer or carrier's Trust Anchor to be removed or disabled. | ||||
| - Device Administrator: An entity that is responsible for | - Device Administrator: An entity that is responsible for | |||
| administration of a device, which could be the Device Owner. A | administration of a device, which could be the Device Owner. A | |||
| Device Administrator has privileges on the device to install and | Device Administrator has privileges on the device to install and | |||
| remove Untrusted Applications and TAs, approve or reject Trust | remove Untrusted Applications and TAs, approve or reject Trust | |||
| Anchors, and approve or reject TA developers, among possibly other | Anchors, and approve or reject TA developers, among possibly other | |||
| privileges on the device. A Device Administrator can manage the | privileges on the device. A Device Administrator can manage the | |||
| list of allowed TAMs by modifying the list of Trust Anchors on the | list of allowed TAMs by modifying the list of Trust Anchors on the | |||
| device. Although a Device Administrator may have privileges and | device. Although a Device Administrator may have privileges and | |||
| device-specific controls to locally administer a device, the | device-specific controls to locally administer a device, the | |||
| skipping to change at page 6, line 22 ¶ | skipping to change at page 6, line 15 ¶ | |||
| administration rights. In this case, the enterprise appoints a | administration rights. In this case, the enterprise appoints a | |||
| Device Administrator that is not the device owner. | Device Administrator that is not the device owner. | |||
| - Device User: A human being that uses a device. Many devices have | - Device User: A human being that uses a device. Many devices have | |||
| a single device user. Some devices have a primary device user | a single device user. Some devices have a primary device user | |||
| with other human beings as secondary device users (e.g., parent | with other human beings as secondary device users (e.g., parent | |||
| allowing children to use their tablet or laptop). Other devices | allowing children to use their tablet or laptop). Other devices | |||
| are not used by a human being and hence have no device user. | are not used by a human being and hence have no device user. | |||
| Relates to Device Owner and Device Administrator. | Relates to Device Owner and Device Administrator. | |||
| - Raw Public Key (RPK): The RPK only consists of the | - Raw Public Key: The raw public key only consists of the | |||
| SubjectPublicKeyInfo structure of a PKIX certificate that carries | SubjectPublicKeyInfo structure of a PKIX certificate that carries | |||
| the parameters necessary to describe the public key. Other | the parameters necessary to describe the public key. Other | |||
| serialization formats that do not rely on ASN.1 may also be used. | serialization formats that do not rely on ASN.1 may also be used. | |||
| - Rich Execution Environment (REE): An environment that is provided | - Rich Execution Environment (REE): An environment that is provided | |||
| and governed by a typical OS (e.g., Linux, Windows, Android, iOS), | and governed by a typical OS (e.g., Linux, Windows, Android, iOS), | |||
| potentially in conjunction with other supporting operating systems | potentially in conjunction with other supporting operating systems | |||
| and hypervisors; it is outside of any TEE. This environment and | and hypervisors; it is outside of any TEE. This environment and | |||
| applications running on it are considered untrusted (or more | applications running on it are considered untrusted (or more | |||
| precisely, less trusted than a TEE). | precisely, less trusted than a TEE). | |||
| skipping to change at page 7, line 52 ¶ | skipping to change at page 7, line 43 ¶ | |||
| proof of transaction. | proof of transaction. | |||
| For a mobile payment application, some biometric identification | For a mobile payment application, some biometric identification | |||
| information could also be stored in a TEE. The mobile payment | information could also be stored in a TEE. The mobile payment | |||
| application can use such information for unlocking the device and for | application can use such information for unlocking the device and for | |||
| local identification of the user. | local identification of the user. | |||
| A trusted user interface (UI) may be used in a mobile device to | A trusted user interface (UI) may be used in a mobile device to | |||
| prevent malicious software from stealing sensitive user input data. | prevent malicious software from stealing sensitive user input data. | |||
| Such an implementation often relies on a TEE for providing access to | Such an implementation often relies on a TEE for providing access to | |||
| peripherals, such as PIN input. | peripherals, such as PIN input or a trusted display, so that the REE | |||
| cannot observe or tamper with the user input or output. | ||||
| 3.2. Authentication | 3.2. Authentication | |||
| For better security of authentication, a device may store its keys | For better security of authentication, a device may store its keys | |||
| and cryptographic libraries inside a TEE limiting access to | and cryptographic libraries inside a TEE limiting access to | |||
| cryptographic functions via a well-defined interface and thereby | cryptographic functions via a well-defined interface and thereby | |||
| reducing access to keying material. | reducing access to keying material. | |||
| 3.3. Internet of Things | 3.3. Internet of Things | |||
| skipping to change at page 9, line 36 ¶ | skipping to change at page 9, line 36 ¶ | |||
| Figure 1: Notional Architecture of TEEP | Figure 1: Notional Architecture of TEEP | |||
| - TA Signers and Device Administrators utilize the services of a TAM | - TA Signers and Device Administrators utilize the services of a TAM | |||
| to manage TAs on devices. TA Signers do not directly interact | to manage TAs on devices. TA Signers do not directly interact | |||
| with devices. Device Administators may elect to use a TAM for | with devices. Device Administators may elect to use a TAM for | |||
| remote administration of TAs instead of managing each device | remote administration of TAs instead of managing each device | |||
| directly. | directly. | |||
| - Trusted Application Manager (TAM): A TAM is responsible for | - Trusted Application Manager (TAM): A TAM is responsible for | |||
| performing lifecycle management activity on TAs on behalf of TA | performing lifecycle management activity on TAs on behalf of TA | |||
| Signers and Device Administrators. This includes creation and | Signers and Device Administrators. This includes installation and | |||
| deletion of TAs, and may include, for example, over-the-air | deletion of TAs, and may include, for example, over-the-air | |||
| updates to keep TAs up-to-date and clean up when a version should | updates to keep TAs up-to-date and clean up when a version should | |||
| be removed. TAMs may provide services that make it easier for TA | be removed. TAMs may provide services that make it easier for TA | |||
| Signers or Device Administators to use the TAM's service to manage | Signers or Device Administators to use the TAM's service to manage | |||
| multiple devices, although that is not required of a TAM. | multiple devices, although that is not required of a TAM. | |||
| The TAM performs its management of TAs on the device through | The TAM performs its management of TAs on the device through | |||
| interactions with a device's TEEP Broker, which relays messages | interactions with a device's TEEP Broker, which relays messages | |||
| between a TAM and a TEEP Agent running inside the TEE. As shown | between a TAM and a TEEP Agent running inside the TEE. TEEP | |||
| in Figure 1, the TAM cannot directly contact a TEEP Agent, but | authentication is performed between a TAM and a TEEP Agent. | |||
| must wait for the TEEP Broker to contact the TAM requesting a | ||||
| particular service. This architecture is intentional in order to | As shown in Figure 1, the TAM cannot directly contact a TEEP | |||
| accommodate network and application firewalls that normally | Agent, but must wait for the TEEP Broker to contact the TAM | |||
| protect user and enterprise devices from arbitrary connections | requesting a particular service. This architecture is intentional | |||
| from external network entities. | in order to accommodate network and application firewalls that | |||
| normally protect user and enterprise devices from arbitrary | ||||
| connections from external network entities. | ||||
| A TAM may be publicly available for use by many TA Signers, or a | A TAM may be publicly available for use by many TA Signers, or a | |||
| TAM may be private, and accessible by only one or a limited number | TAM may be private, and accessible by only one or a limited number | |||
| of TA Signers. It is expected that many manufacturers and network | of TA Signers. It is expected that many manufacturers and network | |||
| carriers will run their own private TAM. | carriers will run their own private TAM. | |||
| A TA Signer or Device Administrator chooses a particular TAM based | A TA Signer or Device Administrator chooses a particular TAM based | |||
| on whether the TAM is trusted by a device or set of devices. The | on whether the TAM is trusted by a device or set of devices. The | |||
| TAM is trusted by a device if the TAM's public key is, or chains | TAM is trusted by a device if the TAM's public key is, or chains | |||
| up to, an authorized Trust Anchor in the device. A TA Signer or | up to, an authorized Trust Anchor in the device. A TA Signer or | |||
| skipping to change at page 11, line 10 ¶ | skipping to change at page 11, line 13 ¶ | |||
| TEE that receives TAM requests (typically relayed via a TEEP | TEE that receives TAM requests (typically relayed via a TEEP | |||
| Broker that runs in an REE). A TEEP Agent in the TEE may parse | Broker that runs in an REE). A TEEP Agent in the TEE may parse | |||
| requests or forward requests to other processing modules in a TEE, | requests or forward requests to other processing modules in a TEE, | |||
| which is up to a TEE provider's implementation. A response | which is up to a TEE provider's implementation. A response | |||
| message corresponding to a TAM request is sent back to the TAM, | message corresponding to a TAM request is sent back to the TAM, | |||
| again typically relayed via a TEEP Broker. | again typically relayed via a TEEP Broker. | |||
| - Certification Authority (CA): A CA is an entity that issues | - Certification Authority (CA): A CA is an entity that issues | |||
| digital certificates (especially X.509 certificates) and vouches | digital certificates (especially X.509 certificates) and vouches | |||
| for the binding between the data items in a certificate [RFC4949]. | for the binding between the data items in a certificate [RFC4949]. | |||
| Certificates are then used for authenticating a device, a TAM and | Certificates are then used for authenticating a device, a TAM, or | |||
| a TA Signer. A device embeds a list of root certificates (Trust | a TA Signer, as discussed in Section 5. The CAs do not need to be | |||
| Anchors), from trusted CAs that a TAM will be validated against. | the same; different CAs can be chosen by each TAM, and different | |||
| A TAM will remotely attest a device by checking whether a device | device CAs can be used by different device manufacturers. | |||
| comes with a certificate from a CA that the TAM trusts. The CAs | ||||
| do not need to be the same; different CAs can be chosen by each | ||||
| TAM, and different device CAs can be used by different device | ||||
| manufacturers. | ||||
| 4.2. Multiple TEEs in a Device | 4.2. Multiple TEEs in a Device | |||
| Some devices might implement multiple TEEs. In these cases, there | Some devices might implement multiple TEEs. In these cases, there | |||
| might be one shared TEEP Broker that interacts with all the TEEs in | might be one shared TEEP Broker that interacts with all the TEEs in | |||
| the device. However, some TEEs (for example, SGX [SGX]) present | the device. However, some TEEs (for example, SGX [SGX]) present | |||
| themselves as separate containers within memory without a controlling | themselves as separate containers within memory without a controlling | |||
| manager within the TEE. As such, there might be multiple TEEP | manager within the TEE. As such, there might be multiple TEEP | |||
| Brokers in the REE, where each TEEP Broker communicates with one or | Brokers in the REE, where each TEEP Broker communicates with one or | |||
| more TEEs associated with it. | more TEEs associated with it. | |||
| skipping to change at page 13, line 46 ¶ | skipping to change at page 13, line 46 ¶ | |||
| repository, the developer optionally binds the Untrusted Application | repository, the developer optionally binds the Untrusted Application | |||
| with a manifest that identifies what TAMs can be contacted for the | with a manifest that identifies what TAMs can be contacted for the | |||
| TA. In some situations, a TA may only be available via a single TAM | TA. In some situations, a TA may only be available via a single TAM | |||
| - this is likely the case for enterprise applications or TA Signers | - this is likely the case for enterprise applications or TA Signers | |||
| serving a closed community. For broad public apps, there will likely | serving a closed community. For broad public apps, there will likely | |||
| be multiple TAMs in the manifest - one servicing one brand of mobile | be multiple TAMs in the manifest - one servicing one brand of mobile | |||
| device and another servicing a different manufacturer, etc. Because | device and another servicing a different manufacturer, etc. Because | |||
| different devices and different manufacturers trust different TAMs, | different devices and different manufacturers trust different TAMs, | |||
| the manifest can include multiple TAMs that support the required TA. | the manifest can include multiple TAMs that support the required TA. | |||
| When a TEEP Broker receives a request from an Untrusted Application | When a TEEP Broker receives a request (see the RequestTA API in | |||
| to install a TA, a list of TAM URIs may be provided for that TA, and | Section 6.2.1) from an Untrusted Application to install a TA, a list | |||
| the request is passed to the TEEP Agent. If the TEEP Agent decides | of TAM URIs may be provided for that TA, and the request is passed to | |||
| that the TA needs to be installed, the TEEP Agent selects a single | the TEEP Agent. If the TEEP Agent decides that the TA needs to be | |||
| TAM URI that is consistent with the list of trusted TAMs provisioned | installed, the TEEP Agent selects a single TAM URI that is consistent | |||
| on the device, invokes the HTTP transport for TEEP to connect to the | with the list of trusted TAMs provisioned in the TEEP Agent, invokes | |||
| TAM URI, and begins a TEEP protocol exchange. When the TEEP Agent | the HTTP transport for TEEP to connect to the TAM URI, and begins a | |||
| subsequently receives the TA to install and the TA's manifest | TEEP protocol exchange. When the TEEP Agent subsequently receives | |||
| indicates dependencies on any other trusted components, each | the TA to install and the TA's manifest indicates dependencies on any | |||
| dependency can include a list of TAM URIs for the relevant | other trusted components, each dependency can include a list of TAM | |||
| dependency. If such dependencies exist that are prerequisites to | URIs for the relevant dependency. If such dependencies exist that | |||
| install the TA, then the TEEP Agent recursively follows the same | are prerequisites to install the TA, then the TEEP Agent recursively | |||
| procedure for each dependency that needs to be installed or updated, | follows the same procedure for each dependency that needs to be | |||
| including selecting a TAM URI that is consistent with the list of | installed or updated, including selecting a TAM URI that is | |||
| trusted TAMs provisioned on the device, and beginning a TEEP | consistent with the list of trusted TAMs provisioned on the device, | |||
| exchange. If multiple TAM URIs are considered trusted, only one | and beginning a TEEP exchange. If multiple TAM URIs are considered | |||
| needs to be contacted and they can be attempted in some order until | trusted, only one needs to be contacted and they can be attempted in | |||
| one responds. | some order until one responds. | |||
| Separate from the Untrusted Application's manifest, this framework | Separate from the Untrusted Application's manifest, this framework | |||
| relies on the use of the manifest format in [I-D.ietf-suit-manifest] | relies on the use of the manifest format in [I-D.ietf-suit-manifest] | |||
| for expressing how to install a TA, as well as any dependencies on | for expressing how to install a TA, as well as any dependencies on | |||
| other TEE components and versions. That is, dependencies from TAs on | other TEE components and versions. That is, dependencies from TAs on | |||
| other TEE components can be expressed in a SUIT manifest, including | other TEE components can be expressed in a SUIT manifest, including | |||
| dependencies on any other TAs, or trusted OS code (if any), or | dependencies on any other TAs, or trusted OS code (if any), or | |||
| trusted firmware. Installation steps can also be expressed in a SUIT | trusted firmware. Installation steps can also be expressed in a SUIT | |||
| manifest. | manifest. | |||
| skipping to change at page 14, line 42 ¶ | skipping to change at page 14, line 42 ¶ | |||
| Updating a TA may cause compatibility issues with any Untrusted | Updating a TA may cause compatibility issues with any Untrusted | |||
| Applications or other components that depend on the updated TA, just | Applications or other components that depend on the updated TA, just | |||
| like updating the OS or a shared library could impact an Untrusted | like updating the OS or a shared library could impact an Untrusted | |||
| Application. Thus, an implementation needs to take into account such | Application. Thus, an implementation needs to take into account such | |||
| issues. | issues. | |||
| 4.4. Untrusted Apps, Trusted Apps, and Personalization Data | 4.4. Untrusted Apps, Trusted Apps, and Personalization Data | |||
| In TEEP, there is an explicit relationship and dependence between an | In TEEP, there is an explicit relationship and dependence between an | |||
| Untrusted Application in a REE and one or more TAs in a TEE, as shown | Untrusted Application in an REE and one or more TAs in a TEE, as | |||
| in Figure 2. For most purposes, an Untrusted Application that uses | shown in Figure 2. For most purposes, an Untrusted Application that | |||
| one or more TAs in a TEE appears no different from any other | uses one or more TAs in a TEE appears no different from any other | |||
| Untrusted Application in the REE. However, the way the Untrusted | Untrusted Application in the REE. However, the way the Untrusted | |||
| Application and its corresponding TAs are packaged, delivered, and | Application and its corresponding TAs are packaged, delivered, and | |||
| installed on the device can vary. The variations depend on whether | installed on the device can vary. The variations depend on whether | |||
| the Untrusted Application and TA are bundled together or are provided | the Untrusted Application and TA are bundled together or are provided | |||
| separately, and this has implications to the management of the TAs in | separately, and this has implications to the management of the TAs in | |||
| a TEE. In addition to the Untrusted Application and TA(s), the TA(s) | a TEE. In addition to the Untrusted Application and TA(s), the TA(s) | |||
| and/or TEE may require some additional data to personalize the TA to | and/or TEE may require some additional data to personalize the TA to | |||
| the device or a user. This personalization data may depend on the | the device or a user. This personalization data may depend on the | |||
| type of TEE, a particular TEE instance, the TA, and even the user of | type of TEE, a particular TEE instance, the TA, and even the user of | |||
| the device; an example of personalization data might be a secret | the device; an example of personalization data might be a secret | |||
| skipping to change at page 15, line 20 ¶ | skipping to change at page 15, line 20 ¶ | |||
| within it and support integrity protection of the personalization | within it and support integrity protection of the personalization | |||
| data. Other than the requirement to support confidentiality and | data. Other than the requirement to support confidentiality and | |||
| integrity protection, the TEEP architecture places no limitations or | integrity protection, the TEEP architecture places no limitations or | |||
| requirements on the personalization data. | requirements on the personalization data. | |||
| There are three possible cases for bundling of an Untrusted | There are three possible cases for bundling of an Untrusted | |||
| Application, TA(s), and personalization data: | Application, TA(s), and personalization data: | |||
| 1. The Untrusted Application, TA(s), and personalization data are | 1. The Untrusted Application, TA(s), and personalization data are | |||
| all bundled together in a single package by a TA Signer and | all bundled together in a single package by a TA Signer and | |||
| provided to the TEEP Broker through the TAM. | either provided to the TEEP Broker through the TAM, or provided | |||
| separately (with encrypted personalization data), with key | ||||
| material needed to decrypt and install the personalization data | ||||
| and TA provided by a TAM. | ||||
| 2. The Untrusted Application and the TA(s) are bundled together in a | 2. The Untrusted Application and the TA(s) are bundled together in a | |||
| single package, which a TAM or a publicly accessible app store | single package, which a TAM or a publicly accessible app store | |||
| maintains, and the personalization data is separately provided by | maintains, and the personalization data is separately provided by | |||
| the TA Signer's TAM. | the TA Signer's TAM. | |||
| 3. All components are independent. The Untrusted Application is | 3. All components are independent. The Untrusted Application is | |||
| installed through some independent or device-specific mechanism, | installed through some independent or device-specific mechanism, | |||
| and the TAM provides the TA and personalization data from the TA | and the TAM provides the TA and personalization data from the TA | |||
| Signer. Delivery of the TA and personalization data may be | Signer. Delivery of the TA and personalization data may be | |||
| skipping to change at page 17, line 36 ¶ | skipping to change at page 17, line 38 ¶ | |||
| | | | | | | | | | | |||
| (a) Untrusted | | | | | (a) Untrusted | | | | | |||
| App - 2a. Supply --> | --- 3. Install ------> | | | App - 2a. Supply --> | --- 3. Install ------> | | | |||
| | | | | | | | | | | |||
| (b) TA -- 2b. Supply ----------> | 4. Messaging-->| | | (b) TA -- 2b. Supply ----------> | 4. Messaging-->| | | |||
| | | | | | | | | | | |||
| Figure 3: Example Developer Experience | Figure 3: Example Developer Experience | |||
| Figure 3 shows an example where the same developer builds and signs | Figure 3 shows an example where the same developer builds and signs | |||
| two applications: 1) an Untrusted Application; 2) a TA that provides | two applications: (a) an Untrusted Application; (b) a TA that | |||
| some security functions to be run inside a TEE. | provides some security functions to be run inside a TEE. This | |||
| example assumes that the developer, the TEE, and the TAM have | ||||
| previously been provisioned with certificates. | ||||
| At step 1, the developer authors the two applications. | ||||
| At step 2, the developer uploads the Untrusted Application (2a) to an | At step 2, the developer uploads the Untrusted Application (2a) to an | |||
| Application Store. In this example, the developer is also the TA | Application Store. In this example, the developer is also the TA | |||
| Signer, and so generates a signed TA. The developer can then either | Signer, and so generates a signed TA. The developer can then either | |||
| bundle the signed TA with the Untrusted Application, or the developer | bundle the signed TA with the Untrusted Application, or the developer | |||
| can provide the signed TA to a TAM that will be managing the TA in | can provide the signed TA to a TAM that will be managing the TA in | |||
| various devices. | various devices. | |||
| At step 3, a user will go to an Application Store to download the | At step 3, a user will go to an Application Store to download the | |||
| Untrusted Application. Since the Untrusted Application depends on | Untrusted Application (where the arrow indicates the direction of | |||
| the TA, installing the Untrusted Application will trigger TA | data transfer). | |||
| installation by initiating communication with a TAM. This is step 4. | ||||
| The TEEP Agent will interact with TAM via a TEEP Broker that | At step 4, since the Untrusted Application depends on the TA, | |||
| faciliates communications between a TAM and the TEEP Agent in TEE. | installing the Untrusted Application will trigger TA installation by | |||
| initiating communication with a TAM. The TEEP Agent will interact | ||||
| with TAM via a TEEP Broker that faciliates communications between a | ||||
| TAM and the TEEP Agent in TEE. | ||||
| Some TA installation implementations might ask for a user's consent. | Some TA installation implementations might ask for a user's consent. | |||
| In other implementations, a Device Administrator might choose what | In other implementations, a Device Administrator might choose what | |||
| Untrusted Applications and related TAs to be installed. A user | Untrusted Applications and related TAs to be installed. A user | |||
| consent flow is out of scope of the TEEP architecture. | consent flow is out of scope of the TEEP architecture. | |||
| The main components consist of a set of standard messages created by | The main components consist of a set of standard messages created by | |||
| a TAM to deliver TA management commands to a device, and device | a TAM to deliver TA management commands to a device, and device | |||
| attestation and response messages created by a TEE that responds to a | attestation and response messages created by a TEE that responds to a | |||
| TAM's message. | TAM's message. | |||
| skipping to change at page 22, line 12 ¶ | skipping to change at page 22, line 12 ¶ | |||
| Untrusted Application without requiring the Untrusted Application to | Untrusted Application without requiring the Untrusted Application to | |||
| run first. | run first. | |||
| 6.1. Role of the TEEP Broker | 6.1. Role of the TEEP Broker | |||
| A TEEP Broker abstracts the message exchanges with a TEE in a device. | A TEEP Broker abstracts the message exchanges with a TEE in a device. | |||
| The input data is originated from a TAM or the first initialization | The input data is originated from a TAM or the first initialization | |||
| call to trigger a TA installation. | call to trigger a TA installation. | |||
| The Broker doesn't need to parse a message content received from a | The Broker doesn't need to parse a message content received from a | |||
| TAM that should be processed by a TEE. When a device has more than | TAM that should be processed by a TEE (see the ProcessTeepMessage API | |||
| one TEE, one TEEP Broker per TEE could be present in the REE. A TEEP | in Section 6.2.1). When a device has more than one TEE, one TEEP | |||
| Broker interacts with a TEEP Agent inside a TEE. | Broker per TEE could be present in the REE. A TEEP Broker interacts | |||
| with a TEEP Agent inside a TEE. | ||||
| A TAM message may indicate the target TEE where a TA should be | A TAM message may indicate the target TEE where a TA should be | |||
| installed. A compliant TEEP protocol should include a target TEE | installed. A compliant TEEP protocol should include a target TEE | |||
| identifier for a TEEP Broker when multiple TEEs are present. | identifier for a TEEP Broker when multiple TEEs are present. | |||
| The Broker relays the response messages generated from a TEEP Agent | The Broker relays the response messages generated from a TEEP Agent | |||
| in a TEE to the TAM. | in a TEE to the TAM. | |||
| The Broker only needs to return a (transport) error message if the | The Broker only needs to return a (transport) error message if the | |||
| TEE is not reachable for some reason. Other errors are represented | TEE is not reachable for some reason. Other errors are represented | |||
| skipping to change at page 25, line 42 ¶ | skipping to change at page 25, line 42 ¶ | |||
| same TEE type created by different manufacturers and address | same TEE type created by different manufacturers and address | |||
| considerations around manufacturer provisioning, keying and | considerations around manufacturer provisioning, keying and | |||
| support for the TEE. | support for the TEE. | |||
| - Freshness Proof: A claim that includes freshness information must | - Freshness Proof: A claim that includes freshness information must | |||
| be included, such as a nonce or timestamp. | be included, such as a nonce or timestamp. | |||
| - Requested Components: A list of zero or more components (TAs or | - Requested Components: A list of zero or more components (TAs or | |||
| other dependencies needed by a TEE) that are requested by some | other dependencies needed by a TEE) that are requested by some | |||
| depending app, but which are not currently installed in the TEE. | depending app, but which are not currently installed in the TEE. | |||
| The claims also need to specify for each component, whether the TA | ||||
| binary is needed, or whether the TA binary is already available | ||||
| and only permission to install is needed. | ||||
| 8. Algorithm and Attestation Agility | 8. Algorithm and Attestation Agility | |||
| RFC 7696 [RFC7696] outlines the requirements to migrate from one | RFC 7696 [RFC7696] outlines the requirements to migrate from one | |||
| mandatory-to-implement cryptographic algorithm suite to another over | mandatory-to-implement cryptographic algorithm suite to another over | |||
| time. This feature is also known as crypto agility. Protocol | time. This feature is also known as crypto agility. Protocol | |||
| evolution is greatly simplified when crypto agility is considered | evolution is greatly simplified when crypto agility is considered | |||
| during the design of the protocol. In the case of the TEEP protocol | during the design of the protocol. In the case of the TEEP protocol | |||
| the diverse range of use cases, from trusted app updates for smart | the diverse range of use cases, from trusted app updates for smart | |||
| phones and tablets to updates of code on higher-end IoT devices, | phones and tablets to updates of code on higher-end IoT devices, | |||
| creates the need for different mandatory-to-implement algorithms | creates the need for different mandatory-to-implement algorithms | |||
| already from the start. | already from the start. | |||
| Crypto agility in TEEP concerns the use of symmetric as well as | Crypto agility in TEEP concerns the use of symmetric as well as | |||
| asymmetric algorithms. In the context of TEEP symmetric algorithms | asymmetric algorithms. In the context of TEEP, symmetric algorithms | |||
| are used for encryption of TA binaries and personalization data | are used for encryption of TA binaries and personalization data | |||
| whereas the asymmetric algorithms are mostly used for signing | whereas the asymmetric algorithms are mostly used for signing | |||
| messages. | messages. | |||
| In addition to the use of cryptographic algorithms in TEEP, there is | In addition to the use of cryptographic algorithms in TEEP, there is | |||
| also the need to make use of different attestation technologies. A | also the need to make use of different attestation technologies. A | |||
| device must provide techniques to inform a TAM about the attestation | device must provide techniques to inform a TAM about the attestation | |||
| technology it supports. For many deployment cases it is more likely | technology it supports. For many deployment cases it is more likely | |||
| for the TAM to support one or more attestation techniques whereas the | for the TAM to support one or more attestation techniques whereas the | |||
| device may only support one. | device may only support one. | |||
| skipping to change at page 26, line 44 ¶ | skipping to change at page 26, line 47 ¶ | |||
| A rogue TEEP Broker might send corrupted data to the TEEP Agent, or | A rogue TEEP Broker might send corrupted data to the TEEP Agent, or | |||
| launch a DoS attack by sending a flood of TEEP protocol requests. | launch a DoS attack by sending a flood of TEEP protocol requests. | |||
| The TEEP Agent validates the signature of each TEEP protocol request | The TEEP Agent validates the signature of each TEEP protocol request | |||
| and checks the signing certificate against its Trust Anchors. To | and checks the signing certificate against its Trust Anchors. To | |||
| mitigate DoS attacks, it might also add some protection scheme such | mitigate DoS attacks, it might also add some protection scheme such | |||
| as a threshold on repeated requests or number of TAs that can be | as a threshold on repeated requests or number of TAs that can be | |||
| installed. | installed. | |||
| 9.2. Data Protection | 9.2. Data Protection | |||
| The TEE implementation provides protection of data on the device. It | It is the responsibility of the TAM to protect data on its servers. | |||
| is the responsibility of the TAM to protect data on its servers. | Similarly, it is the responsibility of the TEE implementation to | |||
| provides protection of data against integrity and confidentiality | ||||
| attacks from outside the TEE. TEEs that provide isolation among TAs | ||||
| within the TEE are likewise responsible for protecting TA data | ||||
| against the REE and other TAs. For example, this can be used to | ||||
| protect one user's or tenant's data from compromise by another user/ | ||||
| tenant, even if the attacker has TAs. | ||||
| The protocol between TEEP Agents and TAMs similarly is responsible | The protocol between TEEP Agents and TAMs similarly is responsible | |||
| for securely providing integrity and confidentiality protection | for securely providing integrity and confidentiality protection | |||
| against adversaries between them. Since the transport protocol under | against adversaries between them. Since the transport protocol under | |||
| the TEEP protocol might be implemented outside a TEE, as discussed in | the TEEP protocol might be implemented outside a TEE, as discussed in | |||
| Section 6, it cannot be relied upon for sufficient protection. The | Section 6, it cannot be relied upon for sufficient protection. The | |||
| TEEP protocol provides integrity protection, but confidentiality must | TEEP protocol provides integrity protection, but confidentiality must | |||
| be provided by payload security, i.e., using encrypted TA binaries | be provided by payload security, i.e., using encrypted TA binaries | |||
| and encrypted attestation information. See [I-D.ietf-teep-protocol] | and encrypted attestation information. See [I-D.ietf-teep-protocol] | |||
| for more discussion. | for more discussion. | |||
| skipping to change at page 27, line 42 ¶ | skipping to change at page 28, line 7 ¶ | |||
| A compromised REE might also request initiating the full flow of | A compromised REE might also request initiating the full flow of | |||
| installation of TAs that are not necessary. It may also repeat a | installation of TAs that are not necessary. It may also repeat a | |||
| prior legitimate TA installation request. A TEEP Agent | prior legitimate TA installation request. A TEEP Agent | |||
| implementation is responsible for ensuring that it can recognize and | implementation is responsible for ensuring that it can recognize and | |||
| decline such repeated requests. It is also responsible for | decline such repeated requests. It is also responsible for | |||
| protecting the resource usage allocated for TA management. | protecting the resource usage allocated for TA management. | |||
| 9.4. Compromised CA | 9.4. Compromised CA | |||
| A root CA for TAM certificates might get compromised. A Trust Anchor | A root CA for TAM certificates might get compromised or its | |||
| other than a root CA certificate may also be compromised. Some TEE | certificate might expire, or a Trust Anchor other than a root CA | |||
| Trust Anchor update mechanism is expected from device OEMs. | certificate may also expire or be compromised. TEEs are responsible | |||
| for validating the entire TAM certificate chain, including the TAM | ||||
| certificate and any intermediate certificates up to the root | ||||
| certificate. Such validation includes checking for certificate | ||||
| revocation. | ||||
| TEEs are responsible for validating certificate revocation about a | If a TAM certificate chain validation fails, the TAM might be | |||
| TAM certificate chain, including the TAM certificate and the | rejected by a TEEP Agent. To address this, some certificate chain | |||
| intermediate CA certificates up to the root certificate. This will | update mechanism is expected from TAM operators, so that the TAM can | |||
| detect a compromised TAM certificate and also any compromised | get a new certificate chain that can be validated by a TEEP Agent. | |||
| intermediate CA certificate. | In addition, the Trust Anchor in the TEEP Agent's Trust Anchor Store | |||
| may need to be updated. To address this, some TEE Trust Anchor | ||||
| update mechanism is expected from device OEMs. | ||||
| If the root CA of some TEE device certificates is compromised, these | Similarly, a root CA for TEE certificates might get compromised or | |||
| devices might be rejected by a TAM, which is a decision of the TAM | its certificate might expire, or a Trust Anchor other than a root CA | |||
| implementation and policy choice. TAMs are responsible for | certificate may also expire or be compromised. TAMs are responsible | |||
| validating any intermediate CA for TEE device certificates. | for validating the entire TEE certificate chain, including the TEE | |||
| certificate and any intermediate certificates up to the root | ||||
| certificate. Such validation includes checking for certificate | ||||
| revocation. | ||||
| If a TEE certificate chain validation fails, the TEE might be | ||||
| rejected by a TAM, subject to the TAM's policy. To address this, | ||||
| some certificate chain update mechanism is expected from device OEMs, | ||||
| so that the TEE can get a new certificate chain that can be validated | ||||
| by a TAM. In addition, the Trust Anchor in the TAM's Trust Anchor | ||||
| Store may need to be updated. | ||||
| 9.5. Compromised TAM | 9.5. Compromised TAM | |||
| Device TEEs are responsible for validating the supplied TAM | Device TEEs are responsible for validating the supplied TAM | |||
| certificates to determine that the TAM is trustworthy. | certificates to determine that the TAM is trustworthy. | |||
| 9.6. Malicious TA Removal | 9.6. Malicious TA Removal | |||
| It is possible that a rogue developer distributes a malicious | It is possible that a rogue developer distributes a malicious | |||
| Untrusted Application and intends to get a malicious TA installed. | Untrusted Application and intends to get a malicious TA installed. | |||
| It's the responsibility of the TAM to not install malicious trusted | Such a TA might be able to escape from malware detection by the REE, | |||
| apps in the first place. The TEEP architecture allows a TEEP Agent | or access trusted resources within the TEE (but could not access | |||
| to decide which TAMs it trusts via Trust Anchors, and delegates the | other TEEs, or access other TA's if the TEE provides isolation | |||
| TA authenticity check to the TAMs it trusts. | between TAs). | |||
| It is the responsibility of the TAM to not install malicious TAs in | ||||
| the first place. The TEEP architecture allows a TEEP Agent to decide | ||||
| which TAMs it trusts via Trust Anchors, and delegates the TA | ||||
| authenticity check to the TAMs it trusts. | ||||
| It may happen that a TA was previously considered trustworthy but is | It may happen that a TA was previously considered trustworthy but is | |||
| later found to be buggy or compromised. In this case, the TAM can | later found to be buggy or compromised. In this case, the TAM can | |||
| initiate the removal of the TA by notifying devices to remove the TA | initiate the removal of the TA by notifying devices to remove the TA | |||
| (and potentially the REE or Device Owner to remove any Untrusted | (and potentially the REE or Device Owner to remove any Untrusted | |||
| Application that depend on the TA). If the TAM does not currently | Application that depend on the TA). If the TAM does not currently | |||
| have a connection to the TEEP Agent on a device, such a notification | have a connection to the TEEP Agent on a device, such a notification | |||
| would occur the next time connectivity does exist. That is, to | would occur the next time connectivity does exist. That is, to | |||
| recover, the TEEP Agent must be able to reach out to the TAM, for | recover, the TEEP Agent must be able to reach out to the TAM, for | |||
| example whenever the RequestPolicyCheck API (Section 6.2.1) is | example whenever the RequestPolicyCheck API (Section 6.2.1) is | |||
| skipping to change at page 29, line 12 ¶ | skipping to change at page 29, line 47 ¶ | |||
| the lifetime of a device. A TAM certificate usually has a moderate | the lifetime of a device. A TAM certificate usually has a moderate | |||
| lifetime of 2 to 5 years. A TAM should get renewed or rekeyed | lifetime of 2 to 5 years. A TAM should get renewed or rekeyed | |||
| certificates. The root CA certificates for a TAM, which are embedded | certificates. The root CA certificates for a TAM, which are embedded | |||
| into the Trust Anchor Store in a device, should have long lifetimes | into the Trust Anchor Store in a device, should have long lifetimes | |||
| that don't require device Trust Anchor updates. On the other hand, | that don't require device Trust Anchor updates. On the other hand, | |||
| it is imperative that OEMs or device providers plan for support of | it is imperative that OEMs or device providers plan for support of | |||
| Trust Anchor update in their shipped devices. | Trust Anchor update in their shipped devices. | |||
| For those cases where TEE devices are given certificates for which no | For those cases where TEE devices are given certificates for which no | |||
| good expiration date can be assigned the recommendations in | good expiration date can be assigned the recommendations in | |||
| Section 4.1.2.5 of RFC 5280 [RFC5280] are applicable. | Section 4.1.2.5 of [RFC5280] are applicable. | |||
| 9.8. Keeping Secrets from the TAM | 9.8. Keeping Secrets from the TAM | |||
| In some scenarios, it is desirable to protect the TA binary or | In some scenarios, it is desirable to protect the TA binary or | |||
| configuration from being disclosed to the TAM that distributes them. | configuration from being disclosed to the TAM that distributes them. | |||
| In such a scenario, the files can be encrypted end-to-end between a | In such a scenario, the files can be encrypted end-to-end between a | |||
| TA Signer and a TEE. However, there must be some means of | TA Signer and a TEE. However, there must be some means of | |||
| provisioning the decryption key into the TEE and/or some means of the | provisioning the decryption key into the TEE and/or some means of the | |||
| TA Signer securely learning a public key of the TEE that it can use | TA Signer securely learning a public key of the TEE that it can use | |||
| to encrypt. One way to do this is for the TA Signer to run its own | to encrypt. One way to do this is for the TA Signer to run its own | |||
| skipping to change at page 30, line 15 ¶ | skipping to change at page 30, line 49 ¶ | |||
| 13. Informative References | 13. Informative References | |||
| [GPTEE] GlobalPlatform, "GlobalPlatform Device Technology: TEE | [GPTEE] GlobalPlatform, "GlobalPlatform Device Technology: TEE | |||
| System Architecture, v1.1", GlobalPlatform GPD_SPE_009, | System Architecture, v1.1", GlobalPlatform GPD_SPE_009, | |||
| January 2017, <https://globalplatform.org/specs-library/ | January 2017, <https://globalplatform.org/specs-library/ | |||
| tee-system-architecture-v1-1/>. | tee-system-architecture-v1-1/>. | |||
| [I-D.ietf-rats-architecture] | [I-D.ietf-rats-architecture] | |||
| Birkholz, H., Thaler, D., Richardson, M., Smith, N., and | Birkholz, H., Thaler, D., Richardson, M., Smith, N., and | |||
| W. Pan, "Remote Attestation Procedures Architecture", | W. Pan, "Remote Attestation Procedures Architecture", | |||
| draft-ietf-rats-architecture-04 (work in progress), May | draft-ietf-rats-architecture-05 (work in progress), July | |||
| 2020. | 2020. | |||
| [I-D.ietf-suit-manifest] | [I-D.ietf-suit-manifest] | |||
| Moran, B., Tschofenig, H., Birkholz, H., and K. Zandberg, | Moran, B., Tschofenig, H., Birkholz, H., and K. Zandberg, | |||
| "A Concise Binary Object Representation (CBOR)-based | "A Concise Binary Object Representation (CBOR)-based | |||
| Serialization Format for the Software Updates for Internet | Serialization Format for the Software Updates for Internet | |||
| of Things (SUIT) Manifest", draft-ietf-suit-manifest-07 | of Things (SUIT) Manifest", draft-ietf-suit-manifest-08 | |||
| (work in progress), June 2020. | (work in progress), July 2020. | |||
| [I-D.ietf-teep-otrp-over-http] | [I-D.ietf-teep-otrp-over-http] | |||
| Thaler, D., "HTTP Transport for Trusted Execution | Thaler, D., "HTTP Transport for Trusted Execution | |||
| Environment Provisioning: Agent-to- TAM Communication", | Environment Provisioning: Agent-to- TAM Communication", | |||
| draft-ietf-teep-otrp-over-http-06 (work in progress), | draft-ietf-teep-otrp-over-http-06 (work in progress), | |||
| April 2020. | April 2020. | |||
| [I-D.ietf-teep-protocol] | [I-D.ietf-teep-protocol] | |||
| Tschofenig, H., Pei, M., Wheeler, D., Thaler, D., and A. | Tschofenig, H., Pei, M., Wheeler, D., Thaler, D., and A. | |||
| Tsukamoto, "Trusted Execution Environment Provisioning | Tsukamoto, "Trusted Execution Environment Provisioning | |||
| End of changes. 33 change blocks. | ||||
| 100 lines changed or deleted | 133 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/ | ||||