draft-ietf-teep-architecture-15.txt | draft-ietf-teep-architecture-16.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 13, 2022 Arm Limited | Expires: 1 September 2022 Arm Limited | |||
D. Thaler | D. Thaler | |||
Microsoft | Microsoft | |||
D. Wheeler | D. Wheeler | |||
Amazon | Amazon | |||
July 12, 2021 | 28 February 2022 | |||
Trusted Execution Environment Provisioning (TEEP) Architecture | Trusted Execution Environment Provisioning (TEEP) Architecture | |||
draft-ietf-teep-architecture-15 | draft-ietf-teep-architecture-16 | |||
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 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 January 13, 2022. | This Internet-Draft will expire on 1 September 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 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 (https://trustee.ietf.org/ | |||
(https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with respect | Please review these documents carefully, as they describe your rights | |||
to this document. Code Components extracted from this document must | and restrictions with respect to this document. Code Components | |||
include Simplified BSD License text as described in Section 4.e of | extracted from this document must include Simplified BSD License text | |||
the Trust Legal Provisions and are provided without warranty as | as described in Section 4.e of the Trust Legal Provisions and are | |||
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 . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.2. Authentication . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Authentication . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.3. Internet of Things . . . . . . . . . . . . . . . . . . . 8 | 3.3. Internet of Things . . . . . . . . . . . . . . . . . . . 8 | |||
3.4. Confidential Cloud Computing . . . . . . . . . . . . . . 8 | 3.4. Confidential Cloud Computing . . . . . . . . . . . . . . 9 | |||
4. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.1. System Components . . . . . . . . . . . . . . . . . . . . 8 | 4.1. System Components . . . . . . . . . . . . . . . . . . . . 9 | |||
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 . 15 | |||
4.4.1. Example: Application Delivery Mechanisms in Intel SGX 16 | 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 . . . . . . . . . . . . . . . . . . . . . . 17 | TrustZone . . . . . . . . . . . . . . . . . . . . . . 17 | |||
4.5. Entity Relations . . . . . . . . . . . . . . . . . . . . 17 | 4.5. Entity Relations . . . . . . . . . . . . . . . . . . . . 17 | |||
5. Keys and Certificate Types . . . . . . . . . . . . . . . . . 19 | 5. Keys and Certificate Types . . . . . . . . . . . . . . . . . 19 | |||
5.1. Trust Anchors in a TEEP Agent . . . . . . . . . . . . . . 21 | 5.1. Trust Anchors in a TEEP Agent . . . . . . . . . . . . . . 21 | |||
5.2. Trust Anchors in a TEE . . . . . . . . . . . . . . . . . 21 | 5.2. Trust Anchors in a TEE . . . . . . . . . . . . . . . . . 21 | |||
5.3. Trust Anchors in a TAM . . . . . . . . . . . . . . . . . 21 | 5.3. Trust Anchors in a TAM . . . . . . . . . . . . . . . . . 21 | |||
5.4. Scalability . . . . . . . . . . . . . . . . . . . . . . . 21 | 5.4. Scalability . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
5.5. Message Security . . . . . . . . . . . . . . . . . . . . 22 | 5.5. Message Security . . . . . . . . . . . . . . . . . . . . 22 | |||
6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
6.1. Role of the TEEP Broker . . . . . . . . . . . . . . . . . 23 | 6.1. Role of the TEEP Broker . . . . . . . . . . . . . . . . . 23 | |||
6.2. TEEP Broker Implementation Consideration . . . . . . . . 23 | 6.2. TEEP Broker Implementation Consideration . . . . . . . . 23 | |||
6.2.1. TEEP Broker APIs . . . . . . . . . . . . . . . . . . 24 | 6.2.1. TEEP Broker APIs . . . . . . . . . . . . . . . . . . 24 | |||
6.2.2. TEEP Broker Distribution . . . . . . . . . . . . . . 25 | 6.2.2. TEEP Broker Distribution . . . . . . . . . . . . . . 25 | |||
7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 27 | 8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 28 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | |||
9.1. Broker Trust Model . . . . . . . . . . . . . . . . . . . 28 | 9.1. Broker Trust Model . . . . . . . . . . . . . . . . . . . 28 | |||
9.2. Data Protection . . . . . . . . . . . . . . . . . . . . . 28 | 9.2. Data Protection . . . . . . . . . . . . . . . . . . . . . 29 | |||
9.3. Compromised REE . . . . . . . . . . . . . . . . . . . . . 29 | 9.3. Compromised REE . . . . . . . . . . . . . . . . . . . . . 30 | |||
9.4. CA Compromise or Expiry of CA Certificate . . . . . . . . 30 | 9.4. CA Compromise or Expiry of CA Certificate . . . . . . . . 31 | |||
9.5. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 30 | 9.5. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 31 | |||
9.6. Malicious TA Removal . . . . . . . . . . . . . . . . . . 31 | 9.6. Malicious TA Removal . . . . . . . . . . . . . . . . . . 31 | |||
9.7. Certificate Expiry and Renewal . . . . . . . . . . . . . 31 | 9.7. Certificate Expiry and Renewal . . . . . . . . . . . . . 32 | |||
9.8. Keeping Secrets from the TAM . . . . . . . . . . . . . . 32 | 9.8. Keeping Secrets from the TAM . . . . . . . . . . . . . . 33 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 | 9.9. REE Privacy . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 32 | ||||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 32 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | |||
13. Informative References . . . . . . . . . . . . . . . . . . . 32 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 | |||
13. Informative References . . . . . . . . . . . . . . . . . . . 34 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
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 | |||
unintended interactions among those features and applications. The | unintended interactions among those features and applications. The | |||
danger of attacks on a system increases as the sensitivity of the | danger of attacks on a system increases as the sensitivity of the | |||
applications or data on the device increases. As an example, | applications or data on the device increases. As an example, | |||
exposure of emails from a mail client is likely to be of concern to | exposure of emails from a mail client is likely to be of concern to | |||
its owner, but a compromise of a banking application raises even | its owner, but a compromise of a banking application raises even | |||
greater concerns. | greater concerns. | |||
The Trusted Execution Environment (TEE) concept is designed to | The Trusted Execution Environment (TEE) concept is designed to let | |||
execute applications in a protected environment that enforces that | applications execute in a protected 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 any | any data used by such code cannot be read or tampered with by any | |||
code outside that environment, including by a commodity operating | code outside that environment, including by a commodity operating | |||
system (if present). In a system with multiple TEEs, this also means | system (if present). In a system with multiple TEEs, this also means | |||
that code in one TEE cannot be read or tampered with by code in the | that code in one TEE cannot be read or tampered with by code in | |||
other TEE. | another TEE. | |||
This separation reduces the possibility of a successful attack on | This separation reduces the possibility of a successful attack on | |||
application components and the data contained inside the TEE. | application components and the data contained inside the TEE. | |||
Typically, application components are chosen to execute inside a TEE | Typically, application components are chosen to execute inside a TEE | |||
because those application components perform security sensitive | because those application components perform security sensitive | |||
operations or operate on sensitive data. An application component | operations or operate on sensitive data. An application component | |||
running inside a TEE is referred to as a Trusted Application (TA), | running inside a TEE is referred to as a Trusted Application (TA), | |||
while an application running outside any TEE, i.e., in the Rich | while an application running outside any TEE, i.e., in the Rich | |||
Execution Environment (REE), is referred to as an Untrusted | Execution Environment (REE), is referred to as an Untrusted | |||
Application. In the example of a banking application, code that | Application. In the example of a banking application, code that | |||
relates to the authentication protocol could reside in a TA while the | relates to the authentication protocol could reside in a TA while the | |||
application logic including HTTP protocol parsing could be contained | application logic including HTTP protocol parsing could be contained | |||
in the Untrusted Application. In addition, processing of credit card | in the Untrusted Application. In addition, processing of credit card | |||
numbers or account balances could be done in a TA as it is sensitive | numbers or account balances could be done in a TA as it is sensitive | |||
data. The precise code split is ultimately a decision of the | data. The precise code split is ultimately a decision of the | |||
developer based on the assets he or she wants to protect according to | developer based on the assets he or she wants to protect according to | |||
the threat model. | the threat model. | |||
TEEs are typically used in cases where a software or data asset needs | ||||
to be protected from unauthorized entities that may include the owner | ||||
(or pwner) or possesser of a device. This situation arises for | ||||
example in gaming consoles where anti-cheat protection is a concern, | ||||
devices such as ATMs or IoT devices placed in locations where | ||||
attackers might have physical access, cell phones or other devices | ||||
used for mobile payments, and hosted cloud environments. Such | ||||
environments can be thought of as hybrid devices where one user or | ||||
administrator controls the REE and a different (remote) user or | ||||
administrator controls a TEE in the same physical device. It may | ||||
also be the case in some constrained devices that there is no REE | ||||
(only a TEE) and there may be no local "user" per se, only a remote | ||||
TEE administrator. For further discussion of such confidential | ||||
computing use cases and threat model, see [CC-Overview] and | ||||
[CC-Technical-Analysis]. | ||||
TEEs use hardware enforcement combined with software protection to | TEEs use hardware enforcement combined with software protection to | |||
secure TAs and its data. TEEs typically offer a more limited set of | secure TAs and its data. TEEs typically offer a more limited set of | |||
services to TAs than is normally available to Untrusted Applications. | services to TAs than is normally available to Untrusted Applications. | |||
Not all TEEs are the same, however, and different vendors may have | Not all TEEs are the same, however, and different vendors may have | |||
different implementations of TEEs with different security properties, | different implementations of TEEs with different security properties, | |||
different features, and different control mechanisms to operate on | different features, and different control mechanisms to operate on | |||
TAs. Some vendors may themselves market multiple different TEEs with | TAs. Some vendors may themselves market multiple different TEEs with | |||
different properties attuned to different markets. A device vendor | different properties attuned to different markets. A device vendor | |||
may integrate one or more TEEs into their devices depending on market | may integrate one or more TEEs into their devices depending on market | |||
needs. | needs. | |||
To simplify the life of TA developers interacting with TAs in a TEE, | To simplify the life of TA developers interacting with TAs in a TEE, | |||
an interoperable protocol for managing TAs running in different TEEs | an interoperable protocol for managing TAs running in different TEEs | |||
of various devices is needed. This software update protocol needs to | of various devices is needed. This software update protocol needs to | |||
make sure that compatible trusted and untrusted components (if any) | make sure that compatible trusted and untrusted components (if any) | |||
of an application are installed on the correct device. In this TEE | of an application are installed on the correct device. In this TEE | |||
ecosystem, there often arises a need for an external trusted party to | ecosystem, there often arises a need for an external trusted party to | |||
verify the identity, claims, and rights of TA developers, devices, | verify the identity, claims, and rights of TA developers, devices, | |||
and their TEEs. This trusted third party is the Trusted Application | and their TEEs. This external trusted party is the Trusted | |||
Manager (TAM). | Application Manager (TAM). | |||
The Trusted Execution Environment Provisioning (TEEP) protocol | The Trusted Execution Environment Provisioning (TEEP) protocol | |||
addresses the following problems: | addresses the following problems: | |||
- An installer of an Untrusted Application that depends on a given | * An installer of an Untrusted Application that depends on a given | |||
TA wants to request installation of that TA in the device's TEE so | TA wants to request installation of that TA in the device's TEE so | |||
that the Untrusted Application can complete, but the TEE needs to | that the Untrusted Application can complete, but the TEE needs to | |||
verify whether such a TA is actually authorized to run in the TEE | verify whether such a TA is actually authorized to run in the TEE | |||
and consume potentially scarce TEE resources. | and consume potentially scarce TEE resources. | |||
- A TA developer providing a TA whose code itself is considered | * A TA developer providing a TA whose code itself is considered | |||
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 Device Administrator wants to determine if a TA exists (is | * A Device Administrator wants to determine if a TA exists (is | |||
installed) on a device (in the TEE), and if not, install the TA in | installed) on a device (in the TEE), and if not, install the TA in | |||
the TEE. | the TEE. | |||
- A Device Administrator wants to check whether a TA in a device's | * A Device Administrator wants to check whether a TA in a device's | |||
TEE is the most up-to-date version, and if not, update the TA in | TEE is the most up-to-date version, and if not, update the TA in | |||
the TEE. | 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). | |||
For TEEs that simply verify and load signed TA's from an untrusted | For TEEs that simply verify and load signed TA's from an untrusted | |||
filesystem, classic application distribution protocols can be used | filesystem, classic application distribution protocols can be used | |||
without modification. The problems in the bullets above, on the | without modification. The problems in the bullets above, on the | |||
other hand, require a new protocol, i.e., the TEEP protocol, for TEEs | other hand, require a new protocol, i.e., the TEEP protocol, for TEEs | |||
that can install and enumerate TAs in a TEE-secured location and | that can install and enumerate TAs in a TEE-secured location and | |||
where another domain-specific protocol standard (e.g., [GSMA], | where another domain-specific protocol standard (e.g., [GSMA], | |||
[OTRP]) that meets the needs is not already in use. | [OTRP]) that meets the needs is not already in use. | |||
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 an REE. | often along with an REE. | |||
- 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 | |||
Device Administrator may choose to remotely administer a device | Device Administrator may choose to remotely administer a device | |||
through a TAM. | through a TAM. | |||
- Device Owner: A device is always owned by someone. In some cases, | * Device Owner: A device is always owned by someone. In some cases, | |||
it is common for the (primary) device user to also own the device, | it is common for the (primary) device user to also own the device, | |||
making the device user/owner also the Device Administrator. In | making the device user/owner also the Device Administrator. In | |||
enterprise environments it is more common for the enterprise to | enterprise environments it is more common for the enterprise to | |||
own the device, and any device user has no or limited | own the device, and any device user has no or limited | |||
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., a 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. | |||
- Personalization Data: A set of configuration data that is specific | * Personalization Data: A set of configuration data that is specific | |||
to the device or user. The Personalization Data may depend on the | to the device or user. The Personalization Data may depend on the | |||
type of TEE, a particular TEE instance, the TA, and even the user | type of TEE, a particular TEE instance, the TA, and even the user | |||
of the device; an example of Personalization Data might be a | of the device; an example of Personalization Data might be a | |||
secret symmetric key used by a TA to communicate with some | secret symmetric key used by a TA to communicate with some | |||
service. | service. | |||
- Raw Public Key: The raw public key only consists of the | * Raw Public Key: A raw public key consists of only the algorithm | |||
SubjectPublicKeyInfo structure of a PKIX certificate [RFC5280] | identifier (type) of the key and the cryptographic public key | |||
that carries the parameters necessary to describe the public key. | material, such as the SubjectPublicKeyInfo structure of a PKIX | |||
Other serialization formats that do not rely on ASN.1 may also be | certificate [RFC5280]. Other serialization formats that do not | |||
used. | 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 the TEE(s) managed by the TEEP | |||
applications running on it are considered untrusted (or more | protocol. This environment and applications running on it are | |||
precisely, less trusted than a TEE). | considered untrusted (or more precisely, less trusted than a TEE). | |||
- Trust Anchor: As defined in [RFC6024] and | * Trust Anchor: As defined in [RFC6024] and | |||
[I-D.ietf-suit-manifest], "A trust anchor represents an | [I-D.ietf-suit-architecture], "A trust anchor represents an | |||
authoritative entity via a public key and associated data. The | authoritative entity via a public key and associated data. The | |||
public key is used to verify digital signatures, and the | public key is used to verify digital signatures, and the | |||
associated data is used to constrain the types of information for | associated data is used to constrain the types of information for | |||
which the trust anchor is authoritative." The Trust Anchor may be | which the trust anchor is authoritative." The Trust Anchor may be | |||
a certificate or it may be a raw public key along with additional | a certificate or it may be a raw public key. | |||
data if necessary such as its public key algorithm and parameters. | ||||
- Trust Anchor Store: As defined in [RFC6024], "A trust anchor store | * Trust Anchor Store: As defined in [RFC6024], "A trust anchor store | |||
is a set of one or more trust anchors stored in a device. A | is a set of one or more trust anchors stored in a device... A | |||
device may have more than one trust anchor store, each of which | device may have more than one trust anchor store, each of which | |||
may be used by one or more applications." As noted in | may be used by one or more applications." As noted in | |||
[I-D.ietf-suit-manifest], a Trust Anchor Store must resist | [I-D.ietf-suit-architecture], a Trust Anchor Store must resist | |||
modification against unauthorized insertion, deletion, and | modification against unauthorized insertion, deletion, and | |||
modification. | modification. | |||
- Trusted Application (TA): An application (or, in some | * Trusted Application (TA): An application (or, in some | |||
implementations, an application component) that runs in a TEE. | implementations, an application component) that runs in a TEE. | |||
- Trusted Application Manager (TAM): An entity that manages Trusted | * Trusted Application Manager (TAM): An entity that manages Trusted | |||
Applications and other Trusted Components running in TEEs of | Applications and other Trusted Components running in TEEs of | |||
various devices. | various devices. | |||
- Trusted Component: A set of code and/or data in a TEE managed as a | * Trusted Component: A set of code and/or data in a TEE managed as a | |||
unit by a Trusted Application Manager. Trusted Applications and | unit by a Trusted Application Manager. Trusted Applications and | |||
Personalization Data are thus managed by being included in Trusted | Personalization Data are thus managed by being included in Trusted | |||
Components. Trusted OS code or trusted firmware can also be | Components. Trusted OS code or trusted firmware can also be | |||
expressed as Trusted Components that a Trusted Component depends | expressed as Trusted Components that a Trusted Component depends | |||
on. | on. | |||
- Trusted Component Developer: An entity that develops one or more | * Trusted Component Developer: An entity that develops one or more | |||
Trusted Components. | Trusted Components. | |||
- Trusted Component Signer: An entity that signs a Trusted Component | * Trusted Component Signer: An entity that signs a Trusted Component | |||
with a key that a TEE will trust. The signer might or might not | with a key that a TEE will trust. The signer might or might not | |||
be the same entity as the Trusted Component Developer. For | be the same entity as the Trusted Component Developer. For | |||
example, a Trusted Component might be signed (or re-signed) by a | example, a Trusted Component might be signed (or re-signed) by a | |||
Device Administrator if the TEE will only trust the Device | Device Administrator if the TEE will only trust the Device | |||
Administrator. A Trusted Component might also be encrypted, if | Administrator. A Trusted Component might also be encrypted, if | |||
the code is considered confidential. | the code is considered confidential. | |||
- Trusted Execution Environment (TEE): An execution environment that | * Trusted Execution Environment (TEE): An execution environment that | |||
enforces that only authorized code can execute within the TEE, and | enforces that only authorized code can execute within the TEE, and | |||
data used by that code cannot be read or tampered with by code | data used by that code cannot be read or tampered with by code | |||
outside the TEE. A TEE also generally has a device unique | outside the TEE. A TEE also generally has a device unique | |||
credential that cannot be cloned. There are multiple technologies | credential that cannot be cloned. There are multiple technologies | |||
that can be used to implement a TEE, and the level of security | that can be used to implement a TEE, and the level of security | |||
achieved varies accordingly. In addition, TEEs typically use an | achieved varies accordingly. In addition, TEEs typically use an | |||
isolation mechanism between Trusted Applications to ensure that | isolation mechanism between Trusted Applications to ensure that | |||
one TA cannot read, modify or delete the data and code of another | one TA cannot read, modify or delete the data and code of another | |||
TA. | TA. | |||
- Untrusted Application: An application running in an REE. An | * Untrusted Application: An application running in an REE. An | |||
Untrusted Application might depend on one or more TAs. | Untrusted Application might depend on one or more TAs. | |||
3. Use Cases | 3. Use Cases | |||
3.1. Payment | 3.1. Payment | |||
A payment application in a mobile device requires high security and | A payment application in a mobile device requires high security and | |||
trust in the hosting device. Payments initiated from a mobile device | trust in the hosting device. Payments initiated from a mobile device | |||
can use a Trusted Application to provide strong identification and | can use a Trusted Application to provide strong identification and | |||
proof of transaction. | proof of transaction. | |||
skipping to change at page 8, line 18 ¶ | skipping to change at page 8, line 40 ¶ | |||
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 | |||
The Internet of Things (IoT) has been posing threats to critical | Weak security in Internet of Things (IoT) devices has been posing | |||
infrastructure because of weak security in devices. It is desirable | threats to critical infrastructure that relies upon such devices. It | |||
that IoT devices can prevent malware from manipulating actuators | is desirable that IoT devices can prevent malware from manipulating | |||
(e.g., unlocking a door), or stealing or modifying sensitive data, | actuators (e.g., unlocking a door), or stealing or modifying | |||
such as authentication credentials in the device. A TEE can be the | sensitive data, such as authentication credentials in the device. A | |||
best way to implement such IoT security functions. | TEE can be the best way to implement such IoT security functions. | |||
3.4. Confidential Cloud Computing | 3.4. Confidential Cloud Computing | |||
A tenant can store sensitive data, such as customer details or credit | A tenant can store sensitive data, such as customer details or credit | |||
card numbers, in a TEE in a cloud computing server such that only the | card numbers, in a TEE in a cloud computing server such that only the | |||
tenant can access the data, preventing the cloud hosting provider | tenant can access the data, preventing the cloud hosting provider | |||
from accessing the data. A tenant can run TAs inside a server TEE | from accessing the data. A tenant can run TAs inside a server TEE | |||
for secure operation and enhanced data security. This provides | for secure operation and enhanced data security. This provides | |||
benefits not only to tenants with better data security but also to | benefits not only to tenants with better data security but also to | |||
cloud hosting providers for reduced liability and increased cloud | cloud hosting providers for reduced liability and increased cloud | |||
adoption. | adoption. | |||
4. Architecture | 4. Architecture | |||
4.1. System Components | 4.1. System Components | |||
Figure 1 shows the main components in a typical device with an REE. | Figure 1 shows the main components in a typical device with an REE | |||
Full descriptions of components not previously defined are provided | and a TEE. Full descriptions of components not previously defined | |||
below. Interactions of all components are further explained in the | are provided below. Interactions of all components are further | |||
following paragraphs. | explained in the following paragraphs. | |||
+-------------------------------------------+ | +-------------------------------------------+ | |||
| Device | Trusted Component | | Device | Trusted Component | |||
| +--------+ | Signer | | +--------+ | Signer | |||
| +-------------+ | |-----------+ | | | +-------------+ | |-----------+ | | |||
| | TEE-1 | | TEEP |---------+ | | | | | TEE-1 | | TEEP |---------+ | | | |||
| | +--------+ | +----| Broker | | | | +--------+ | | | | +--------+ | +----| Broker | | | | +--------+ | | |||
| | | TEEP | | | | |<---+ | | +->| |<-+ | | | | TEEP | | | | |<---+ | | +->| |<-+ | |||
| | | Agent |<----+ | | | | | +-| TAM-1 | | | | | Agent |<----+ | | | | | +-| TAM-1 | | |||
| | +--------+ | | |<-+ | | +->| | |<-+ | | | +--------+ | | |<-+ | | +->| | |<-+ | |||
skipping to change at page 9, line 26 ¶ | skipping to change at page 9, line 46 ¶ | |||
| +-->|TA1| |TA2| | +-------+ | | | +--------+ | | | +-->|TA1| |TA2| | +-------+ | | | +--------+ | | |||
| | | | | | |<---------| App-2 |--+ | | | | | | | | | | |<---------| App-2 |--+ | | | | |||
| | | +---+ +---+ | +-------+ | | | Device Administrator | | | | +---+ +---+ | +-------+ | | | Device Administrator | |||
| | +-------------+ | App-1 | | | | | | | +-------------+ | App-1 | | | | | |||
| | | | | | | | | | | | | | | | |||
| +--------------------| |---+ | | | | +--------------------| |---+ | | | |||
| | |--------+ | | | | |--------+ | | |||
| +-------+ | | | +-------+ | | |||
+-------------------------------------------+ | +-------------------------------------------+ | |||
Figure 1: Notional Architecture of TEEP | Figure 1: Notional Architecture of TEEP | |||
- Trusted Component Signers and Device Administrators utilize the | * Trusted Component Signers and Device Administrators utilize the | |||
services of a TAM to manage TAs on devices. Trusted Component | services of a TAM to manage TAs on devices. Trusted Component | |||
Signers do not directly interact with devices. Device | Signers do not directly interact with devices. Device | |||
Administators may elect to use a TAM for remote administration of | Administators may elect to use a TAM for remote administration of | |||
TAs instead of managing each device directly. | TAs instead of managing each device directly. | |||
- Trusted Application Manager (TAM): A TAM is responsible for | * Trusted Application Manager (TAM): A TAM is responsible for | |||
performing lifecycle management activity on Trusted Components on | performing lifecycle management activity on Trusted Components on | |||
behalf of Trusted Component Signers and Device Administrators. | behalf of Trusted Component Signers and Device Administrators. | |||
This includes installation and deletion of Trusted Components, and | This includes installation and deletion of Trusted Components, and | |||
may include, for example, over-the-air updates to keep Trusted | may include, for example, over-the-air updates to keep Trusted | |||
Components up-to-date and clean up when one should be removed. | Components up-to-date and clean up when Trusted Components should | |||
TAMs may provide services that make it easier for Trusted | be removed. TAMs may provide services that make it easier for | |||
Component Signers or Device Administators to use the TAM's service | Trusted Component Signers or Device Administators to use the TAM's | |||
to manage multiple devices, although that is not required of a | service to manage multiple devices, although that is not required | |||
TAM. | of a TAM. | |||
The TAM performs its management of Trusted Components on the | The TAM performs its management of Trusted Components on the | |||
device through interactions with a device's TEEP Broker, which | device through interactions with a device's TEEP Broker, which | |||
relays messages between a TAM and a TEEP Agent running inside the | relays messages between a TAM and a TEEP Agent running inside the | |||
TEE. TEEP authentication is performed between a TAM and a TEEP | TEE. TEEP authentication is performed between a TAM and a TEEP | |||
Agent. | Agent. | |||
As shown in Figure 1, the TAM cannot directly contact a TEEP | As shown in Figure 1, the TAM cannot directly contact a TEEP | |||
Agent, but must wait for the TEEP Broker to contact the TAM | Agent, but must wait for the TEEP Broker to contact the TAM | |||
requesting a particular service. This architecture is intentional | requesting a particular service. This architecture is intentional | |||
in order to accommodate network and application firewalls that | in order to accommodate network and application firewalls that | |||
normally protect user and enterprise devices from arbitrary | normally protect user and enterprise devices from arbitrary | |||
connections from external network entities. | connections from external network entities. | |||
A TAM may be publicly available for use by many Trusted Component | A TAM may be publicly available for use by many Trusted Component | |||
Signers, or a TAM may be private, and accessible by only one or a | Signers, or a TAM may be private, and accessible by only one or a | |||
limited number of Trusted Component Signers. It is expected that | limited number of Trusted Component Signers. It is expected that | |||
many manufacturers and network carriers will run their own private | many enterprises, manufacturers, and network carriers will run | |||
TAM. | their own private TAM. | |||
A Trusted Component Signer or Device Administrator chooses a | A Trusted Component Signer or Device Administrator chooses a | |||
particular TAM based on whether the TAM is trusted by a device or | particular TAM based on whether the TAM is trusted by a device or | |||
set of devices. The TAM is trusted by a device if the TAM's | set of devices. The TAM is trusted by a device if the TAM's | |||
public key is, or chains up to, an authorized Trust Anchor in the | public key is, or chains up to, an authorized Trust Anchor in the | |||
device. A Trusted Component Signer or Device Administrator may | device. A Trusted Component Signer or Device Administrator may | |||
run their own TAM, but the devices they wish to manage must | run their own TAM, but the devices they wish to manage must | |||
include this TAM's public key or certificate, or a certificate it | include this TAM's public key or certificate, or a certificate it | |||
chains up to, in the Trust Anchor Store. | chains up to, in the Trust Anchor Store. | |||
A Trusted Component Signer or Device Administrator is free to | A Trusted Component Signer or Device Administrator is free to | |||
utilize multiple TAMs. This may be required for managing Trusted | utilize multiple TAMs. This may be required for managing Trusted | |||
Components on multiple different types of devices from different | Components on multiple different types of devices from different | |||
manufacturers, or mobile devices on different network carriers, | manufacturers, or mobile devices on different network carriers, | |||
since the Trust Anchor Store on these different devices may | since the Trust Anchor Store on these different devices may | |||
contain different TAMs. A Device Administrator may be able to add | contain keys for different TAMs. A Device Administrator may be | |||
their own TAM's public key or certificate to the Trust Anchor | able to add their own TAM's public key or certificate, or a | |||
Store on all their devices, overcoming this limitation. | certificate it chains up to, to the Trust Anchor Store on all | |||
their devices, overcoming this limitation. | ||||
Any entity is free to operate a TAM. For a TAM to be successful, | Any entity is free to operate a TAM. For a TAM to be successful, | |||
it must have its public key or certificate installed in a device's | it must have its public key or certificate installed in a device's | |||
Trust Anchor Store. A TAM may set up a relationship with device | Trust Anchor Store. A TAM may set up a relationship with device | |||
manufacturers or network carriers to have them install the TAM's | manufacturers or network carriers to have them install the TAM's | |||
keys in their device's Trust Anchor Store. Alternatively, a TAM | keys in their device's Trust Anchor Store. Alternatively, a TAM | |||
may publish its certificate and allow Device Administrators to | may publish its certificate and allow Device Administrators to | |||
install the TAM's certificate in their devices as an after-market- | install the TAM's certificate in their devices as an after-market | |||
action. | action. | |||
- TEEP Broker: A TEEP Broker is an application component running in | * TEEP Broker: A TEEP Broker is an application component running in | |||
a Rich Execution Environment (REE) that enables the message | a Rich Execution Environment (REE) that enables the message | |||
protocol exchange between a TAM and a TEE in a device. A TEEP | protocol exchange between a TAM and a TEE in a device. A TEEP | |||
Broker does not process messages on behalf of a TEE, but merely is | Broker does not process messages on behalf of a TEE, but merely is | |||
responsible for relaying messages from the TAM to the TEE, and for | responsible for relaying messages from the TAM to the TEE, and for | |||
returning the TEE's responses to the TAM. In devices with no REE | returning the TEE's responses to the TAM. In devices with no REE | |||
(e.g., a microcontroller where all code runs in an environment | (e.g., a microcontroller where all code runs in an environment | |||
that meets the definition of a Trusted Execution Environment in | that meets the definition of a Trusted Execution Environment in | |||
Section 2), the TEEP Broker would be absent and instead the TEEP | Section 2), the TEEP Broker would be absent and instead the TEEP | |||
protocol transport would be implemented inside the TEE itself. | protocol transport would be implemented inside the TEE itself. | |||
- TEEP Agent: The TEEP Agent is a processing module running inside a | * TEEP Agent: The TEEP Agent is a processing module running inside a | |||
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, or | Certificates are then used for authenticating a device, a TAM, or | |||
a Trusted Component Signer, as discussed in Section 5. The CAs do | a Trusted Component Signer, as discussed in Section 5. The CAs do | |||
not need to be the same; different CAs can be chosen by each TAM, | not need to be the same; different CAs can be chosen by each TAM, | |||
and different device CAs can be used by different device | and different device CAs can be used by different device | |||
manufacturers. | manufacturers. | |||
4.2. Multiple TEEs in a Device | 4.2. Multiple TEEs in a Device | |||
skipping to change at page 12, line 42 ¶ | skipping to change at page 12, line 52 ¶ | |||
| | | | | | | | | | | | | | | | | | |||
| | +---+ | | | | | | | | | +---+ | | | | | | | |||
| | |TA3|<----+ | | +----------+ | | | | | | |TA3|<----+ | | +----------+ | | | | |||
| | | | | | | TEEP |<--+ | | | | | | | | | | TEEP |<--+ | | | |||
| | +---+ | +--| Broker | | | | | | +---+ | +--| Broker | | | | |||
| | | | 2 |----------------+ | | | | | 2 |----------------+ | |||
| +-------------+ +----------+ | | | +-------------+ +----------+ | | |||
| | | | | | |||
+-------------------------------------------+ | +-------------------------------------------+ | |||
Figure 2: Notional Architecture of TEEP with multiple TEEs | Figure 2: Notional Architecture of TEEP with multiple TEEs | |||
In the diagram above, TEEP Broker 1 controls interactions with the | In the diagram above, TEEP Broker 1 controls interactions with the | |||
TAs in TEE-1, and TEEP Broker 2 controls interactions with the TAs in | TAs in TEE-1, and TEEP Broker 2 controls interactions with the TAs in | |||
TEE-2. This presents some challenges for a TAM in completely | TEE-2. This presents some challenges for a TAM in completely | |||
managing the device, since a TAM may not interact with all the TEEP | managing the device, since a TAM may not interact with all the TEEP | |||
Brokers on a particular platform. In addition, since TEEs may be | Brokers on a particular platform. In addition, since TEEs may be | |||
physically separated, with wholly different resources, there may be | physically separated, with wholly different resources, there may be | |||
no need for TEEP Brokers to share information on installed Trusted | no need for TEEP Brokers to share information on installed Trusted | |||
Components or resource usage. | Components or resource usage. | |||
4.3. Multiple TAMs and Relationship to TAs | 4.3. Multiple TAMs and Relationship to TAs | |||
As shown in Figure 2, a TEEP Broker provides communication between | As shown in Figure 2, a TEEP Broker provides communication between | |||
one or more TEEP Agents and one or more TAMs. The selection of which | one or more TEEP Agents and one or more TAMs. The selection of which | |||
TAM to communicate with might be made with or without input from an | TAM to interact with might be made with or without input from an | |||
Untrusted Application, but is ultimately the decision of a TEEP | Untrusted Application, but is ultimately the decision of a TEEP | |||
Agent. | Agent. | |||
A TEEP Agent is assumed to be able to determine, for any given | A TEEP Agent is assumed to be able to determine, for any given | |||
Trusted Component, whether that Trusted Component is installed (or | Trusted Component, whether that Trusted Component is installed (or | |||
minimally, is running) in a TEE with which the TEEP Agent is | minimally, is running) in a TEE with which the TEEP Agent is | |||
associated. | associated. | |||
Each Trusted Component is digitally signed, protecting its integrity, | Each Trusted Component is digitally signed, protecting its integrity, | |||
and linking the Trusted Component back to the Trusted Component | and linking the Trusted Component back to the Trusted Component | |||
skipping to change at page 14, line 29 ¶ | skipping to change at page 14, line 38 ¶ | |||
and beginning a TEEP exchange. If multiple TAM URIs are considered | and beginning a TEEP exchange. If multiple TAM URIs are considered | |||
trusted, only one needs to be contacted and they can be attempted in | trusted, only one needs to be contacted and they can be attempted in | |||
some order until 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 Trusted Component, as well as any | for expressing how to install a Trusted Component, as well as any | |||
dependencies on other TEE components and versions. That is, | dependencies on other TEE components and versions. That is, | |||
dependencies from Trusted Components on other Trusted Components can | dependencies from Trusted Components on other Trusted Components can | |||
be expressed in a SUIT manifest, including dependencies on any other | be expressed in a SUIT manifest, including dependencies on any other | |||
TAs, or trusted OS code (if any), or trusted firmware. Installation | TAs, trusted OS code (if any), or trusted firmware. Installation | |||
steps can also be expressed in a SUIT manifest. | steps can also be expressed in a SUIT manifest. | |||
For example, TEEs compliant with GlobalPlatform may have a notion of | For example, TEEs compliant with GlobalPlatform [GPTEE] may have a | |||
a "security domain" (which is a grouping of one or more TAs installed | notion of a "security domain" (which is a grouping of one or more TAs | |||
on a device, that can share information within such a group) that | installed on a device, that can share information within such a | |||
must be created and into which one or more TAs can then be installed. | group) that must be created and into which one or more TAs can then | |||
It is thus up to the SUIT manifest to express a dependency on having | be installed. It is thus up to the SUIT manifest to express a | |||
such a security domain existing or being created first, as | dependency on having such a security domain existing or being created | |||
appropriate. | first, as appropriate. | |||
Updating a Trusted Component may cause compatibility issues with any | Updating a Trusted Component may cause compatibility issues with any | |||
Untrusted Applications or other components that depend on the updated | Untrusted Applications or other components that depend on the updated | |||
Trusted Component, just like updating the OS or a shared library | Trusted Component, just like updating the OS or a shared library | |||
could impact an Untrusted Application. Thus, an implementation needs | could impact an Untrusted Application. Thus, an implementation needs | |||
to take into account such issues. | to take into account such 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 | |||
skipping to change at page 15, line 13 ¶ | skipping to change at page 15, line 26 ¶ | |||
uses 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 also require additional data to personalize the TA to | and/or TEE may also require additional data to personalize the TA to | |||
the device or a user. Implementations must support encryption of | the device or a user. Implementations must support encryption of | |||
such Personalization Data to preserve the confidentiality of | such Personalization Data to preserve the confidentiality of | |||
potentially sensitive data contained within it and support integrity | potentially sensitive data contained within it, and must support | |||
protection of the Personalization Data. Other than the requirement | integrity protection of the Personalization Data. Other than the | |||
to support confidentiality and integrity protection, the TEEP | requirement to support confidentiality and integrity protection, the | |||
architecture places no limitations or requirements on the | TEEP architecture places no limitations or requirements on the | |||
Personalization Data. | Personalization Data. | |||
There are three possible cases for bundling of an Untrusted | There are multiple possible cases for bundling of an Untrusted | |||
Application, TA(s), and Personalization Data: | Application, TA(s), and Personalization Data. Such cases include | |||
(possibly among others): | ||||
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 Trusted Component | all bundled together in a single package by a Trusted Component | |||
Signer and either provided to the TEEP Broker through the TAM, or | Signer and either provided to the TEEP Broker through the TAM, or | |||
provided separately (with encrypted Personalization Data), with | provided separately (with encrypted Personalization Data), with | |||
key material needed to decrypt and install the Personalization | key material needed to decrypt and install the Personalization | |||
Data and TA provided by a TAM. | 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 Trusted Component Signer's TAM. | the Personalization Data provider's TAM. | |||
3. All components are independent. The Untrusted Application is | 3. All components are independent packages. The Untrusted | |||
installed through some independent or device-specific mechanism, | Application is installed through some independent or device- | |||
and the TAM provides the TA and Personalization Data from the | specific mechanism, and one or more TAMs provide (directly or | |||
Trusted Component Signer. Delivery of the TA and Personalization | indirectly by reference) the TA(s) and Personalization Data. | |||
Data may be combined or separate. | ||||
4. The TA(s) and Personalization Data are bundled together into a | ||||
package provided by a TAM, while the Untrusted Application is | ||||
installed through some independent or device-specific mechanism | ||||
such as an app store. | ||||
5. Encrypted Personalization Data is bundled into a package | ||||
distributed with the Untrusted Application, while the TA(s) and | ||||
key material needed to decrypt and install the Personalization | ||||
Data are in a separate package provided by a TAM. | ||||
The TEEP protocol can treat each TA, any dependencies the TA has, and | The TEEP protocol can treat each TA, any dependencies the TA has, and | |||
Personalization Data as separate Trusted Components with separate | Personalization Data as separate Trusted Components with separate | |||
installation steps that are expressed in SUIT manifests, and a SUIT | installation steps that are expressed in SUIT manifests, and a SUIT | |||
manifest might contain or reference multiple binaries (see | manifest might contain or reference multiple binaries (see | |||
[I-D.ietf-suit-manifest] for more details). The TEEP Agent is | [I-D.ietf-suit-manifest] for more details). The TEEP Agent is | |||
responsible for handling any installation steps that need to be | responsible for handling any installation steps that need to be | |||
performed inside the TEE, such as decryption of private TA binaries | performed inside the TEE, such as decryption of private TA binaries | |||
or Personalization Data. | or Personalization Data. | |||
skipping to change at page 16, line 15 ¶ | skipping to change at page 16, line 38 ¶ | |||
4.4.1. Example: Application Delivery Mechanisms in Intel SGX | 4.4.1. Example: Application Delivery Mechanisms in Intel SGX | |||
In Intel Software Guard Extensions (SGX), the Untrusted Application | In Intel Software Guard Extensions (SGX), the Untrusted Application | |||
and TA are typically bundled into the same package (Case 2). The TA | and TA are typically bundled into the same package (Case 2). The TA | |||
exists in the package as a shared library (.so or .dll). The | exists in the package as a shared library (.so or .dll). The | |||
Untrusted Application loads the TA into an SGX enclave when the | Untrusted Application loads the TA into an SGX enclave when the | |||
Untrusted Application needs the TA. This organization makes it easy | Untrusted Application needs the TA. This organization makes it easy | |||
to maintain compatibility between the Untrusted Application and the | to maintain compatibility between the Untrusted Application and the | |||
TA, since they are updated together. It is entirely possible to | TA, since they are updated together. It is entirely possible to | |||
create an Untrusted Application that loads an external TA into an SGX | create an Untrusted Application that loads an external TA into an SGX | |||
enclave, and use that TA (Case 3). In this case, the Untrusted | enclave, and use that TA (Cases 3-5). In this case, the Untrusted | |||
Application would require a reference to an external file or download | Application would require a reference to an external file or download | |||
such a file dynamically, place the contents of the file into memory, | such a file dynamically, place the contents of the file into memory, | |||
and load that as a TA. Obviously, such file or downloaded content | and load that as a TA. Obviously, such file or downloaded content | |||
must be properly formatted and signed for it to be accepted by the | must be properly formatted and signed for it to be accepted by the | |||
SGX TEE. In SGX, for Case 2 and Case 3, the Personalization Data is | SGX TEE. | |||
normally loaded into the SGX enclave (the TA) after the TA has | ||||
started. Although Case 1 is possible with SGX, there are no | In SGX, any Personalization Data is normally loaded into the SGX | |||
enclave (the TA) after the TA has started. Although it is possible | ||||
with SGX to include the Untrusted Application in an encrypted package | ||||
along with Personalization Data (Cases 1 and 5), there are no | ||||
instances of this known to be in use at this time, since such a | instances of this known to be in use at this time, since such a | |||
construction would require a special installation program and SGX TA | construction would require a special installation program and SGX TA | |||
to receive the encrypted binary, decrypt it, separate it into the | (which might or might not be the TEEP Agent itself based on the | |||
three different elements, and then install all three. This | implementation) to receive the encrypted package, decrypt it, | |||
installation is complex because the Untrusted Application decrypted | separate it into the different elements, and then install each one. | |||
inside the TEE must be passed out of the TEE to an installer in the | This installation is complex because the Untrusted Application | |||
REE which would install the Untrusted Application; this assumes that | decrypted inside the TEE must be passed out of the TEE to an | |||
the Untrusted Application package includes the TA code also, since | installer in the REE which would install the Untrusted Application. | |||
otherwise there is a significant problem in getting the SGX enclave | Finally, the Personalization Data would need to be sent out of the | |||
code (the TA) from the TEE, through the installer, and into the | TEE (encrypted in an SGX enclave-to-enclave manner) to the REE's | |||
Untrusted Application in a trusted fashion. Finally, the | installation app, which would pass this data to the installed | |||
Personalization Data would need to be sent out of the TEE (encrypted | Untrusted Application, which would in turn send this data to the SGX | |||
in an SGX enclave-to-enclave manner) to the REE's installation app, | enclave (TA). This complexity is due to the fact that each SGX | |||
which would pass this data to the installed Untrusted Application, | enclave is separate and does not have direct communication to other | |||
which would in turn send this data to the SGX enclave (TA). This | SGX enclaves. | |||
complexity is due to the fact that each SGX enclave is separate and | ||||
does not have direct communication to other SGX enclaves. | ||||
As long as signed files (TAs and/or Personalization Data) are | As long as signed files (TAs and/or Personalization Data) are | |||
installed into an untrusted filesystem and trust is verified by the | installed into an untrusted filesystem and trust is verified by the | |||
TEE at load time, classic distribution mechanisms can be used. Some | TEE at load time, classic distribution mechanisms can be used. Some | |||
uses of SGX, however, allow a model where a TA can be dynamically | uses of SGX, however, allow a model where a TA can be dynamically | |||
installed into an SGX enclave that provides a runtime platform. The | installed into an SGX enclave that provides a runtime platform. The | |||
TEEP protocol can be used in such cases, where the runtime platform | TEEP protocol can be used in such cases, where the runtime platform | |||
could include a TEEP Agent. | could include a TEEP Agent. | |||
4.4.2. Example: Application Delivery Mechanisms in Arm TrustZone | 4.4.2. Example: Application Delivery Mechanisms in Arm TrustZone | |||
In Arm TrustZone [TrustZone] for A-class devices, the Untrusted | In Arm TrustZone [TrustZone] for A-class devices, the Untrusted | |||
Application and TA may or may not be bundled together. This differs | Application and TA may or may not be bundled together. This differs | |||
from SGX since in TrustZone the TA lifetime is not inherently tied to | from SGX since in TrustZone the TA lifetime is not inherently tied to | |||
a specific Untrused Application process lifetime as occurs in SGX. A | a specific Untrused Application process lifetime as occurs in SGX. A | |||
TA is loaded by a trusted OS running in the TEE such as a | TA is loaded by a trusted OS running in the TEE such as a | |||
GlobalPlatform compliant TEE, where the trusted OS is separate from | GlobalPlatform [GPTEE] compliant TEE, where the trusted OS is | |||
the OS in the REE. Thus Cases 2 and 3 are equally applicable. In | separate from the OS in the REE. Thus Cases 2-4 are equally | |||
addition, it is possible for TAs to communicate with each other | applicable. In addition, it is possible for TAs to communicate with | |||
without involving any Untrusted Application, and so the complexity of | each other without involving any Untrusted Application, and so the | |||
Case 1 is lower than in the SGX example. Thus, Case 1 is possible as | complexity of Cases 1 and 5 are lower than in the SGX example, though | |||
well, though still more complex than Cases 2 and 3. | still more complex than Cases 2-4. | |||
A trusted OS running in the TEE (e.g., OP-TEE) that supports loading | A trusted OS running in the TEE (e.g., OP-TEE) that supports loading | |||
and verifying signed TAs from an untrusted filesystem can, like SGX, | and verifying signed TAs from an untrusted filesystem can, like SGX, | |||
use classic file distribution mechanisms. If secure TA storage is | use classic file distribution mechanisms. If secure TA storage is | |||
used (e.g., a Replay-Protected Memory Block device) on the other | used (e.g., a Replay-Protected Memory Block device) on the other | |||
hand, the TEEP protocol can be used to manage such storage. | hand, the TEEP protocol can be used to manage such storage. | |||
4.5. Entity Relations | 4.5. Entity Relations | |||
This architecture leverages asymmetric cryptography to authenticate a | This architecture leverages asymmetric cryptography to authenticate a | |||
skipping to change at page 18, line 21 ¶ | skipping to change at page 18, line 24 ¶ | |||
| | | <-- Get a TAM cert ---------| | | | | <-- Get a TAM cert ---------| | |||
| | | | | | | | | | | | |||
1. Build two apps: | | | | | 1. Build two apps: | | | | | |||
| | | | | | | | | | |||
(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: (a) an Untrusted Application; (b) a TA that | two applications: (a) an Untrusted Application; (b) a TA that | |||
provides some security functions to be run inside a TEE. This | provides some security functions to be run inside a TEE. This | |||
example assumes that the developer, the TEE, and the TAM have | example assumes that the developer, the TEE, and the TAM have | |||
previously been provisioned with certificates. | previously been provisioned with certificates. | |||
At step 1, the developer authors the two applications. | 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 | |||
skipping to change at page 18, line 44 ¶ | skipping to change at page 18, line 47 ¶ | |||
developer can then either bundle the signed TA with the Untrusted | developer can then either bundle the signed TA with the Untrusted | |||
Application, or the developer can provide a signed Trusted Component | Application, or the developer can provide a signed Trusted Component | |||
containing the TA to a TAM that will be managing the TA in various | containing the TA to a TAM that will be managing the TA in various | |||
devices. | 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 (where the arrow indicates the direction of | Untrusted Application (where the arrow indicates the direction of | |||
data transfer). | data transfer). | |||
At step 4, since the Untrusted Application depends on the TA, | At step 4, since the Untrusted Application depends on the TA, | |||
installing the Untrusted Application will trigger TA installation by | installing the Untrusted Application will trigger TA installation via | |||
initiating communication with a TAM. The TEEP Agent will interact | communication with a TAM. The TEEP Agent will interact with the TAM | |||
with TAM via a TEEP Broker that faciliates communications between a | via a TEEP Broker that faciliates communications between the TAM and | |||
TAM and the TEEP Agent in TEE. | the TEEP Agent. | |||
Some Trusted Component installation implementations might ask for a | Some Trusted Component installation implementations might ask for a | |||
user's consent. In other implementations, a Device Administrator | user's consent. In other implementations, a Device Administrator | |||
might choose what Untrusted Applications and related Trusted | might choose what Untrusted Applications and related Trusted | |||
Components to be installed. A user consent flow is out of scope of | Components to be installed. A user consent flow is out of scope of | |||
the TEEP architecture. | the TEEP architecture. | |||
The main components consist of a set of standard messages created by | The main components of the TEEP protocol consist of a set of standard | |||
a TAM to deliver Trusted Component management commands to a device, | messages created by a TAM to deliver Trusted Component management | |||
and device attestation and response messages created by a TEE that | commands to a device, and device attestation and response messages | |||
responds to a TAM's message. | created by a TEE that responds to a TAM's message. | |||
It should be noted that network communication capability is generally | It should be noted that network communication capability is generally | |||
not available in TAs in today's TEE-powered devices. Consequently, | not available in TAs in today's TEE-powered devices. Consequently, | |||
Trusted Applications generally rely on broker in the REE to provide | Trusted Applications generally rely on a broker in the REE to provide | |||
access to network functionality in the REE. A broker does not need | access to network functionality in the REE. A broker does not need | |||
to know the actual content of messages to facilitate such access. | to know the actual content of messages to facilitate such access. | |||
Similarly, since the TEEP Agent runs inside a TEE, the TEEP Agent | Similarly, since the TEEP Agent runs inside a TEE, the TEEP Agent | |||
generally relies on a TEEP Broker in the REE to provide network | generally relies on a TEEP Broker in the REE to provide network | |||
access, and relay TAM requests to the TEEP Agent and relay the | access, and relay TAM requests to the TEEP Agent and relay the | |||
responses back to the TAM. | responses back to the TAM. | |||
5. Keys and Certificate Types | 5. Keys and Certificate Types | |||
This architecture leverages the following credentials, which allow | This architecture leverages the following credentials, which allow | |||
delivering end-to-end security between a TAM and a TEEP Agent. | achieving end-to-end security between a TAM and a TEEP Agent. | |||
Figure 4 summarizes the relationships between various keys and where | Figure 4 summarizes the relationships between various keys and where | |||
they are stored. Each public/private key identifies a Trusted | they are stored. Each public/private key identifies a Trusted | |||
Component Signer, TAM, or TEE, and gets a certificate that chains up | Component Signer, TAM, or TEE, and gets a certificate that chains up | |||
to some trust anchor. A list of trusted certificates is then used to | to some trust anchor. A list of trusted certificates is used to | |||
check a presented certificate against. | check a presented certificate against. | |||
Different CAs can be used for different types of certificates. TEEP | Different CAs can be used for different types of certificates. TEEP | |||
messages are always signed, where the signer key is the message | messages are always signed, where the signer key is the message | |||
originator's private key, such as that of a TAM or a TEE. In | originator's private key, such as that of a TAM or a TEE. In | |||
addition to the keys shown in Figure 4, there may be additional keys | addition to the keys shown in Figure 4, there may be additional keys | |||
used for attestation. Refer to the RATS Architecture | used for attestation or encryption. Refer to the RATS Architecture | |||
[I-D.ietf-rats-architecture] for more discussion. | [I-D.ietf-rats-architecture] for more discussion. | |||
Cardinality & Location of | Cardinality & Location of | |||
Location of Private Key Trust Anchor | Location of Private Key Trust Anchor | |||
Purpose Private Key Signs Store | Purpose Private Key Signs Store | |||
------------------ ----------- ------------- ------------- | ------------------ ----------- ------------- ------------- | |||
Authenticating 1 per TEE TEEP responses TAM | Authenticating 1 per TEE TEEP responses TAM | |||
TEEP Agent | TEEP Agent | |||
Authenticating TAM 1 per TAM TEEP requests TEEP Agent | Authenticating TAM 1 per TAM TEEP requests TEEP Agent | |||
Code Signing 1 per Trusted TA binary TEE | Code Signing 1 per Trusted TA binary TEE | |||
Component | Component | |||
Signer | Signer | |||
Figure 4: Signature Keys | Figure 4: Signature Keys | |||
Note that Personalization Data is not included in the table above. | Note that Personalization Data is not included in the table above. | |||
The use of Personalization Data is dependent on how TAs are used and | The use of Personalization Data is dependent on how TAs are used and | |||
what their security requirements are. | what their security requirements are. | |||
TEEP requests from a TAM to a TEEP Agent are signed with the TAM | TEEP requests from a TAM to a TEEP Agent are signed with the TAM | |||
private key (for authentication and integrity protection). | private key (for authentication and integrity protection). | |||
Personalization Data and TA binaries can be encrypted with a key that | Personalization Data and TA binaries can be encrypted with a key that | |||
is established with a content-encryption key established with the TEE | is established with a content-encryption key established with the TEE | |||
public key (to provide confidentiality). Conversely, TEEP responses | public key (to provide confidentiality). Conversely, TEEP responses | |||
from a TEEP Agent to a TAM can be signed with the TEE private key. | from a TEEP Agent to a TAM can be signed with the TEE private key. | |||
The TEE key pair and certificate are thus used for authenticating the | The TEE key pair and certificate are thus used for authenticating the | |||
TEE to a remote TAM, and for sending private data to the TEE. Often, | TEE to a remote TAM, and for sending private data to the TEE. Often, | |||
the key pair is burned into the TEE by the TEE manufacturer and the | the key pair is burned into the TEE by the TEE manufacturer and the | |||
key pair and its certificate are valid for the expected lifetime of | key pair and its certificate are valid for the expected lifetime of | |||
the TEE. A TAM provider is responsible for configuring the TAM's | the TEE. A TAM provider is responsible for configuring the TAM's | |||
Trust Anchor Store with the manufacturer certificates or CAs that are | Trust Anchor Store with the manufacturer certificates or CAs that are | |||
used to sign TEE keys. This is discussed further in Section 5.3 | used to sign TEE keys. This is discussed further in Section 5.3 | |||
below. | below. Typically the same key TEE pair is used for both signing and | |||
encryption, though separate key pairs might also be used in the | ||||
future, as the joint security of encryption and signature with a | ||||
single key remains to some extent an open question in academic | ||||
cryptography. | ||||
The TAM key pair and certificate are used for authenticating a TAM to | The TAM key pair and certificate are used for authenticating a TAM to | |||
a remote TEE, and for sending private data to the TAM. A TAM | a remote TEE, and for sending private data to the TAM (separate key | |||
provider is responsible for acquiring a certificate from a CA that is | pairs for authentication vs. encryption could also be used in the | |||
trusted by the TEEs it manages. This is discussed further in | future). A TAM provider is responsible for acquiring a certificate | |||
Section 5.1 below. | from a CA that is trusted by the TEEs it manages. This is discussed | |||
further in Section 5.1 below. | ||||
The Trusted Component Signer key pair and certificate are used to | The Trusted Component Signer key pair and certificate are used to | |||
sign Trusted Components that the TEE will consider authorized to | sign Trusted Components that the TEE will consider authorized to | |||
execute. TEEs must be configured with the certificates or keys that | execute. TEEs must be configured with the certificates or keys that | |||
it considers authorized to sign TAs that it will execute. This is | it considers authorized to sign TAs that it will execute. This is | |||
discussed further in Section 5.2 below. | discussed further in Section 5.2 below. | |||
5.1. Trust Anchors in a TEEP Agent | 5.1. Trust Anchors in a TEEP Agent | |||
A TEEP Agent's Trust Anchor Store contains a list of Trust Anchors, | A TEEP Agent's Trust Anchor Store contains a list of Trust Anchors, | |||
which are CA certificates that sign various TAM certificates. The | which are typically CA certificates that sign various TAM | |||
list is typically preloaded at manufacturing time, and can be updated | certificates. The list is typically preloaded at manufacturing time, | |||
using the TEEP protocol if the TEE has some form of "Trust Anchor | and can be updated using the TEEP protocol if the TEE has some form | |||
Manager TA" that has Trust Anchors in its configuration data. Thus, | of "Trust Anchor Manager TA" that has Trust Anchors in its | |||
Trust Anchors can be updated similar to updating the Personalization | configuration data. Thus, Trust Anchors can be updated similarly to | |||
Data for any other TA. | the Personalization Data for any other TA. | |||
When Trust Anchor update is carried out, it is imperative that any | When Trust Anchor update is carried out, it is imperative that any | |||
update must maintain integrity where only an authentic Trust Anchor | update must maintain integrity where only an authentic Trust Anchor | |||
list from a device manufacturer or a Device Administrator is | list from a device manufacturer or a Device Administrator is | |||
accepted. Details are out of scope of the architecture and can be | accepted. Details are out of scope of the architecture and can be | |||
addressed in a protocol document. | addressed in a protocol document. | |||
Before a TAM can begin operation in the marketplace to support a | Before a TAM can begin operation in the marketplace to support a | |||
device with a particular TEE, it must obtain a TAM certificate from a | device with a particular TEE, it must be able to get its raw public | |||
CA or the raw public key of a TAM that is listed in the Trust Anchor | key, or its certificate, or a certificate it chains up to, listed in | |||
Store of the TEEP Agent. | the Trust Anchor Store of the TEEP Agent. | |||
5.2. Trust Anchors in a TEE | 5.2. Trust Anchors in a TEE | |||
A TEE determines whether TA binaries are allowed to execute by | The Trust Anchor Store in a TEE contains a list of Trust Anchors (raw | |||
verifying whether their signature can be verified using | public keys or certificates) that are used to determine whether TA | |||
certificate(s) or raw public key(s) in the TEE's Trust Anchor Store. | binaries are allowed to execute by checking if their signatures can | |||
The list is typically preloaded at manufacturing time, and can be | be verified. The list is typically preloaded at manufacturing time, | |||
updated using the TEEP protocol if the TEE has some form of "Trust | and can be updated using the TEEP protocol if the TEE has some form | |||
Anchor Manager TA" that has Trust Anchors in its configuration data. | of "Trust Anchor Manager TA" that has Trust Anchors in its | |||
Thus, Trust Anchors can be updated similar to updating the | configuration data. Thus, Trust Anchors can be updated similarly to | |||
Personalization Data for any other TA, as discussed in Section 5.1. | the Personalization Data for any other TA, as discussed in | |||
Section 5.1. | ||||
5.3. Trust Anchors in a TAM | 5.3. Trust Anchors in a TAM | |||
The Trust Anchor Store in a TAM consists of a list of Trust Anchors, | The Trust Anchor Store in a TAM consists of a list of Trust Anchors, | |||
which are certificates that sign various device TEE certificates. A | which are certificates that sign various device TEE certificates. A | |||
TAM will accept a device for Trusted Component management if the TEE | TAM will accept a device for Trusted Component management if the TEE | |||
in the device uses a TEE certificate that is chained to a certificate | in the device uses a TEE certificate that is chained to a certificate | |||
or raw public key that the TAM trusts, is contained in an allow list, | or raw public key that the TAM trusts, is contained in an allow list, | |||
is not found on a block list, and/or fulfills any other policy | is not found on a block list, and/or fulfills any other policy | |||
criteria. | criteria. | |||
5.4. Scalability | 5.4. Scalability | |||
This architecture uses a PKI (including self-signed certificates). | This architecture uses a PKI (including self-signed certificates). | |||
Trust Anchors exist on the devices to enable the TEE to authenticate | Trust Anchors exist on the devices to enable the TEEP Agent to | |||
TAMs and Trusted Component Signers, and TAMs use Trust Anchors to | authenticate TAMs and the TEE to authenticate Trusted Component | |||
authenticate TEEs. When a PKI is used, many intermediate CA | Signers, and TAMs use Trust Anchors to authenticate TEEP Agents. | |||
certificates can chain to a root certificate, each of which can issue | When a PKI is used, many intermediate CA certificates can chain to a | |||
many certificates. This makes the protocol highly scalable. New | root certificate, each of which can issue many certificates. This | |||
factories that produce TEEs can join the ecosystem. In this case, | makes the protocol highly scalable. New factories that produce TEEs | |||
such a factory can get an intermediate CA certificate from one of the | can join the ecosystem. In this case, such a factory can get an | |||
existing roots without requiring that TAMs are updated with | intermediate CA certificate from one of the existing roots without | |||
information about the new device factory. Likewise, new TAMs can | requiring that TAMs are updated with information about the new device | |||
join the ecosystem, providing they are issued a TAM certificate that | factory. Likewise, new TAMs can join the ecosystem, providing they | |||
chains to an existing root whereby existing TEEs will be allowed to | are issued a TAM certificate that chains to an existing root whereby | |||
be personalized by the TAM without requiring changes to the TEE | existing TEEs will be allowed to be personalized by the TAM without | |||
itself. This enables the ecosystem to scale, and avoids the need for | requiring changes to the TEE itself. This enables the ecosystem to | |||
centralized databases of all TEEs produced or all TAMs that exist or | scale, and avoids the need for centralized databases of all TEEs | |||
all Trusted Component Signers that exist. | produced or all TAMs that exist or all Trusted Component Signers that | |||
exist. | ||||
5.5. Message Security | 5.5. Message Security | |||
Messages created by a TAM are used to deliver Trusted Component | Messages created by a TAM are used to deliver Trusted Component | |||
management commands to a device, and device attestation and messages | management commands to a device, and device attestation and messages | |||
created by the device TEE to respond to TAM messages. | are created by the device TEE to respond to TAM messages. | |||
These messages are signed end-to-end between a TEEP Agent and a TAM. | These messages are signed end-to-end between a TEEP Agent and a TAM. | |||
Confidentiality is provided by encrypting sensitive payloads (such as | Confidentiality is provided by encrypting sensitive payloads (such as | |||
Personalization Data and attestation evidence), rather than | Personalization Data and attestation evidence), rather than | |||
encrypting the messages themselves. Using encrypted payloads is | encrypting the messages themselves. Using encrypted payloads is | |||
important to ensure that only the targeted device TEE or TAM is able | important to ensure that only the targeted device TEE or TAM is able | |||
to decrypt and view the actual content. | to decrypt and view the actual content. | |||
6. TEEP Broker | 6. TEEP Broker | |||
skipping to change at page 23, line 11 ¶ | skipping to change at page 23, line 20 ¶ | |||
can inspect this application metadata file and invoke the TEEP Broker | can inspect this application metadata file and invoke the TEEP Broker | |||
to trigger Trusted Component installation on behalf of the Untrusted | to trigger Trusted Component installation on behalf of the Untrusted | |||
Application without requiring the Untrusted Application to run first. | Application without requiring the Untrusted Application to 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 Trusted Component installation. | call to trigger a Trusted Component installation. | |||
The Broker doesn't need to parse a message content received from a | The Broker doesn't need to parse TEEP message content received from a | |||
TAM that should be processed by a TEE (see the ProcessTeepMessage API | TAM that should be processed by a TEE (see the ProcessTeepMessage API | |||
in Section 6.2.1). When a device has more than one TEE, one TEEP | in Section 6.2.1). When a device has more than one TEE, one TEEP | |||
Broker per TEE could be present in the REE. A TEEP Broker interacts | Broker per TEE could be present in the REE or a common TEEP Broker | |||
with a TEEP Agent inside a TEE. | could be used by multiple TEEs where the transport protocol (e.g., | |||
[I-D.ietf-teep-otrp-over-http]) allows the TEEP Broker to distinguish | ||||
A TAM message may indicate the target TEE where a Trusted Component | which TEE is relevant for each message from a TAM. | |||
should be installed. A compliant TEEP protocol should include a | ||||
target TEE identifier for a TEEP Broker when multiple TEEs are | ||||
present. | ||||
The Broker relays the response messages generated from a TEEP Agent | The TEEP Broker interacts with a TEEP Agent inside a TEE, and relays | |||
in a TEE to the TAM. | the response messages generated from the TEEP Agent back 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 to the | |||
TEE is not reachable for some reason. Other errors are represented | TAM if the TEE is not reachable for some reason. Other errors are | |||
as response messages returned from the TEE which will then be passed | represented as TEEP response messages returned from the TEE which | |||
to the TAM. | will then be passed to the TAM. | |||
6.2. TEEP Broker Implementation Consideration | 6.2. TEEP Broker Implementation Consideration | |||
As depicted in Figure 5, there are multiple ways in which a TEEP | As depicted in Figure 5, there are multiple ways in which a TEEP | |||
Broker can be implemented, with more or fewer layers being inside the | Broker can be implemented, with more or fewer layers being inside the | |||
TEE. For example, in model A, the model with the smallest TEE | TEE. For example, in model A, the model with the smallest TEE | |||
footprint, only the TEEP implementation is inside the TEE, whereas | footprint, only the TEEP implementation is inside the TEE, whereas | |||
the TEEP/HTTP implementation is in the TEEP Broker outside the TEE. | the TEEP/HTTP implementation is in the TEEP Broker outside the TEE. | |||
Model: A B C ... | Model: A B C ... | |||
skipping to change at page 24, line 29 ¶ | skipping to change at page 24, line 29 ¶ | |||
| HTTP(S) | | | | | | HTTP(S) | | | | | |||
| implementation | | | | | | implementation | | | | | |||
+----------------+ | | v | +----------------+ | | v | |||
| | | | | | | | |||
+----------------+ | | ^ | +----------------+ | | ^ | |||
| TCP or QUIC | | | | Broker | | TCP or QUIC | | | | Broker | |||
| implementation | | | | | | implementation | | | | | |||
+----------------+ | | | | +----------------+ | | | | |||
REE REE REE | REE REE REE | |||
Figure 5: TEEP Broker Models | Figure 5: TEEP Broker Models | |||
In other models, additional layers are moved into the TEE, increasing | In other models, additional layers are moved into the TEE, increasing | |||
the TEE footprint, with the Broker either containing or calling the | the TEE footprint, with the Broker either containing or calling the | |||
topmost protocol layer outside of the TEE. An implementation is free | topmost protocol layer outside of the TEE. An implementation is free | |||
to choose any of these models. | to choose any of these models. | |||
TEEP Broker implementers should consider methods of distribution, | TEEP Broker implementers should consider methods of distribution, | |||
scope and concurrency on devices and runtime options. | scope and concurrency on devices and runtime options. | |||
6.2.1. TEEP Broker APIs | 6.2.1. TEEP Broker APIs | |||
skipping to change at page 25, line 21 ¶ | skipping to change at page 25, line 25 ¶ | |||
Agent may wish to contact the TAM for any changes, without the | Agent may wish to contact the TAM for any changes, without the | |||
device itself needing any particular change. | device itself needing any particular change. | |||
5. ProcessError: A notification that the TEEP Broker could not | 5. ProcessError: A notification that the TEEP Broker could not | |||
deliver an outbound TEEP message to a TAM. | deliver an outbound TEEP message to a TAM. | |||
For comparison, similar APIs may exist on the TAM side, where a | For comparison, similar APIs may exist on the TAM side, where a | |||
Broker may or may not exist, depending on whether the TAM uses a TEE | Broker may or may not exist, depending on whether the TAM uses a TEE | |||
or not: | or not: | |||
1. ProcessConnect: A notification that an incoming TEEP session is | 1. ProcessConnect: A notification that a new TEEP session is being | |||
being requested by a TEEP Agent. | requested by a TEEP Agent. | |||
2. ProcessTeepMessage: A message arriving from the network, to be | 2. ProcessTeepMessage: A message arriving on an existing TEEP | |||
delivered to the TAM for processing. | session, to be delivered to the TAM for processing. | |||
For further discussion on these APIs, see | For further discussion on these APIs, see | |||
[I-D.ietf-teep-otrp-over-http]. | [I-D.ietf-teep-otrp-over-http]. | |||
6.2.2. TEEP Broker Distribution | 6.2.2. TEEP Broker Distribution | |||
The Broker installation is commonly carried out at OEM time. A user | The Broker installation is commonly carried out at OEM time. A user | |||
can dynamically download and install a Broker on-demand. | can dynamically download and install a Broker on-demand. | |||
7. Attestation | 7. Attestation | |||
skipping to change at page 26, line 18 ¶ | skipping to change at page 26, line 23 ¶ | |||
extended claims. | extended claims. | |||
+----------------+ | +----------------+ | |||
| Device | +----------+ | | Device | +----------+ | |||
| +------------+ | Evidence | TAM | Evidence +----------+ | | +------------+ | Evidence | TAM | Evidence +----------+ | |||
| | TEE |------------->| (Relying |-------------->| Verifier | | | | TEE |------------->| (Relying |-------------->| Verifier | | |||
| | (Attester) | | | Party) |<--------------| | | | | (Attester) | | | Party) |<--------------| | | |||
| +------------+ | +----------+ Attestation +----------+ | | +------------+ | +----------+ Attestation +----------+ | |||
+----------------+ Result | +----------------+ Result | |||
Figure 6: TEEP Attestation Roles | Figure 6: TEEP Attestation Roles | |||
As of the writing of this specification, device and TEE attestations | As of the writing of this specification, device and TEE attestations | |||
have not been standardized across the market. Different devices, | have not been standardized across the market. Different devices, | |||
manufacturers, and TEEs support different attestation protocols. In | manufacturers, and TEEs support different attestation protocols. In | |||
order for TEEP to be inclusive, it is agnostic to the format of | order for TEEP to be inclusive, it is agnostic to the format of | |||
evidence, allowing proprietary or standardized formats to be used | evidence, allowing proprietary or standardized formats to be used | |||
between a TEE and a verifier (which may or may not be colocated in | between a TEE and a verifier (which may or may not be colocated in | |||
the TAM), as long as the format supports encryption of any | the TAM), as long as the format supports encryption of any | |||
information that is considered sensitive. | information that is considered sensitive. | |||
skipping to change at page 26, line 42 ¶ | skipping to change at page 26, line 47 ¶ | |||
results, and the protocol (if any) used between the TAM and a | results, and the protocol (if any) used between the TAM and a | |||
verifier, as long as they convey at least the required set of claims | verifier, as long as they convey at least the required set of claims | |||
in some format. Note that the respective attestation algorithms are | in some format. Note that the respective attestation algorithms are | |||
not defined in the TEEP protocol itself; see | not defined in the TEEP protocol itself; see | |||
[I-D.ietf-rats-architecture] and [I-D.ietf-teep-protocol] for more | [I-D.ietf-rats-architecture] and [I-D.ietf-teep-protocol] for more | |||
discussion. | discussion. | |||
There are a number of considerations that need to be considered when | There are a number of considerations that need to be considered when | |||
appraising evidence provided by a TEE, including: | appraising evidence provided by a TEE, including: | |||
- What security measures a manufacturer takes when provisioning keys | * What security measures a manufacturer takes when provisioning keys | |||
into devices/TEEs; | into devices/TEEs; | |||
- What hardware and software components have access to the | * What hardware and software components have access to the | |||
attestation keys of the TEE; | attestation keys of the TEE; | |||
- The source or local verification of claims within an attestation | * The source or local verification of claims within an attestation | |||
prior to a TEE signing a set of claims; | prior to a TEE signing a set of claims; | |||
- The level of protection afforded to attestation keys against | * The level of protection afforded to attestation keys against | |||
exfiltration, modification, and side channel attacks; | exfiltration, modification, and side channel attacks; | |||
- The limitations of use applied to TEE attestation keys; | * The limitations of use applied to TEE attestation keys; | |||
- The processes in place to discover or detect TEE breaches; and | * The processes in place to discover or detect TEE breaches; and | |||
- The revocation and recovery process of TEE attestation keys. | * The revocation and recovery process of TEE attestation keys. | |||
Some TAMs may require additional claims in order to properly | Some TAMs may require additional claims in order to properly | |||
authorize a device or TEE. The specific format for these additional | authorize a device or TEE. The specific format for these additional | |||
claims are outside the scope of this specification, but the TEEP | claims are outside the scope of this specification, but the TEEP | |||
protocol allows these additional claims to be included in the | protocol allows these additional claims to be included in the | |||
attestation messages. | attestation messages. | |||
For more discussion of the attestation and appraisal process, see the | For more discussion of the attestation and appraisal process, see the | |||
RATS Architecture [I-D.ietf-rats-architecture]. | RATS Architecture [I-D.ietf-rats-architecture]. | |||
The following information is required for TEEP attestation: | The following information is required for TEEP attestation: | |||
- Device Identifying Information: Attestation information may need | * Device Identifying Information: Attestation information may need | |||
to uniquely identify a device to the TAM. Unique device | to uniquely identify a device to the TAM. Unique device | |||
identification allows the TAM to provide services to the device, | identification allows the TAM to provide services to the device, | |||
such as managing installed TAs, and providing subscriptions to | such as managing installed TAs, and providing subscriptions to | |||
services, and locating device-specific keying material to | services, and locating device-specific keying material to | |||
communicate with or authenticate the device. In some use cases it | communicate with or authenticate the device. In some use cases it | |||
may be sufficient to identify only the class of the device. The | may be sufficient to identify only the class of the device. The | |||
security and privacy requirements regarding device identification | security and privacy requirements regarding device identification | |||
will vary with the type of TA provisioned to the TEE. | will vary with the type of TA provisioned to the TEE. | |||
- TEE Identifying Information: The type of TEE that generated this | * TEE Identifying Information: The type of TEE that generated this | |||
attestation must be identified. This includes version | attestation must be identified. This includes version | |||
identification information for hardware, firmware, and software | identification information for hardware, firmware, and software | |||
version of the TEE, as applicable by the TEE type. TEE | version of the TEE, as applicable by the TEE type. TEE | |||
manufacturer information for the TEE is required in order to | manufacturer information for the TEE is required in order to | |||
disambiguate the same TEE type created by different manufacturers | disambiguate the same TEE type created by different manufacturers | |||
and address considerations around manufacturer provisioning, | and address considerations around manufacturer provisioning, | |||
keying and support for the TEE. | keying and 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. | |||
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 | |||
skipping to change at page 28, line 38 ¶ | skipping to change at page 28, line 45 ¶ | |||
with the device's TEE to manage Trusted Components. Since the TEEP | with the device's TEE to manage Trusted Components. Since the TEEP | |||
Broker runs in a potentially vulnerable REE, the TEEP Broker could, | Broker runs in a potentially vulnerable REE, the TEEP Broker could, | |||
however, be (or be infected by) malware. As such, all TAM messages | however, be (or be infected by) malware. As such, all TAM messages | |||
are signed and sensitive data is encrypted such that the TEEP Broker | are signed and sensitive data is encrypted such that the TEEP Broker | |||
cannot modify or capture sensitive data, but the TEEP Broker can | cannot modify or capture sensitive data, but the TEEP Broker can | |||
still conduct DoS attacks as discussed in Section 9.3. | still conduct DoS attacks as discussed in Section 9.3. | |||
A TEEP Agent in a TEE is responsible for protecting against potential | A TEEP Agent in a TEE is responsible for protecting against potential | |||
attacks from a compromised TEEP Broker or rogue malware in the REE. | attacks from a compromised TEEP Broker or rogue malware in the REE. | |||
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, or | |||
The TEEP Agent validates the signature of each TEEP protocol request | simply drop or delay notifications to a TEE. The TEEP Agent | |||
and checks the signing certificate against its Trust Anchors. To | validates the signature of each TEEP protocol request and checks the | |||
mitigate DoS attacks, it might also add some protection scheme such | signing certificate against its Trust Anchors. To mitigate DoS | |||
as a threshold on repeated requests or number of TAs that can be | attacks, it might also add some protection scheme such as a threshold | |||
installed. | on repeated requests or number of TAs that can be installed. | |||
Some implementations might rely on (due to lack of any available | ||||
alternative) the use of an untrusted timer or other event to call the | ||||
RequestPolicyCheck API (Section 6.2.1), which means that a | ||||
compromised REE can cause a TEE to not receive policy changes and | ||||
thus be out of date with respect to policy. The same can potentially | ||||
be done by any other man-in-the-middle simply by blocking | ||||
communication with a TAM. Ultimately such outdated compliance could | ||||
be addressed by using attestation in secure communication, where the | ||||
attestation evidence reveals what state the TEE is in, so that | ||||
communication (other than remediation such as via TEEP) from an out- | ||||
of-compliance TEE can be rejected. | ||||
Similarly, in most implementations the REE is involved in the | ||||
mechanics of installing new TAs. However, the authority for what TAs | ||||
are running in a given TEE is between the TEEP Agent and the TAM. | ||||
While a TEEP Broker broker can in effect make suggestions, it cannot | ||||
decide or enforce what runs where. The TEEP Broker can also control | ||||
which TEE a given installation request is directed at, but a TEEP | ||||
Agent will only accept TAs that are actually applicable to it and | ||||
where installation instructions are received by a TAM that it trusts. | ||||
The authorization model for the UnrequestTA operation is, however, | ||||
weaker in that it expresses the removal of a dependency from an | ||||
application that was untrusted to begin with. This means that a | ||||
compromised REE could remove a valid dependency from an Untrusted | ||||
Application on a TA. Normal REE security mechanisms should be used | ||||
to protect the REE and Untrusted Applications. | ||||
9.2. Data Protection | 9.2. Data Protection | |||
It is the responsibility of the TAM to protect data on its servers. | It is the responsibility of the TAM to protect data on its servers. | |||
Similarly, it is the responsibility of the TEE implementation to | Similarly, it is the responsibility of the TEE implementation to | |||
provide protection of data against integrity and confidentiality | provide protection of data against integrity and confidentiality | |||
attacks from outside the TEE. TEEs that provide isolation among TAs | attacks from outside the TEE. TEEs that provide isolation among TAs | |||
within the TEE are likewise responsible for protecting TA data | within the TEE are likewise responsible for protecting TA data | |||
against the REE and other TAs. For example, this can be used to | 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 | protect one user's or tenant's data from compromise by another user | |||
skipping to change at page 29, line 26 ¶ | skipping to change at page 30, line 13 ¶ | |||
confidentiality protection to secure data end-to-end. For example, | confidentiality protection to secure data end-to-end. For example, | |||
confidentiality protection for payloads may be provided by utilizing | confidentiality protection for payloads may be provided by utilizing | |||
encrypted TA binaries and encrypted attestation information. See | encrypted TA binaries and encrypted attestation information. See | |||
[I-D.ietf-teep-protocol] for how a specific solution addresses the | [I-D.ietf-teep-protocol] for how a specific solution addresses the | |||
design question of how to provide integrity and confidentiality | design question of how to provide integrity and confidentiality | |||
protection. | protection. | |||
9.3. Compromised REE | 9.3. Compromised REE | |||
It is possible that the REE of a device is compromised. We have | It is possible that the REE of a device is compromised. We have | |||
already seen examples of attacks on the public Internet of billions | already seen examples of attacks on the public Internet with billions | |||
of compromised devices being used to mount DDoS attacks. A | of compromised devices being used to mount DDoS attacks. A | |||
compromised REE can be used for such an attack but it cannot tamper | compromised REE can be used for such an attack but it cannot tamper | |||
with the TEE's code or data in doing so. A compromised REE can, | with the TEE's code or data in doing so. A compromised REE can, | |||
however, launch DoS attacks against the TEE. | however, launch DoS attacks against the TEE. | |||
The compromised REE may terminate the TEEP Broker such that TEEP | The compromised REE may terminate the TEEP Broker such that TEEP | |||
transactions cannot reach the TEE, or might drop or delay messages | transactions cannot reach the TEE, or might drop or delay messages | |||
between a TAM and a TEEP Agent. However, while a DoS attack cannot | between a TAM and a TEEP Agent. However, while a DoS attack cannot | |||
be prevented, the REE cannot access anything in the TEE if it is | be prevented, the REE cannot access anything in the TEE if the TEE is | |||
implemented correctly. Some TEEs may have some watchdog scheme to | implemented correctly. Some TEEs may have some watchdog scheme to | |||
observe REE state and mitigate DoS attacks against it but most TEEs | observe REE state and mitigate DoS attacks against it but most TEEs | |||
don't have such a capability. | don't have such a capability. | |||
In some other scenarios, the compromised REE may ask a TEEP Broker to | In some other scenarios, the compromised REE may ask a TEEP Broker to | |||
make repeated requests to a TEEP Agent in a TEE to install or | make repeated requests to a TEEP Agent in a TEE to install or | |||
uninstall a Trusted Component. An installation or uninstallation | uninstall a Trusted Component. An installation or uninstallation | |||
request constructed by the TEEP Broker or REE will be rejected by the | request constructed by the TEEP Broker or REE will be rejected by the | |||
TEEP Agent because the request won't have the correct signature from | TEEP Agent because the request won't have the correct signature from | |||
a TAM to pass the request signature validation. | a TAM to pass the request signature validation. | |||
skipping to change at page 30, line 20 ¶ | skipping to change at page 31, line 12 ¶ | |||
responsible for protecting the resource usage allocated for Trusted | responsible for protecting the resource usage allocated for Trusted | |||
Component management. | Component management. | |||
9.4. CA Compromise or Expiry of CA Certificate | 9.4. CA Compromise or Expiry of CA Certificate | |||
A root CA for TAM certificates might get compromised or its | A root CA for TAM certificates might get compromised or its | |||
certificate might expire, or a Trust Anchor other than a root CA | certificate might expire, or a Trust Anchor other than a root CA | |||
certificate may also expire or be compromised. TEEs are responsible | certificate may also expire or be compromised. TEEs are responsible | |||
for validating the entire TAM certificate path, including the TAM | for validating the entire TAM certificate path, including the TAM | |||
certificate and any intermediate certificates up to the root | certificate and any intermediate certificates up to the root | |||
certificate. Such validation includes checking for certificate | certificate. See Section 6 of [RFC5280] for details. Such | |||
revocation. See Section 6 of [RFC5280] for details. | validation generally includes checking for certificate revocation, | |||
but certificate status check protocols may not scale down to | ||||
constrained devices that use TEEP. | ||||
If a TAM certificate path validation fails, the TAM might be rejected | To address the above issues, a certificate path update mechanism is | |||
by a TEEP Agent. To address this, some certificate path update | expected from TAM operators, so that the TAM can get a new | |||
mechanism is expected from TAM operators, so that the TAM can get a | certificate path that can be validated by a TEEP Agent. In addition, | |||
new certificate path that can be validated by a TEEP Agent. In | the Trust Anchor in the TEEP Agent's Trust Anchor Store may need to | |||
addition, the Trust Anchor in the TEEP Agent's Trust Anchor Store may | be updated. To address this, some TEE Trust Anchor update mechanism | |||
need to be updated. To address this, some TEE Trust Anchor update | is expected from device OEMs, such as using the TEEP protocol to | |||
mechanism is expected from device OEMs. | distribute new Trust Anchors. | |||
Similarly, a root CA for TEE certificates might get compromised or | Similarly, a root CA for TEE certificates might get compromised or | |||
its certificate might expire, or a Trust Anchor other than a root CA | its certificate might expire, or a Trust Anchor other than a root CA | |||
certificate may also expire or be compromised. TAMs are responsible | certificate may also expire or be compromised. TAMs are responsible | |||
for validating the entire TEE certificate path, including the TEE | for validating the entire TEE certificate path, including the TEE | |||
certificate and any intermediate certificates up to the root | certificate and any intermediate certificates up to the root | |||
certificate. Such validation includes checking for certificate | certificate. Such validation includes checking for certificate | |||
revocation. | revocation. | |||
If a TEE certificate path validation fails, the TEE might be rejected | If a TEE certificate path validation fails, the TEE might be rejected | |||
skipping to change at page 32, line 17 ¶ | skipping to change at page 33, line 13 ¶ | |||
Section 4.1.2.5 of [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 | |||
Personalization Data from being disclosed to the TAM that distributes | Personalization Data from being disclosed to the TAM that distributes | |||
them. In such a scenario, the files can be encrypted end-to-end | them. In such a scenario, the files can be encrypted end-to-end | |||
between a Trusted Component Signer and a TEE. However, there must be | between a Trusted Component Signer and a TEE. However, there must be | |||
some means of provisioning the decryption key into the TEE and/or | some means of provisioning the decryption key into the TEE and/or | |||
some means of the Trusted Component Signer securely learning a public | some means of the Trusted Component Signer securely learning a public | |||
key of the TEE that it can use to encrypt. One way to do this is for | key of the TEE that it can use to encrypt. The Trusted Component | |||
the Trusted Component Signer to run its own TAM so that it can | Signer cannot necessarily even trust the TAM to report the correct | |||
distribute the decryption key via the TEEP protocol, and the key file | public key of a TEE for use with encryption, since the TAM might | |||
can be a dependency in the manifest of the encrypted TA. Thus, the | instead provide the public key of a TEE that it controls. | |||
TEEP Agent would look at the Trusted Component manifest, determine | ||||
there is a dependency with a TAM URI of the Trusted Component | One way to solve this is for the Trusted Component Signer to run its | |||
Signer's TAM. The Agent would then install the dependency, and then | own TAM that is only used to distribute the decryption key via the | |||
continue with the Trusted Component installation steps, including | TEEP protocol, and the key file can be a dependency in the manifest | |||
decrypting the TA binary with the relevant key. | of the encrypted TA. Thus, the TEEP Agent would look at the Trusted | |||
Component manifest, determine there is a dependency with a TAM URI of | ||||
the Trusted Component Signer's TAM. The Agent would then install the | ||||
dependency, and then continue with the Trusted Component installation | ||||
steps, including decrypting the TA binary with the relevant key. | ||||
9.9. REE Privacy | ||||
The TEEP architecture is applicable to cases where devices have a TEE | ||||
that protects data and code from the REE administrator. In such | ||||
cases, the TAM administrator, not the REE administrator, controls the | ||||
TEE in the devices. As some examples: | ||||
* a cloud hoster may be the REE administrator where a customer | ||||
administrator controls the TEE hosted in the cloud. | ||||
* a device manufacturer might control the TEE in a device purchased | ||||
by a customer | ||||
The privacy risk is that data in the REE might be susceptible to | ||||
disclosure to the TEE administrator. This risk is not introduced by | ||||
the TEEP architecture, but is inherent in most uses of TEEs. This | ||||
risk can be mitigated by making sure the REE administrator is aware | ||||
of and explicitly chooses to have a TEE that is managed by another | ||||
party. In the cloud hoster example, this choice is made by | ||||
explicitly offering a service to customers to provide TEEs for them | ||||
to administer. In the device manufacturer example, this choice is | ||||
made by the customer choosing to buy a device made by a given | ||||
manufacturer. | ||||
10. IANA Considerations | 10. IANA Considerations | |||
This document does not require actions by IANA. | This document does not require actions by IANA. | |||
11. Contributors | 11. Contributors | |||
- Andrew Atyeo, Intercede (andrew.atyeo@intercede.com) | * Andrew Atyeo, Intercede (andrew.atyeo@intercede.com) | |||
- Liu Dapeng, Alibaba Group (maxpassion@gmail.com) | * Liu Dapeng, Alibaba Group (maxpassion@gmail.com) | |||
12. Acknowledgements | 12. Acknowledgements | |||
We would like to thank Nick Cook, Minho Yoo, Brian Witten, Tyler Kim, | We would like to thank Nick Cook, Minho Yoo, Brian Witten, Tyler Kim, | |||
Alin Mutu, Juergen Schoenwaelder, Nicolae Paladi, Sorin Faibish, Ned | Alin Mutu, Juergen Schoenwaelder, Nicolae Paladi, Sorin Faibish, Ned | |||
Smith, Russ Housley, Jeremy O'Donoghue, and Anders Rundgren for their | Smith, Russ Housley, Jeremy O'Donoghue, and Anders Rundgren for their | |||
feedback. | feedback. | |||
13. Informative References | 13. Informative References | |||
[CC-Overview] | ||||
Confidential Computing Consortium, "Confidential | ||||
Computing: Hardware-Based Trusted Execution for | ||||
Applications and Data", January 2021, | ||||
<https://confidentialcomputing.io/wp- | ||||
content/uploads/sites/85/2021/03/ | ||||
confidentialcomputing_outreach_whitepaper-8-5x11-1.pdf>. | ||||
[CC-Technical-Analysis] | ||||
Confidential Computing Consortium, "A Technical Analysis | ||||
of Confidential Computing, v1.2", October 2021, | ||||
<https://confidentialcomputing.io/wp- | ||||
content/uploads/sites/85/2022/01/CCC-A-Technical-Analysis- | ||||
of-Confidential-Computing-v1.2.pdf>. | ||||
[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/>. | |||
[GSMA] GSM Association, "GP.22 RSP Technical Specification, | [GSMA] GSM Association, "GP.22 RSP Technical Specification, | |||
Version 2.2.2", June 2020, <https://www.gsma.com/esim/wp- | Version 2.2.2", June 2020, <https://www.gsma.com/esim/wp- | |||
content/uploads/2020/06/SGP.22-v2.2.2.pdf>. | content/uploads/2020/06/SGP.22-v2.2.2.pdf>. | |||
[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", Work | |||
draft-ietf-rats-architecture-12 (work in progress), April | in Progress, Internet-Draft, draft-ietf-rats-architecture- | |||
2021. | 15, 8 February 2022, <https://www.ietf.org/archive/id/ | |||
draft-ietf-rats-architecture-15.txt>. | ||||
[I-D.ietf-suit-architecture] | ||||
Moran, B., Tschofenig, H., Brown, D., and M. Meriac, "A | ||||
Firmware Update Architecture for Internet of Things", Work | ||||
in Progress, Internet-Draft, draft-ietf-suit-architecture- | ||||
16, 27 January 2021, <https://www.ietf.org/archive/id/ | ||||
draft-ietf-suit-architecture-16.txt>. | ||||
[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-14 | of Things (SUIT) Manifest", Work in Progress, Internet- | |||
(work in progress), July 2021. | Draft, draft-ietf-suit-manifest-16, 25 October 2021, | |||
<https://www.ietf.org/archive/id/draft-ietf-suit-manifest- | ||||
16.txt>. | ||||
[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 Initiated Communication", | |||
draft-ietf-teep-otrp-over-http-11 (work in progress), July | Work in Progress, Internet-Draft, draft-ietf-teep-otrp- | |||
2021. | over-http-13, 28 February 2022, | |||
<https://www.ietf.org/archive/id/draft-ietf-teep-otrp- | ||||
over-http-13.txt>. | ||||
[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 | |||
(TEEP) Protocol", draft-ietf-teep-protocol-05 (work in | (TEEP) Protocol", Work in Progress, Internet-Draft, draft- | |||
progress), February 2021. | ietf-teep-protocol-07, 25 October 2021, | |||
<https://www.ietf.org/archive/id/draft-ietf-teep-protocol- | ||||
07.txt>. | ||||
[OTRP] GlobalPlatform, "Open Trust Protocol (OTrP) Profile v1.1", | [OTRP] GlobalPlatform, "Open Trust Protocol (OTrP) Profile v1.1", | |||
GlobalPlatform GPD_SPE_123, July 2020, | GlobalPlatform GPD_SPE_123, July 2020, | |||
<https://globalplatform.org/specs-library/tee-management- | <https://globalplatform.org/specs-library/tee-management- | |||
framework-open-trust-protocol/>. | framework-open-trust-protocol/>. | |||
[RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | |||
FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | |||
<https://www.rfc-editor.org/info/rfc4949>. | <https://www.rfc-editor.org/info/rfc4949>. | |||
skipping to change at page 34, line 25 ¶ | skipping to change at page 36, line 35 ¶ | |||
[TrustZone] | [TrustZone] | |||
Arm, "Arm TrustZone Technology", n.d., | Arm, "Arm TrustZone Technology", n.d., | |||
<https://developer.arm.com/ip-products/security-ip/ | <https://developer.arm.com/ip-products/security-ip/ | |||
trustzone>. | trustzone>. | |||
Authors' Addresses | Authors' Addresses | |||
Mingliang Pei | Mingliang Pei | |||
Broadcom | Broadcom | |||
EMail: mingliang.pei@broadcom.com | Email: mingliang.pei@broadcom.com | |||
Hannes Tschofenig | Hannes Tschofenig | |||
Arm Limited | Arm Limited | |||
EMail: hannes.tschofenig@arm.com | Email: hannes.tschofenig@arm.com | |||
Dave Thaler | Dave Thaler | |||
Microsoft | Microsoft | |||
EMail: dthaler@microsoft.com | Email: dthaler@microsoft.com | |||
David Wheeler | David Wheeler | |||
Amazon | Amazon | |||
Email: davewhee@amazon.com | ||||
EMail: davewhee@amazon.com | ||||
End of changes. 118 change blocks. | ||||
272 lines changed or deleted | 393 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/ |