draft-ietf-teep-architecture-05.txt | draft-ietf-teep-architecture-06.txt | |||
---|---|---|---|---|
TEEP M. Pei | TEEP M. Pei | |||
Internet-Draft Symantec | Internet-Draft Symantec | |||
Intended status: Informational H. Tschofenig | Intended status: Informational H. Tschofenig | |||
Expires: June 14, 2020 Arm Limited | Expires: August 11, 2020 Arm Limited | |||
D. Thaler | D. Thaler | |||
Microsoft | Microsoft | |||
D. Wheeler | D. Wheeler | |||
Intel | Intel | |||
December 12, 2019 | February 08, 2020 | |||
Trusted Execution Environment Provisioning (TEEP) Architecture | Trusted Execution Environment Provisioning (TEEP) Architecture | |||
draft-ietf-teep-architecture-05 | draft-ietf-teep-architecture-06 | |||
Abstract | Abstract | |||
A Trusted Execution Environment (TEE) is an environment that enforces | A Trusted Execution Environment (TEE) is an environment that enforces | |||
that only authorized code can execute with that environment, and that | that only authorized code can execute within that environment, and | |||
any data used by such code cannot be read or tampered with by any | that any data used by such code cannot be read or tampered with by | |||
code outside that environment. This architecture document motivates | any code outside that environment. This architecture document | |||
the design and standardization of a protocol for managing the | motivates the design and standardization of a protocol for managing | |||
lifecycle of trusted applications running inside a TEE. | the lifecycle of trusted applications running inside such a TEE. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on June 14, 2020. | This Internet-Draft will expire on August 11, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 2, line 31 ¶ | skipping to change at page 2, line 31 ¶ | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. Payment . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.2. Authentication . . . . . . . . . . . . . . . . . . . . . 7 | 3.2. Authentication . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.3. Internet of Things . . . . . . . . . . . . . . . . . . . 7 | 3.3. Internet of Things . . . . . . . . . . . . . . . . . . . 7 | |||
3.4. Confidential Cloud Computing . . . . . . . . . . . . . . 7 | 3.4. Confidential Cloud Computing . . . . . . . . . . . . . . 8 | |||
4. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.1. System Components . . . . . . . . . . . . . . . . . . . . 8 | 4.1. System Components . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2. Different Renditions of TEEP Architecture . . . . . . . . 10 | 4.2. Multiple TEEs in a Device . . . . . . . . . . . . . . . . 10 | |||
4.3. Multiple TAMs and Relationship to TAs . . . . . . . . . . 12 | 4.3. Multiple TAMs and Relationship to TAs . . . . . . . . . . 12 | |||
4.4. Untrusted Apps, Trusted Apps, and Personalization Data . 13 | 4.4. Untrusted Apps, Trusted Apps, and Personalization Data . 13 | |||
4.5. Examples of Application Delivery Mechanisms in Existing | 4.4.1. Examples of Application Delivery Mechanisms in | |||
TEEs . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | Existing TEEs . . . . . . . . . . . . . . . . . . . . 14 | |||
4.6. Entity Relations . . . . . . . . . . . . . . . . . . . . 15 | 4.5. Entity Relations . . . . . . . . . . . . . . . . . . . . 16 | |||
5. Keys and Certificate Types . . . . . . . . . . . . . . . . . 17 | 5. Keys and Certificate Types . . . . . . . . . . . . . . . . . 17 | |||
5.1. Trust Anchors in TEE . . . . . . . . . . . . . . . . . . 18 | 5.1. Trust Anchors in a TEEP Agent . . . . . . . . . . . . . . 18 | |||
5.2. Trust Anchors in TAM . . . . . . . . . . . . . . . . . . 19 | 5.2. Trust Anchors in a TEE . . . . . . . . . . . . . . . . . 19 | |||
5.3. Scalability . . . . . . . . . . . . . . . . . . . . . . . 19 | 5.3. Trust Anchors in a TAM . . . . . . . . . . . . . . . . . 19 | |||
5.4. Message Security . . . . . . . . . . . . . . . . . . . . 19 | 5.4. Scalability . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 5.5. Message Security . . . . . . . . . . . . . . . . . . . . 20 | |||
6. TEEP Broker . . . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
6.1. Role of the TEEP Broker . . . . . . . . . . . . . . . . . 20 | 6.1. Role of the TEEP Broker . . . . . . . . . . . . . . . . . 20 | |||
6.2. TEEP Broker Implementation Consideration . . . . . . . . 20 | 6.2. TEEP Broker Implementation Consideration . . . . . . . . 21 | |||
6.2.1. TEEP Broker APIs . . . . . . . . . . . . . . . . . . 20 | 6.2.1. TEEP Broker APIs . . . . . . . . . . . . . . . . . . 21 | |||
6.2.2. TEEP Broker Distribution . . . . . . . . . . . . . . 21 | 6.2.2. TEEP Broker Distribution . . . . . . . . . . . . . . 22 | |||
6.2.3. Number of TEEP Brokers . . . . . . . . . . . . . . . 21 | ||||
7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 7. Attestation . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
7.1. Information Required in TEEP Claims . . . . . . . . . . . 23 | 7.1. Information Required in TEEP Claims . . . . . . . . . . . 24 | |||
8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 24 | 8. Algorithm and Attestation Agility . . . . . . . . . . . . . . 24 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | |||
9.1. TA Trust Check at TEE . . . . . . . . . . . . . . . . . . 25 | 9.1. Broker Trust Model . . . . . . . . . . . . . . . . . . . 25 | |||
9.2. One TA Multiple SP Case . . . . . . . . . . . . . . . . . 25 | 9.2. Data Protection at TAM and TEE . . . . . . . . . . . . . 25 | |||
9.3. Broker Trust Model . . . . . . . . . . . . . . . . . . . 25 | 9.3. Compromised REE . . . . . . . . . . . . . . . . . . . . . 25 | |||
9.4. Data Protection at TAM and TEE . . . . . . . . . . . . . 25 | 9.4. Compromised CA . . . . . . . . . . . . . . . . . . . . . 26 | |||
9.5. Compromised CA . . . . . . . . . . . . . . . . . . . . . 26 | 9.5. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 26 | |||
9.6. Compromised TAM . . . . . . . . . . . . . . . . . . . . . 26 | 9.6. Malicious TA Removal . . . . . . . . . . . . . . . . . . 26 | |||
9.7. Certificate Renewal . . . . . . . . . . . . . . . . . . . 26 | 9.7. Certificate Renewal . . . . . . . . . . . . . . . . . . . 27 | |||
9.8. Keeping Secrets from the TAM . . . . . . . . . . . . . . 26 | 9.8. Keeping Secrets from the TAM . . . . . . . . . . . . . . 27 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 | |||
11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 27 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 | |||
13. Informative References . . . . . . . . . . . . . . . . . . . 27 | 13. Informative References . . . . . . . . . . . . . . . . . . . 28 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
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 increase 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 | |||
execute applications in a protected environment that enforces that | execute applications in a protected environment that enforces that | |||
only authorized code can execute with that environment, and that any | only authorized code can execute within that environment, and that | |||
data used by such code cannot be read or tampered with by any code | any data used by such code cannot be read or tampered with by any | |||
outside that environment, including a commodity operating system (if | code outside that environment, including by a commodity operating | |||
present). | system (if present). | |||
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 is referred to as an | while an application running outside any TEE is referred to as an | |||
Untrusted Application (UA). | Untrusted Application. | |||
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. | |||
But not all TEEs are the same, 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 developers and service providers interacting | To simplify the life of TA developers interacting with TAs in a TEE, | |||
with TAs in a TEE, an interoperable protocol for managing TAs running | an interoperable protocol for managing TAs running in different TEEs | |||
in different TEEs of various devices is needed. In this TEE | of various devices is needed. In this TEE ecosystem, there often | |||
ecosystem, there often arises a need for an external trusted party to | arises a need for an external trusted party to verify the identity, | |||
verify the identity, claims, and rights of Service Providers (SP), | claims, and rights of TA developers, devices, and their TEEs. This | |||
devices, and their TEEs. This trusted third party is the Trusted | trusted third party is the Trusted Application Manager (TAM). | |||
Application Manager (TAM). | ||||
The Trusted Execution Provisioning (TEEP) protocol addresses the | The Trusted Execution Environment Provisioning (TEEP) protocol | |||
following problems: | addresses the following problems: | |||
- A Service Provider (SP) intending to provide services through a TA | - An installer of an Untrusted Application that depends on a given | |||
to users of a device needs to determine security-relevant | TA wants to request installation of that TA in the device's TEE so | |||
information of a device before provisioning their TA to the TEE | that the Untrusted Application can complete, but the TEE needs to | |||
verify whether such a TA is actually authorized to run in the TEE | ||||
and consume potentially scarce TEE resources. | ||||
- A TA developer providing a TA whose code itself is considered | ||||
confidential wants to determine security-relevant information of a | ||||
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 by a particular TA. | security protections required. | |||
- A TEE in a device needs to determine whether a Service Provider | - A TEE in a device wants to determine whether an entity that wants | |||
(SP) that wants to manage a TA in the device is authorized to | to manage a TA in the device is authorized to manage TAs in the | |||
manage TAs in the TEE, and what TAs the SP is permitted to manage. | TEE, and what TAs the entity is permitted to manage. | |||
- A Service Provider (SP) must be able to determine if a TA exists | - A TAM (e.g., operated by a device administrator) wants to | |||
(is installed) on a device (in the TEE), and if not, install the | determine if a TA exists (is installed) on a device (in the TEE), | |||
TA in the TEE. | and if not, install the TA in the TEE. | |||
- A Service Provider (SP) must be able to check whether a TA in a | - A TAM wants to check whether a TA in a device's TEE is the most | |||
device's TEE is the most up-to-date version, and if not, update | up-to-date version, and if not, update the TA in the TEE. | |||
the TA in the TEE. | ||||
- A Service Provider (SP) must be able to remove a TA in a device's | - A TA developer wants to remove a confidential TA from a device's | |||
TEE if the SP is no longer offering such services or the services | TEE if the TA developer is no longer offering such TAs or the TAs | |||
are being revoked from a particular user (or device). For | are being revoked from a particular user (or device). For | |||
example, if a subscription or contract for a particular service | example, if a subscription or contract for a particular service | |||
has expired, or a payment by the user has not been completed or | has expired, or a payment by the user has not been completed or | |||
has been rescinded. | has been rescinded. | |||
- A Service Provider (SP) must be able to define the relationship | - A TA developer wants to define the relationship between | |||
between cooperating TAs under the SP's control, and specify | cooperating TAs under the TA developer's control, and specify | |||
whether the TAs can communicate, share data, and/or share key | whether the TAs can communicate, share data, and/or share key | |||
material. | material. | |||
Note: The Service Provider requires the help of a TAM to provision | Note: The TA developer requires the help of a TAM to provision the | |||
the Trusted Applications to remote devices and the TEEP protocol | Trusted Applications to remote devices and the TEEP protocol | |||
exchanges messages between a Trusted Application Manager (TAM) and a | exchanges messages between a TAM and a TEEP Agent via a TEEP Broker. | |||
TEEP Agent via a TEEP Broker. | ||||
2. Terminology | 2. Terminology | |||
The following terms are used: | The following terms are used: | |||
- Untrusted Application: An application running in a Rich Execution | ||||
Environment, such as an Android, Windows, or iOS application. | ||||
- Trusted Application Manager (TAM): An entity that manages Trusted | ||||
Applications (TAs) running in different TEEs of various devices. | ||||
- Device: A physical piece of hardware that hosts one or more TEEs, | - Device: A physical piece of hardware that hosts one or more TEEs, | |||
often along with a Rich Execution Environment. A Device contains | often along with a Rich Execution Environment. A device contains | |||
a default list of Trust Anchors that identify entities (e.g., | a default list of Trust Anchors that identify entities (e.g., | |||
TAMs) that are trusted by the Device. This list is normally set | TAMs) that are trusted by the device. This list is normally set | |||
by the Device Manufacturer, and may be governed by the Device's | by the device manufacturer, and may be governed by the device's | |||
network carrier. The list of Trust Anchors is normally modifiable | network carrier when it is a mobile device. The list of Trust | |||
by the Device's owner or Device Administrator. However the Device | Anchors is normally modifiable by the device's owner or Device | |||
manufacturer and network carrier may restrict some modifications, | Administrator. However the device manufacturer or network carrier | |||
for example, by not allowing the manufacturer or carrier's Trust | (in the mobile device case) may restrict some modifications, for | |||
example, by not allowing the manufacturer or carrier's Trust | ||||
Anchor to be removed or disabled. | Anchor to be removed or disabled. | |||
- Rich Execution Environment (REE): An environment that is provided | - Device Administrator: An entity that is responsible for | |||
and governed by a typical OS (e.g., Linux, Windows, Android, iOS), | administration of a device, which could be the device owner. A | |||
potentially in conjunction with other supporting operating systems | Device Administrator has privileges on the device to install and | |||
and hypervisors; it is outside of any TEE. This environment and | remove Untrusted Applications and TAs, approve or reject Trust | |||
applications running on it are considered untrusted. | Anchors, and approve or reject TA developers, among possibly other | |||
privileges on the device. A Device Administrator can manage the | ||||
list of allowed TAMs by modifying the list of Trust Anchors on the | ||||
device. Although a Device Administrator may have privileges and | ||||
device-specific controls to locally administer a device, the | ||||
Device Administrator may choose to remotely administer a device | ||||
through a TAM. | ||||
- Service Provider (SP): An entity that wishes to provide a service | - Device Owner: A device is always owned by someone. In some cases, | |||
on Devices that requires the use of one or more Trusted | it is common for the (primary) device user to also own the device, | |||
Applications. | making the device user/owner also the Device Administrator. In | |||
enterprise environments it is more common for the enterprise to | ||||
own the device, and any device user has no or limited | ||||
administration rights. In this case, the enterprise appoints a | ||||
Device Administrator that is not the device owner. | ||||
- Device User: A human being that uses a device. Many devices have | - Device User: A human being that uses a device. Many devices have | |||
a single device user. Some devices have a primary device user | a single device user. Some devices have a primary device user | |||
with other human beings as secondary device users (e.g., parent | with other human beings as secondary device users (e.g., parent | |||
allowing children to use their tablet or laptop). Other devices | allowing children to use their tablet or laptop). Other devices | |||
are not used by a human being and hence have no device user. | are not used by a human being and hence have no device user. | |||
Relates to Device Owner and Device Administrator. | Relates to Device Owner and Device Administrator. | |||
- Device Owner: A device is always owned by someone. In some cases, | - Rich Execution Environment (REE): An environment that is provided | |||
it is common for the (primary) device user to also own the device, | and governed by a typical OS (e.g., Linux, Windows, Android, iOS), | |||
making the device user/owner also the device administrator. In | potentially in conjunction with other supporting operating systems | |||
enterprise environments it is more common for the enterprise to | and hypervisors; it is outside of any TEE. This environment and | |||
own the device, and any device user has no or limited | applications running on it are considered untrusted (or more | |||
administration rights. In this case, the enterprise appoints a | precisely, less trusted than the TEE). | |||
device administrator that is not the device owner. | ||||
- Device Administrator (DA): An entity that is responsible for | ||||
administration of a Device, which could be the device owner. A | ||||
Device Administrator has privileges on the Device to install and | ||||
remove applications and TAs, approve or reject Trust Anchors, and | ||||
approve or reject Service Providers, among possibly other | ||||
privileges on the Device. A Device Administrator can manage the | ||||
list of allowed TAMs by modifying the list of Trust Anchors on the | ||||
Device. Although a Device Administrator may have privileges and | ||||
Device-specific controls to locally administer a device, the | ||||
Device Administrator may choose to remotely administrate a device | ||||
through a TAM. | ||||
- 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-manifest], "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 along with additional | |||
data if necessary such as its public key algorithm and parameters. | data if necessary such as its public key algorithm and parameters. | |||
skipping to change at page 6, line 45 ¶ | skipping to change at page 6, line 41 ¶ | |||
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-manifest], 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 component that runs in a | - Trusted Application (TA): An application component that runs in a | |||
TEE. | TEE. | |||
- Trusted Application (TA) Developer: An entity that wishes to | ||||
provide functionality on devices that requires the use of one or | ||||
more Trusted Applications. | ||||
- Trusted Application Manager (TAM): An entity that manages Trusted | ||||
Applications (TAs) running in TEEs of various devices. | ||||
- 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 a Rich Execution | ||||
Environment. | ||||
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 about the hosting device. Payments initiated from a mobile | trust about the hosting device. Payments initiated from a mobile | |||
device can use a Trusted Application to provide strong identification | device can use a Trusted Application to provide strong identification | |||
and proof of transaction. | and proof of transaction. | |||
For a mobile payment application, some biometric identification | For a mobile payment application, some biometric identification | |||
skipping to change at page 7, line 49 ¶ | skipping to change at page 8, line 12 ¶ | |||
such as authentication credentials in the device. A TEE can be the | such as authentication credentials in the device. A TEE can be the | |||
best way to implement such IoT security functions. | best way to implement such IoT security functions. | |||
3.4. Confidential Cloud Computing | 3.4. Confidential Cloud Computing | |||
A tenant can store sensitive data in a TEE in a cloud computing | A tenant can store sensitive data in a TEE in a cloud computing | |||
server such that only the tenant can access the data, preventing the | server such that only the tenant can access the data, preventing the | |||
cloud hosting provider from accessing the data. A tenant can run TAs | cloud hosting provider from accessing the data. A tenant can run TAs | |||
inside a server TEE for secure operation and enhanced data security. | inside a server TEE for secure operation and enhanced data security. | |||
This provides benefits not only to tenants with better data security | This provides benefits not only to tenants with better data security | |||
but also to cloud hosting provider for reduced liability and | but also to cloud hosting providers for reduced liability and | |||
increased cloud adoption. | increased cloud adoption. | |||
4. Architecture | 4. Architecture | |||
4.1. System Components | 4.1. System Components | |||
The following are the main components in the system. Full | Figure 1 shows the main components in a typical device with an REE. | |||
descriptions of components not previously defined are provided below. | Full descriptions of components not previously defined are provided | |||
Interactions of all components are further explained in the following | below. Interactions of all components are further explained in the | |||
paragraphs. | following paragraphs. | |||
+-------------------------------------------+ | +-------------------------------------------+ | |||
| Device | | | Device | | |||
| +--------+ | Service Provider | | +--------+ | TA Developer | |||
| +-------------+ | |----------+ | | | +-------------+ | |-----------+ | | |||
| | TEE-1 | | TEEP |---------+| | | | | TEE-1 | | TEEP |---------+ | | | |||
| | +--------+ | +----| Broker | | || +--------+ | | | | +--------+ | +----| Broker | | | | +--------+ | | |||
| | | TEEP | | | | |<---+ | |+-->| |<-+ | | | | TEEP | | | | |<---+ | | +->| |<-+ | |||
| | | Agent |<----+ | | | | | +-| TAM-1 | | | | | Agent |<----+ | | | | | +-| TAM-1 | | |||
| | +--------+ | | |<-+ | | +->| | |<-+ | | | +--------+ | | |<-+ | | +->| | |<-+ | |||
| | | +--------+ | | | | +--------+ | | | | | +--------+ | | | | +--------+ | | |||
| | +---+ +---+ | | | | | TAM-2 | | | | | +---+ +---+ | | | | | TAM-2 | | | |||
| +-->|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 | |||
- Service Providers (SP) and Device Administrators (DA) utilize the | - TA developers and Device Administrators utilize the services of a | |||
services of a TAM to manage TAs on Devices. SPs do not directly | TAM to manage TAs on devices. TA developers do not directly | |||
interact with devices. DAs may elect to use a TAM for remote | interact with devices. Device Administators may elect to use a | |||
administration of TAs instead of managing each device directly. | TAM for remote administration of 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 TA's on behalf of | performing lifecycle management activity on TAs on behalf of TA | |||
Service Providers and Device Administrators. This includes | developers and Device Administrators. This includes creation and | |||
creation and deletion of TA's, and may include, for example, over- | deletion of TAs, and may include, for example, over-the-air | |||
the-air updates to keep an SP's TAs up-to-date and clean up when a | updates to keep TAs up-to-date and clean up when a version should | |||
version should be removed. TAMs may provide services that make it | be removed. TAMs may provide services that make it easier for TA | |||
easier for SPs or DAs to use the TAM's service to manage multiple | developers or Device Administators to use the TAM's service to | |||
devices, although that is not required of a TAM. | manage multiple devices, although that is not required of a TAM. | |||
The TAM performs its management of TA's through an interaction | The TAM performs its management of TAs on the device through | |||
with a Device's TEEP Broker. As shown in Figure 1, the TAM cannot | interactions with a device's TEEP Broker, which relays messages | |||
directly contact a TEEP Agent, but must wait for the TEEP Broker | between a TAM and a TEEP Agent running inside the TEE. As shown | |||
to contact the TAM requesting a particular service. This | in Figure 1, the TAM cannot directly contact a TEEP Agent, but | |||
architecture is intentional in order to accommodate network and | must wait for the TEEP Broker to contact the TAM requesting a | |||
application firewalls that normally protect user and enterprise | particular service. This architecture is intentional in order to | |||
devices from arbitrary connections from external network entities. | accommodate network and application firewalls that normally | |||
protect user and enterprise devices from arbitrary connections | ||||
from external network entities. | ||||
A TAM may be publicly available for use by many SPs, or a TAM may | A TAM may be publicly available for use by many TA developers, or | |||
be private, and accessible by only one or a limited number of SPs. | a TAM may be private, and accessible by only one or a limited | |||
It is expected that manufacturers and carriers will run their own | number of TA developers. It is expected that many manufacturers | |||
private TAM. Another example of a private TAM is a TAM running as | and network carriers will run their own private TAM. | |||
a Software-as-a-Service (SaaS) within an SP. | ||||
A SP or Device Administrator chooses a particular TAM based on | A TA developer or Device Administrator chooses a particular TAM | |||
whether the TAM is trusted by a Device or set of Devices. The TAM | based on whether the TAM is trusted by a device or set of devices. | |||
is trusted by a device if the TAM's public key is an authorized | The TAM is trusted by a device if the TAM's public key is, or | |||
Trust Anchor in the Device. A SP or Device Administrator may run | chains up to, an authorized Trust Anchor in the device. A TA | |||
their own TAM, however the Devices they wish to manage must | developer or Device Administrator may run their own TAM, but the | |||
include this TAM's pubic key in the Trust Anchor list. | devices they wish to manage must include this TAM's public key/ | |||
certificate, or a certificate it chains up to, in the Trust Anchor | ||||
list. | ||||
A SP or Device Administrator is free to utilize multiple TAMs. | A TA developer or Device Administrator is free to utilize multiple | |||
This may be required for a SP to manage multiple different types | TAMs. This may be required for a TA developer to manage multiple | |||
of devices from different manufacturers, or devices on different | different types of devices from different manufacturers, or to | |||
carriers, since the Trust Anchor list on these different devices | manage mobile devices on different network carriers, since the | |||
may contain different TAMs. A Device Administrator may be able to | Trust Anchor list on these different devices may contain different | |||
add their own TAM's public key or certificate to the Trust Anchor | TAMs. A Device Administrator may be able to add their own TAM's | |||
list on all their devices, overcoming this limitation. | public key or certificate to the Trust Anchor list 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 Devices | it must have its public key or certificate installed in a device's | |||
Trust Anchor list. A TAM may set up a relationship with device | Trust Anchor list. A TAM may set up a relationship with device | |||
manufacturers or carriers to have them install the TAM's keys in | manufacturers or network carriers to have them install the TAM's | |||
their device's Trust Anchor list. Alternatively, a TAM may | keys in their device's Trust Anchor list. Alternatively, a TAM | |||
publish its certificate and allow Device Administrators to install | may publish its certificate and allow Device Administrators to | |||
the TAM's certificate in their devices as an after-market-action. | install the TAM's certificate in their devices as an after-market- | |||
action. | ||||
- TEEP Broker: The TEEP Broker is an application component running | - TEEP Broker: A TEEP Broker is an application component running in | |||
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. The 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. | returning the TEE's responses to the TAM. In devices with no REE, | |||
the TEEP Broker would be absent and instead the TEEP 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 that are relayed via a TEEP Broker | TEE that receives TAM requests (typically relayed via a TEEP | |||
that runs in an REE. A TEEP Agent in the TEE may parse requests | Broker that runs in an REE). A TEEP Agent in the TEE may parse | |||
or forward requests to other processing modules in a TEE, which is | requests or forward requests to other processing modules in a TEE, | |||
up to a TEE provider's implementation. A response message | which is up to a TEE provider's implementation. A response | |||
corresponding to a TAM request is sent by a TEEP Agent back to a | message corresponding to a TAM request is sent back to the TAM, | |||
TEEP Broker. | again typically relayed via a TEEP Broker. | |||
- Certification Authority (CA): Certificate-based credentials used | - Certification Authority (CA): Certificate-based credentials used | |||
for authenticating a device, a TAM and an SP. A device embeds a | for authenticating a device, a TAM and a TA developer. A device | |||
list of root certificates (Trust Anchors), from trusted CAs that a | embeds a list of root certificates (Trust Anchors), from trusted | |||
TAM will be validated against. A TAM will remotely attest a | CAs that a TAM will be validated against. A TAM will remotely | |||
device by checking whether a device comes with a certificate from | attest a device by checking whether a device comes with a | |||
a CA that the TAM trusts. The CAs do not need to be the same; | certificate from a CA that the TAM trusts. The CAs do not need to | |||
different CAs can be chosen by each TAM, and different device CAs | be the same; different CAs can be chosen by each TAM, and | |||
can be used by different device manufacturers. | different device CAs can be used by different device | |||
manufacturers. | ||||
4.2. Different Renditions of TEEP Architecture | 4.2. Multiple TEEs in a Device | |||
There is nothing prohibiting a device from implementing multiple | Some devices might implement multiple TEEs. In these cases, there | |||
TEEs. In addition, some TEEs (for example, SGX) present themselves | might be one shared TEEP Broker that interacts with all the TEEs in | |||
the device. However, some TEEs (for example, SGX) present themselves | ||||
as separate containers within memory without a controlling manager | as separate containers within memory without a controlling manager | |||
within the TEE. In these cases, the Rich Execution Environment hosts | within the TEE. As such, there might be multiple TEEP Brokers in the | |||
multiple TEEP brokers, where each Broker manages a particular TEE or | Rich Execution Environment, where each TEEP Broker communicates with | |||
set of TEEs. Enumeration and access to the appropriate TEEP Broker | one or more TEEs associated with it. | |||
is up to the Rich Execution Environment and the Untrusted | ||||
Applications. Verification that the correct TA has been reached then | It is up to the Rich Execution Environment and the Untrusted | |||
becomes a matter of properly verifying TA attestations, which are | Applications how they select the correct TEEP Broker. Verification | |||
unforgeable. The multiple TEEP Broker approach is shown in the | that the correct TA has been reached then becomes a matter of | |||
diagram below. For brevity, TEEP Broker 2 is shown interacting with | properly verifying TA attestations, which are unforgeable. | |||
only one TAM and UA, but no such limitation is intended to be implied | ||||
in the architecture. | The multiple TEEP Broker approach is shown in the diagram below. For | |||
brevity, TEEP Broker 2 is shown interacting with only one TAM and | ||||
Untrusted Application and only one TEE, but no such limitations are | ||||
intended to be implied in the architecture. | ||||
+-------------------------------------------+ | +-------------------------------------------+ | |||
| Device | | | Device | | |||
| +--------+ | Service Provider | | | TA Developer | |||
| | |----------+ | | | +-------------+ | | | |||
| +-------------+ | TEEP |---------+| | | | | TEE-1 | | | | |||
| | TEE-1 | +---| Broker | | || +--------+ | | | | +-------+ | +--------+ | +--------+ | | |||
| | | | | 1 |<---+ | |+-->| |<-+ | | | | TEEP | | | TEEP |------------->| |<-+ | |||
| | +-------+ | | | | | | | | | | | | | Agent |<----------| Broker | | | | | |||
| | | TEEP | | | | | | | | | | | | | | 1 | | | 1 |---------+ | | | |||
| | | Agent |<------+ | | | | | | | | | | +-------+ | | | | | | | | |||
| | | 1 | | | | | | | | | | | | | | |<---+ | | | | | |||
| | +-------+ | | | | | | | | | ||||
| | | | | | | | | | | ||||
| | +---+ +---+ | | | | | | +-| TAM-1 | | | | +---+ +---+ | | | | | | +-| TAM-1 | | |||
| | |TA1| |TA2| | | |<-+ | | +->| | |<-+ | | | |TA1| |TA2| | | |<-+ | | +->| | |<-+ | |||
| +-->| | | |<---+ +--------+ | | | | +--------+ | | | +-->| | | |<---+ +--------+ | | | | +--------+ | | |||
| | | +---+ +---+ | | | | | | TAM-2 | | | | | | +---+ +---+ | | | | | | TAM-2 | | | |||
| | | | | +-------+ | | | +--------+ | | | | | | | +-------+ | | | +--------+ | | |||
| | +-------------+ +-----| App-2 |--+ | | ^ | | | | +-------------+ +-----| App-2 |--+ | | ^ | | |||
| | +-------+ | | | | Device | | | +-------+ | | | | Device | |||
| +--------------------| App-1 | | | | | Administrator | | +--------------------| App-1 | | | | | Administrator | |||
| +------| | | | | | | | +------| | | | | | | |||
| +-----------|-+ | |---+ | | | | | +-----------|-+ | |---+ | | | | |||
| | TEE-2 | | | |--------+ | | | | | TEE-2 | | | |--------+ | | | |||
| | +------+ | | | |------+ | | | | | +------+ | | | |------+ | | | |||
| | | TEEP | | | +-------+ | | | | | | | TEEP | | | +-------+ | | | | |||
| | | Agent|<-----+ | | | | | | | Agent|<-----+ | | | | |||
| | | 2 | | | | | | | | | | | 2 | | | | | | | | |||
| | +------+ | | | | | | | | | +------+ | | | | | | | |||
| | | | | | | | | | | | | | | | | | |||
| | +---+ | | | | | | | | | +---+ | | | | | | | |||
| | |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 | |||
TA's in TEE-1, and TEEP Broker 2 controls interactions with the TA's | TAs in TEE-1, and TEEP Broker 2 controls interactions with the TAs in | |||
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 TEE's 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 TAs or | no need for TEEP Brokers to share information on installed TAs or | |||
resource usage. However, the architecture guarantees that the TAM | resource usage. | |||
will receive all the relevant information from the TEEP Broker to | ||||
which it communicates. | ||||
4.3. Multiple TAMs and Relationship to TAs | 4.3. Multiple TAMs and Relationship to TAs | |||
As shown in Figure 2, the TEEP Broker provides connections from the | As shown in Figure 2, a TEEP Broker provides communication between | |||
TEE and the Untrusted Application to one or more TAMs. The selection | one or more TEEP Agents and one or more TAMs. The selection of which | |||
of which TAM to communicate with is dependent on information from the | TAM to communicate with might be made with or without input from an | |||
Untrusted Application and is directly related to the TA. | Untrusted Application, but is ultimately the decision of a TEEP | |||
Agent. | ||||
When a SP offers a service which requires a TA, the SP associates | Each TA is digitally signed, protecting its integrity, and linking | |||
that service with a specific TA. The TA itself is digitally signed, | the TA back to the signer. The signer is usually the TA software | |||
protecting its integrity, but the signature also links the TA back to | author, but in some cases might be another party that the TA software | |||
the signer. The signer is usually the SP, but in some cases may be | author trusts, or a party to whom the code has been licensed (in | |||
another party that the SP trusts. The SP selects one or more TAMs | which case the same code might be signed by multiple licensees and | |||
through which to offer their service, and communicates the | distributed as if it were different TAs). | |||
information of the service and the specific Untrusted Applications | ||||
and TAs to the TAM. | ||||
The SP chooses TAMs based upon the markets into which the TAM can | A TA author or signer selects one or more TAMs through which to offer | |||
provide access. There may be TAMs that provide services to specific | their TA(s), and communicates the TA(s) to the TAM. In this | |||
types of mobile devices, or mobile device operating systems, or | document, we use the term "TA developer" to refer to the entity that | |||
specific geographical regions or network carriers. A SP may be | selects a TAM and publishes a signed TA to it, independent of whether | |||
the publishing entity is the TA software author or the signer or | ||||
both. | ||||
The TA developer chooses TAMs based upon the markets into which the | ||||
TAM can provide access. There may be TAMs that provide services to | ||||
specific types of devices, or device operating systems, or specific | ||||
geographical regions or network carriers. A TA developer may be | ||||
motivated to utilize multiple TAMs for its service in order to | motivated to utilize multiple TAMs for its service in order to | |||
maximize market penetration and availability on multiple types of | maximize market penetration and availability on multiple types of | |||
devices. This likely means that the same service will be available | devices. This likely means that the same TA will be available | |||
through multiple TAMs. | through multiple TAMs. | |||
When the SP publishes the Untrusted Application to an app store or | When the developer of an Untrusted Application that depends on a TA | |||
other app repositories, the SP binds the Untrusted Application with a | publishes the Untrusted Application to an app store or other app | |||
manifest that identifies what TAMs can be contacted for the TA. In | repository, the developer optionally binds the Untrusted Application | |||
some situations, an SP may use only a single TAM - this is likely the | with a manifest that identifies what TAMs can be contacted for the | |||
case for enterprise applications or SPs serving a closed community. | TA. In some situations, a TA may only be available via a single TAM | |||
For broad public apps, there will likely be multiple TAMs in the | - this is likely the case for enterprise applications or TA | |||
manifest - one servicing one brand of mobile device and another | developers serving a closed community. For broad public apps, there | |||
servicing a different manufacturer, etc. Because different devices | will likely be multiple TAMs in the manifest - one servicing one | |||
and different manufacturers trust different TAMs, the manifest will | brand of mobile device and another servicing a different | |||
include different TAMs that support this SP's Untrusted Application | manufacturer, etc. Because different devices and different | |||
and TA. Multiple TAMs allow the SP to provide their service and this | manufacturers trust different TAMs, the manifest can include multiple | |||
app (and TA) to multiple different devices. | TAMs that support the required TA. | |||
When a TEEP Broker receives a request from an Untrusted Application | When a TEEP Broker receives a request from an Untrusted Application | |||
to install a TA, a list of TAM URIs may be provided for that TA, and | to install a TA, a list of TAM URIs may be provided for that TA, and | |||
the request is passed to the TEEP Agent. If the TEEP Agent decides | the request is passed to the TEEP Agent. If the TEEP Agent decides | |||
that the TA needs to be installed, the TEEP Agent selects a single | that the TA needs to be installed, the TEEP Agent selects a single | |||
TAM URI that is consistent with the list of trusted TAMs provisioned | TAM URI that is consistent with the list of trusted TAMs provisioned | |||
on the device invokes the HTTP transport for TEEP to connect to the | on the device, invokes the HTTP transport for TEEP to connect to the | |||
TAM URI and begins a TEEP protocol exchange. When the TEEP Agent | TAM URI, and begins a TEEP protocol exchange. When the TEEP Agent | |||
subsequently receives the TA to install and the TA's manifest | subsequently receives the TA to install and the TA's manifest | |||
indicates dependencies on any other trusted components, each | indicates dependencies on any other trusted components, each | |||
dependency can include a list of TAM URIs for the relevant | dependency can include a list of TAM URIs for the relevant | |||
dependency. If such dependencies exist that are prerequisites to | dependency. If such dependencies exist that are prerequisites to | |||
install the TA, then the TEEP Agent recursively follows the same | install the TA, then the TEEP Agent recursively follows the same | |||
procedure for each dependency that needs to be installed or updated, | procedure for each dependency that needs to be installed or updated, | |||
including selecting a TAM URI that is consistent with the list of | including selecting a TAM URI that is consistent with the list of | |||
trusted TAMs provisioned on the device, and beginning a TEEP | trusted TAMs provisioned on the device, and beginning a TEEP | |||
exchange. If multiple TAM URIs are considered trusted, only one | exchange. If multiple TAM URIs are considered trusted, only one | |||
needs to be contacted and they can be attempted in some order until | needs to be contacted and they can be attempted in some order until | |||
one responds. | 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 the TA as well as dependencies on other | for expressing how to install a TA, as well as any dependencies on | |||
TEE components and versions. That is, dependencies from TAs on other | other TEE components and versions. That is, dependencies from TAs on | |||
TEE components can be expressed in a SUIT manifest, including | other TEE components can be expressed in a SUIT manifest, including | |||
dependencies on any other TAs, or trusted OS code (if any), or | dependencies on any other TAs, or trusted OS code (if any), or | |||
trusted firmware. Installation steps can also be expressed in a SUIT | trusted firmware. Installation steps can also be expressed in a SUIT | |||
manifest. | manifest. | |||
For example, TEE's compliant with Global Platform may have a notion | For example, TEEs compliant with GlobalPlatform may have a notion of | |||
of a "security domain" (which is a grouping of one or more TAs | a "security domain" (which is a grouping of one or more TAs installed | |||
installed on a device, that can share information within such a | on a device, that can share information within such a group) that | |||
group) that must be created and into which one or more TAs can then | must be created and into which one or more TAs can then be installed. | |||
be installed. It is thus up to the SUIT manifest to express a | It is thus up to the SUIT manifest to express a dependency on having | |||
dependency on having such a security domain existing or being created | such a security domain existing or being created first, as | |||
first, as appropriate. | appropriate. | |||
Updating a TA may cause compatibility issues with any Untrusted | Updating a TA may cause compatibility issues with any Untrusted | |||
Applications or other components that depend on the updated TA, just | Applications or other components that depend on the updated TA, just | |||
like updating the OS or a shared library could impact an Untrusted | like updating the OS or a shared library could impact an Untrusted | |||
Application. Thus, an implementation needs to take into account such | Application. Thus, an implementation needs to take into account such | |||
issues. | issues. | |||
4.4. Untrusted Apps, Trusted Apps, and Personalization Data | 4.4. Untrusted Apps, Trusted Apps, and Personalization Data | |||
In TEEP, there is an explicit relationship and dependence between the | In TEEP, there is an explicit relationship and dependence between an | |||
Untrusted Application in the REE and one or more TAs in the TEE, as | Untrusted Application in a REE and one or more TAs in a TEE, as shown | |||
shown in Figure 2. For most purposes, an Untrusted Application that | in Figure 2. For most purposes, an Untrusted Application that uses | |||
uses one or more TA's in a TEE appears no different from any other | 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 TA's 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 | |||
the TEE. In addition to the Untrusted Application and TA, the TA | a TEE. In addition to the Untrusted Application and TA(s), the TA(s) | |||
and/or TEE may require some additional data to personalize the TA to | and/or TEE may require some additional data to personalize the TA to | |||
the service provider or the device or a user. This personalization | the TA developer or the device or a user. This personalization data | |||
data is dependent on the TEE, the TA and the SP; an example of | is dependent on the TEE, the TA, and the TA developer; an example of | |||
personalization data might be a secret symmetric key used by the TA | personalization data might be a secret symmetric key used by the TA | |||
to communicate with the SP. The personalization data must be | to communicate with the TA developer. The personalization data must | |||
encrypted to preserve the confidentiality of potentially sensitive | be encrypted to preserve the confidentiality of potentially sensitive | |||
data contained within it. Other than this requirement to support | data contained within it. Other than this requirement to support | |||
confidentiality, TEEP place no limitations or requirements on the | confidentiality, the TEEP architecture places no limitations or | |||
personalization data. | requirements on the personalization data. | |||
There are three possible cases for bundling of the Untrusted | There are three possible cases for bundling of an Untrusted | |||
Application, TA, and personalization data: | Application, TA(s), and personalization data: | |||
1. The Untrusted Application, TA, and personalization data are all | 1. The Untrusted Application, TA(s), and personalization data are | |||
bundled together in a single package by the SP and provided to | all bundled together in a single package by a TA developer and | |||
the TEEP Broker through the TAM. | provided to the TEEP Broker through the TAM. | |||
2. The Untrusted Application and the TA 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 SP's TAM. | the TA developer's TAM. | |||
3. All components are independent. The Untrusted Application is | 3. All components are independent. The Untrusted Application is | |||
installed through some independent or device-specific mechanism, | installed through some independent or device-specific mechanism, | |||
and the TAM provides the TA and personalization data from the SP. | and the TAM provides the TA and personalization data from the TA | |||
Delivery of the TA and personalization data may be combined or | developer. Delivery of the TA and personalization data may be | |||
separate. | combined or separate. | |||
The TEEP protocol treats the TA, any dependencies the TA has, and | The TEEP protocol treats each TA, any dependencies the TA has, and | |||
personalization data as separate components with separate | personalization data as separate 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 {{I- | manifest might contain or reference multiple binaries (see | |||
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 bianries | performed inside the TEE, such as decryption of private TA binaries | |||
or personalization data. | or personalization data. | |||
4.5. Examples of Application Delivery Mechanisms in Existing TEEs | 4.4.1. Examples of Application Delivery Mechanisms in Existing TEEs | |||
In order to better understand these cases, it is helpful to review | In order to better understand these cases, it is helpful to review | |||
actual implementations of TEEs and their application delivery | actual implementations of TEEs and their application delivery | |||
mechanisms. | mechanisms. | |||
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 (Case 3). 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. In SGX, for Case 2 and Case 3, the personalization data is | |||
normally loaded into the SGX enclave (the TA) after the TA has | normally loaded into the SGX enclave (the TA) after the TA has | |||
started. Although Case 1 is possible with SGX, there are no | started. Although Case 1 is possible with SGX, 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 | to receive the encrypted binary, decrypt it, separate it into the | |||
three different elements, and then install all three. This | three different elements, and then install all three. This | |||
installation is complex, because the Untrusted Application decrypted | installation is complex because the Untrusted Application decrypted | |||
inside the TEE must be passed out of the TEE to an installer in the | inside the TEE must be passed out of the TEE to an installer in the | |||
REE which would install the Untrusted Application; this assumes that | REE which would install the Untrusted Application; this assumes that | |||
the Untrusted Application package includes the TA code also, since | the Untrusted Application package includes the TA code also, since | |||
otherwise there is a significant problem in getting the SGX enclave | otherwise there is a significant problem in getting the SGX enclave | |||
code (the TA) from the TEE, through the installer and into the | code (the TA) from the TEE, through the installer, and into the | |||
Untrusted Application in a trusted fashion. Finally, the | Untrusted Application in a trusted fashion. Finally, the | |||
personalization data would need to be sent out of the TEE (encrypted | personalization data would need to be sent out of the TEE (encrypted | |||
in an SGX encalve-to-enclave manner) to the REE's installation app, | in an SGX enclave-to-enclave manner) to the REE's installation app, | |||
which would pass this data to the installed Untrusted Application, | which would pass this data to the installed Untrusted Application, | |||
which would in turn send this data to the SGX enclave (TA). This | which would in turn send this data to the SGX enclave (TA). This | |||
complexity is due to the fact that each SGX enclave is separate and | complexity is due to the fact that each SGX enclave is separate and | |||
does not have direct communication to other SGX enclaves. | does not have direct communication to other SGX enclaves. | |||
In Arm TrustZone for A- and R-class devices, the Untrusted | In Arm TrustZone for A- and R-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, where the trusted OS | TA is loaded by a trusted OS running in the TEE, where the trusted OS | |||
is separate from the OS in the REE. Thus Cases 2 and 3 are equally | is separate from the OS in the REE. Thus Cases 2 and 3 are equally | |||
applicable. In addition, it is possible for TAs to communicate with | applicable. In addition, it is possible for TAs to communicate with | |||
each other without involving the Untrusted Application, and so the | each other without involving any Untrusted Application, and so the | |||
complexity of Case 1 is lower than in the SGX example, and so Case 1 | complexity of Case 1 is lower than in the SGX example. Thus, Case 1 | |||
is possible as well though still more complex than Cases 2 and 3. | is possible as well, though still more complex than Cases 2 and 3. | |||
4.6. Entity Relations | 4.5. Entity Relations | |||
This architecture leverages asymmetric cryptography to authenticate a | This architecture leverages asymmetric cryptography to authenticate a | |||
device to a TAM. Additionally, a TEE in a device authenticates a TAM | device to a TAM. Additionally, a TEEP Agent in a device | |||
and TA signer. The provisioning of Trust Anchors to a device may be | authenticates a TAM. The provisioning of Trust Anchors to a device | |||
different from one use case to the other. A device administrator may | may be different from one use case to the other. A Device | |||
want to have the capability to control what TAs are allowed. A | Administrator may want to have the capability to control what TAs are | |||
device manufacturer enables verification of the TA signers and TAM | allowed. A device manufacturer enables verification of the TAM | |||
providers; it may embed a list of default Trust Anchors that the | providers and TA binary signers; it may embed a list of default Trust | |||
signer of an allowed TA's signer certificate should chain to. A | Anchors into the TEEP Agent and TEE for TAM trust verification and TA | |||
device administrator may choose to accept a subset of the allowed TAs | signer verification. | |||
via consent or action of downloading. | ||||
(App Developer) (App Store) (TAM) (Device with TEE) (CAs) | (App Developers) (App Store) (TAM) (Device with TEE) (CAs) | |||
| | | | | | | | | |||
| --> (Embedded TEE cert) <-- | | | | (Embedded TEE cert) <--| | |||
| | | | | | | | | |||
| <------------------------------ Get an app cert ----- | | | <--- Get an app cert -----------------------------------| | |||
| | <-- Get a TAM cert ------ | | | | | | | | |||
| | | | | <-- Get a TAM cert ---------| | |||
1. Build two apps: | | | | | | | |||
Untrusted Application | 1. Build two apps: | | | | | |||
TA | | | | | | |||
| | (a) Untrusted | | | | | |||
| | App - 2a. Supply --> | --- 3. Install ------> | | | |||
Untrusted Application -- 2a. --> | ----- 3. Install -------> | | | | | | | |||
TA ----------------- 2b. Supply ------> | 4. Messaging-->| | (b) TA -- 2b. Supply ----------> | 4. Messaging-->| | | |||
| | | | | | | | | | |||
Figure 3: Developer Experience | Figure 3: Developer Experience | |||
Note that Figure 3 shows the app developer as a TA signer and not the | Note that Figure 3 shows the TA developer as a TA signer. The TA | |||
SP. However, the App Developer is either closely associated with the | signer is either the same as the TA developer, or is a related entity | |||
SP or the SP delegates the signing authority to the app developer. | trusted to sign the developer's TAs. | |||
For the purpose of this document there is no difference between the | ||||
SP and the app developer. | ||||
Figure 3 shows an application developer building two applications: 1) | Figure 3 shows an example where the same developer builds two | |||
an Untrusted Application; 2) a TA that provides some security | applications: 1) an Untrusted Application; 2) a TA that provides some | |||
functions to be run inside a TEE. At step 2, the application | security functions to be run inside a TEE. At step 2, the TA | |||
developer uploads the Untrusted Application (2a) to an Application | developer uploads the Untrusted Application (2a) to an Application | |||
Store. The Untrusted Application may optionally bundle the TA | Store. The Untrusted Application may optionally bundle the TA | |||
binary. Meanwhile, the application developer may provide its TA to a | binary. Meanwhile, the TA developer may provide its TA to a TAM that | |||
TAM provider that will be managing the TA in various devices. 3. A | will be managing the TA in various devices. At step 3, a user will | |||
user will go to an Application Store to download the Untrusted | go to an Application Store to download the Untrusted Application. | |||
Application. The Untrusted Application will trigger TA installation | Since the Untrusted Application depends on the TA, installing the | |||
by initiating communication with a TAM. This is the step 4. The | Untrusted Application will trigger TA installation by initiating | |||
Untrusted Application will get messages from TAM, and interacts with | communication with a TAM. This is step 4. The TEEP Agent will | |||
device TEE via an Agent. | interact with TAM via a TEEP Broker that faciliates communications | |||
between a TAM and the TEEP Agent in TEE. | ||||
Some TA installation implementations might ask for a user's consent. | ||||
In other implementations, a Device Administrator might choose what | ||||
Untrusted Applications and related TAs to be installed. A user | ||||
consent flow is out of scope of the TEEP architecture. | ||||
The main components consist of a set of standard messages created by | The main components consist of a set of standard messages created by | |||
a TAM to deliver TA management commands to a device, and device | a TAM to deliver TA management commands to a device, and device | |||
attestation and response messages created by a TEE that responds to a | attestation and response messages created by a TEE that responds to a | |||
TAM's message. | TAM's message. | |||
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. Trusted | not available in TAs in today's TEE-powered devices. Consequently, | |||
Applications need to rely on a broker in the REE to interact with a | Trusted Applications generally rely on broker in the REE to provide | |||
TEE for network message exchanges. Consequently, a TAM generally | access to nnetwork functionality in the REE. A broker does not need | |||
communicates with an Untrusted Application about how it gets messages | to know the actual content of messages to facilitate such access. | |||
that originate from a TEE inside a device. Similarly, a TA or TEE | ||||
generally gets messages from a TAM via a TEEP Broker in this protocol | ||||
architecture, not directly from the network. | ||||
It is imperative to have an interoperable protocol to communicate | Similarly, since the TEEP Agent runs inside a TEE, the TEEP Agent | |||
with different TAMs and different TEEs in different devices. This is | generally relies on a TEEP Broker in the REE to provide network | |||
the role of the Broker, which is a software component that bridges | access, and relay TAM requests to the TEEP Agent and relay the | |||
communication between a TAM and a TEE. Furthermore the Broker | responses back to the TAM. | |||
communicates with a Agent inside a TEE that is responsible to process | ||||
TAM requests. The Broker in REE does not need to know the actual | ||||
content of messages except for the TEE routing information. | ||||
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. | delivering 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 an SP, TAM, or | they are stored. Each public/private key identifies a TA developer, | |||
TEE, and gets a certificate that chains up to some CA. A list of | TAM, or TEE, and gets a certificate that chains up to some CA. A | |||
trusted certificates is then used to check a presented certificate | list of trusted certificates is then used to check a presented | |||
against. | 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's private | originator's private key, such as that of a TAM or a TEE. In | |||
key. In addition to the keys shown in Figure 4, there may be | addition to the keys shown in Figure 4, there may be additional keys | |||
additional keys used for attestation. Refer to the RATS Architecture | used for attestation. Refer to the RATS Architecture | |||
for more discussion. | [I-D.ietf-rats-architecture] for more discussion. | |||
Cardinality & Location of | Cardinality & Location of | |||
Location of Private Key Corresponding | Location of Private Key Trust Anchor | |||
Purpose Private Key Signs CA Certs | Purpose Private Key Signs Store | |||
------------------ ----------- ------------- ------------- | ------------------ ----------- ------------- ------------- | |||
Authenticating TEE 1 per TEE TEEP responses TAM | Authenticating TEE 1 per TEE TEEP responses TAM | |||
Authenticating TAM 1 per TAM TEEP requests TEEP Agent | Authenticating TAM 1 per TAM TEEP requests TEEP Agent | |||
Code Signing 1 per SP TA binary TEE | Code Signing 1 per TA TA binary TEE | |||
developer | ||||
Figure 4: Keys | Figure 4: 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. | |||
The TEE key pair and certificate are used for authenticating the TEE | The TEE key pair and certificate are used for authenticating the TEE | |||
to a remote TAM. Often, the key pair is burned into the TEE by the | to a remote TAM. Often, the key pair is burned into the TEE by the | |||
TEE manufacturer and the key pair and its certificate are valid for | TEE manufacturer and the key pair and its certificate are valid for | |||
the expected lifetime of the TEE. A TAM provider is responsible for | the expected lifetime of the TEE. A TAM provider is responsible for | |||
configuring its TAM with the manufacturer certificates or CAs that | configuring the TAM's Trust Anchor Store with the manufacturer | |||
are used to sign TEE keys. | certificates or CAs that are used to sign TEE keys. This is | |||
discussed further in Section 5.3 below. | ||||
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. A TAM provider is responsible for acquiring a | a remote TEE. A TAM provider is responsible for acquiring a | |||
certificate from a CA that is trusted by the TEEs it manages. | certificate from a CA that is trusted by the TEEs it manages. This | |||
is discussed further in Section 5.1 below. | ||||
The SP key pair and certificate are used to sign TAs that the TEE | The TA developer key pair and certificate are used to sign TAs that | |||
will consider authorized to execute. TEEs must be configured with | the TEE will consider authorized to execute. TEEs must be configured | |||
the CAs that it considers authorized to sign TAs that it will | with the certificates or keys that it considers authorized to sign | |||
execute. | TAs that it will execute. This is discussed further in Section 5.2 | |||
below. | ||||
5.1. Trust Anchors in TEE | 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 CA certificates that sign various TAM certificates. The | |||
list is typically preloaded at manufacturing time, and can be updated | list is typically preloaded at manufacturing time, and can be updated | |||
using the TEEP protocol if the TEE has some form of "Trust Anchor | using the TEEP protocol if the TEE has some form of "Trust Anchor | |||
Manager TA" that has Trust Anchors in its configuration data. Thus, | Manager TA" that has Trust Anchors in its configuration data. Thus, | |||
Trust Anchors can be updated similar to updating the configuration | Trust Anchors can be updated similar to updating the configuration | |||
data for any other TA. | 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 authentic Trust Anchor list | update must maintain integrity where only an authentic Trust Anchor | |||
from a device manufacturer or a Device Administrator is accepted. | list from a device manufacturer or a Device Administrator is | |||
This calls for a complete lifecycle flow in authorizing who can make | accepted. Details are out of scope of the architecture and can be | |||
Trust Anchor update and whether a given Trust Anchor list are non- | addressed in a protocol document. | |||
tampered from the original provider. The signing of a Trust Anchor | ||||
list for integrity check and update authorization methods are | ||||
desirable to be developed. This can be addressed outside of this | ||||
architecture 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 obtain a TAM certificate from a | |||
CA that is listed in the Trust Anchor store of the TEE. | CA that is listed in the Trust Anchor Store of the TEEP Agent. | |||
5.2. Trust Anchors in TAM | 5.2. Trust Anchors in a TEE | |||
The Trust Anchor store in a TAM consists of a list of Trust Anchors, | A TEE determines whether TA binaries are allowed to execute by | |||
which are CA certificates that sign various device TEE certificates. | verifying whether the TA's signer chains up to a certificate in the | |||
A TAM will accept a device for TA management if the TEE in the device | TEE's Trust Anchor Store. The list is typically preloaded at | |||
uses a TEE certificate that is chained to a CA that the TAM trusts. | manufacturing time, and can be updated using the TEEP protocol if the | |||
TEE has some form of "Trust Anchor Manager TA" that has Trust Anchors | ||||
in its configuration data. Thus, Trust Anchors can be updated | ||||
similar to updating the configuration data for any other TA, as | ||||
discussed in Section 5.1. | ||||
5.3. Scalability | 5.3. Trust Anchors in a TAM | |||
This architecture uses a PKI. Trust Anchors exist on the devices to | The Trust Anchor Store in a TAM consists of a list of Trust Anchors, | |||
enable the TEE to authenticate TAMs, and TAMs use Trust Anchors to | which are certificates that sign various device TEE certificates. A | |||
authenticate TEEs. Since a PKI is used, many intermediate CA | TAM will accept a device for TA management if the TEE in the device | |||
uses a TEE certificate that is chained to a certificate that the TAM | ||||
trusts. | ||||
5.4. Scalability | ||||
This architecture uses a PKI, although self-signed certificates are | ||||
also permitted. Trust Anchors exist on the devices to enable the TEE | ||||
to authenticate TAMs and TA signers, and TAMs use Trust Anchors to | ||||
authenticate TEEs. When a PKI is used, many intermediate CA | ||||
certificates can chain to a root certificate, each of which can issue | certificates can chain to a root certificate, each of which can issue | |||
many certificates. This makes the protocol highly scalable. New | many certificates. This makes the protocol highly scalable. New | |||
factories that produce TEEs can join the ecosystem. In this case, | factories that produce TEEs can join the ecosystem. In this case, | |||
such a factory can get an intermediate CA certificate from one of the | such a factory can get an intermediate CA certificate from one of the | |||
existing roots without requiring that TAMs are updated with | existing roots without requiring that TAMs are updated with | |||
information about the new device factory. Likewise, new TAMs can | information about the new device factory. Likewise, new TAMs can | |||
join the ecosystem, providing they are issued a TAM certificate that | join the ecosystem, providing they are issued a TAM certificate that | |||
chains to an existing root whereby existing TEEs will be allowed to | chains to an existing root whereby existing TEEs will be allowed to | |||
be personalized by the TAM without requiring changes to the TEE | be personalized by the TAM without requiring changes to the TEE | |||
itself. This enables the ecosystem to scale, and avoids the need for | itself. This enables the ecosystem to scale, and avoids the need for | |||
centralized databases of all TEEs produced or all TAMs that exist. | centralized databases of all TEEs produced or all TAMs that exist or | |||
all TA developers that exist. | ||||
5.4. Message Security | 5.5. Message Security | |||
Messages created by a TAM are used to deliver TA management commands | Messages created by a TAM are used to deliver TA management commands | |||
to a device, and device attestation and messages created by the | to a device, and device attestation and messages created by the | |||
device TEE to respond to TAM messages. | 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, | |||
and are typically encrypted such that only the targeted device TEE or | and are typically encrypted such that only the targeted device TEE or | |||
TAM is able to decrypt and view the actual content. | TAM is able to decrypt and view the actual content. | |||
6. TEEP Broker | 6. TEEP Broker | |||
skipping to change at page 20, line 5 ¶ | skipping to change at page 20, line 28 ¶ | |||
communicate outside of the hosting device. For example, | communicate outside of the hosting device. For example, | |||
GlobalPlatform [GPTEE] specifies one such architecture. This calls | GlobalPlatform [GPTEE] specifies one such architecture. This calls | |||
for a software module in the REE world to handle network | for a software module in the REE world to handle network | |||
communication with a TAM. | communication with a TAM. | |||
A TEEP Broker is an application component running in the REE of the | A TEEP Broker is an application component running in the REE of the | |||
device or an SDK that facilitates communication between a TAM and a | device or an SDK that facilitates communication between a TAM and a | |||
TEE. It also provides interfaces for Untrusted Applications to query | TEE. It also provides interfaces for Untrusted Applications to query | |||
and trigger TA installation that the application needs to use. | and trigger TA installation that the application needs to use. | |||
An Untrusted Application might communicate with the TEEP Broker at | An Untrusted Application might communicate with a TEEP Broker at | |||
runtime to trigger TA installation itself. Or an Untrusted | runtime to trigger TA installation itself, or an Untrusted | |||
Application might simply have a metadata file that describes the TAs | Application might simply have a metadata file that describes the TAs | |||
it depends on and the associated TAM(s) for each TA, and an REE | it depends on and the associated TAM(s) for each TA, and an REE | |||
Application Installer can inspect this application metadata file and | Application Installer can inspect this application metadata file and | |||
invoke the TEEP Broker to trigger TA installation on behalf of the | invoke the TEEP Broker to trigger TA installation on behalf of the | |||
Untrusted Application without requiring the Untrusted Application to | Untrusted Application without requiring the Untrusted Application to | |||
run first. | run first. | |||
6.1. Role of the TEEP Broker | 6.1. Role of the TEEP Broker | |||
A TEEP Broker abstracts the message exchanges with a TEE in a device. | A TEEP Broker abstracts the message exchanges with a TEE in a device. | |||
The input data is originated from a TAM or the first initialization | The input data is originated from a TAM or the first initialization | |||
call to trigger a TA installation. | call to trigger a TA installation. | |||
The Broker doesn't need to parse a message content received from a | The Broker doesn't need to parse a message content received from a | |||
TAM that should be processed by a TEE. When a device has more than | TAM that should be processed by a TEE. When a device has more than | |||
one TEE, one TEEP Broker per TEE could be present in REE. A TEEP | one TEE, one TEEP Broker per TEE could be present in the REE. A TEEP | |||
Broker interacts with a TEEP Agent inside a TEE. | Broker interacts with a TEEP Agent inside a TEE. | |||
A TAM message may indicate the target TEE where a TA should be | A TAM message may indicate the target TEE where a TA should be | |||
installed. A compliant TEEP protocol should include a target TEE | installed. A compliant TEEP protocol should include a target TEE | |||
identifier for a TEEP Broker when multiple TEEs are present. | identifier for a TEEP Broker when multiple TEEs are present. | |||
The Broker relays the response messages generated from a TEEP Agent | The Broker relays the response messages generated from a TEEP Agent | |||
in a TEE to the TAM. The Broker is not expected to handle any | in a TEE to the TAM. | |||
network connection with an application or TAM. | ||||
The Broker only needs to return an error message if the TEE is not | The Broker only needs to return a (transport) error message if the | |||
reachable for some reason. Other errors are represented as response | TEE is not reachable for some reason. Other errors are represented | |||
messages returned from the TEE which will then be passed to the TAM. | as response messages returned from the TEE which will then be passed | |||
to the TAM. | ||||
6.2. TEEP Broker Implementation Consideration | 6.2. TEEP Broker Implementation Consideration | |||
A Provider should consider methods of distribution, scope and | TEEP Broker implementers should consider methods of distribution, | |||
concurrency on devices and runtime options when implementing a TEEP | scope and concurrency on devices and runtime options. Several non- | |||
Broker. Several non-exhaustive options are discussed below. | exhaustive options are discussed below. | |||
Providers are encouraged to take advantage of the latest | ||||
communication and platform capabilities to offer the best user | ||||
experience. | ||||
6.2.1. TEEP Broker APIs | 6.2.1. TEEP Broker APIs | |||
The following conceptual APIs exist from a TEEP Broker to a TEEP | The following conceptual APIs exist from a TEEP Broker to a TEEP | |||
Agent: | Agent: | |||
1. RequestTA: A notification from an REE application (e.g., an | 1. RequestTA: A notification from an REE application (e.g., an | |||
installer, or a normal application) that it depends on a given | installer, or an Untrusted Application) that it depends on a | |||
TA, which may or may not already be installed in the TEE. | given TA, which may or may not already be installed in the TEE. | |||
2. ProcessTeepMessage: A message arriving from the network, to be | 2. ProcessTeepMessage: A message arriving from the network, to be | |||
delivered to the TEEP Agent for processing. | delivered to the TEEP Agent for processing. | |||
3. RequestPolicyCheck: A hint (e.g., based on a timer) that the TEEP | 3. RequestPolicyCheck: A hint (e.g., based on a timer) that the TEEP | |||
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. | |||
4. ProcessError: A notification that the TEEP Broker could not | 4. 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 an incoming TEEP session is | |||
being requested by a TEEP Agent. | being requested by a TEEP Agent. | |||
2. ProcessTeepMessage: A message arriving from the network, to be | 2. ProcessTeepMessage: A message arriving from the network, to be | |||
delivered to the TAM for processing. | 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. | |||
6.2.3. Number of TEEP Brokers | ||||
There should be generally only one shared TEEP Broker in a device. | ||||
The device's TEE vendor will most probably supply one Broker. When | ||||
multiple TEEs are present in a device, one TEEP Broker per TEE may be | ||||
used. | ||||
When only one Broker is used per device, the Broker provider is | ||||
responsible to allow multiple TAMs and TEE providers to achieve | ||||
interoperability. With a standard Broker interface, each TAM can | ||||
implement its own SDK for its SP Untrusted Applications to work with | ||||
this Broker. | ||||
Multiple independent Broker providers can be used as long as they | ||||
have standard interface to an Untrusted Application or TAM SDK. Only | ||||
one Broker is generally expected in a device. | ||||
7. Attestation | 7. Attestation | |||
Attestation is the process through which one entity (an Attester) | Attestation is the process through which one entity (an Attester) | |||
presents "evidence", in the form of a series of claims, to another | presents "evidence", in the form of a series of claims, to another | |||
entity (a Verifier), and provides sufficient proof that the claims | entity (a Verifier), and provides sufficient proof that the claims | |||
are true. Different verifiers may have different standards for | are true. Different Verifiers may have different standards for | |||
attestation proofs and not all attestations are acceptable to every | attestation proofs and not all attestations are acceptable to every | |||
verifier. A third entity (a Relying Party) can then use "attestation | verifier. A third entity (a Relying Party) can then use "attestation | |||
results", in the form of another series of claims, from a Verifier to | results", in the form of another series of claims, from a Verifier to | |||
make authorization decisions. | make authorization decisions. (See [I-D.ietf-rats-architecture] for | |||
more discussion.) | ||||
In TEEP, as depicted in Figure 5, the primary purpose of an | In TEEP, as depicted in Figure 5, the primary purpose of an | |||
attestation is to allow a device (the Attester) to prove to TAMs (the | attestation is to allow a device (the Attester) to prove to a TAM | |||
Relying Parties) that a TEE in the device has particular properties, | (the Relying Party) that a TEE in the device has particular | |||
was built by a particular manufacturer, or is executing a particular | properties, was built by a particular manufacturer, and/or is | |||
TA. Other claims are possible; TEEP does not limit the claims that | executing a particular TA. Other claims are possible; TEEP does not | |||
may appear in evidence or attestation results, but defines a minimal | limit the claims that may appear in evidence or attestation results, | |||
set of attestation result claims required for TEEP to operate | but defines a minimal set of attestation result claims required for | |||
properly. Extensions to these claims are possible. Other standards | TEEP to operate properly. Extensions to these claims are possible. | |||
or groups may define the format and semantics of extended claims. | Other standards or groups may define the format and semantics of | |||
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 5: TEEP Attestation Roles | Figure 5: 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 algorithms and | manufacturers, and TEEs support different attestation algorithms and | |||
mechanisms. In order for TEEP to be inclusive, it is agnostic to the | mechanisms. In order for TEEP to be inclusive, it is agnostic to the | |||
format of evidence, allowing proprietary or standardized formats to | format of evidence, allowing proprietary or standardized formats to | |||
be used between a TEE and a verifier (which may or may not be | be used between a TEE and a verifier (which may or may not be | |||
colocated in the TAM). However, it should be recognized that not all | colocated in the TAM). However, it should be recognized that not all | |||
verifiers may be able to process all proprietary forms of attestation | Verifiers may be able to process all proprietary forms of attestation | |||
evidence. Similarly, the TEEP protocol is agnostic as to the format | evidence. Similarly, the TEEP protocol is agnostic as to the format | |||
of attestation results, and the protocol (if any) used between the | of attestation results, and the protocol (if any) used between the | |||
TAM and a verifier, as long as they convey at least the required set | TAM and a verifier, as long as they convey at least the required set | |||
of claims in some format. | of claims in some format. | |||
The assumptions which may apply to an attestation have to do with the | The assumptions that may apply to an attestation have to do with the | |||
quality of the attestation and the quality and security provided by | quality of the attestation and the quality and security provided by | |||
the TEE, the device, the manufacturer, or others involved in the | the TEE, the device, the manufacturer, or others involved in the | |||
device or TEE ecosystem. Some of the assumptions that might apply to | device or TEE ecosystem. Some of the assumptions that might apply to | |||
an attestations include (this may not be a comprehensive list): | an attestations include (this may not be a comprehensive list): | |||
- Assumptions regarding the security measures a manufacturer takes | - Assumptions regarding the security measures a manufacturer takes | |||
when provisioning keys into devices/TEEs; | when provisioning keys into devices/TEEs; | |||
- Assumptions regarding what hardware and software components have | - Assumptions regarding what hardware and software components have | |||
access to the Attestation keys of the TEE; | access to the attestation keys of the TEE; | |||
- Assumptions related to the source or local verification of claims | - Assumptions related to the source or local verification of claims | |||
within an attestation prior to a TEE signing a set of claims; | within an attestation prior to a TEE signing a set of claims; | |||
- Assumptions regarding the level of protection afforded to | - Assumptions regarding the level of protection afforded to | |||
attestation keys against exfiltration, modification, and side | attestation keys against exfiltration, modification, and side | |||
channel attacks; | channel attacks; | |||
- Assumptions regarding the limitations of use applied to TEE | - Assumptions regarding the limitations of use applied to TEE | |||
Attestation keys; | attestation keys; | |||
- Assumptions regarding the processes in place to discover or detect | - Assumptions regarding the processes in place to discover or detect | |||
TEE breeches; and | TEE breeches; and | |||
- Assumptions regarding the revocation and recovery process of TEE | - Assumptions regarding the revocation and recovery process of TEE | |||
attestation keys. | attestation keys. | |||
TAMs must be comfortable with the assumptions that are inherently | TAMs must be comfortable with the assumptions that are inherently | |||
part of any attestation result they accept. Alternatively, any TAM | part of any attestation result they accept. Alternatively, any TAM | |||
may choose not to accept an attestation result generated using | may choose not to accept an attestation result generated using | |||
skipping to change at page 23, line 46 ¶ | skipping to change at page 24, line 8 ¶ | |||
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. These additional claims may help clear up | authorize a device or TEE. These additional claims may help clear up | |||
any assumptions for which the TAM wants to alleviate. The specific | any assumptions for which the TAM wants to alleviate. The specific | |||
format for these additional claims are outside the scope of this | format for these additional claims are outside the scope of this | |||
specification, but the TEEP protocol allows these additional claims | specification, but the TEEP protocol allows these additional claims | |||
to be included in the attestation messages. | to be included in the attestation messages. | |||
7.1. Information Required in TEEP Claims | 7.1. Information Required in TEEP Claims | |||
- Device Identifying Info: TEEP attestations may need to uniquely | - Device Identifying Info: TEEP attestations may need to uniquely | |||
identify a device to the TAM and SP. Unique device identification | identify a device to the TAM and TA developer. Unique device | |||
allows the TAM to provide services to the device, such as managing | identification allows the TAM to provide services to the device, | |||
installed TAs, and providing subscriptions to services, and | such as managing installed TAs, and providing subscriptions to | |||
locating device-specific keying material to communicate with or | services, and locating device-specific keying material to | |||
authenticate the device. In some use cases it may be sufficient | communicate with or authenticate the device. In some use cases it | |||
to identify only the class of the device. The security and | may be sufficient to identify only the class of the device. The | |||
privacy requirements regarding device identification will vary | security and privacy requirements regarding device identification | |||
with the type of TA provisioned to the TEE. | will vary with the type of TA provisioned to the TEE. | |||
- TEE Identifying info: The type of TEE that generated this | - TEE Identifying info: The type of TEE that generated this | |||
attestation must be identified. Standard TEE types are identified | attestation must be identified, including version identification | |||
by an IANA number, but also must include version identification | ||||
information such as the hardware, firmware, and software version | information such as the hardware, firmware, and software version | |||
of the TEE, as applicable by the TEE type. TEE manufacturer | of the TEE, as applicable by the TEE type. TEE manufacturer | |||
information for the TEE is required in order to disambiguate the | information for the TEE is required in order to disambiguate the | |||
same TEE type created by different manufacturers and resolve | same TEE type created by different manufacturers and resolve | |||
potential assumptions around manufacturer provisioning, keying and | potential assumptions around manufacturer provisioning, keying and | |||
support for the TEE. | support for the TEE. | |||
- Liveness Proof: A claim that includes liveness information must be | - Freshness Proof: A claim that includes freshness information must | |||
included, such as a nonce or timestamp. | be included, such as a nonce or timestamp. | |||
- Requested Components: A list of zero or more components (TAs or | - Requested Components: A list of zero or more components (TAs or | |||
other dependencies needed by a TEE) that are requested by some | other dependencies needed by a TEE) that are requested by some | |||
depending app, but which are not currently installed in the TEE. | depending app, but which are not currently installed in the TEE. | |||
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 algorithm suite to another over time. This | mandatory-to-implement algorithm suite to another over time. This | |||
feature is also known as crypto agility. Protocol evolution is | feature is also known as crypto agility. Protocol evolution is | |||
greatly simplified when crypto agility is already considered during | greatly simplified when crypto agility is considered during the | |||
the design of the protocol. In the case of the Trusted Execution | design of the protocol. In the case of the TEEP protocol the diverse | |||
Provisioning (TEEP) Protocol the diverse range of use cases, from | range of use cases, from trusted app updates for smart phones and | |||
trusted app updates for smart phones and tablets to updates of code | tablets to updates of code on higher-end IoT devices, creates the | |||
on higher-end IoT devices, creates the need for different mandatory- | need for different mandatory-to-implement algorithms already from the | |||
to-implement algorithms already from the start. | start. | |||
Crypto agility in TEEP concerns the use of symmetric as well as | Crypto agility in TEEP concerns the use of symmetric as well as | |||
asymmetric algorithms. Symmetric algorithms are used for encryption | asymmetric algorithms. Symmetric algorithms are used for encryption | |||
of content whereas the asymmetric algorithms are mostly used for | of content whereas the asymmetric algorithms are mostly used for | |||
signing messages. | signing messages. | |||
In addition to the use of cryptographic algorithms in TEEP there is | In addition to the use of cryptographic algorithms in TEEP, there is | |||
also the need to make use of different attestation technologies. A | also the need to make use of different attestation technologies. A | |||
Device must provide techniques to inform a TAM about the attestation | device must provide techniques to inform a TAM about the attestation | |||
technology it supports. For many deployment cases it is more likely | technology it supports. For many deployment cases it is more likely | |||
for the TAM to support one or more attestation techniques whereas the | for the TAM to support one or more attestation techniques whereas the | |||
Device may only support one. | device may only support one. | |||
9. Security Considerations | 9. Security Considerations | |||
9.1. TA Trust Check at TEE | 9.1. Broker Trust Model | |||
A TA binary is signed by a TA signer certificate. This TA signing | ||||
certificate/private key belongs to the SP, and may be self-signed | ||||
(i.e., it need not participate in a trust hierarchy). It is the | ||||
responsibility of the TAM to only allow verified TAs from trusted SPs | ||||
into the system. Delivery of that TA to the TEE is then the | ||||
responsibility of the TEE, using the security mechanisms provided by | ||||
the protocol. | ||||
We allow a way for an Untrusted Application to check the | The architecture enables the TAM to communicate, via a TEEP Broker, | |||
trustworthiness of a TA. A TEEP Broker has a function to allow an | with the device's TEE to manage TAs. Since the TEEP Broker runs in a | |||
application to query the information about a TA. | potentially vulnerable REE, the TEEP Broker could, however, be (or be | |||
infected by) malware. As such, all TAM messages are signed and | ||||
sensitive data is encrypted such that the TEEP Broker cannot modify | ||||
or capture sensitive data. | ||||
An Untrusted Application may perform verification of the TA by | A TEEP Agent in a TEE is responsible for protecting against potential | |||
verifying the signature of the TA. An application can do additional | attacks from a compromised TEEP Broker or rogue malware in the REE. | |||
trust checks on the certificate returned for this TA. It might trust | A rogue TEEP Broker might send corrupted data to the TEEP Agent, or | |||
the TAM, or require additional SP signer trust chaining. | launch a DoS attack by sending a flood of TEEP protocol requests. | |||
The TEEP Agent validates the signature of each TEEP protocol request | ||||
and checks the signing certificate against its Trust Anchors. To | ||||
mitigate DoS attacks, it might also add some protection scheme such | ||||
as a threshold on repeated requests or number of TAs that can be | ||||
installed. | ||||
9.2. One TA Multiple SP Case | 9.2. Data Protection at TAM and TEE | |||
A TA for multiple SPs must have a different identifier per SP. They | The TEE implementation provides protection of data on the device. It | |||
should appear as different TAs when they are installed in the same | is the responsibility of the TAM to protect data on its servers. | |||
device. | ||||
9.3. Broker Trust Model | 9.3. Compromised REE | |||
A TEEP Broker could be malware in the vulnerable REE. An Untrusted | It is possible that the REE of a device is compromised. If the REE | |||
Application will connect its TAM provider for required TA | is compromised, several DoS attacks may be launched. The compromised | |||
installation. It gets command messages from the TAM, and passes the | REE may terminate the TEEP Broker such that TEEP transactions cannot | |||
message to the Broker. | reach the TEE. However, while a DoS attack cannot be prevented, the | |||
REE cannot access anything in the TEE if it is implemented correctly. | ||||
Some TEEs may have some watchdog scheme to observe REE state and | ||||
mitigate DoS attacks against it but most TEEs don't have have such | ||||
capability. | ||||
The architecture enables the TAM to communicate with the device's TEE | In some other scenarios, the compromised REE may ask a TEEP Broker to | |||
to manage TAs. All TAM messages are signed and sensitive data is | make repeated requests to a TEEP Agent in a TEE to install or | |||
encrypted such that the TEEP Broker cannot modify or capture | uninstall a TA. A TA installation or uninstallation request | |||
sensitive data. | constructed by the TEEP Broker or REE will be rejected by the TEEP | |||
Agent because the request won't have the correct signature from a TAM | ||||
to pass the request signature validation. | ||||
9.4. Data Protection at TAM and TEE | This can become a DoS attack by exhausting resources in a TEE with | |||
repeated requests. In general, a DoS attack threat exists when the | ||||
REE is compromised, and a DoS attack can happen to other resources. | ||||
The TEEP architecture doesn't change this. | ||||
The TEE implementation provides protection of data on the device. It | A compromised REE might also request initiating the full flow of | |||
is the responsibility of the TAM to protect data on its servers. | installation of TAs that are not necessary. It may also repeat a | |||
prior legitimate TA installation request. A TEEP Agent | ||||
implementation is responsible for ensuring that it can recognize and | ||||
decline such repeated requests. It is also responsible for | ||||
protecting the resource usage allocated for TA management. | ||||
9.5. Compromised CA | 9.4. Compromised CA | |||
A root CA for TAM certificates might get compromised. Some TEE Trust | A root CA for TAM certificates might get compromised. Some TEE Trust | |||
Anchor update mechanism is expected from device OEMs. TEEs are | Anchor update mechanism is expected from device OEMs. TEEs are | |||
responsible for validating certificate revocation about a TAM | responsible for validating certificate revocation about a TAM | |||
certificate chain. | certificate chain. | |||
If the root CA of some TEE device certificates is compromised, these | If the root CA of some TEE device certificates is compromised, these | |||
devices might be rejected by a TAM, which is a decision of the TAM | devices might be rejected by a TAM, which is a decision of the TAM | |||
implementation and policy choice. TAMs are responsible for | implementation and policy choice. TAMs are responsible for | |||
validating any intermediate CA for TEE device certificates. | validating any intermediate CA for TEE device certificates. | |||
9.6. Compromised TAM | 9.5. Compromised TAM | |||
Device TEEs are responsible for validating the supplied TAM | Device TEEs are responsible for validating the supplied TAM | |||
certificates to determine that the TAM is trustworthy. | certificates to determine that the TAM is trustworthy. | |||
9.6. Malicious TA Removal | ||||
It is possible that a rogue developer distributes a malicious | ||||
Untrusted Application and intends to get a malicious TA installed. | ||||
It's the responsibility of the TAM to not install malicious trusted | ||||
apps in the first place. The TEEP architecture allows a TEEP Agent | ||||
to decide which TAMs it trusts via Trust Anchors, and delegates the | ||||
TA authenticity check to the TAMs it trusts. | ||||
It may happen that a TA was previously considered trustworthy but is | ||||
later found to be buggy or compromised. In this case, the TAM can | ||||
initiate the removal of the TA by notifying devices to remove the TA | ||||
(and potentially the REE or device owner to remove any Untrusted | ||||
Application that depend on the TA). If the TAM does not currently | ||||
have a connection to the TEEP Agent on a device, such a notification | ||||
would occur the next time connectivity does exist. | ||||
Furthermore the policy in the Verifier in an attestation process can | ||||
be updated so that any evidence that includes the malicious TA would | ||||
result in an attestation failure. | ||||
9.7. Certificate Renewal | 9.7. Certificate Renewal | |||
TEE device certificates are expected to be long lived, longer than | TEE device certificates are expected to be long lived, longer than | |||
the lifetime of a device. A TAM certificate usually has a moderate | the lifetime of a device. A TAM certificate usually has a moderate | |||
lifetime of 2 to 5 years. A TAM should get renewed or rekeyed | lifetime of 2 to 5 years. A TAM should get renewed or rekeyed | |||
certificates. The root CA certificates for a TAM, which are embedded | certificates. The root CA certificates for a TAM, which are embedded | |||
into the Trust Anchor store in a device, should have long lifetimes | into the Trust Anchor store in a device, should have long lifetimes | |||
that don't require device Trust Anchor update. On the other hand, it | that don't require device Trust Anchor update. On the other hand, it | |||
is imperative that OEMs or device providers plan for support of Trust | is imperative that OEMs or device providers plan for support of Trust | |||
Anchor update in their shipped devices. | Anchor update in their shipped devices. | |||
9.8. Keeping Secrets from the TAM | 9.8. Keeping Secrets from the TAM | |||
In some scenarios, it is desirable to protect the TA binary or | In some scenarios, it is desirable to protect the TA binary or | |||
configuration from being disclosed to the TAM that distributes them. | configuration from being disclosed to the TAM that distributes them. | |||
In such a scenario, the files can be encrypted end-to-end between an | In such a scenario, the files can be encrypted end-to-end between a | |||
SP and a TEE. However, there must be some means of provisioning the | TA developer and a TEE. However, there must be some means of | |||
decryption key into the TEE and/or some means of the SP securely | provisioning the decryption key into the TEE and/or some means of the | |||
learning a public key of the TEE that it can use to encrypt. One way | TA developer securely learning a public key of the TEE that it can | |||
to do this is for the SP to run its own TAM, merely to distribute the | use to encrypt. One way to do this is for the TA developer to run | |||
decryption key via the TEEP protocol, and the key file can be a | its own TAM so that it can distribute the decryption key via the TEEP | |||
dependency in the manifest of the encrypted TA. Thus, the TEEP Agent | protocol, and the key file can be a dependency in the manifest of the | |||
would look at the TA manifest, determine there is a dependency with a | encrypted TA. Thus, the TEEP Agent would look at the TA manifest, | |||
TAM URI of the SP's TAM. The Agent would then install the | determine there is a dependency with a TAM URI of the TA developer's | |||
dependency, and then continue with the TA installation steps, | TAM. The Agent would then install the dependency, and then continue | |||
including decrypting the TA binary with the relevant key. | with the TA installation steps, including decrypting the TA binary | |||
with the relevant key. | ||||
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 | - Andrew Atyeo, Intercede (andrew.atyeo@intercede.com) | |||
- 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 | |||
[GPTEE] Global Platform, "GlobalPlatform Device Technology: TEE | [GPTEE] GlobalPlatform, "GlobalPlatform Device Technology: TEE | |||
System Architecture, v1.1", Global Platform GPD_SPE_009, | System Architecture, v1.1", GlobalPlatform GPD_SPE_009, | |||
January 2017, <https://globalplatform.org/specs-library/ | January 2017, <https://globalplatform.org/specs-library/ | |||
tee-system-architecture-v1-1/>. | tee-system-architecture-v1-1/>. | |||
[I-D.ietf-rats-architecture] | ||||
Birkholz, H., Thaler, D., Richardson, M., and N. Smith, | ||||
"Remote Attestation Procedures Architecture", draft-ietf- | ||||
rats-architecture-01 (work in progress), February 2020. | ||||
[I-D.ietf-suit-manifest] | [I-D.ietf-suit-manifest] | |||
Moran, B., Tschofenig, H., and H. Birkholz, "A Concise | Moran, B., Tschofenig, H., and H. Birkholz, "A Concise | |||
Binary Object Representation (CBOR)-based Serialization | Binary Object Representation (CBOR)-based Serialization | |||
Format for the Software Updates for Internet of Things | Format for the Software Updates for Internet of Things | |||
(SUIT) Manifest", draft-ietf-suit-manifest-02 (work in | (SUIT) Manifest", draft-ietf-suit-manifest-03 (work in | |||
progress), November 2019. | progress), February 2020. | |||
[I-D.ietf-teep-otrp-over-http] | [I-D.ietf-teep-otrp-over-http] | |||
Thaler, D., "HTTP Transport for Trusted Execution | Thaler, D., "HTTP Transport for Trusted Execution | |||
Environment Provisioning: Agent-to- TAM Communication", | Environment Provisioning: Agent-to- TAM Communication", | |||
draft-ietf-teep-otrp-over-http-03 (work in progress), | draft-ietf-teep-otrp-over-http-03 (work in progress), | |||
November 2019. | November 2019. | |||
[RFC6024] Reddy, R. and C. Wallace, "Trust Anchor Management | [RFC6024] Reddy, R. and C. Wallace, "Trust Anchor Management | |||
Requirements", RFC 6024, DOI 10.17487/RFC6024, October | Requirements", RFC 6024, DOI 10.17487/RFC6024, October | |||
2010, <https://www.rfc-editor.org/info/rfc6024>. | 2010, <https://www.rfc-editor.org/info/rfc6024>. | |||
End of changes. 155 change blocks. | ||||
512 lines changed or deleted | 555 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |