| rfc9397xml2.original.xml | rfc9397.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.6 (Ruby | ||||
| 2.6.8) --> | ||||
| <!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
| <!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
| <!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
| ]> | ]> | |||
| <?rfc rfcedstyle="yes"?> | <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.6 (Ruby 2 | |||
| <?rfc tocindent="yes"?> | .6.8) --> | |||
| <?rfc strict="yes"?> | ||||
| <?rfc comments="yes"?> | ||||
| <?rfc inline="yes"?> | ||||
| <?rfc text-list-symbols="-o*+"?> | ||||
| <?rfc docmapping="yes"?> | ||||
| <rfc ipr="trust200902" docName="draft-ietf-teep-architecture-19" category="info" | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
| tocInclude="true" sortRefs="true" symRefs="true"> | -ietf-teep-architecture-19" number="9397" submissionType="IETF" category="info" | |||
| consensus="true" tocInclude="true" sortRefs="true" symRefs="true" updates="" obs | ||||
| oletes="" xml:lang="en" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 3.15.3 --> | ||||
| <front> | <front> | |||
| <title abbrev="TEEP Architecture">Trusted Execution Environment Provisioning (TEEP) Architecture</title> | <title abbrev="TEEP Architecture">Trusted Execution Environment Provisioning (TEEP) Architecture</title> | |||
| <seriesInfo name="RFC" value="9397"/> | ||||
| <author initials="M." surname="Pei" fullname="Mingliang Pei"> | <author initials="M." surname="Pei" fullname="Mingliang Pei"> | |||
| <organization>Broadcom</organization> | <organization>Broadcom</organization> | |||
| <address> | <address> | |||
| <email>mingliang.pei@broadcom.com</email> | <email>mingliang.pei@broadcom.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig"> | <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig"> | |||
| <organization>Arm Limited</organization> | <organization></organization> | |||
| <address> | <address> | |||
| <email>hannes.tschofenig@arm.com</email> | <email>hannes.tschofenig@gmx.net</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="D." surname="Thaler" fullname="Dave Thaler"> | <author initials="D." surname="Thaler" fullname="Dave Thaler"> | |||
| <organization>Microsoft</organization> | <organization>Microsoft</organization> | |||
| <address> | <address> | |||
| <email>dthaler@microsoft.com</email> | <email>dthaler@microsoft.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="D." surname="Wheeler" fullname="David Wheeler"> | <author initials="D." surname="Wheeler" fullname="David Wheeler"> | |||
| <organization>Amazon</organization> | <organization>Amazon</organization> | |||
| <address> | <address> | |||
| <email>davewhee@amazon.com</email> | <email>davewhee@amazon.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2023" month="July"/> | ||||
| <date year="2022" month="October" day="24"/> | <area>sec</area> | |||
| <workgroup>teep</workgroup> | ||||
| <area>Security</area> | ||||
| <workgroup>TEEP</workgroup> | ||||
| <keyword>Internet-Draft</keyword> | ||||
| <abstract> | <abstract> | |||
| <t>A Trusted Execution Environment (TEE) is an environment that | <t> | |||
| enforces that any code within that environment cannot be tampered with, | A Trusted Execution Environment (TEE) is an environment that | |||
| and that any data used by such code cannot be read or tampered with | enforces the following: any code within the environment cannot be tampered | |||
| by any code outside that environment. | with, and any data used by such code cannot be read or tampered with by any | |||
| This architecture document motivates the design and standardization | code outside the environment. | |||
| of a protocol for managing the lifecycle of trusted applications | This architecture document discusses the motivation for designing and | |||
| running inside such a TEE.</t> | standardizing a protocol for managing | |||
| the lifecycle of Trusted Applications running inside such a TEE. | ||||
| </t> | ||||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction"> | ||||
| <section anchor="introduction"><name>Introduction</name> | <name>Introduction</name> | |||
| <t>Applications executing in a device are exposed to many different attacks | <t>Applications executing in a device are exposed to many different attack | |||
| s | ||||
| intended to compromise the execution of the application or reveal the | intended to compromise the execution of the application or reveal the | |||
| data upon which those applications are operating. These attacks increase | data upon which those applications are operating. These attacks increase | |||
| with the number of other applications on the device, with such other | with the number of other applications on the device, with such other | |||
| applications coming from potentially untrustworthy sources. The | applications coming from potentially untrustworthy sources. The | |||
| potential for attacks further increases with the complexity of features | potential for attacks further increases with the complexity of features | |||
| and applications on devices, and the unintended interactions among those | and applications on devices and the unintended interactions among those | |||
| features and applications. The risk of attacks on a system increases | features and applications. The risk of attacks on a system increases | |||
| as the sensitivity of the applications or data on the device increases. | as the sensitivity of the applications or data on the device increases. | |||
| As an example, exposure of emails from a mail client is likely to be of | As an example, exposure of emails from a mail client is likely to be of | |||
| concern to its owner, but a compromise of a banking application raises | concern to its owner, but a compromise of a banking application raises | |||
| even greater concerns.</t> | even greater concerns.</t> | |||
| <t> | ||||
| <t>The Trusted Execution Environment (TEE) concept is designed to let | The Trusted Execution Environment (TEE) concept is designed to let | |||
| applications execute in a protected environment that enforces that any code | applications execute in a protected environment that enforces that any code with | |||
| within that environment cannot be tampered with, | in that | |||
| and that any data used by such code | environment cannot be tampered with and that any data used by such code | |||
| cannot be read or tampered with by any code outside that environment, | cannot be read or tampered with by any code outside that environment, | |||
| including by a commodity operating system (if present). | including by a commodity operating system (if present). In a system with | |||
| In a system with multiple TEEs, this also means that code in one TEE | multiple TEEs, this also means that code in one TEE cannot be read or tampered | |||
| cannot be read or tampered with by code in another TEE.</t> | with by code in another TEE.</t> | |||
| <t>This separation reduces the possibility | ||||
| <t>This separation reduces the possibility | ||||
| of a successful attack on application components and the data contained inside t he | of a successful attack on application components and the data contained inside t he | |||
| TEE. Typically, application components are chosen to execute inside a TEE becaus e | TEE. Typically, application components are chosen to execute inside a TEE becaus e | |||
| those application components perform security sensitive operations or operate on | those application components perform security-sensitive operations or operate on | |||
| sensitive data. An application component running inside a TEE is commonly referr ed to | sensitive data. An application component running inside a TEE is commonly referr ed to | |||
| (e.g., in <xref target="GPTEE"/>, <xref target="OP-TEE"/>, etc.) as a | (e.g., in <xref target="GPTEE"/> and <xref target="OP-TEE"/>) as a | |||
| Trusted Application (TA), while an application running outside any TEE, i.e., in the | Trusted Application (TA), while an application running outside any TEE, i.e., in the | |||
| Rich Execution Environment (REE), | Rich Execution Environment (REE), | |||
| is referred to as an Untrusted Application (UA). In the example of a banking app | is referred to as an Untrusted Application (UA). | |||
| lication, | In the example of a banking application, | |||
| code that relates to the authentication protocol could reside in a TA while the | code that relates to the authentication protocol could reside in a TA while the | |||
| application logic including HTTP protocol parsing could be contained in the | application logic including HTTP protocol parsing could be contained in the | |||
| Untrusted Application. In addition, processing of credit card numbers or accoun t balances could be done in a TA as it is sensitive data. | Untrusted Application. In addition, processing of credit card numbers or accoun t balances could be done in a TA as it is sensitive data. | |||
| The precise code split is ultimately a decision of the | The precise code split is ultimately a decision of the | |||
| developer based on the assets the person wants to protect according to the threa t model.</t> | developer based on the assets the person wants to protect according to the threa t model.</t> | |||
| <t>TEEs are typically used in cases where software or data assets need to | ||||
| <t>TEEs are typically used in cases where software or data assets need to be pro | be protected from unauthorized access | |||
| tected from unauthorized access | where threat actors may have physical or administrative access to a device. | |||
| where threat actors may have physical or administrative access to a device. Thi | This situation arises, for example, in gaming consoles where anti-cheat | |||
| s | protection is a concern, devices such as ATMs or IoT devices placed in | |||
| situation arises for example in gaming consoles where anti-cheat protection is a | locations where attackers might have physical access, cell phones or other | |||
| concern, | devices used for mobile payments, and hosted cloud environments. Such | |||
| devices such as ATMs or IoT devices placed in locations where attackers might ha | environments can be thought of as hybrid devices where one user or | |||
| ve physical | administrator controls the REE and a different (remote) user or administrator | |||
| access, cell phones or other devices used for mobile payments, and hosted cloud | controls a TEE in the same physical device. In | |||
| environments. Such environments | some constrained devices, it may also be the case that there is no REE (only a T | |||
| can be thought of as hybrid devices where one user or administrator controls the | EE) and no | |||
| REE and a | local "user" per se, but only a remote TEE administrator. For further discussio | |||
| different (remote) user or administrator controls a TEE in the same physical dev | n | |||
| ice.<br /> | of such confidential computing use cases and threat model, see <xref | |||
| It may also be the case in some constrained devices that there is no REE (only a | target="CC-Overview"/> and <xref target="CC-Technical-Analysis"/>.</t> | |||
| TEE) and there | <t>TEEs use hardware enforcement combined with software protection to secu | |||
| may be no local "user" per se, only a remote TEE administrator. | re TAs and | |||
| For further discussion of such confidential computing use cases and threat model | their data. TEEs typically offer a more limited set of services to TAs than what | |||
| , see | is | |||
| <xref target="CC-Overview"/> and <xref target="CC-Technical-Analysis"/>.</t> | ||||
| <t>TEEs use hardware enforcement combined with software protection to secure TAs | ||||
| and | ||||
| their data. TEEs typically offer a more limited set of services to TAs than is | ||||
| normally available to Untrusted Applications.</t> | normally available to Untrusted Applications.</t> | |||
| <t>However, not all TEEs are the same. Different vendors may have differen | ||||
| <t>Not all TEEs are the same, however, and different vendors may have different | t | |||
| implementations of TEEs with different security properties, different | implementations of TEEs with different security properties, features, and contro | |||
| features, and different control mechanisms to operate on TAs. Some | l mechanisms to operate on TAs. | |||
| vendors may themselves market multiple different TEEs with different | Some | |||
| vendors may market multiple different TEEs themselves, with different | ||||
| properties attuned to different markets. A device vendor may integrate | properties attuned to different markets. A device vendor may integrate | |||
| one or more TEEs into their devices depending on market needs.</t> | one or more TEEs into their devices depending on market needs.</t> | |||
| <t>To simplify the life of TA developers interacting | ||||
| <t>To simplify the life of TA developers interacting | ||||
| with TAs in a TEE, an interoperable protocol for managing TAs running in | with TAs in a TEE, an interoperable protocol for managing TAs running in | |||
| different TEEs of various devices is needed. This software update protocol | different TEEs of various devices is needed. This software update protocol | |||
| needs to make sure that compatible trusted and untrusted components (if any) of an | needs to make sure that compatible trusted and Untrusted Components (if any) of an | |||
| application are installed on the correct device. In this TEE ecosystem, | application are installed on the correct device. In this TEE ecosystem, | |||
| there often arises a need for an external trusted party to verify the | the need often arises for an external trusted party to verify the | |||
| identity, claims, and permissions of TA developers, devices, and their TEEs. | identity, claims, and permissions of TA developers, devices, and their TEEs. | |||
| This external trusted party is the Trusted Application Manager (TAM).</t> | This external trusted party is the Trusted Application Manager (TAM).</t> | |||
| <t>The Trusted Execution Environment Provisioning (TEEP) protocol addresse | ||||
| <t>The Trusted Execution Environment Provisioning (TEEP) protocol addresses | s | |||
| the following problems:</t> | the following problems:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>An installer of an Untrusted Application that depends on a given TA | |||
| <t>An installer of an Untrusted Application that depends on a given TA | ||||
| wants to request installation of that TA in the device's TEE | wants to request installation of that TA in the device's TEE | |||
| so that the installation of Untrusted Application can complete, but the TEE | so that the installation of the Untrusted Application can complete, but the TEE | |||
| needs to verify whether such a TA is actually authorized to | needs to verify whether such a TA is actually authorized to | |||
| run in the TEE and consume potentially scarce TEE resources.</t> | run in the TEE and consume potentially scarce TEE resources.</li> | |||
| <t>A TA developer providing a TA whose code itself is considered | <li>A TA developer providing a TA whose code itself is considered | |||
| confidential wants to determine | confidential wants to determine | |||
| security-relevant information of a device before allowing their | security-relevant information of a device before allowing their | |||
| TA to be provisioned to the TEE within the device. An example | TA to be provisioned to the TEE within the device. An example | |||
| is the verification of | is the verification of | |||
| the type of TEE included in a device and that it is capable of | the type of TEE included in a device and its capability of | |||
| providing the security protections required.</t> | providing the security protections required.</li> | |||
| <t>A TEE in a device needs to determine whether an entity | <li>A TEE in a device needs to determine whether an entity | |||
| that wants to manage a TA in the device is authorized to manage TAs | that wants to manage a TA in the device is authorized to manage TAs | |||
| in the TEE, and what TAs the entity is permitted to manage.</t> | in the TEE and what TAs the entity is permitted to manage.</li> | |||
| <t>A Device Administrator wants to determine if a TA exists (is | ||||
| installed) on a device (in the TEE), and if not, install the TA in | <li>A Device Administrator wants to determine if a TA exists on a device | |||
| the TEE.</t> | (i.e., is installed in the TEE) and, if not, install the TA in the TEE. | |||
| <t>A Device Administrator wants to check whether a TA in a | </li> | |||
| <li>A Device Administrator wants to check whether a TA in a | ||||
| device's TEE is the most up-to-date version, and if not, update the | device's TEE is the most up-to-date version, and if not, update the | |||
| TA in the TEE.</t> | TA in the TEE.</li> | |||
| <t>A Device Administrator wants to remove a TA from a device's TEE if | <li>A Device Administrator wants to remove a TA from a device's TEE if | |||
| the TA developer is no longer maintaining that TA, when the TA has | the TA developer is no longer maintaining that TA, when the TA has | |||
| been revoked, or is not used for other reasons anymore (e.g., due to an | been revoked, or if the TA is not used for other reasons (e.g., due to an | |||
| expired subscription).</t> | expired subscription).</li> | |||
| </list></t> | </ul> | |||
| <t>For TEEs that simply verify and load signed TAs from an untrusted | ||||
| <t>For TEEs that simply verify and load signed TA's from an untrusted | ||||
| filesystem, classic application distribution protocols can be used | filesystem, classic application distribution protocols can be used | |||
| without modification. The problems in the bullets above, on the other hand, | without modification. On the other hand, the problems listed in the bullets abo | |||
| require a new protocol, i.e., the TEEP protocol. The TEEP protocol is | ve | |||
| require a new protocol -- the TEEP protocol. The TEEP protocol is | ||||
| a solution for TEEs that can install and enumerate TAs in a TEE-secured | a solution for TEEs that can install and enumerate TAs in a TEE-secured | |||
| location where another domain-specific protocol standard (e.g., <xref target="GS | location where another domain-specific protocol standard (e.g., <xref target="GS | |||
| MA"/>, | MA"/> and <xref target="OTRP"/>) that meets the needs is not already in use.</t> | |||
| <xref target="OTRP"/>) that meets the needs is not already in use.</t> | </section> | |||
| <section anchor="terminology"> | ||||
| </section> | <name>Terminology</name> | |||
| <section anchor="terminology"><name>Terminology</name> | <t>The following terms are used:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t>The following terms are used:</t> | <dt>App Store:</dt><dd>An online location from which Untrusted Applicati | |||
| ons can be downloaded.</dd> | ||||
| <t><list style="symbols"> | <dt>Device:</dt><dd>A physical piece of hardware that hosts one or more | |||
| <t>App Store: An online location from which Untrusted Applications can be down | TEEs, | |||
| loaded.</t> | ||||
| <t>Device: A physical piece of hardware that hosts one or more TEEs, | ||||
| often along with | often along with | |||
| an REE.</t> | an REE.</dd> | |||
| <t>Device Administrator: An entity that is responsible for administration | <dt>Device Administrator:</dt><dd>An entity that is responsible for admi | |||
| nistration | ||||
| of a device, which could be the Device Owner. A Device Administrator | of a device, which could be the Device Owner. A Device Administrator | |||
| has privileges on the device to install and remove Untrusted Applications and TA s, | has privileges on the device to install and remove Untrusted Applications and TA s, | |||
| approve or reject Trust Anchors, and approve or reject TA developers, | approve or reject Trust Anchors, and approve or reject TA developers, | |||
| among possibly other privileges on the device. A Device Administrator can | among other possible privileges on the device. A Device Administrator can | |||
| manage the list of allowed TAMs by modifying the list of Trust | manage the list of allowed TAMs by modifying the list of Trust | |||
| Anchors on the device. Although a Device Administrator may have | Anchors on the device. Although a Device Administrator may have | |||
| privileges and device-specific controls to locally administer a | privileges and device-specific controls to locally administer a | |||
| device, the Device Administrator may choose to remotely | device, the Device Administrator may choose to remotely | |||
| administer a device through a TAM.</t> | administer a device through a TAM.</dd> | |||
| <t>Device Owner: A device is always owned by someone. In some cases, it is com | <dt>Device Owner:</dt><dd>A device is always owned by someone. In some c | |||
| mon for | ases, it is common for | |||
| the (primary) device user to also own the device, making the device | the (primary) device user to also own the device, making the device | |||
| user/owner also the Device Administrator. In enterprise environments | user/owner also the Device Administrator. In enterprise environments, | |||
| it is more common for the enterprise to own the device, and for any device | it is more common for the enterprise to own the device and for any device | |||
| user to have no or limited administration rights. In this case, the | user to have no or limited administration rights. In this case, the | |||
| enterprise appoints a Device Administrator that is not the device | enterprise appoints a Device Administrator that is not the Device | |||
| owner.</t> | Owner.</dd> | |||
| <t>Device User: A human being that uses a device. Many devices have | <dt>Device User:</dt><dd>A human being that uses a device. Many devices | |||
| have | ||||
| a single device user. Some devices have a primary device user with | a single device user. Some devices have a primary device user with | |||
| other human beings as secondary device users (e.g., a parent allowing | other human beings as secondary device users (e.g., a parent allowing | |||
| children to use their tablet or laptop). Other devices are not used | children to use their tablet or laptop). Other devices are not used | |||
| by a human being and hence have no device user.</t> | by a human being; hence, they have no device user.</dd> | |||
| <t>Personalization Data: A set of configuration data that is specific to | <dt>Personalization Data:</dt><dd>A set of configuration data that is sp | |||
| ecific to | ||||
| the device or user. The Personalization Data may depend on the type of | the device or user. The Personalization Data may depend on the type of | |||
| TEE, a particular TEE instance, the TA, and even the user of the device; | TEE, a particular TEE instance, the TA, and even the user of the device. | |||
| an example of Personalization Data might be a secret symmetric key used | An example of Personalization Data might be a secret symmetric key used | |||
| by a TA to communicate with some service.</t> | by a TA to communicate with some service.</dd> | |||
| <t>Raw Public Key: A raw public key consists of only the algorithm identifier | <dt>Raw Public Key:</dt><dd>A raw public key consists of only the algori | |||
| thm identifier | ||||
| (type) of the key and the cryptographic public key material, such as the | (type) of the key and the cryptographic public key material, such as the | |||
| SubjectPublicKeyInfo structure of a PKIX certificate <xref target="RFC5280"/>. O ther | SubjectPublicKeyInfo structure of a PKIX certificate <xref target="RFC5280"/>. O ther | |||
| serialization formats that do not rely on ASN.1 may also be used.</t> | serialization formats that do not rely on ASN.1 may also be used.</dd> | |||
| <t>Rich Execution Environment (REE): An environment that is provided | <dt>Rich Execution Environment (REE):</dt><dd>An environment that is pro | |||
| vided | ||||
| and governed by a typical OS (e.g., Linux, Windows, Android, iOS), | and governed by a typical OS (e.g., Linux, Windows, Android, iOS), | |||
| potentially in conjunction with other supporting operating systems | potentially in conjunction with other supporting operating systems | |||
| and hypervisors; it is outside of the TEE(s) managed by the TEEP protocol. This environment and | and hypervisors; it is outside of the TEE(s) managed by the TEEP protocol. This environment and | |||
| applications running on it are considered untrusted (or more precisely, | applications running on it are considered untrusted (or more precisely, | |||
| less trusted than a TEE).</t> | less trusted than a TEE).</dd> | |||
| <t>Trust Anchor: As defined in <xref target="RFC6024"/> and <xref target="RFC9 | <dt>Trust Anchor:</dt><dd>As defined in <xref target="RFC6024"/> and <xr | |||
| 019"/>, | ef target="RFC9019"/>, | |||
| "A trust anchor represents an authoritative entity via a public | a Trust Anchor "represents an authoritative entity via a public | |||
| key and associated data. The public key is used to verify digital | key and associated data. The public key is used to verify digital | |||
| signatures, and the associated data is used to constrain the types | signatures, and the associated data is used to constrain the types | |||
| of information for which the trust anchor is authoritative." | of information for which the trust anchor is authoritative." | |||
| The Trust Anchor may be a certificate, a raw public key or other structure, | The Trust Anchor may be a certificate, a raw public key, or other structure, | |||
| as appropriate. It can be a non-root certificate when it is a certificate.</t> | as appropriate. It can be a non-root certificate when it is a certificate.</dd> | |||
| <t>Trust Anchor Store: As defined in <xref target="RFC6024"/>, "A trust anchor | <dt>Trust Anchor Store:</dt><dd>As defined in <xref | |||
| store is a set of one or more trust anchors stored in a device... | target="RFC6024"/>, a "trust anchor store is a set of one | |||
| A device may have more than one trust anchor store, each of which | or more trust anchors stored in a device... A device may have more | |||
| may be used by one or more applications." As noted in <xref target="RFC9019"/>, | than one trust anchor store, each of which may be used by one or more | |||
| a Trust Anchor Store must resist modification against unauthorized | applications." As noted in <xref target="RFC9019"/>, "a trust anchor | |||
| insertion, deletion, and modification.</t> | store must resist modification against unauthorized insertion, | |||
| <t>Trusted Application (TA): An application (or, in some implementations, an a | deletion, and modification."</dd> | |||
| pplication component) that runs in a TEE.</t> | <dt>Trusted | |||
| <t>Trusted Application Manager (TAM): An entity that manages Trusted | Application (TA):</dt><dd>An application (or, in some implementations, | |||
| Applications and other Trusted Components running in TEEs of various devices.</t | an application component) that runs in a TEE.</dd> | |||
| > | <dt>Trusted Application Manager (TAM):</dt><dd>An entity that manages Tr | |||
| <t>Trusted Component: A set of code and/or data in a TEE managed as a unit | usted Applications and other Trusted Components running in TEEs of various devic | |||
| es.</dd> | ||||
| <dt>Trusted Component:</dt><dd>A set of code and/or data in a TEE manage | ||||
| d as a unit | ||||
| by a Trusted Application Manager. Trusted Applications and | by a Trusted Application Manager. Trusted Applications and | |||
| Personalization Data are thus managed by being included in | Personalization Data are thus managed by being included in | |||
| Trusted Components. Trusted OS code or trusted firmware can also be | Trusted Components. Trusted OS code or trusted firmware can also be | |||
| expressed as Trusted Components that a Trusted Component depends on.</t> | expressed as Trusted Components that a Trusted Component depends on.</dd> | |||
| <t>Trusted Component Developer: An entity that develops one or | <dt>Trusted Component Developer:</dt><dd>An entity that develops one or | |||
| more Trusted Components.</t> | more Trusted Components.</dd> | |||
| <t>Trusted Component Signer: An entity that signs a Trusted Component with | <dt>Trusted Component Signer:</dt><dd>An entity that signs a Trusted Com | |||
| ponent with | ||||
| a key that a TEE will trust. The signer might or might not be the | a key that a TEE will trust. The signer might or might not be the | |||
| same entity as the Trusted Component Developer. For example, a Trusted Component might | same entity as the Trusted Component Developer. For example, a Trusted Component might | |||
| be signed (or re-signed) by a Device Administrator if the TEE will | be signed (or re-signed) by a Device Administrator if the TEE will | |||
| only trust the Device Administrator. A Trusted Component might also be encrypted | only trust the Device Administrator. | |||
| , | A Trusted Component might also be encrypted | |||
| if the code is considered confidential, for example, when a developer wants to | if the code is considered confidential, for example, when a developer wants to | |||
| provide a TA without revealing its code to others.</t> | provide a TA without revealing its code to others.</dd> | |||
| <t>Trusted Execution Environment (TEE): An execution environment that enforces | ||||
| that | <dt>Trusted Execution Environment (TEE):</dt><dd>An execution environment that e | |||
| only authorized code can execute within the TEE, and data used by that | nforces that | |||
| only authorized code can execute within the TEE and data used by that | ||||
| code cannot be read or tampered with by code outside the TEE. | code cannot be read or tampered with by code outside the TEE. | |||
| A TEE also generally has a device unique credential that cannot be cloned. | A TEE also generally has a unique device credential that cannot be cloned. | |||
| There are multiple technologies that can be used to implement | There are multiple technologies that can be used to implement | |||
| a TEE, and the level of security achieved varies accordingly. | a TEE, and the level of security achieved varies accordingly. | |||
| In addition, TEEs typically use an isolation mechanism between Trusted Applicati ons to ensure | In addition, TEEs typically use an isolation mechanism between Trusted Applicati ons to ensure | |||
| that one TA cannot read, modify or delete the data and code of another | that one TA cannot read, modify, or delete the data and code of another | |||
| TA.</t> | TA.</dd> | |||
| <t>Untrusted Application (UA): An application running in an REE. An Untrusted | <dt>Untrusted Application (UA):</dt><dd>An application running in an REE | |||
| Application | . An Untrusted Application | |||
| might depend on one or more TAs.</t> | might depend on one or more TAs.</dd> | |||
| </list></t> | </dl> | |||
| </section> | ||||
| </section> | <section anchor="use-cases"> | |||
| <section anchor="use-cases"><name>Use Cases</name> | <name>Use Cases</name> | |||
| <section anchor="payment"> | ||||
| <section anchor="payment"><name>Payment</name> | <name>Payment</name> | |||
| <t>A payment application in a mobile device requires high security and | ||||
| <t>A payment application in a mobile device requires high security and | ||||
| trust in the hosting device. Payments initiated from a mobile | trust in the hosting device. Payments initiated from a mobile | |||
| device can use a Trusted Application | device can use a Trusted Application | |||
| to provide strong identification and proof of transaction.</t> | to provide strong identification and proof of transaction.</t> | |||
| <t>For a mobile payment application, some biometric identification | ||||
| <t>For a mobile payment application, some biometric identification | ||||
| information could also be stored in a TEE. The mobile payment | information could also be stored in a TEE. The mobile payment | |||
| application can use such information for unlocking the device and | application can use such information for unlocking the device and local identifi | |||
| for local identification of the user.</t> | cation of the user.</t> | |||
| <t>A trusted user interface (UI) may be used in a mobile device or point | ||||
| <t>A trusted user interface (UI) may be used in a mobile device or point-of-sale | -of-sale device to | |||
| device to | ||||
| prevent malicious software from stealing sensitive user input data. | prevent malicious software from stealing sensitive user input data. | |||
| Such an implementation often relies on a TEE for providing access | Such an implementation often relies on a TEE for providing access | |||
| to peripherals, such as PIN input or a trusted display, so that | to peripherals, such as PIN input or a trusted display, so that | |||
| the REE cannot observe or tamper with the user input or output.</t> | the REE cannot observe or tamper with the user input or output.</t> | |||
| </section> | ||||
| </section> | <section anchor="authentication"> | |||
| <section anchor="authentication"><name>Authentication</name> | <name>Authentication</name> | |||
| <t>For better security of authentication, a device may store its | ||||
| <t>For better security of authentication, a device may store its | keys and cryptographic libraries inside a TEE, limiting access to | |||
| keys and cryptographic libraries inside a TEE limiting access to | ||||
| cryptographic functions via a well-defined interface and thereby | cryptographic functions via a well-defined interface and thereby | |||
| reducing access to keying material.</t> | reducing access to keying material.</t> | |||
| </section> | ||||
| </section> | <section anchor="internet-of-things"> | |||
| <section anchor="internet-of-things"><name>Internet of Things</name> | <name>Internet of Things</name> | |||
| <t>Weak security in Internet of Things (IoT) devices has been posing thr | ||||
| <t>Weak security in Internet of Things (IoT) devices has been posing threats to | eats to | |||
| critical infrastructure, i.e., assets that are essential for the functioning | critical infrastructure, i.e., assets that are essential for the functioning | |||
| of a society and economy. It is desirable that IoT devices can prevent malware | of a society and economy. It is desirable that IoT devices can prevent malware | |||
| from manipulating actuators (e.g., unlocking a door), or | from manipulating actuators (e.g., unlocking a door) or | |||
| stealing or modifying sensitive data, such as authentication credentials | stealing or modifying sensitive data, such as authentication credentials | |||
| in the device. A TEE can be one of the best ways to implement such IoT | in the device. A TEE can be one of the best ways to implement such IoT | |||
| security functions. For example, <xref target="GPTEE"/> uses the term "trusted p eripheral" to refer to such things being | security functions. For example, <xref target="GPTEE"/> uses the term "trusted p eripheral" to refer to such things being | |||
| accessible only from the TEE, and this concept is used, and this concept is used | accessible only from the TEE, and this concept is used in some GlobalPlatform-co | |||
| in some GlobalPlatform-compliant devices today.</t> | mpliant devices today.</t> | |||
| </section> | ||||
| </section> | <section anchor="confidential-cloud-computing"> | |||
| <section anchor="confidential-cloud-computing"><name>Confidential Cloud Computin | <name>Confidential Cloud Computing</name> | |||
| g</name> | <t>A tenant can store sensitive data, such as customer details or credit | |||
| <t>A tenant can store sensitive data, such as customer details or credit | ||||
| card numbers, in a TEE in a cloud computing | card numbers, in a TEE in a cloud computing | |||
| server such that only the tenant can access the data, preventing | server such that only the tenant can access the data, which prevents | |||
| the cloud hosting provider from accessing the data. A tenant can | the cloud hosting provider from accessing the data. A tenant can | |||
| run TAs inside a server TEE for secure operation and enhanced | run TAs inside a server TEE for secure operation and enhanced | |||
| data security. This provides benefits not only to tenants with | data security. This provides benefits not only to tenants with | |||
| better data security but also to cloud hosting providers for reduced | better data security but also to cloud hosting providers for reduced | |||
| liability and increased cloud adoption.</t> | liability and increased cloud adoption.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="architecture"> | |||
| <section anchor="architecture"><name>Architecture</name> | <name>Architecture</name> | |||
| <section anchor="system-components"> | ||||
| <section anchor="system-components"><name>System Components</name> | <name>System Components</name> | |||
| <t><xref target="notionalarch"/> shows the main components in a typical | ||||
| <t><xref target="notionalarch"/> shows the main components in a typical device w | device with an REE and a | |||
| ith an REE and a | ||||
| TEE. Full descriptions of | TEE. Full descriptions of | |||
| components not previously defined are provided below. Interactions of | components not previously defined are provided below. Interactions of | |||
| all components are further explained in the following paragraphs.</t> | all components are further explained in the following paragraphs.</t> | |||
| <figure anchor="notionalarch"> | ||||
| <name>Notional Architecture of TEEP</name> | ||||
| <artwork><![CDATA[ | ||||
| +---------------------------------------------+ | ||||
| | Device | Trusted Component | ||||
| | +--------+ | Signer | ||||
| | +---------------+ | |--------------+ | | ||||
| | | TEE-1 | | TEEP |-----------+ | | | ||||
| | | +--------+ | +--| Broker | | | | +-------+ | | ||||
| | | | TEEP | | | | |<-----+ | | +-->| |<-+ | ||||
| | | | Agent |<------+ | | | | | +-| TAM-1 | | ||||
| | | +--------+ | | |<---+ | | +--->| | |<-+ | ||||
| | | | +--------+ | | | | +-------+ | | ||||
| | | +----+ +----+ | | | | | TAM-2 | | | ||||
| | +-->|TA-1| |TA-2| | +-------+ | | | +-------+ | | ||||
| | | | | | | |<---------| UA-2 |--+ | | | | ||||
| | | | +----+ +----+ | +-------+ | | | Device | ||||
| | | +---------------+ | UA-1 | | | | Administrator | ||||
| | | | | | | | | ||||
| | +--------------------| |-----+ | | | ||||
| | | |----------+ | | ||||
| | +-------+ | | ||||
| +---------------------------------------------+ | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure title="Notional Architecture of TEEP" anchor="notionalarch"><artwork><![ | <dl newline="false" spacing="normal"> | |||
| CDATA[ | <dt>Trusted Component Signer and Device Administrator:</dt><dd>Trusted | |||
| +---------------------------------------------+ | Component Signers and Device Administrators utilize the services | |||
| | Device | Trusted Component | ||||
| | +--------+ | Signer | ||||
| | +---------------+ | |--------------+ | | ||||
| | | TEE-1 | | TEEP |-----------+ | | | ||||
| | | +--------+ | +--| Broker | | | | +-------+ | | ||||
| | | | TEEP | | | | |<-----+ | | +-->| |<-+ | ||||
| | | | Agent |<------+ | | | | | +-| TAM-1 | | ||||
| | | +--------+ | | |<---+ | | +--->| | |<-+ | ||||
| | | | +--------+ | | | | +-------+ | | ||||
| | | +----+ +----+ | | | | | TAM-2 | | | ||||
| | +-->|TA-1| |TA-2| | +-------+ | | | +-------+ | | ||||
| | | | | | | |<---------| UA-2 |--+ | | | | ||||
| | | | +----+ +----+ | +-------+ | | | Device | ||||
| | | +---------------+ | UA-1 | | | | Administrator | ||||
| | | | | | | | | ||||
| | +--------------------| |-----+ | | | ||||
| | | |----------+ | | ||||
| | +-------+ | | ||||
| +---------------------------------------------+ | ||||
| ]]></artwork></figure> | ||||
| <t><list style="symbols"> | ||||
| <t>Trusted Component Signers and Device Administrators utilize the services | ||||
| of a TAM to manage TAs on devices. Trusted Component Signers do not directly int eract | of a TAM to manage TAs on devices. Trusted Component Signers do not directly int eract | |||
| with devices. Device Administrators may elect to use a TAM for remote administra tion | with devices. Device Administrators may elect to use a TAM for remote administra tion | |||
| of TAs instead of managing each device directly.</t> | of TAs instead of managing each device directly.</dd> | |||
| <t>Trusted Application Manager (TAM): A TAM is responsible for performing lif | ||||
| ecycle | <dt>Trusted Application Manager (TAM):</dt><dd><t>A TAM is responsib | |||
| management activity on Trusted Components on behalf of Trusted Component Signers | le for | |||
| and Device Administrators. This includes installation and | performing lifecycle management activity on Trusted Components on | |||
| deletion of Trusted Components, and may include, for example, over-the-air | behalf of Trusted Component Signers and Device Administrators. | |||
| updates to keep Trusted Components up-to-date and clean up when Trusted Componen | This includes installation and deletion of Trusted Components and | |||
| ts | may include, for example, over-the-air updates to keep Trusted | |||
| should be removed. TAMs may provide services that make it easier for | Components up-to-date and clean up when Trusted Components should | |||
| Trusted Component Signers or Device Administrators to use the TAM's service to m | be removed. TAMs may provide services that make it easier for | |||
| anage multiple devices, | Trusted Component Signers or Device Administrators to use the | |||
| although that is not required of a TAM. <vspace blankLines='1'/> | TAM's service to manage multiple devices, although that is not | |||
| required of a TAM.</t> | ||||
| <t> | ||||
| The TAM performs its management of Trusted Components on the device through | The TAM performs its management of Trusted Components on the device through | |||
| interactions with a device's TEEP Broker, which relays | interactions with a device's TEEP Broker, which relays | |||
| messages between a TAM and a TEEP Agent running inside the TEE. | messages between a TAM and a TEEP Agent running inside the TEE. | |||
| TEEP authentication is performed between a TAM and a TEEP Agent. <vspace blankL | TEEP authentication is performed between a TAM and a TEEP Agent. </t> | |||
| ines='1'/> | <t> | |||
| When the TEEP Agent runs in a user or enterprise device, network and application firewalls | When the TEEP Agent runs in a user or enterprise device, network and application firewalls | |||
| normally protect user and enterprise devices from arbitrary connections from ext ernal network | normally protect user and enterprise devices from arbitrary connections from ext ernal network | |||
| entities. In such a deployment, a TAM outside that network might not be able to directly | entities. In such a deployment, a TAM outside that network might not be able to directly | |||
| contact a TEEP Agent, but needs to wait for the TEEP Broker to contact it. | contact a TEEP Agent but needs to wait for the TEEP Broker to contact it. | |||
| The architecture in <xref target="notionalarch"/> accommodates this case as well as other less restrictive cases | The architecture in <xref target="notionalarch"/> accommodates this case as well as other less restrictive cases | |||
| by leaving such details to an appropriate TEEP transport protocol (e.g., <xref t arget="I-D.ietf-teep-otrp-over-http"/>, | by leaving such details to an appropriate TEEP transport protocol (e.g., <xref t arget="I-D.ietf-teep-otrp-over-http"/>, | |||
| though other transport protocols can be defined under the TEEP protocol for othe | though other transport protocols can be defined under the TEEP protocol for othe | |||
| r cases). <vspace blankLines='1'/> | r cases). </t> | |||
| <t> | ||||
| A TAM may be publicly available for use by many Trusted Component Signers, or a TAM | A TAM may be publicly available for use by many Trusted Component Signers, or a TAM | |||
| may be private, and accessible by only one or a limited number of | may be private and accessible by only one or a limited number of | |||
| Trusted Component Signers. It is expected that many enterprises, manufacturers, and network carriers | Trusted Component Signers. It is expected that many enterprises, manufacturers, and network carriers | |||
| will run their own private TAM. <vspace blankLines='1'/> | will run their own private TAM.</t> | |||
| <t> | ||||
| A Trusted Component Signer or Device Administrator chooses a particular TAM base d on | A Trusted Component Signer or Device Administrator chooses a particular TAM base d on | |||
| whether the TAM is trusted by a device or set of devices. The | whether the TAM is trusted by a device or set of devices. The | |||
| TAM is trusted by a device if the TAM's public key is, or chains up to, | TAM is trusted by a device if the TAM's public key is, or chains up to, | |||
| an authorized Trust Anchor in the device, and conforms with all constraints defi ned in | an authorized Trust Anchor in the device and conforms with all constraints defin ed in | |||
| the Trust Anchor. A Trusted Component Signer or Device Administrator may run | the Trust Anchor. A Trusted Component Signer or Device Administrator may run | |||
| their own TAM, but the devices they wish to manage must include | their own TAM, but the devices they wish to manage must include | |||
| this TAM's public key or certificate, or a certificate it chains up to, in the | this TAM's public key or certificate, or a certificate it chains up to, in the | |||
| Trust Anchor Store. <vspace blankLines='1'/> | Trust Anchor Store.</t> | |||
| <t> | ||||
| A Trusted Component Signer or Device Administrator is free to utilize multiple T AMs. This may | A Trusted Component Signer or Device Administrator is free to utilize multiple T AMs. This may | |||
| be required for managing Trusted Components on multiple different types of devic es | be required for managing Trusted Components on multiple different types of devic es | |||
| from different manufacturers, or mobile devices on | from different manufacturers or mobile devices on | |||
| different network carriers, since | different network carriers, since | |||
| the Trust Anchor Store on these different devices may contain keys | the Trust Anchor Store on these different devices may contain keys | |||
| for different | for different | |||
| TAMs. A Device Administrator may be able to add their own TAM's | TAMs. To overcome this limitation, Device Administrator may be able to add their | |||
| public key or certificate, or a certificate it chains up to, to the Trust Anchor | own TAM's | |||
| Store on all their devices, | public key or certificate, or a certificate it chains up to, to the Trust Anchor | |||
| overcoming this limitation. <vspace blankLines='1'/> | Store on all their devices.</t> | |||
| <t> | ||||
| Any entity is free to operate a TAM. For a TAM to be successful, it must | Any entity is free to operate a TAM. For a TAM to be successful, it must | |||
| have its public key or certificate installed in a device's Trust Anchor Store. | have its public key or certificate installed in a device's Trust Anchor Store. | |||
| A TAM may set up a relationship with device manufacturers or network carriers | A TAM may set up a relationship with device manufacturers or network carriers | |||
| to have them install the TAM's keys in their device's Trust Anchor Store. | to have them install the TAM's keys in their device's Trust Anchor Store. | |||
| Alternatively, a TAM may publish its certificate and allow Device | Alternatively, a TAM may publish its certificate and allow Device | |||
| Administrators to install the TAM's certificate in their devices as | Administrators to install the TAM's certificate in their devices as | |||
| an after-market action.</t> | an aftermarket action.</t></dd> | |||
| <t>TEEP Broker: A TEEP Broker is an application component running in a Rich | <dt>TEEP Broker:</dt><dd>A TEEP Broker is an application component run | |||
| Execution Environment (REE) that enables the message protocol exchange between | ning | |||
| a TAM and a TEE in a device. A TEEP Broker does not process messages | in a Rich Execution Environment (REE) that enables the message | |||
| on behalf of a TEE, but merely is responsible for relaying messages from | protocol exchange between a TAM and a TEE in a device. A TEEP Broker | |||
| the TAM to the TEE, and for returning the TEE's responses to the TAM. | does not process messages on behalf of a TEE but is merely | |||
| In devices with no REE (e.g., a microcontroller where all code runs | responsible for relaying messages from the TAM to the TEE and for | |||
| in an environment that meets the definition of a Trusted Execution | returning the TEE's responses to the TAM. In devices with no REE | |||
| Environment in <xref target="terminology"/>), the TEEP Broker would be absent an | (e.g., a microcontroller where all code runs in an environment that | |||
| d | meets the definition of a Trusted Execution Environment in <xref | |||
| instead the | target="terminology"/>), the TEEP Broker would be absent, and | |||
| TEEP protocol transport would be implemented inside the TEE itself.</t> | the TEEP protocol transport would be implemented inside the TEE | |||
| <t>TEEP Agent: The TEEP Agent is a processing module running inside | itself.</dd> | |||
| <dt>TEEP Agent:</dt><dd>The TEEP Agent is a processing module running | ||||
| inside | ||||
| a TEE that receives TAM requests (typically relayed via a TEEP Broker | a TEE that receives TAM requests (typically relayed via a TEEP Broker | |||
| that runs in an REE). A TEEP Agent in the TEE may parse requests or | 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 | forward requests to other processing modules in a TEE, which is | |||
| up to a TEE provider's implementation. A response message | up to a TEE provider's implementation. | |||
| A response message | ||||
| corresponding to a TAM request is sent back to the TAM, again typically | corresponding to a TAM request is sent back to the TAM, again typically | |||
| relayed via a TEEP Broker.</t> | relayed via a TEEP Broker.</dd> | |||
| <t>Certification Authority (CA): A CA is an entity that issues digital | <dt>Certification Authority (CA):</dt><dd>A CA is an entity that issue | |||
| s digital | ||||
| certificates (especially X.509 certificates) and vouches for the | certificates (especially X.509 certificates) and vouches for the | |||
| binding between the data items in a certificate <xref target="RFC4949"/>. | binding between the data items in a certificate <xref target="RFC4949"/>. | |||
| Certificates are then used for authenticating a device, a TAM, or a | Certificates are then used for authenticating a device, a TAM, or a | |||
| Trusted Component Signer, as discussed in <xref target="trustanchors"/>. The CA s do not need to be the same; | Trusted Component Signer, as discussed in <xref target="trustanchors"/>. The CA s do not need to be the same; | |||
| different CAs can be chosen by each TAM, and different device CAs | different CAs can be chosen by each TAM, and different device CAs | |||
| can be used by different device manufacturers.</t> | can be used by different device manufacturers.</dd> | |||
| </list></t> | </dl> | |||
| </section> | ||||
| </section> | <section anchor="multiple-tees-in-a-device"> | |||
| <section anchor="multiple-tees-in-a-device"><name>Multiple TEEs in a Device</nam | <name>Multiple TEEs in a Device</name> | |||
| e> | <t>Some devices might implement multiple TEEs. | |||
| <t>Some devices might implement multiple TEEs. | ||||
| In these cases, there might be one shared TEEP Broker | In these cases, there might be one shared TEEP Broker | |||
| that interacts with all the TEEs in the device. | that interacts with all the TEEs in the device. | |||
| However, some TEEs (for example, SGX <xref target="SGX"/>) present themselves as separate containers | However, some TEEs (for example, SGX <xref target="SGX"/>) present themselves as separate containers | |||
| within memory without a controlling manager within the TEE. As such, | within memory without a controlling manager within the TEE. As such, | |||
| there might be multiple TEEP Brokers in the REE, | there might be multiple TEEP Brokers in the REE, | |||
| where each TEEP Broker communicates with one or more TEEs associated with it.</t > | where each TEEP Broker communicates with one or more TEEs associated with it.</t > | |||
| <t>It is up to the REE and the Untrusted Applications | ||||
| <t>It is up to the REE and the Untrusted Applications | ||||
| how they select the correct TEEP Broker. Verification that the correct TA | how they select the correct TEEP Broker. Verification that the correct TA | |||
| has been reached then becomes a matter of properly verifying TA attestations, | has been reached then becomes a matter of properly verifying TA attestations, | |||
| which are unforgeable.</t> | which are unforgeable.</t> | |||
| <t>The multiple TEEP Broker approach is shown in the diagram below. | ||||
| <t>The multiple TEEP Broker approach is shown in the diagram below. | For brevity, TEEP Broker 2 is shown interacting with only one TAM, Untrusted App | |||
| For brevity, TEEP Broker 2 is shown interacting with only one TAM and Untrusted | lication, and TEE, but no such limitations are intended to be implied in the arc | |||
| Application and only one TEE, but | hitecture.</t> | |||
| no such limitations are intended to be implied in the architecture.</t> | <figure anchor="notionalarch2"> | |||
| <name>Notional Architecture of TEEP with multiple TEEs</name> | ||||
| <figure title="Notional Architecture of TEEP with multiple TEEs" anchor="notiona | <artwork><![CDATA[ | |||
| larch2"><artwork><![CDATA[ | +-------------------------------------------+ | |||
| +-------------------------------------------+ | | Device | Trusted Component | |||
| | Device | Trusted Component | | | Signer | |||
| | | Signer | | +---------------+ | | | |||
| | +---------------+ | | | | | TEE-1 | | | | |||
| | | TEE-1 | | | | | | +-------+ | +--------+ | +--------+ | | |||
| | | +-------+ | +--------+ | +--------+ | | | | | TEEP | | | TEEP |------------->| |<-+ | |||
| | | | TEEP | | | TEEP |------------->| |<-+ | | | | Agent |<----------| Broker | | | | TA | |||
| | | | Agent |<----------| Broker | | | | TA | | | | 1 | | | 1 |---------+ | | | |||
| | | | 1 | | | 1 |---------+ | | | | | +-------+ | | | | | | | | |||
| | | +-------+ | | | | | | | | | | | | |<---+ | | | | | |||
| | | | | |<---+ | | | | | | | +----+ +----+ | | | | | | +-| TAM-1 | Policy | |||
| | | +----+ +----+ | | | | | | +-| TAM-1 | Policy | | | |TA-1| |TA-2| | | |<-+ | | +->| | |<-+ | |||
| | | |TA-1| |TA-2| | | |<-+ | | +->| | |<-+ | | +-->| | | |<---+ +--------+ | | | | +--------+ | | |||
| | +-->| | | |<---+ +--------+ | | | | +--------+ | | | | | +----+ +----+ | | | | | | TAM-2 | | | |||
| | | | +----+ +----+ | | | | | | TAM-2 | | | | | | | | +-------+ | | | +--------+ | | |||
| | | | | | +-------+ | | | +--------+ | | | | +---------------+ +---| UA-2 |--+ | | ^ | | |||
| | | +---------------+ +---| UA-2 |--+ | | ^ | | | | +-------+ | | | | Device | |||
| | | +-------+ | | | | Device | | +--------------------| UA-1 | | | | | Administrator | |||
| | +--------------------| UA-1 | | | | | Administrator | | +------| | | | | | | |||
| | +------| | | | | | | | +-----------|---+ | |---+ | | | | |||
| | +-----------|---+ | |---+ | | | | | | TEE-2 | | | |--------+ | | | |||
| | | TEE-2 | | | |--------+ | | | | | +------+ | | | |-------+ | | | |||
| | | +------+ | | | |-------+ | | | | | | TEEP | | | +-------+ | | | | |||
| | | | TEEP | | | +-------+ | | | | | | | Agent|<-------+ | | | | |||
| | | | Agent|<-------+ | | | | | | | 2 | | | | | | | | |||
| | | | 2 | | | | | | | | | | +------+ | | | | | | | |||
| | | +------+ | | | | | | | | | | | | | | | | |||
| | | | | | | | | | | | +----+ | | | | | | | |||
| | | +----+ | | | | | | | | | |TA-3|<---+ | | +---------+ | | | | |||
| | | |TA-3|<---+ | | +---------+ | | | | | | | | | | | TEEP |<-+ | | | |||
| | | | | | | | TEEP |<-+ | | | | | +----+ | +---| Broker | | | | |||
| | | +----+ | +---| Broker | | | | | | | | 2 |--------------+ | |||
| | | | | 2 |--------------+ | | +---------------+ +---------+ | | |||
| | +---------------+ +---------+ | | | | | |||
| | | | +-------------------------------------------+ | |||
| +-------------------------------------------+ | ]]></artwork> | |||
| ]]></artwork></figure> | </figure> | |||
| <t>In the diagram above, TEEP Broker 1 controls interactions with the TA | ||||
| <t>In the diagram above, TEEP Broker 1 controls interactions with the TAs in TEE | s in TEE-1, | |||
| -1, | and TEEP Broker 2 controls interactions with the TAs in TEE-2. | |||
| and TEEP Broker 2 controls interactions with the TAs in TEE-2. This presents som | This presents some challenges for a TAM in completely managing the device, | |||
| e | since a TAM may not interact with all the TEEP Brokers on a particular | |||
| challenges for a TAM in completely managing the device, since a TAM may not | platform. In addition, since TEEs may be physically separated, with wholly | |||
| interact with all the TEEP Brokers on a particular platform. In addition, since | different resources, there may be no need for TEEP Brokers to share | |||
| TEEs may be physically separated, with wholly different resources, there may be | information on installed Trusted Components or resource usage.</t> | |||
| no | </section> | |||
| need for TEEP Brokers to share information on installed Trusted Components or re | <section anchor="multiple-tams-and-relationship-to-tas"> | |||
| source usage.</t> | <name>Multiple TAMs and Relationship to TAs</name> | |||
| <t>As shown in <xref target="notionalarch2"/>, a TEEP Broker provides co | ||||
| </section> | mmunication between | |||
| <section anchor="multiple-tams-and-relationship-to-tas"><name>Multiple TAMs and | one or more TEEP Agents and one or more TAMs. The selection of which TAM to inte | |||
| Relationship to TAs</name> | ract with might be | |||
| made with or without input from an Untrusted Application but is ultimately | ||||
| <t>As shown in <xref target="notionalarch2"/>, a TEEP Broker provides communicat | ||||
| ion between | ||||
| one or more TEEP Agents and | ||||
| one or more TAMs. The selection of which TAM to interact with might be | ||||
| made with or without input from an Untrusted Application, but is ultimately | ||||
| the decision of a TEEP Agent.</t> | the decision of a TEEP Agent.</t> | |||
| <t>For any given Trusted Component, a TEEP Agent is assumed to be able to determ | ||||
| <t>A TEEP Agent is assumed to be able to determine, for any given Trusted Compon | ine whether that Trusted Component is installed (or minimally, is running) in a | |||
| ent, | TEE with | |||
| whether that Trusted Component is installed (or minimally, is running) in a TEE | ||||
| with | ||||
| which the TEEP Agent is associated.</t> | which the TEEP Agent is associated.</t> | |||
| <t>Each Trusted Component is digitally signed, protecting its integrity | ||||
| <t>Each Trusted Component is digitally signed, protecting its integrity, and lin | and linking | |||
| king | the Trusted Component back to the Trusted Component Signer. The Trusted Componen | |||
| the Trusted Component back to the Trusted Component Signer. The Trusted Componen | t Signer is often the Trusted Component Developer but, in | |||
| t Signer is often the Trusted Component Developer, but in | some cases, might be another party such as a Device Administrator | |||
| some cases might be another party such as a Device Administrator | ||||
| or other party | or other party | |||
| to whom the code has been licensed (in which case the same code might | to whom the code has been licensed (in which case, the same code might | |||
| be signed by multiple licensees and distributed as if it were different TAs).</t > | be signed by multiple licensees and distributed as if it were different TAs).</t > | |||
| <t>A Trusted Component Signer selects one or more TAMs and communicates | ||||
| <t>A Trusted Component Signer selects one or more TAMs and communicates the Trus | the Trusted Component(s) to the TAM. | |||
| ted Component(s) to the TAM. | ||||
| For example, the Trusted Component Signer might choose TAMs based upon the marke ts into which the TAM can provide access. There | For example, the Trusted Component Signer might choose TAMs based upon the marke ts into which the TAM can provide access. There | |||
| may be TAMs that provide services to specific types of devices, or device | may be TAMs that provide services to specific types of devices, device | |||
| operating systems, or specific geographical regions or network carriers. A Trust | operating systems, specific geographical regions, or network carriers. A Trusted | |||
| ed Component Signer may be | Component Signer may be | |||
| motivated to utilize multiple TAMs in order to maximize market penetration | motivated to utilize multiple TAMs in order to maximize market penetration | |||
| and availability on multiple types of devices. This means that the same Trusted Component | and availability on multiple types of devices. This means that the same Trusted Component | |||
| will often be available through multiple TAMs.</t> | will often be available through multiple TAMs.</t> | |||
| <t>When the developer of an Untrusted Application that depends on a Trus | ||||
| <t>When the developer of an Untrusted Application that depends on a Trusted Comp | ted Component publishes | |||
| onent publishes | ||||
| the Untrusted Application to an app store or other app repository, the developer | the Untrusted Application to an app store or other app repository, the developer | |||
| optionally binds the Untrusted Application with a manifest that identifies | optionally binds the Untrusted Application with a manifest that identifies | |||
| what TAMs can be contacted for | what TAMs can be contacted for | |||
| the Trusted Component. In some situations, a Trusted Component may only be avail able via a single TAM - this is likely the case | the Trusted Component. In some situations, a Trusted Component may only be avail able via a single TAM; this is likely the case | |||
| for enterprise applications or Trusted Component Signers serving a closed commun ity. For broad public apps, | for enterprise applications or Trusted Component Signers serving a closed commun ity. For broad public apps, | |||
| there will likely be multiple TAMs in the Untrusted Application's manifest - one | there will likely be multiple TAMs in the Untrusted Application's manifest, one | |||
| servicing one brand of mobile | servicing one brand of mobile | |||
| device and another servicing a different manufacturer, etc. Because different de | device and another servicing a different manufacturer, etc. Because different de | |||
| vices | vices and manufacturers trust different TAMs, the manifest can include multiple | |||
| and different manufacturers trust different TAMs, the manifest can include multi | ||||
| ple | ||||
| TAMs that support the required Trusted Component.</t> | TAMs that support the required Trusted Component.</t> | |||
| <t>When a TEEP Broker receives a request (see the RequestTA API in <xref | ||||
| <t>When a TEEP Broker receives a request (see the RequestTA API in <xref target= | target="apis"/>) from an Untrusted Application to install a Trusted Component, | |||
| "apis"/>) from an Untrusted Application to install a Trusted Component, | ||||
| a list of TAM URIs may be provided for that Trusted Component, and the request i s passed to the TEEP Agent. | a list of TAM URIs may be provided for that Trusted Component, and the request i s passed to the TEEP Agent. | |||
| If the TEEP Agent decides that the Trusted Component needs to be installed, the TEEP Agent selects a single TAM URI | If the TEEP Agent decides that the Trusted Component needs to be installed, the TEEP Agent selects a single TAM URI | |||
| that is consistent with the list of trusted TAMs provisioned in the TEEP Agent, invokes the | that is consistent with the list of trusted TAMs provisioned in the TEEP Agent, invokes the | |||
| HTTP transport for TEEP to connect to the TAM URI, and begins a TEEP protocol ex change. When the TEEP Agent | HTTP transport for TEEP to connect to the TAM URI, and begins a TEEP protocol ex change. When the TEEP Agent | |||
| subsequently receives the Trusted Component to install and the Trusted Component 's manifest indicates dependencies | subsequently receives the Trusted Component to install and the Trusted Component 's manifest indicates dependencies | |||
| on any other trusted components, each dependency can include a list of TAM URIs for the | on any other Trusted Components, each dependency can include a list of TAM URIs for the | |||
| relevant dependency. If such dependencies exist that are prerequisites to insta ll the Trusted Component, | relevant dependency. If such dependencies exist that are prerequisites to insta ll the Trusted Component, | |||
| then the TEEP Agent recursively follows the same procedure for each dependency t hat needs to be installed | then the TEEP Agent recursively follows the same procedure for each dependency t hat needs to be installed | |||
| or updated, including selecting a TAM URI that is consistent with the list of tr usted TAMs provisioned | or updated, including selecting a TAM URI that is consistent with the list of tr usted TAMs provisioned | |||
| on the device, and beginning a TEEP exchange. If multiple TAM URIs are consider | on the device and beginning a TEEP exchange. If multiple TAM URIs are considere | |||
| ed trusted, | d trusted, | |||
| only one needs to be contacted and they can be attempted in some order until one | only one needs to be contacted, and they can be attempted in some order until on | |||
| responds.</t> | e responds.</t> | |||
| <t>Separate from the Untrusted Application's manifest, this framework re | ||||
| <t>Separate from the Untrusted Application's manifest, this framework relies on | lies on the use of the manifest | |||
| the use of the manifest | ||||
| format in <xref target="I-D.ietf-suit-manifest"/> for expressing how to install a Trusted Component, as well as any | format in <xref target="I-D.ietf-suit-manifest"/> for expressing how to install a Trusted Component, as well as any | |||
| dependencies on other TEE components and versions. | dependencies on other TEE components and versions. | |||
| That is, dependencies from Trusted Components on other Trusted Components can be expressed in a SUIT manifest, | That is, dependencies from Trusted Components on other Trusted Components can be expressed in a Software Update for the Internet of Things (SUIT) manifest, | |||
| including dependencies on any other TAs, trusted OS code (if any), or trusted fi rmware. | including dependencies on any other TAs, trusted OS code (if any), or trusted fi rmware. | |||
| Installation steps can also be expressed in a SUIT manifest.</t> | Installation steps can also be expressed in a SUIT manifest.</t> | |||
| <t>For example, TEEs compliant | ||||
| <t>For example, TEEs compliant | ||||
| with GlobalPlatform <xref target="GPTEE"/> may have a notion of a "security doma in" (which is a grouping of | with GlobalPlatform <xref target="GPTEE"/> may have a notion of a "security doma in" (which is a grouping of | |||
| one or more TAs installed on a device, that can share information within such a group) | one or more TAs installed on a device that can share information within such a g roup) | |||
| that must be created and into which one or more TAs can then be installed. It is thus up | that must be created and into which one or more TAs can then be installed. It is thus up | |||
| to the SUIT manifest to express a dependency on having such a security domain ex isting | to the SUIT manifest to express a dependency on having such a security domain ex isting | |||
| or being created first, as appropriate.</t> | or being created first, as appropriate.</t> | |||
| <t>Updating a Trusted Component may cause compatibility issues with any | ||||
| <t>Updating a Trusted Component may cause compatibility issues with any Untruste | Untrusted Applications or other | |||
| d Applications or other | ||||
| components that depend on the updated Trusted Component, just like updating the OS or a shared library | components that depend on the updated Trusted Component, just like updating the OS or a shared library | |||
| could impact an Untrusted Application. Thus, an implementation needs to take in | could impact an Untrusted Application. Thus, an implementation needs to take su | |||
| to | ch issues into account.</t> | |||
| account such issues.</t> | </section> | |||
| <section anchor="untrusted-apps-trusted-apps-and-personalization-data"> | ||||
| </section> | <name>Untrusted Apps, Trusted Apps, and Personalization Data</name> | |||
| <section anchor="untrusted-apps-trusted-apps-and-personalization-data"><name>Unt | <t>In TEEP, there is an explicit relationship and dependence between an | |||
| rusted Apps, Trusted Apps, and Personalization Data</name> | Untrusted Application | |||
| <t>In TEEP, there is an explicit relationship and dependence between an Untruste | ||||
| d Application | ||||
| in an REE and one or more TAs in a TEE, as shown in <xref target="notionalarch2" />. | in an REE and one or more TAs in a TEE, as shown in <xref target="notionalarch2" />. | |||
| For most purposes, an Untrusted Application that uses one or more TAs in a TEE | For most purposes, an Untrusted Application that uses one or more TAs in a TEE | |||
| appears no different from any other Untrusted Application in the REE. However, t he way | appears no different from any other Untrusted Application in the REE. However, t he way | |||
| the Untrusted Application and its corresponding TAs are packaged, delivered, and installed on | the Untrusted Application and its corresponding TAs are packaged, delivered, and installed on | |||
| the device can vary. The variations depend on whether the Untrusted Application and TA are bundled | the device can vary. The variations depend on whether the Untrusted Application and TA are bundled | |||
| together or are provided separately, and this has implications to the management of | together or provided separately, and this has implications to the management of | |||
| the TAs in a TEE. In addition to the Untrusted Application and TA(s), the TA(s) and/or TEE may | the TAs in a TEE. In addition to the Untrusted Application and TA(s), the TA(s) and/or TEE may | |||
| also require additional data to personalize the TA to the device or a user. | also require additional data to personalize the TA to the device or a user. | |||
| Implementations of the TEEP protocol must support encryption to preserve the con fidentiality of such Personalization Data, | Implementations of the TEEP protocol must support encryption to preserve the con fidentiality of such Personalization Data, | |||
| which may potentially contain sensitive data. The encryption is used to ensure t hat no personalization data | which may potentially contain sensitive data. The encryption is used to ensure t hat no personalization data | |||
| is sent in the clear. Implementations must also support mechanisms for integrity protection of such Personalization Data. | is sent in the clear. Implementations must also support mechanisms for integrity protection of such Personalization Data. | |||
| Other than the requirement to support confidentiality and integrity protection, | Other than the requirement to support confidentiality and integrity protection, | |||
| the TEEP architecture places no limitations or requirements on the Personalizati on Data.</t> | the TEEP architecture places no limitations or requirements on the Personalizati on Data.</t> | |||
| <t>There are multiple possible cases for bundling of an Untrusted Applic | ||||
| <t>There are multiple possible cases for bundling of an Untrusted Application, T | ation, TA(s), and Personalization Data. | |||
| A(s), and Personalization Data. | ||||
| Such cases include (possibly among others):</t> | Such cases include (possibly among others):</t> | |||
| <ol spacing="normal" type="1"><li>The Untrusted Application, TA(s), and | ||||
| <t><list style="numbers"> | Personalization Data are all bundled together in a single | |||
| <t>The Untrusted Application, TA(s), and Personalization Data are all bundled | package by a Trusted Component Signer and either provided to the TEEP Broker thr | |||
| together in a single | ough the TAM or provided separately (with encrypted Personalization Data), with | |||
| package by a Trusted Component Signer and either provided to the TEEP Broker thr | ||||
| ough the TAM, or provided separately (with encrypted Personalization Data), with | ||||
| key material needed to decrypt and install the Personalization | key material needed to decrypt and install the Personalization | |||
| Data and TA provided by a TAM.</t> | Data and TA provided by a TAM.</li> | |||
| <t>The Untrusted Application and the TA(s) are bundled together in a single pa | <li>The Untrusted Application and the TA(s) are bundled together in a | |||
| ckage, which a TAM or | single package, which a TAM or | |||
| a publicly accessible app store maintains, and the Personalization Data | a publicly accessible app store maintains, and the Personalization Data | |||
| is separately provided by the Personalization Data provider's TAM.</t> | is separately provided by the Personalization Data provider's TAM.</li> | |||
| <t>All components are independent packages. The Untrusted Application is insta | <li>All components are independent packages. The Untrusted Application | |||
| lled through some | is installed through some | |||
| independent or device-specific mechanism, and one or more TAMs provide (directly or indirectly by reference) | independent or device-specific mechanism, and one or more TAMs provide (directly or indirectly by reference) | |||
| the TA(s) and Personalization Data.</t> | the TA(s) and Personalization Data.</li> | |||
| <t>The TA(s) and Personalization Data are bundled together into a package prov | <li>The TA(s) and Personalization Data are bundled together into a pac | |||
| ided by a TAM, | kage provided by a TAM, | |||
| while the Untrusted Application is installed through some independent | while the Untrusted Application is installed through some independent | |||
| or device-specific mechanism such as an app store.</t> | or device-specific mechanism, such as an app store.</li> | |||
| <t>Encrypted Personalization Data is bundled into a package distributed with t | <li>Encrypted Personalization Data is bundled into a package distribut | |||
| he Untrusted | ed with the Untrusted | |||
| Application, while the TA(s) and key material needed to decrypt and install the Personalization Data | Application, while the TA(s) and key material needed to decrypt and install the Personalization Data | |||
| are in a separate package provided by a TAM. Personalization Data is encrypted w ith a key | are in a separate package provided by a TAM. Personalization Data is encrypted w ith a key | |||
| unique to that specific TEE, as discussed in <xref target="trustanchors"/>.</t> | unique to that specific TEE, as discussed in <xref target="trustanchors"/>.</li> | |||
| </list></t> | </ol> | |||
| <t>The TEEP protocol can treat each TA, any dependencies the TA has, and | ||||
| <t>The TEEP protocol can treat each TA, any dependencies the TA has, and Persona | Personalization Data as | |||
| lization Data as | separate Trusted Components with separate installation steps that are expressed | |||
| separate Trusted Components with separate installation steps that are expressed | in SUIT manifests, and a SUIT manifest might contain or reference multiple binar | |||
| in SUIT manifests, | ies (see <xref target="I-D.ietf-suit-manifest"/> | |||
| and a SUIT manifest might contain or reference multiple binaries (see <xref targ | ||||
| et="I-D.ietf-suit-manifest"/> | ||||
| for more details). The TEEP Agent is responsible for handling any installation s teps | for more details). The TEEP Agent is responsible for handling any installation s teps | |||
| that need to be performed inside the TEE, such as decryption of private TA binar ies or | that need to be performed inside the TEE, such as decryption of private TA binar ies or | |||
| Personalization Data.</t> | Personalization Data.</t> | |||
| <t>In order to better understand these cases, it is helpful to review ac | ||||
| tual implementations of TEEs and their application delivery mechanisms.</t> | ||||
| <section anchor="example-application-delivery-mechanisms-in-intel-sgx"> | ||||
| <t>In order to better understand these cases, it is helpful to review actual imp | <name>Example: Application Delivery Mechanisms in Intel SGX</name> | |||
| lementations of TEEs and their application delivery mechanisms.</t> | <t>In Intel Software Guard Extensions (SGX), the Untrusted | |||
| Application and TA are typically bundled into the same package (Case | ||||
| <section anchor="example-application-delivery-mechanisms-in-intel-sgx"><name>Exa | 2). The TA exists in the package as a shared library (.so or | |||
| mple: Application Delivery Mechanisms in Intel SGX</name> | .dll). The Untrusted Application loads the TA into an SGX enclave | |||
| when the Untrusted Application needs the TA. This organization makes | ||||
| <t>In Intel Software Guard Extensions (SGX), the Untrusted Application and TA ar | it easy to maintain compatibility between the Untrusted Application | |||
| e typically bundled into the | and the TA, since they are updated together. It is entirely possible | |||
| same package (Case 2). The TA | to create an Untrusted Application that loads an external TA into an | |||
| exists in the package as a shared library (.so or .dll). The Untrusted Applicati | SGX enclave and use that TA (Cases 3-5). In this case, the | |||
| on loads the TA into | Untrusted Application would require a reference to an external file | |||
| an SGX enclave when the Untrusted Application needs the TA. This organization ma | or download such a file dynamically, place the contents of the file | |||
| kes it easy to maintain | into memory, and load that as a TA. Obviously, such file or | |||
| compatibility between the Untrusted Application and the TA, since they are updat | downloaded content must be properly formatted and signed for it to | |||
| ed together. It is | be accepted by the SGX TEE.</t> | |||
| entirely possible to create an Untrusted Application that loads an external TA i | <t>In SGX, any | |||
| nto an SGX enclave, and | ||||
| use that TA (Cases 3-5). In this case, the Untrusted Application would require a | ||||
| reference to an external | ||||
| file or download such a file dynamically, place the contents of the file into me | ||||
| mory, and | ||||
| load that as a TA. Obviously, such file or downloaded content must be properly f | ||||
| ormatted | ||||
| and signed for it to be accepted by the SGX TEE.</t> | ||||
| <t>In SGX, any | ||||
| Personalization Data is normally loaded into the SGX enclave (the TA) after the TA has | Personalization Data is normally loaded into the SGX enclave (the TA) after the TA has | |||
| started. Although it is possible with SGX to include the Untrusted Application i | started. | |||
| n an encrypted | Although it is possible with SGX to include the Untrusted Application in an encr | |||
| package along with Personalization Data (Cases 1 and 5), there are no instances | ypted | |||
| of this known to | package along with Personalization Data (Cases 1 and 5), there are currently no | |||
| be in use at this time, since such a construction would require a special instal | known instances of this in use, since such a construction would require a specia | |||
| lation | l installation | |||
| program and SGX TA (which might or might not be the TEEP Agent itself based on t he implementation) | program and SGX TA (which might or might not be the TEEP Agent itself based on t he implementation) | |||
| to receive the encrypted package, decrypt it, separate it into the | to receive the encrypted package, decrypt it, separate it into the | |||
| different elements, and then install each one. This installation is complex | different elements, and then install each one. This installation is complex | |||
| because the Untrusted Application decrypted inside the TEE must be passed out of the TEE to an | because the Untrusted Application decrypted inside the TEE must be passed out of the TEE to an | |||
| installer in the REE which would install the Untrusted Application. | installer in the REE that would install the Untrusted Application. | |||
| Finally, the Personalization Data would need to be sent out of the | Finally, the Personalization Data would need to be sent out of the | |||
| TEE (encrypted in an SGX enclave-to-enclave manner) to the REE's installation ap p, which | TEE (encrypted in an SGX enclave-to-enclave manner) to the REE's installation ap p, which | |||
| would pass this data to the installed Untrusted Application, which would in turn send this data | would pass this data to the installed Untrusted Application, which would in turn send this data | |||
| to the SGX enclave (TA). This complexity is due to the fact that each SGX enclav e is separate | to the SGX enclave (TA). This complexity is due to the fact that each SGX enclav e is separate | |||
| and does not have direct communication to other SGX enclaves.</t> | and does not have direct communication to other SGX enclaves.</t> | |||
| <t>As long as signed files (TAs and/or Personalization Data) are insta | ||||
| <t>As long as signed files (TAs and/or Personalization Data) are installed into | lled into | |||
| an untrusted filesystem and trust is verified by the TEE at load time, classic | an untrusted filesystem and trust is verified by the TEE at load time, classic | |||
| distribution mechanisms can be used. Some uses of SGX, however, allow a model | distribution mechanisms can be used. However, some uses of SGX allow a model | |||
| where a TA can be dynamically installed into an SGX enclave that | where a TA can be dynamically installed into an SGX enclave that | |||
| provides a runtime platform. The TEEP protocol can be used in | provides a runtime platform. The TEEP protocol can be used in | |||
| such cases, where the runtime platform could include a TEEP Agent.</t> | such cases, where the runtime platform could include a TEEP Agent.</t> | |||
| </section> | ||||
| <section anchor="example-application-delivery-mechanisms-in-arm-trustzon | ||||
| e"> | ||||
| <name>Example: Application Delivery Mechanisms in Arm TrustZone</name> | ||||
| <t>In Arm TrustZone <xref target="TrustZone"/> for A-class devices, | ||||
| the Untrusted 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 a specific Untrusted Application process | ||||
| lifetime as occurs in SGX. A TA is loaded by a trusted OS running | ||||
| in the TEE, such as a TEE compliant with GlobalPlatform <xref target=" | ||||
| GPTEE"/>, | ||||
| where the trusted OS is separate from the OS in the REE. Thus, | ||||
| Cases 2-4 are equally applicable. | ||||
| </section> | In addition, it is possible for | |||
| <section anchor="example-application-delivery-mechanisms-in-arm-trustzone"><name | TAs to communicate with each other without involving any Untrusted | |||
| >Example: Application Delivery Mechanisms in Arm TrustZone</name> | Application; thus, the complexity of Cases 1 and 5 are lower than | |||
| in the SGX example, though still more complex than Cases 2-4.</t> | ||||
| <t>In Arm TrustZone <xref target="TrustZone"/> for A-class devices, the Untruste | <t>A trusted OS running in the TEE (e.g., OP-TEE <xref target="OP-TEE" | |||
| d Application and TA may or may not be | />) that supports loading and verifying signed TAs from | |||
| bundled together. This differs from SGX since in TrustZone the TA lifetime is no | ||||
| t inherently tied | ||||
| to a specific Untrusted Application process lifetime as occurs in SGX. A TA is | ||||
| loaded by | ||||
| a trusted OS running in the TEE such as a GlobalPlatform <xref target="GPTEE"/> | ||||
| compliant TEE, where the trusted OS is | ||||
| separate from the OS in the REE. | ||||
| Thus Cases 2-4 are equally applicable. In addition, it is possible for TAs to c | ||||
| ommunicate | ||||
| with each other without involving any Untrusted Application, and so the complexi | ||||
| ty of Cases 1 and 5 | ||||
| are lower than in the SGX example, though still more | ||||
| complex than Cases 2-4.</t> | ||||
| <t>A trusted OS running in the TEE (e.g., OP-TEE <xref target="OP-TEE"/>) that s | ||||
| upports loading and verifying signed TAs from | ||||
| an untrusted filesystem can, like SGX, use classic file distribution | an untrusted filesystem can, like SGX, use classic file distribution | |||
| mechanisms. If secure TA storage is used (e.g., a Replay-Protected | mechanisms. If secure TA storage is used (e.g., a Replay-Protected | |||
| Memory Block device) on the other hand, the TEEP protocol can be used | Memory Block device) on the other hand, the TEEP protocol can be used | |||
| to manage such storage.</t> | to manage such storage.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="entity-relations"> | |||
| <section anchor="entity-relations"><name>Entity Relations</name> | <name>Entity Relations</name> | |||
| <t>This architecture leverages asymmetric cryptography to | ||||
| <t>This architecture leverages asymmetric cryptography to | ||||
| authenticate a device to a TAM. Additionally, a TEEP Agent | authenticate a device to a TAM. Additionally, a TEEP Agent | |||
| in a device authenticates a TAM. The | in a device authenticates a TAM. The | |||
| provisioning of Trust Anchors to a device may be different from | provisioning of Trust Anchors to a device may be different from | |||
| one use case to the other. A Device Administrator may want to | one use case to the other. A Device Administrator may want to | |||
| have the capability to control what TAs are allowed. | have the capability to control what TAs are allowed. | |||
| A device manufacturer enables verification by one or more TAMs and by Trusted Co mponent Signers; | A device manufacturer enables verification by one or more TAMs and by Trusted Co mponent Signers; | |||
| it may embed a list of default Trust Anchors into the TEEP Agent | it may embed a list of default Trust Anchors into the TEEP Agent | |||
| and TEE for TAM trust verification and TA signature verification.</t> | and TEE for TAM trust verification and TA signature verification.</t> | |||
| <figure anchor="experience"> | ||||
| <figure title="Example Developer Experience" anchor="experience"><artwork><![CDA | <name>Example Developer Experience</name> | |||
| TA[ | <artwork><![CDATA[ | |||
| (App Developers) (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: | | | | | 1. Build two apps: | | | | | |||
| | | | | | | | | | | |||
| (a) Untrusted | | | | | (a) Untrusted | | | | | |||
| App - 2a. Supply --> | | | | | App - 2a. Supply --> | | | | | |||
| | | | | | | | | | | |||
| (b) TA -- 2b. Supply ----------> | | | | (b) TA -- 2b. Supply ----------> | | | | |||
| | | | | | | | | | | |||
| | --- 3. Install ------> | | | | --- 3. Install ------> | | | |||
| | | | | | | | | | | |||
| | | 4. Messaging-->| | | | | 4. Messaging-->| | | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t><xref target="experience"/> shows an example where the same developer builds | <t><xref target="experience"/> shows an example where the same developer | |||
| and signs | builds and signs | |||
| two applications: (a) an Untrusted Application; (b) a TA | two applications: (a) an Untrusted Application and (b) a TA | |||
| that provides some security functions to be run inside | that provides some security functions to be run inside | |||
| a TEE. This example assumes that the developer, the TEE, and the TAM have | a TEE. This example assumes that the developer, the TEE, and the TAM have | |||
| previously been provisioned with certificates.</t> | previously been provisioned with certificates.</t> | |||
| <t>At step 1, the developer authors the two applications.</t> | <t>At step 1, the developer authors the two applications.</t> | |||
| <t>At step 2, the developer uploads the | ||||
| <t>At step 2, the developer uploads the | ||||
| Untrusted Application (2a) to an Application Store. | Untrusted Application (2a) to an Application Store. | |||
| In this example, the developer is also the Trusted Component Signer, and so gene rates | In this example, the developer is also the Trusted Component Signer and thus gen erates | |||
| a signed TA. | a signed TA. | |||
| The developer can then either bundle the signed TA | The developer can then either bundle the signed TA | |||
| with the Untrusted Application, or the developer can provide a signed Trusted Co mponent containing the TA | with the Untrusted Application or provide a signed Trusted Component containing the TA | |||
| to a TAM that will be managing the TA in various devices.</t> | to a TAM that will be managing the TA in various devices.</t> | |||
| <t>At step 3, a user | ||||
| <t>At step 3, a user | ||||
| will go to an Application Store to download the Untrusted | will go to an Application Store to download the Untrusted | |||
| Application (where the arrow indicates the direction of data transfer).</t> | Application (where the arrow indicates the direction of data transfer).</t> | |||
| <t>At step 4, since the Untrusted Application depends on the TA, install | ||||
| <t>At step 4, since the Untrusted Application depends on the TA, | ing the Untrusted Application will trigger TA installation | |||
| installing the Untrusted Application will trigger TA installation | ||||
| via communication with a TAM. The TEEP Agent | via communication with a TAM. The TEEP Agent | |||
| will interact with the TAM via a TEEP Broker that facilitates communications bet ween the TAM | will interact with the TAM via a TEEP Broker that facilitates communications bet ween the TAM | |||
| and the TEEP Agent.</t> | and the TEEP Agent.</t> | |||
| <t>Some Trusted Component installation implementations might ask for a user's co nsent. In other | <t>Some implementations that install Trusted Components might ask for a user's c onsent. In other | |||
| implementations, | implementations, | |||
| a Device Administrator might choose what Untrusted Applications and related Trus ted Components to | a Device Administrator might choose the Untrusted Applications and related Trust ed Components to | |||
| be installed. A user consent flow is out of scope of the TEEP architecture.</t> | be installed. A user consent flow is out of scope of the TEEP architecture.</t> | |||
| <t>The main components of the TEEP protocol | ||||
| <t>The main components of the TEEP protocol | ||||
| consist of a set of standard messages created by | consist of a set of standard messages created by | |||
| a TAM to deliver Trusted Component management commands to a device, | a TAM to deliver Trusted Component management commands to a device | |||
| and device attestation and response messages created by a TEE that | and device attestation and response messages created by a TEE that | |||
| responds to a TAM's message.</t> | responds to a TAM's message.</t> | |||
| <t>It should be noted that network communication capability is generally | ||||
| <t>It should be noted that network communication capability is generally | ||||
| not available in TAs in today's TEE-powered devices. Consequently, Trusted | not available in TAs in today's TEE-powered devices. Consequently, Trusted | |||
| Applications generally rely on a broker in the REE to provide access to | Applications generally rely on a Broker in the REE to provide access to | |||
| network functionality in the REE. A broker does not need to know the actual | network functionality in the REE. A Broker does not need to know the actual | |||
| content of messages to facilitate such access.</t> | content of messages to facilitate such access.</t> | |||
| <t>Similarly, since the TEEP Agent runs inside a TEE, the TEEP Agent gen | ||||
| <t>Similarly, since the TEEP Agent runs inside a TEE, the TEEP Agent generally | erally | |||
| relies on a TEEP Broker in the REE to provide network access, and relay | relies on a TEEP Broker in the REE to provide network access, relay | |||
| TAM requests to the TEEP Agent and relay the responses back to the TAM.</t> | TAM requests to the TEEP Agent, and relay the responses back to the TAM.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="trustanchors"> | |||
| <section anchor="trustanchors"><name>Keys and Certificate Types</name> | <name>Keys and Certificate Types</name> | |||
| <t>This architecture leverages the following credentials, which allow | ||||
| <t>This architecture leverages the following credentials, which allow | ||||
| achieving end-to-end security between a TAM and a TEEP Agent.</t> | achieving end-to-end security between a TAM and a TEEP Agent.</t> | |||
| <t><xref target="keys"/> summarizes the relationships between various keys | ||||
| <t><xref target="keys"/> summarizes the relationships between various keys and w | and where | |||
| here | they are stored. Each public/private key identifies a Trusted Component Signer, | |||
| they are stored. Each public/private key identifies a Trusted Component Signer, | TAM, or TEE | |||
| TAM, or TEE, | and gets a certificate that chains up to some Trust Anchor. | |||
| and gets a certificate that chains up to some trust anchor. A list of trusted | A list of trusted | |||
| certificates is used to check a presented certificate against.</t> | certificates is used to check a presented certificate against.</t> | |||
| <t>Different CAs can be used for different | ||||
| <t>Different CAs can be used for different | ||||
| types of certificates. TEEP messages are always signed, where the signer | types of certificates. TEEP messages are always signed, where the signer | |||
| key is the message originator's private key, such as that of a TAM | key is the message originator's private key, such as that of a TAM | |||
| or a TEE. In addition to the keys shown in <xref target="keys"/>, | or a TEE. In addition to the keys shown in <xref target="keys"/>, | |||
| there may be additional keys used for attestation or encryption. Refer to the | there may be additional keys used for attestation or encryption. Refer to the | |||
| RATS Architecture <xref target="I-D.ietf-rats-architecture"/> for more discussio | RATS Architecture <xref target="RFC9334"/> for more discussion.</t> | |||
| n.</t> | ||||
| <figure title="Signature Keys" anchor="keys"><artwork><![CDATA[ | ||||
| Cardinality & Location of | ||||
| Location of Private Key Trust Anchor | ||||
| Purpose Private Key Signs Store | ||||
| Authenticating 1 per TEE TEEP responses TAM | ||||
| TEEP Agent | ||||
| Authenticating TAM 1 per TAM TEEP requests TEEP Agent | ||||
| Code Signing 1 per Trusted TA binary TEE | ||||
| Component | ||||
| Signer | ||||
| ]]></artwork></figure> | ||||
| <t>Note that Personalization Data is not included in the table above. | <table anchor="keys"> | |||
| <name>Signature Keys</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th>Purpose</th> | ||||
| <th>Cardinality & Location of Private Key</th> | ||||
| <th>Private Key Signs</th> | ||||
| <th>Location of Trust Anchor Store</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td>Authenticating TEEP Agent</td> | ||||
| <td>1 per TEE</td> | ||||
| <td>TEEP responses</td> | ||||
| <td>TAM</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Authenticating TAM</td> | ||||
| <td>1 per TAM</td> | ||||
| <td>TEEP requests</td> | ||||
| <td>TEEP Agent</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Code Signing</td> | ||||
| <td>1 per Trusted Component Signer</td> | ||||
| <td>TA binary</td> | ||||
| <td>TEE</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>Note that Personalization Data is not included in the table above. | ||||
| The use of Personalization Data is dependent on how TAs are used | The use of Personalization Data is dependent on how TAs are used | |||
| and what their security requirements are.</t> | and what their security requirements are.</t> | |||
| <t>TEEP requests from a TAM to a TEEP Agent are signed with the TAM | ||||
| <t>TEEP requests from a TAM to a TEEP Agent are signed with the TAM | ||||
| private key (for authentication and integrity protection). | private key (for authentication and integrity protection). | |||
| Personalization Data and TA binaries can be encrypted with a key | Personalization Data and TA binaries can be encrypted with a key | |||
| unique to that specific TEE, | unique to that specific TEE. | |||
| established with a content-encryption key established with | Conversely, TEEP responses from a TEEP Agent to a TAM can be signed with the | |||
| the TEE public key (to provide confidentiality). Conversely, | TEE private key.</t> | |||
| TEEP responses from a TEEP Agent to a TAM can be signed with the TEE | ||||
| private key.</t> | ||||
| <t>The TEE key pair and certificate are thus used for authenticating the TEE | <t>The TEE key pair and certificate are thus used for authenticating the TEE | |||
| to a remote TAM, and for sending private data to the TEE. Often, | to a remote TAM and for sending private data to the TEE. Often, | |||
| the key pair is burned into the TEE by the | 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 | the expected lifetime of the TEE. A TAM provider is responsible | |||
| for configuring the TAM's Trust Anchor Store with the manufacturer certificates or CAs | for configuring the TAM's Trust Anchor Store with the manufacturer certificates or CAs | |||
| that are used to sign TEE keys. This is discussed further in | that are used to sign TEE keys. This is discussed further in | |||
| <xref target="trust-anchors-in-tam"/> below. Typically, | <xref target="trust-anchors-in-tam"/>. Typically, | |||
| the same key TEE pair is used for both signing and encryption, though separate | the same TEE key pair is used for both signing and encryption, though separate | |||
| key pairs might also be used in the future, as the joint security of | key pairs might also be used in the future, as the joint security of | |||
| encryption and signature with a single key remains to some extent an open | encryption and signature with a single key remains, to some extent, an open | |||
| question in academic cryptography.</t> | question in academic cryptography.</t> | |||
| <t>The TAM key pair and certificate are used for authenticating a TAM | ||||
| <t>The TAM key pair and certificate are used for authenticating a TAM | to a remote TEE and for sending private data to the TAM (separate key | |||
| to a remote TEE, and for sending private data to the TAM (separate key | ||||
| pairs for authentication vs. encryption could also be used in the future). A TA M provider | pairs for authentication vs. encryption could also be used in the future). A TA M provider | |||
| is responsible for acquiring a | is responsible for acquiring a | |||
| certificate from a CA that is trusted by the TEEs it manages. This | certificate from a CA that is trusted by the TEEs it manages. This | |||
| is discussed further in <xref target="trust-anchors-in-teep-agent"/> below.</t> | is discussed further in <xref target="trust-anchors-in-teep-agent"/>.</t> | |||
| <t>The Trusted Component Signer key pair and certificate are used to sign | ||||
| <t>The Trusted Component Signer key pair and certificate are used to sign Truste | Trusted Components that the TEE | |||
| d Components that the TEE | ||||
| will consider authorized to execute. TEEs must be configured with | will consider authorized to execute. TEEs must be configured with | |||
| the certificates or keys that it considers authorized to sign TAs | the certificates or keys that it considers authorized to sign TAs | |||
| that it will execute. This is discussed further in | that it will execute. This is discussed further in | |||
| <xref target="trust-anchors-in-tee"/> below.</t> | <xref target="trust-anchors-in-tee"/>.</t> | |||
| <section anchor="trust-anchors-in-teep-agent"> | ||||
| <section anchor="trust-anchors-in-teep-agent"><name>Trust Anchors in a TEEP Agen | <name>Trust Anchors in a TEEP Agent</name> | |||
| t</name> | <t>A TEEP Agent's Trust Anchor Store contains a list of Trust Anchors, w | |||
| hich are typically CA certificates that sign various TAM certificates. The list | ||||
| <t>A TEEP Agent's Trust Anchor Store contains a list of Trust Anchors, which | is usually preloaded at manufacturing time and | |||
| are typically CA certificates that sign various TAM certificates. The list | ||||
| is typically preloaded at manufacturing time, and | ||||
| can be updated using the TEEP protocol if the TEE has some form of | 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. | "Trust Anchor Manager TA" that has Trust Anchors in its configuration data. | |||
| Thus, Trust Anchors can be updated similarly to the Personalization Data | Thus, Trust Anchors can be updated similarly to the Personalization Data | |||
| for any other TA.</t> | for any other TA.</t> | |||
| <t>When a Trust Anchor update is carried out, it is imperative that any | ||||
| <t>When Trust Anchor update is carried out, it is imperative that any update | update | |||
| must maintain integrity where only an authentic Trust Anchor list from | must maintain integrity where only an authentic Trust Anchor list from | |||
| a device manufacturer or a Device Administrator is accepted. Details | a device manufacturer or a Device Administrator is accepted. Details | |||
| are out of scope of the architecture and can be addressed in a protocol | are out of scope of this architecture document and can be addressed in a protoco l | |||
| document.</t> | document.</t> | |||
| <t>Before a TAM can begin operation in the marketplace to support a | ||||
| <t>Before a TAM can begin operation in the marketplace to support a | ||||
| device with a particular TEE, it must be able to get its raw public | device with a particular TEE, it must be able to get its raw public | |||
| key, or its certificate, or a certificate it chains up to, listed in | key, its certificate, or a certificate it chains up to listed in | |||
| the Trust Anchor Store of the TEEP Agent.</t> | the Trust Anchor Store of the TEEP Agent.</t> | |||
| </section> | ||||
| </section> | <section anchor="trust-anchors-in-tee"> | |||
| <section anchor="trust-anchors-in-tee"><name>Trust Anchors in a TEE</name> | <name>Trust Anchors in a TEE</name> | |||
| <t>The Trust Anchor Store in a TEE contains a list of Trust Anchors (raw | ||||
| <t>The Trust Anchor Store in a TEE contains a list of Trust Anchors (raw public | public keys | |||
| keys | ||||
| or certificates) that are used to determine whether TA binaries are allowed to e xecute by | or certificates) that are used to determine whether TA binaries are allowed to e xecute by | |||
| checking if their signatures can be verified. The list | checking if their signatures can be verified. The list | |||
| is typically preloaded at manufacturing time, and | is typically preloaded at manufacturing time and | |||
| can be updated using the TEEP protocol if the TEE has some form of | 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. | "Trust Anchor Manager TA" that has Trust Anchors in its configuration data. | |||
| Thus, Trust Anchors can be updated similarly to the Personalization Data | Thus, Trust Anchors can be updated similarly to the Personalization Data | |||
| for any other TA, as discussed in <xref target="trust-anchors-in-teep-agent"/>.< /t> | for any other TA, as discussed in <xref target="trust-anchors-in-teep-agent"/>.< /t> | |||
| </section> | ||||
| </section> | <section anchor="trust-anchors-in-tam"> | |||
| <section anchor="trust-anchors-in-tam"><name>Trust Anchors in a TAM</name> | <name>Trust Anchors in a TAM</name> | |||
| <t>The Trust Anchor Store in a TAM consists of a list of Trust | ||||
| <t>The Trust Anchor Store in a TAM consists of a list of Trust Anchors, which | Anchors, which are certificates that sign various device TEE | |||
| are certificates that sign various device TEE certificates. A TAM will accept a | certificates. A TAM will accept a device for Trusted Component | |||
| device for Trusted Component management if the TEE in the device uses a TEE cert | management if the TEE in the device uses a TEE certificate that is | |||
| ificate | chained to a certificate or raw public key that the TAM trusts, is | |||
| that is chained to a certificate or raw public key that the TAM trusts, is conta | contained in an allow list, is not found on a block list, and/or | |||
| ined in an allow list, | fulfills any other policy criteria.</t> | |||
| is not found on a block list, and/or fulfills any other policy criteria.</t> | </section> | |||
| <section anchor="scalability"> | ||||
| </section> | <name>Scalability</name> | |||
| <section anchor="scalability"><name>Scalability</name> | <t>This architecture uses a PKI (including self-signed | |||
| certificates). Trust Anchors exist on the devices to enable the TEEP | ||||
| <t>This architecture uses a PKI (including self-signed certificates). Trust Anch | Agent to authenticate TAMs and the TEE to authenticate Trusted | |||
| ors exist on the devices to | Component Signers, and TAMs use Trust Anchors to authenticate TEEP | |||
| enable the TEEP Agent to authenticate TAMs and the TEE to authenticate | Agents. When a PKI is used, many intermediate CA certificates can | |||
| Trusted Component Signers, and TAMs use Trust Anchors to | chain to a root certificate, each of which can issue many | |||
| authenticate TEEP Agents. When a PKI is used, many intermediate CA | certificates. This makes the protocol highly scalable. New factories | |||
| certificates can chain to a root certificate, each of which can issue | that produce TEEs can join the ecosystem. In this case, such a | |||
| many certificates. This makes the protocol highly scalable. New | factory can get an intermediate CA certificate from one of the | |||
| factories that produce TEEs can join the ecosystem. In this case, | existing roots without requiring that TAMs are updated with | |||
| such a factory can get an intermediate CA certificate from one of the | information about the new device factory. Likewise, new TAMs can join | |||
| existing roots without requiring that TAMs are updated with | the ecosystem, providing they are issued a TAM certificate that chains | |||
| information about the new device factory. Likewise, new TAMs can | to an existing root whereby existing TAs in the TEE will be allowed to | |||
| join the ecosystem, providing they are issued a TAM certificate that | be personalized by the TAM without requiring changes to the TEE | |||
| chains to an existing root whereby existing TAs in the TEE will be allowed to | itself. This enables the ecosystem to scale and avoids the need for | |||
| be personalized by the TAM without requiring changes to the TEE | centralized databases of all TEEs produced, all TAMs that exist, or | |||
| itself. This enables the ecosystem to scale, and avoids the need for | all Trusted Component Signers that exist. | |||
| centralized databases of all TEEs produced or all TAMs that exist or | </t> | |||
| all Trusted Component Signers that exist.</t> | </section> | |||
| <section anchor="message-security"> | ||||
| </section> | <name>Message Security</name> | |||
| <section anchor="message-security"><name>Message Security</name> | <t>Messages created by a TAM are used to deliver Trusted Component | |||
| <t>Messages created by a TAM are used to deliver Trusted Component | ||||
| management commands to a device, and device attestation and | management commands to a device, and device attestation and | |||
| messages are created by the device TEE to respond to TAM messages.</t> | messages are created by the device TEE to respond to TAM messages.</t> | |||
| <t>These messages are signed end-to-end between a TEEP Agent and a TAM. | ||||
| <t>These messages are signed end-to-end between a TEEP Agent and a TAM. | ||||
| Confidentiality is provided by encrypting sensitive payloads (such as | Confidentiality is provided by encrypting sensitive payloads (such as | |||
| Personalization Data and attestation evidence), rather than encrypting the | Personalization Data and attestation evidence), rather than encrypting the | |||
| messages themselves. Using encrypted payloads is important to ensure | messages themselves. Using encrypted payloads is important to ensure | |||
| that only the targeted device TEE or TAM is able to decrypt and view | that only the targeted device TEE or TAM is able to decrypt and view | |||
| the actual content.</t> | the actual content.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="broker"> | |||
| <section anchor="broker"><name>TEEP Broker</name> | <name>TEEP Broker</name> | |||
| <t>A TEE and TAs often do not have the capability to directly communicate | ||||
| <t>A TEE and TAs often do not have the capability to directly communicate | ||||
| outside of the hosting device. For example, GlobalPlatform | outside of the hosting device. For example, GlobalPlatform | |||
| <xref target="GPTEE"/> specifies one such architecture. This calls for a softwa re | <xref target="GPTEE"/> specifies one such architecture. This calls for a softwa re | |||
| module in the REE world to handle network communication with a TAM.</t> | module in the REE world to handle network communication with a TAM.</t> | |||
| <t>A TEEP Broker is an application component | ||||
| <t>A TEEP Broker is an application component | ||||
| running in the REE of the device or an SDK that facilitates | running in the REE of the device or an SDK that facilitates | |||
| communication between a TAM and a TEE. It also provides interfaces for | communication between a TAM and a TEE. It also provides interfaces for | |||
| Untrusted Applications to query and trigger installation of Trusted Components t hat the | Untrusted Applications to query and trigger installation of Trusted Components t hat the | |||
| application needs to use.</t> | application needs to use.</t> | |||
| <t>An Untrusted Application might communicate with a TEEP Broker at runtime | <t> | |||
| to trigger Trusted Component installation itself, or an Untrusted Application mi | An Untrusted Application might communicate with a TEEP Broker at | |||
| ght simply | runtime to trigger Trusted Component installation itself. Alternatively, an | |||
| have a metadata file that describes the Trusted Components it depends on and the | Untrusted Application might simply have a metadata file that | |||
| associated TAM(s) for each Trusted Component, | describes the Trusted Components it depends on and the associated | |||
| and an REE Application Installer can inspect this | TAM(s) for each Trusted Component. An REE Application Installer | |||
| application metadata file and invoke the TEEP Broker to trigger Trusted Componen | can inspect this application metadata file and invoke the TEEP Broker | |||
| t installation | to trigger Trusted Component installation on behalf of the Untrusted | |||
| on behalf of the Untrusted | Application without requiring the Untrusted Application to run first. | |||
| Application without requiring the Untrusted Application to run first.</t> | </t> | |||
| <section anchor="role-of-the-teep-broker"> | ||||
| <section anchor="role-of-the-teep-broker"><name>Role of the TEEP Broker</name> | <name>Role of the TEEP Broker</name> | |||
| <t>A TEEP Broker interacts with a TEEP Agent inside a TEE, | ||||
| <t>A TEEP Broker interacts with a TEEP Agent inside a TEE, | ||||
| relaying messages between the TEEP Agent and the TAM, and may also interact with | relaying messages between the TEEP Agent and the TAM, and may also interact with | |||
| one or more Untrusted Applications (see <xref target="apis"/>). | one or more Untrusted Applications (see <xref target="apis"/>). | |||
| The Broker cannot parse encrypted TEEP messages between a TAM and a TEEP agent | The Broker cannot parse encrypted TEEP messages exchanged between a TAM and a TE | |||
| but merely relays them.</t> | EP Agent but merely relays them.</t> | |||
| <t>When a device has more than one TEE, one TEEP Broker per TEE could | ||||
| <t>When a device has more than one TEE, one TEEP Broker per TEE could | be present in the REE, or a common TEEP Broker could be used by multiple TEEs | |||
| be present in the REE or a common TEEP Broker could be used by multiple TEEs | ||||
| where the transport protocol (e.g., <xref target="I-D.ietf-teep-otrp-over-http"/ >) allows | where the transport protocol (e.g., <xref target="I-D.ietf-teep-otrp-over-http"/ >) allows | |||
| the TEEP Broker to distinguish which TEE is relevant for each message from a TAM .</t> | the TEEP Broker to distinguish which TEE is relevant for each message from a TAM .</t> | |||
| <t>The Broker only needs to return a (transport) error message to the TAM if the TEE is | <t>The Broker only needs to return an error message to the TAM if the TEE is | |||
| not reachable for some reason. Other errors are represented as | not reachable for some reason. Other errors are represented as | |||
| TEEP response messages returned from the TEE which will then be passed to | TEEP response messages returned from the TEE, which will then be passed to | |||
| the TAM.</t> | the TAM.</t> | |||
| </section> | ||||
| <section anchor="teep-broker-implementation-consideration"> | ||||
| <name>TEEP Broker Implementation Consideration</name> | ||||
| <t>As depicted in <xref target="broker-models"/>, there are multiple way | ||||
| s in which a TEEP Broker | ||||
| can be implemented with more or fewer layers being inside the TEE. | ||||
| For example, in model A (the model with the smallest TEE footprint), only the | ||||
| TEEP implementation is inside the TEE, whereas the TEEP/HTTP implementation is | ||||
| in the TEEP Broker outside the TEE.</t> | ||||
| <figure anchor="broker-models"> | ||||
| <name>TEEP Broker Models</name> | ||||
| <artwork><![CDATA[ | ||||
| Model: A B C | ||||
| </section> | TEE TEE TEE | |||
| <section anchor="teep-broker-implementation-consideration"><name>TEEP Broker Imp | +----------------+ | | | | |||
| lementation Consideration</name> | | TEEP | Agent | | | Agent | |||
| | implementation | | | | | ||||
| <t>As depicted in <xref target="broker-models"/>, there are multiple ways in whi | +----------------+ v | | | |||
| ch a TEEP Broker | | | | | |||
| can be implemented, with more or fewer layers being inside the TEE. For example | +----------------+ ^ | | | |||
| , in | | TEEP/HTTP | Broker | | | | |||
| model A, the model with the smallest TEE footprint, only the TEEP implementation | | implementation | | | | | |||
| is inside | +----------------+ | v | | |||
| the TEE, whereas the TEEP/HTTP implementation is in the TEEP Broker outside the | | | | | |||
| TEE.</t> | +----------------+ | ^ | | |||
| | HTTP(S) | | | | | ||||
| <figure title="TEEP Broker Models" anchor="broker-models"><artwork><![CDATA[ | | implementation | | | | | |||
| Model: A B C | +----------------+ | | v | |||
| | | | | ||||
| TEE TEE TEE | +----------------+ | | ^ | |||
| +----------------+ | | | | | TCP or QUIC | | | | Broker | |||
| | TEEP | Agent | | | Agent | | implementation | | | | | |||
| | implementation | | | | | +----------------+ | | | | |||
| +----------------+ v | | | REE REE REE | |||
| | | | | ]]></artwork> | |||
| +----------------+ ^ | | | </figure> | |||
| | TEEP/HTTP | Broker | | | | <t>In other models, additional layers are moved into the TEE, increasing | |||
| | implementation | | | | | the TEE footprint, | |||
| +----------------+ | v | | ||||
| | | | | ||||
| +----------------+ | ^ | | ||||
| | HTTP(S) | | | | | ||||
| | implementation | | | | | ||||
| +----------------+ | | v | ||||
| | | | | ||||
| +----------------+ | | ^ | ||||
| | TCP or QUIC | | | | Broker | ||||
| | implementation | | | | | ||||
| +----------------+ | | | | ||||
| REE REE REE | ||||
| ]]></artwork></figure> | ||||
| <t>In other models, additional layers are moved into the TEE, increasing the TEE | ||||
| footprint, | ||||
| with the Broker either containing or calling the topmost protocol layer outside of the TEE. | with the Broker either containing or calling the topmost protocol layer outside of the TEE. | |||
| An implementation is free to choose any of these models.</t> | An implementation is free to choose any of these models.</t> | |||
| <t>TEEP Broker implementers should consider methods of distribution, sco | ||||
| <t>TEEP Broker implementers should consider methods of distribution, scope and | pe, and | |||
| concurrency on devices and runtime options.</t> | concurrency on devices and runtime options.</t> | |||
| <section anchor="apis"> | ||||
| <name>TEEP Broker APIs</name> | ||||
| <t>The following conceptual APIs exist from a TEEP Broker to a TEEP Ag | ||||
| ent:</t> | ||||
| <ol spacing="normal"> | ||||
| <section anchor="apis"><name>TEEP Broker APIs</name> | <li>RequestTA: A notification from an REE application (e.g., an | |||
| installer or an Untrusted Application) that the application | ||||
| <t>The following conceptual APIs exist from a TEEP Broker to a TEEP Agent:</t> | depends on a given Trusted Component, which may or may not already | |||
| be installed in the TEE. | ||||
| <t><list style="numbers"> | </li> | |||
| <t>RequestTA: A notification from an REE application (e.g., an installer, | <li>UnrequestTA: A notification from an REE application (e.g., an | |||
| or an Untrusted Application) that it depends on a given Trusted Component, which | installer or an Untrusted Application) that the application no | |||
| may or may not | longer depends on a given Trusted Component, which may or may not | |||
| already be installed in the TEE.</t> | already be installed in the TEE. For example, if the Untrusted | |||
| <t>UnrequestTA: A notification from an REE application (e.g., an installer, | Application is uninstalled, the uninstaller might invoke this | |||
| or an Untrusted Application) that it no longer depends on a given | conceptual API.</li> | |||
| Trusted Component, which may or may not already be installed in the TEE. | <li>ProcessTeepMessage: A message arriving from the network, to be delivered | |||
| For example, if the Untrusted Application is uninstalled, the uninstaller | to the TEEP Agent for processing.</li> | |||
| might invoke this conceptual API.</t> | <li>RequestPolicyCheck: A hint (e.g., based on a timer) that the TEE | |||
| <t>ProcessTeepMessage: A message arriving from the network, to be delivered | P Agent | |||
| to the TEEP Agent for processing.</t> | may wish to contact the TAM for any changes without the device itself | |||
| <t>RequestPolicyCheck: A hint (e.g., based on a timer) that the TEEP Agent | needing any particular change.</li> | |||
| may wish to contact the TAM for any changes, without the device itself | <li>ProcessError: A notification that the TEEP Broker could not deli | |||
| needing any particular change.</t> | ver an outbound | |||
| <t>ProcessError: A notification that the TEEP Broker could not deliver an outb | TEEP message to a TAM.</li> | |||
| ound | </ol> | |||
| TEEP message to a TAM.</t> | <t>For comparison, similar APIs may exist on the TAM side, where a Bro | |||
| </list></t> | ker may or may not | |||
| <t>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 or not:</t> | exist, depending on whether the TAM uses a TEE or not:</t> | |||
| <ol spacing="normal"> | ||||
| <t><list style="numbers"> | <li>ProcessConnect: A notification that a new TEEP session is being requested by | |||
| <t>ProcessConnect: A notification that a new TEEP session is being requested b | a TEEP Agent.</li> | |||
| y a TEEP Agent.</t> | <li>ProcessTeepMessage: A message arriving at an existing TEEP sessi | |||
| <t>ProcessTeepMessage: A message arriving at an existing TEEP session, to be d | on, to be delivered | |||
| elivered | to the TAM for processing.</li> | |||
| to the TAM for processing.</t> | </ol> | |||
| </list></t> | <t>For further discussion on these APIs, see <xref target="I-D.ietf-te | |||
| ep-otrp-over-http"/>.</t> | ||||
| <t>For further discussion on these APIs, see <xref target="I-D.ietf-teep-otrp-ov | </section> | |||
| er-http"/>.</t> | <section anchor="teep-broker-distribution"> | |||
| <name>TEEP Broker Distribution</name> | ||||
| </section> | <t>The Broker installation is commonly carried out at device manufactu | |||
| <section anchor="teep-broker-distribution"><name>TEEP Broker Distribution</name> | ring time. A user | |||
| may also dynamically download and install a Broker on demand.</t> | ||||
| <t>The Broker installation is commonly carried out at device manufacturing time. | </section> | |||
| A user | </section> | |||
| may also dynamically download and install a Broker on-demand.</t> | </section> | |||
| <section anchor="attestation"> | ||||
| </section> | <name>Attestation</name> | |||
| </section> | <t>Attestation is the process through which one entity (an Attester) prese | |||
| </section> | nts "evidence" in the form | |||
| <section anchor="attestation"><name>Attestation</name> | of a series of claims to another entity (a Verifier) and provides sufficient pro | |||
| <t>Attestation is the process through which one entity (an Attester) presents "e | of that the claims | |||
| vidence", in the form | are true. Different Verifiers may require different degrees of confidence in att | |||
| of a series of claims, to another entity (a Verifier), and provides sufficient p | estation proofs, | |||
| roof that the claims | ||||
| are true. Different Verifiers may require different degrees of confidence in att | ||||
| estation proofs | ||||
| and not all attestations are acceptable to every Verifier. A third entity (a Re lying Party) | and not all attestations are acceptable to every Verifier. A third entity (a Re lying Party) | |||
| can then use "attestation results", in the form of another series of claims, fro | can then use "attestation results" in the form of another series of claims from | |||
| m a Verifier | a Verifier | |||
| to make authorization decisions. (See <xref target="I-D.ietf-rats-architecture" | to make authorization decisions. (See <xref target="RFC9334"/> for more discuss | |||
| /> for more discussion.)</t> | ion.)</t> | |||
| <t>In TEEP, as depicted in <xref target="attestation-roles"/>, | ||||
| <t>In TEEP, as depicted in <xref target="attestation-roles"/>, | ||||
| the primary purpose of an attestation is to allow a device (the Attester) to pro ve to a TAM | the primary purpose of an attestation is to allow a device (the Attester) to pro ve to a TAM | |||
| (the Relying Party) that a TEE in the device has particular properties, was buil t by a particular | (the Relying Party) that a TEE in the device has particular properties, was buil t by a particular | |||
| manufacturer, and/or is executing a particular TA. Other claims are possible; TE EP | manufacturer, and/or is executing a particular TA. Other claims are possible; TE EP | |||
| does not limit the claims that may appear in evidence or attestation results, | does not limit the claims that may appear in evidence or attestation results, | |||
| but defines a minimal set of attestation result claims | but it defines a minimal set of attestation result claims | |||
| required for TEEP to operate properly. Extensions to these claims are possible. | required for TEEP to operate properly. Extensions to these claims are possible. | |||
| Other standards or groups may define the format and semantics | Other standards or groups may define the format and semantics | |||
| of extended claims.</t> | of extended claims.</t> | |||
| <figure anchor="attestation-roles"> | ||||
| <figure title="TEEP Attestation Roles" anchor="attestation-roles"><artwork><![CD | <name>TEEP Attestation Roles</name> | |||
| ATA[ | <artwork><![CDATA[ | |||
| +----------------+ | +----------------+ | |||
| | Device | +----------+ | | Device | +----------+ | |||
| | +------------+ | Evidence | TAM | Evidence +----------+ | | +------------+ | Evidence | TAM | Evidence +----------+ | |||
| | | TEE |------------->| (Relying |-------------->| Verifier | | | | TEE |------------->| (Relying |-------------->| Verifier | | |||
| | | (Attester) | | | Party) |<--------------| | | | | (Attester) | | | Party) |<--------------| | | |||
| | +------------+ | +----------+ Attestation +----------+ | | +------------+ | +----------+ Attestation +----------+ | |||
| +----------------+ Result | +----------------+ Result | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t>As of the writing of this specification, device and TEE attestations have not | <t>At the time of writing this specification, device and TEE attestations | |||
| been standardized | have not been standardized | |||
| across the market. Different devices, manufacturers, and TEEs support different attestation | across the market. Different devices, manufacturers, and TEEs support different attestation | |||
| protocols. In order for TEEP to be inclusive, it is agnostic to the format of ev idence, | protocols. In order for TEEP to be inclusive, it is agnostic to the format of ev idence, | |||
| allowing proprietary or standardized formats to be used between a TEE and a Veri fier (which may or may not | allowing proprietary or standardized formats to be used between a TEE and a Veri fier (which may or may not | |||
| be colocated in the TAM), as long as the format supports encryption of | be colocated in the TAM), as long as the format supports encryption of | |||
| any information that is considered sensitive.</t> | any information that is considered sensitive.</t> | |||
| <t>However, it should be recognized | ||||
| <t>However, it should be recognized | ||||
| that not all Verifiers may be able to process all proprietary forms of attestati on evidence. | that not all Verifiers may be able to process all proprietary forms of attestati on evidence. | |||
| Similarly, the TEEP protocol is agnostic as to the format of attestation results , and the protocol | Similarly, the TEEP protocol is agnostic as to the format of attestation results and the protocol | |||
| (if any) used between the TAM and a Verifier, as long as they convey at least th e required set of claims | (if any) used between the TAM and a Verifier, as long as they convey at least th e required set of claims | |||
| in some format. Note that the respective attestation algorithms are not defined in the TEEP protocol itself; | in some format. Note that the respective attestation algorithms are not defined in the TEEP protocol itself; | |||
| see <xref target="I-D.ietf-rats-architecture"/> and <xref target="I-D.ietf-teep- | see <xref target="RFC9334"/> and <xref target="I-D.ietf-teep-protocol"/> for mor | |||
| protocol"/> for more discussion.</t> | e discussion.</t> | |||
| <t>There are a number of considerations that need to be considered when appraisi | ||||
| ng | ||||
| evidence provided by a TEE, including:</t> | ||||
| <t><list style="symbols"> | ||||
| <t>What security measures a manufacturer takes when provisioning keys into dev | ||||
| ices/TEEs;</t> | ||||
| <t>What hardware and software components have access to the attestation keys o | ||||
| f the TEE;</t> | ||||
| <t>The source or local verification of claims within an attestation prior to a | ||||
| TEE signing a set of claims;</t> | ||||
| <t>The level of protection afforded to attestation keys against exfiltration, | ||||
| modification, and side channel attacks;</t> | ||||
| <t>The limitations of use applied to TEE attestation keys;</t> | ||||
| <t>The processes in place to discover or detect TEE breaches; and</t> | ||||
| <t>The revocation and recovery process of TEE attestation keys.</t> | ||||
| </list></t> | ||||
| <t>Some TAMs may require additional claims in order to properly authorize a devi | <t>Considerations when appraising evidence provided by a TEE include the f | |||
| ce or TEE. The specific | ollowing: | |||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>What security measures a manufacturer takes when provisioning keys i | ||||
| nto devices/TEEs;</li> | ||||
| <li>What hardware and software components have access to the attestation | ||||
| keys of the TEE;</li> | ||||
| <li>The source or local verification of claims within an attestation pri | ||||
| or to a TEE signing a set of claims;</li> | ||||
| <li>The level of protection afforded to attestation keys against exfiltr | ||||
| ation, modification, and side channel attacks;</li> | ||||
| <li>The limitations of use applied to TEE attestation keys;</li> | ||||
| <li>The processes in place to discover or detect TEE breaches; and</li> | ||||
| <li>The revocation and recovery process of TEE attestation keys.</li> | ||||
| </ul> | ||||
| <t>Some TAMs may require additional claims in order to properly authorize | ||||
| a device or TEE. The specific | ||||
| format for these additional claims are outside the scope of this specification, but the TEEP protocol | format for these additional claims are outside the scope of this specification, but the TEEP protocol | |||
| allows these additional claims to be included in the attestation messages.</t> | allows these additional claims to be included in the attestation messages.</t> | |||
| <t>For more discussion of the attestation and appraisal process, see | ||||
| <t>For more discussion of the attestation and appraisal process, see | the RATS Architecture <xref target="RFC9334"/>.</t> | |||
| the RATS Architecture <xref target="I-D.ietf-rats-architecture"/>.</t> | <t>The following information is required for TEEP attestation:</t> | |||
| <ul spacing="normal"> | ||||
| <t>The following information is required for TEEP attestation:</t> | <li>Device Identifying Information: Attestation information may need to | |||
| uniquely identify a device to the TAM. | ||||
| <t><list style="symbols"> | ||||
| <t>Device Identifying Information: Attestation information may need to uniquel | ||||
| y identify a device to the TAM. | ||||
| Unique device identification allows the TAM to provide services to the device, s uch as managing installed | Unique device identification allows the TAM to provide services to the device, s uch as managing installed | |||
| TAs, and providing subscriptions to services, and locating device-specific keyin | TAs, providing subscriptions to services, and locating device-specific keying ma | |||
| g material to | terial to | |||
| communicate with or authenticate the device. In some use cases it may be suffici | communicate with or authenticate the device. In some use cases, it may be suffic | |||
| ent to identify | ient to identify | |||
| only the model or class of the device, for example, a DAA Issuer's group public key ID when the | only the model or class of the device, for example, a DAA Issuer's group public key ID when the | |||
| attestation uses DAA, see <xref target="I-D.ietf-rats-daa"/>. Another example of models is the hwmodel (Hardware Model) as | attestation uses DAA; see <xref target="I-D.ietf-rats-daa"/>. Another example of models is the hwmodel (Hardware Model) as | |||
| defined in <xref target="I-D.ietf-rats-eat"/>. The security and privacy requirem ents regarding device identification | defined in <xref target="I-D.ietf-rats-eat"/>. The security and privacy requirem ents regarding device identification | |||
| will vary with the type of TA provisioned to the TEE.</t> | will vary with the type of TA provisioned to the TEE.</li> | |||
| <t>TEE Identifying Information: The type of TEE that generated this attestatio | <li>TEE Identifying Information: The type of TEE that generated this att | |||
| n must be identified. | estation must be identified. | |||
| This includes version identification information for hardware, firmware, and sof tware version of the TEE, as applicable by the | This includes version identification information for hardware, firmware, and sof tware version of the TEE, as applicable by the | |||
| TEE type. TEE manufacturer information for the TEE is | TEE type. TEE manufacturer information for the TEE is | |||
| required in order to disambiguate the same TEE type created by different manufac turers and | required in order to disambiguate the same TEE type created by different manufac turers and | |||
| address considerations around manufacturer provisioning, keying and support for | address considerations around manufacturer provisioning, keying, and support for | |||
| the TEE.</t> | the TEE.</li> | |||
| <t>Freshness Proof: A claim that includes freshness information must be includ | <li>Freshness Proof: A claim that includes freshness information must be | |||
| ed, such as a nonce | included, such as a nonce | |||
| or timestamp.</t> | or timestamp.</li> | |||
| </list></t> | </ul> | |||
| </section> | ||||
| </section> | <section anchor="algorithm-and-attestation-agility"> | |||
| <section anchor="algorithm-and-attestation-agility"><name>Algorithm and Attestat | <name>Algorithm and Attestation Agility</name> | |||
| ion Agility</name> | <t><xref target="RFC7696"/> outlines the requirements to migrate from one | |||
| <t><xref target="RFC7696"/> outlines the requirements to migrate from one | ||||
| mandatory-to-implement cryptographic algorithm suite to another over time. | mandatory-to-implement cryptographic algorithm suite to another over time. | |||
| This feature is also known as crypto agility. Protocol evolution | This feature is also known as "crypto agility". Protocol evolution | |||
| is greatly simplified when crypto agility is considered | is greatly simplified when crypto agility is considered | |||
| during the design of the protocol. In the case of the TEEP | during the design of the protocol. In the case of the TEEP | |||
| protocol the diverse range of use cases, from trusted app | protocol, the diverse range of use cases (from trusted app | |||
| updates for smartphones and tablets to updates of code on | updates for smartphones and tablets to updates of code on | |||
| higher-end IoT devices, creates the need for different | higher-end IoT devices) creates the need for different | |||
| mandatory-to-implement algorithms already from the start.</t> | mandatory-to-implement algorithms from the start.</t> | |||
| <t>Crypto agility in TEEP concerns the use of symmetric as well as asymmet | ||||
| <t>Crypto agility in TEEP concerns the use of symmetric as well as asymmetric | ric | |||
| algorithms. In the context of TEEP, symmetric algorithms are used for | algorithms. In the context of TEEP, symmetric algorithms are used for | |||
| encryption and integrity protection of TA binaries and Personalization Data | encryption and integrity protection of TA binaries and Personalization Data, | |||
| whereas the asymmetric algorithms are used for signing messages and managing | whereas the asymmetric algorithms are used for signing messages and managing | |||
| symmetric keys.</t> | symmetric keys.</t> | |||
| <t>In addition to the use of cryptographic algorithms in TEEP, there | ||||
| <t>In addition to the use of cryptographic algorithms in TEEP, there | ||||
| is also the need to make use of different attestation technologies. | is also the need to make use of different attestation technologies. | |||
| A device must provide techniques to inform a TAM about the | A device must provide techniques to inform a TAM about the | |||
| attestation technology it supports. For many deployment cases it | attestation technology it supports. For many deployment cases, it | |||
| is more likely for the TAM to support one or more attestation | is more likely for the TAM to support one or more attestation | |||
| techniques whereas the device may only support one.</t> | techniques, whereas the device may only support one.</t> | |||
| </section> | ||||
| </section> | <section anchor="security-considerations"> | |||
| <section anchor="security-considerations"><name>Security Considerations</name> | <name>Security Considerations</name> | |||
| <section anchor="broker-trust-model"> | ||||
| <section anchor="broker-trust-model"><name>Broker Trust Model</name> | <name>Broker Trust Model</name> | |||
| <t>The architecture enables the TAM to communicate, via a TEEP Broker, w | ||||
| ith the device's TEE to manage Trusted Components. | ||||
| <t>The architecture enables the TAM to communicate, via a TEEP Broker, with the | However, since the TEEP Broker runs in a potentially vulnerable REE, | |||
| device's TEE | the TEEP Broker could be malware or be infected by malware. | |||
| to manage Trusted Components. Since the TEEP Broker runs in a potentially vulne | ||||
| rable REE, | ||||
| the TEEP Broker could, however, be (or be infected by) malware. | ||||
| As such, all TAM messages are signed and sensitive | As such, all TAM messages are signed and sensitive | |||
| data is encrypted such that the TEEP Broker cannot modify or capture | data is encrypted such that the TEEP Broker cannot modify or capture | |||
| sensitive data, but the TEEP Broker can still conduct DoS attacks | sensitive data, but the TEEP Broker can still conduct DoS attacks | |||
| as discussed in <xref target="compromised-ree"/>.</t> | as discussed in <xref target="compromised-ree"/>.</t> | |||
| <t>A TEEP Agent in a TEE is responsible for protecting against potential | ||||
| <t>A TEEP Agent in a TEE is responsible for protecting against potential attacks | attacks | |||
| from a compromised | from a compromised | |||
| TEEP Broker or rogue malware in the REE. A rogue TEEP Broker | TEEP Broker or rogue malware in the REE. A rogue TEEP Broker | |||
| might send corrupted data to the TEEP Agent, or launch a DoS attack by sending a flood | might send corrupted data to the TEEP Agent, launch a DoS attack by sending a fl ood | |||
| of TEEP protocol requests, or simply drop or delay notifications to a TEE. The T EEP Agent | of TEEP protocol requests, or simply drop or delay notifications to a TEE. The T EEP Agent | |||
| validates the signature of each TEEP protocol request | validates the signature of each TEEP protocol request | |||
| and checks the signing certificate against its Trust Anchors. To mitigate | and checks the signing certificate against its Trust Anchors. To mitigate | |||
| DoS attacks, it might also add some protection | DoS attacks, it might also add some protection | |||
| scheme such as a threshold on repeated requests or number of TAs that can be ins | scheme such as a threshold on repeated requests or the number of TAs that can be | |||
| talled.</t> | installed.</t> | |||
| <t>Due to the lack of any available alternative, some implementations mi | ||||
| <t>Some implementations might rely on (due to lack of any available alternative) | ght rely on the use of | |||
| the use of | ||||
| an untrusted timer or other event to call the RequestPolicyCheck API (<xref targ et="apis"/>), which | an untrusted timer or other event to call the RequestPolicyCheck API (<xref targ et="apis"/>), which | |||
| means that a compromised REE can cause a TEE to not receive policy changes and t hus be out of date | means that a compromised REE can cause a TEE to not receive policy changes and t hus be out of date | |||
| with respect to policy. The same can potentially be done by any other manipulat or-in-the-middle | with respect to policy. The same can potentially be done by any other manipulat or-in-the-middle | |||
| simply by blocking communication with a TAM. Ultimately such outdated complianc e | simply by blocking communication with a TAM. Ultimately, such outdated complian ce | |||
| could be addressed by using attestation in secure communication, where the attes tation | could be addressed by using attestation in secure communication, where the attes tation | |||
| evidence reveals what state the TEE is in, so that communication (other than rem ediation | evidence reveals what state the TEE is in, so that communication (other than rem ediation | |||
| such as via TEEP) from an out-of-compliance TEE can be rejected.</t> | such as via TEEP) from an out-of-compliance TEE can be rejected.</t> | |||
| <t>Similarly, in most implementations, the REE is involved in the mechan | ||||
| <t>Similarly, in most implementations the REE is involved in the mechanics of in | ics of installing new TAs. | |||
| stalling new TAs. | ||||
| However, the authority for what TAs are running in a given TEE is between the TE EP Agent and the TAM. | However, the authority for what TAs are running in a given TEE is between the TE EP Agent and the TAM. | |||
| While a TEEP Broker can in effect make suggestions as discussed in Section <xref target="apis"/>, it cannot decide or enforce what runs where. | While a TEEP Broker can, in effect, make suggestions as discussed in <xref targe t="apis"/>, it cannot decide or enforce what runs where. | |||
| The TEEP Broker can also control which TEE a given installation request is direc ted at, but a TEEP | The TEEP Broker can also control which TEE a given installation request is direc ted at, but a TEEP | |||
| Agent will only accept TAs that are actually applicable to it and where installa tion instructions | Agent will only accept TAs that are actually applicable to it and where installa tion instructions | |||
| are received by a TAM that it trusts.</t> | are received by a TAM that it trusts.</t> | |||
| <t>The authorization model for the UnrequestTA operation is, however, we | ||||
| <t>The authorization model for the UnrequestTA operation is, however, weaker in | aker in that it | |||
| that it | ||||
| expresses the removal of a dependency from an application that was untrusted to begin with. | expresses the removal of a dependency from an application that was untrusted to begin with. | |||
| This means that a compromised REE could remove a valid dependency from an Untrus ted Application | This means that a compromised REE could remove a valid dependency from an Untrus ted Application | |||
| on a TA. Normal REE security mechanisms should be used to protect the REE and U ntrusted Applications.</t> | on a TA. Normal REE security mechanisms should be used to protect the REE and U ntrusted Applications.</t> | |||
| </section> | ||||
| </section> | <section anchor="data-protection"> | |||
| <section anchor="data-protection"><name>Data Protection</name> | <name>Data Protection</name> | |||
| <t>It is the responsibility of the TAM to protect data on its servers. | ||||
| <t>It is the responsibility of the TAM to protect data on its servers. | ||||
| Similarly, it is the responsibility of the TEE implementation to provide protect ion of | Similarly, it is the responsibility of the TEE implementation to provide protect ion of | |||
| data against integrity and confidentiality attacks from outside the TEE. | data against integrity and confidentiality attacks from outside the TEE. | |||
| TEEs that provide isolation among TAs within the TEE are likewise | TEEs that provide isolation among TAs within the TEE are likewise | |||
| responsible for protecting TA data against the REE and other TAs. | responsible for protecting TA data against the REE and other TAs. | |||
| For example, this can be used to protect one user's or tenant's data | For example, this can be used to protect the data of one user or tenant | |||
| from compromise by another user or tenant, even if the attacker has TAs.</t> | from compromise by another user or tenant, even if the attacker has TAs.</t> | |||
| <t>The protocol between TEEP Agents and TAMs is similarly responsible fo | ||||
| <t>The protocol between TEEP Agents and TAMs similarly is responsible for | r | |||
| securely providing integrity and confidentiality protection against | securely providing integrity and confidentiality protection against | |||
| adversaries between them. It is a design choice at what layers to best | adversaries between them. | |||
| provide protection against network adversaries. As discussed in <xref target="br | The layers at which to best provide protection against network | |||
| oker"/>, | adversaries is a design choice. | |||
| As discussed in <xref target="broker"/>, | ||||
| the transport protocol and any security mechanism associated with it (e.g., the Transport Layer Security protocol) under | the transport protocol and any security mechanism associated with it (e.g., the Transport Layer Security protocol) under | |||
| the TEEP protocol may terminate outside a TEE. If it does, the TEEP protocol | the TEEP protocol may terminate outside a TEE. If it does, the TEEP protocol | |||
| itself must provide integrity protection and confidentiality protection to | itself must provide integrity and confidentiality protection to | |||
| secure data end-to-end. For example, confidentiality protection for | secure data end-to-end. For example, confidentiality protection for | |||
| payloads may be provided by utilizing encrypted TA binaries and encrypted | payloads may be provided by utilizing encrypted TA binaries and encrypted | |||
| attestation information. See <xref target="I-D.ietf-teep-protocol"/> for how a s pecific | attestation information. See <xref target="I-D.ietf-teep-protocol"/> for how a s pecific | |||
| solution addresses the design question of how to provide integrity and | solution addresses the design question of how to provide integrity and | |||
| confidentiality protection.</t> | confidentiality protection.</t> | |||
| </section> | ||||
| </section> | <section anchor="compromised-ree"> | |||
| <section anchor="compromised-ree"><name>Compromised REE</name> | <name>Compromised REE</name> | |||
| <t>It is possible that the REE of a device is compromised. | ||||
| <t>It is possible that the REE of a device is compromised. | ||||
| We have already seen examples of attacks on the public Internet with a large num ber | We have already seen examples of attacks on the public Internet with a large num ber | |||
| of compromised devices being used to mount DDoS attacks. A compromised | of compromised devices being used to mount DDoS attacks. A compromised | |||
| REE can be used for such an attack but it cannot tamper with the TEE's | REE can be used for such an attack, but it cannot tamper with the TEE's | |||
| code or data in doing so. A compromised REE can, however, launch DoS attacks | code or data in doing so. A compromised REE can, however, launch DoS attacks | |||
| against the TEE.</t> | against the TEE.</t> | |||
| <t>The compromised REE | ||||
| <t>The compromised REE | may terminate the TEEP Broker such that TEEP transactions cannot reach the TEE | |||
| may terminate the TEEP Broker such that TEEP transactions cannot reach the TEE, | ||||
| or might drop, replay, or delay messages between a TAM and a TEEP Agent. | or might drop, replay, or delay messages between a TAM and a TEEP Agent. | |||
| However, while a DoS attack cannot be prevented, the REE cannot access | However, while a DoS attack cannot be prevented, the REE cannot access | |||
| anything in the TEE if the TEE is implemented correctly. | anything in the TEE if the TEE is implemented correctly. | |||
| Some TEEs may have some watchdog scheme to observe REE state and mitigate DoS | Some TEEs may have some watchdog scheme to observe REE state and mitigate DoS | |||
| attacks against it but most TEEs don't have such a capability.</t> | attacks against it, but most TEEs don't have such a capability.</t> | |||
| <t>In some other scenarios, the compromised REE may ask a TEEP Broker | ||||
| <t>In some other scenarios, the compromised REE may ask a TEEP Broker | ||||
| to make repeated requests to a TEEP Agent in a TEE to install or | to make repeated requests to a TEEP Agent in a TEE to install or | |||
| uninstall a Trusted Component. An installation or uninstallation request constr ucted | uninstall a Trusted Component. An installation or uninstallation request constr ucted | |||
| by the TEEP Broker or REE will be rejected by the TEEP Agent because | 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 | the request won't have the correct signature from a TAM to pass the request | |||
| signature validation.</t> | signature validation.</t> | |||
| <t>This can become a DoS attack by exhausting resources in a TEE with | ||||
| <t>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 | 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 | is compromised and a DoS attack can happen to other resources. The TEEP | |||
| architecture doesn't change this.</t> | architecture doesn't change this.</t> | |||
| <t>A compromised REE might also request initiating the full flow of | ||||
| <t>A compromised REE might also request initiating the full flow of | ||||
| installation of Trusted Components that are not necessary. | installation of Trusted Components that are not necessary. | |||
| It may also repeat a prior legitimate Trusted Component installation | It may also repeat a prior legitimate Trusted Component installation | |||
| request. A TEEP Agent implementation is responsible for ensuring that it | request. A TEEP Agent implementation is responsible for ensuring that it | |||
| can recognize and decline such repeated requests. It is also responsible | can recognize and decline such repeated requests. It is also responsible | |||
| for protecting the resource usage allocated for Trusted Component management.</t > | for protecting the resource usage allocated for Trusted Component management.</t > | |||
| </section> | ||||
| </section> | <section anchor="trust-anchor-compromise"> | |||
| <section anchor="trust-anchor-compromise"><name>CA Compromise or Expiry of CA Ce | <name>CA Compromise or Expiry of CA Certificate</name> | |||
| rtificate</name> | <t>A root CA for TAM certificates might get compromised, its certificate | |||
| might | ||||
| <t>A root CA for TAM certificates might get compromised, or its certificate migh | ||||
| t | ||||
| expire, or a Trust Anchor other than a root CA certificate may also expire or | expire, or a Trust Anchor other than a root CA certificate may also expire or | |||
| be compromised. | be compromised. | |||
| TEEs are responsible for validating the entire TAM certificate path, | TEEs are responsible for validating the entire TAM certification path, | |||
| including the TAM certificate and any intermediate certificates up to | including the TAM certificate and any intermediate certificates up to | |||
| the root certificate. See Section 6 of <xref target="RFC5280"/> for details. | the root certificate. See <xref target="RFC5280" sectionFormat="of" section="6" /> for details. | |||
| Such validation generally includes checking for certificate | Such validation generally includes checking for certificate | |||
| revocation, but certificate status check protocols may | revocation, but certificate status check protocols may | |||
| not scale down to constrained devices that use TEEP.</t> | not scale down to constrained devices that use TEEP.</t> | |||
| <t>To address the above issues, a certification path update mechanism | ||||
| <t>To address the above issues, a certificate path update mechanism | ||||
| is expected from TAM operators, so that the TAM can get | is expected from TAM operators, so that the TAM can get | |||
| a new certificate path that can be validated by a TEEP Agent. | a new certification path that can be validated by a TEEP Agent. | |||
| In addition, the Trust Anchor in the TEEP Agent's Trust Anchor Store | In addition, the Trust Anchor in the TEEP Agent's Trust Anchor Store | |||
| may need to be updated. To address this, some TEE Trust Anchor update | may need to be updated. | |||
| mechanism is expected from device OEMs, such as using the TEEP protocol | To address this, a TEE Trust Anchor update | |||
| mechanism is expected from device equipment manufacturers (OEMs), such as using | ||||
| the TEEP protocol | ||||
| to distribute new Trust Anchors.</t> | to distribute new Trust Anchors.</t> | |||
| <t>Similarly, a root CA for TEE certificates might get compromised, its | ||||
| <t>Similarly, a root CA for TEE certificates might get compromised, or its certi | certificate might | |||
| ficate might | ||||
| expire, or a Trust Anchor other than a root CA certificate may also expire or | expire, or a Trust Anchor other than a root CA certificate may also expire or | |||
| be compromised. | be compromised. | |||
| TAMs are responsible for validating the entire TEE certificate path, | TAMs are responsible for validating the entire TEE certification path, | |||
| including the TEE certificate and any intermediate certificates up to | including the TEE certificate and any intermediate certificates up to | |||
| the root certificate. Such validation includes checking for certificate | the root certificate. Such validation includes checking for certificate | |||
| revocation.</t> | revocation.</t> | |||
| <t>If a TEE certification path validation fails, the TEE | ||||
| <t>If a TEE certificate path validation fails, the TEE | ||||
| might be rejected by a TAM, subject to the TAM's policy. | might be rejected by a TAM, subject to the TAM's policy. | |||
| To address this, some certificate path update mechanism | To address this, a certification path update mechanism | |||
| is expected from device OEMs, so that the TEE can get | is expected from device OEMs, so that the TEE can get | |||
| a new certificate path that can be validated by a TAM. | a new certification path that can be validated by a TAM. | |||
| In addition, the Trust Anchor in the TAM's Trust Anchor Store | In addition, the Trust Anchor in the TAM's Trust Anchor Store | |||
| may need to be updated.</t> | may need to be updated.</t> | |||
| </section> | ||||
| <section anchor="compromised-tam"> | ||||
| <name>Compromised TAM</name> | ||||
| </section> | <t>Device TEEs are responsible for validating the supplied TAM | |||
| <section anchor="compromised-tam"><name>Compromised TAM</name> | certificates. A compromised TAM may bring multiple threats and damage | |||
| to user devices that it can manage and thus to the Device Owners. | ||||
| <t>Device TEEs are responsible for validating the supplied TAM certificates. | Information on devices that the TAM manages may be leaked to a bad | |||
| A compromised TAM may bring multiple threats | actor. A compromised TAM can also install many TAs to launch a DoS | |||
| and damage to user devices that it can manage and thus to the Device Owners. | attack on devices, for example, by filling up a device's TEE resources | |||
| Information on devices that the TAM manages may be leaked to a bad actor. | reserved for TAs such that other TAs may not get resources to be | |||
| A compromised TAM can also install many TAs to launch a DoS attack on devices, | installed or properly function. It may also install malicious TAs to | |||
| for example, by filling up a device's TEE resources reserved for TAs such that | potentially many devices under the condition that it also has a | |||
| other TAs may not get resources to be installed or properly function. It may | Trusted Component signer key that is trusted by the TEEs. This makes | |||
| also install malicious TAs to potentially many devices under the condition that | TAMs high-value targets. A TAM could be compromised without impacting | |||
| it also has a Trusted Component signer key that is trusted by the TEEs. | its certificate or raising concern from the TAM's operator.</t> | |||
| This makes TAMs high value targets. A TAM could be compromised without impacting | <t>To mitigate this threat, TEEP Agents and Device Owners have several o | |||
| its certificate or | ptions for detecting and mitigating a compromised TAM, | |||
| raising concern from the TAM's operator.</t> | including but potentially not limited to the following:</t> | |||
| <ol spacing="normal" type="1"><li>Apply an ACL to the TAM key, limiting | ||||
| <t>To mitigate this threat, TEEP Agents and Device Owners have several options, | which Trusted Components the TAM is permitted to install or update.</li> | |||
| including but potentially not limited to those listed below, for detecting and m | ||||
| itigating a compromised TAM:</t> | ||||
| <t><list style="numbers"> | ||||
| <t>Apply an ACL to the TAM key, limiting which Trusted Components the TAM is p | ||||
| ermitted to install or update.</t> | ||||
| <t>Use a transparency log to expose a TAM compromise: TAMs publish an | ||||
| out-of-band record of Trusted Component releases, allowing a TEE to cross-check | ||||
| the Trusted Components | ||||
| delivered against the Trusted Component installs in order to detect a TAM compro | ||||
| mise.</t> | ||||
| <t>Use remote attestation of the TAM to prove trustworthiness.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="malicious-ta-removal"><name>Malicious TA Removal</name> | ||||
| <t>It is possible that a rogue developer distributes a malicious Untrusted | ||||
| Application and intends to get a malicious TA installed. Such a TA | ||||
| might be able to escape from malware detection by the REE, or access trusted | ||||
| resources within the TEE (but could not access other TEEs, or access other | ||||
| TA's if the TEE provides isolation between TAs).</t> | ||||
| <t>It is the responsibility | <li>Use a transparency log to expose a TAM compromise. TAMs publish | |||
| an out-of-band record of Trusted Component releases, allowing a TEE to | ||||
| cross-check the Trusted Components delivered against the Trusted | ||||
| Components installed in order to detect a TAM compromise. | ||||
| </li> | ||||
| <li>Use remote attestation of the TAM to prove trustworthiness.</li> | ||||
| </ol> | ||||
| </section> | ||||
| <section anchor="malicious-ta-removal"> | ||||
| <name>Malicious TA Removal</name> | ||||
| <t>It is possible that a rogue developer distributes a malicious Untrust | ||||
| ed | ||||
| Application and intends to have a malicious TA installed. Such a TA | ||||
| might be able to escape from malware detection by the REE or access trusted | ||||
| resources within the TEE (but could not access other TEEs or other | ||||
| TAs if the TEE provides isolation between TAs).</t> | ||||
| <t>It is the responsibility | ||||
| of the TAM to not install malicious TAs in the first place. The TEEP | of the TAM to not install malicious TAs in the first place. The TEEP | |||
| architecture allows a TEEP Agent to decide which TAMs it trusts via Trust Anchor | architecture allows a TEEP Agent to decide which TAMs it trusts via Trust Anchor | |||
| s, | s | |||
| and delegates the TA authenticity check to the TAMs it trusts.</t> | and delegate the TA authenticity check to the TAMs it trusts.</t> | |||
| <t>A TA that was previously considered trustworthy may later be | ||||
| <t>It may happen that a TA was previously considered trustworthy but is later | ||||
| found to be buggy or compromised. | found to be buggy or compromised. | |||
| In this case, the TAM can initiate the removal of the TA by notifying devices | 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 Untruste d | to remove the TA (and potentially notify the REE or Device Owner to remove any U ntrusted | |||
| Application that depend on the TA). If the TAM does not currently have a | 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 | connection to the TEEP Agent on a device, such a notification would occur | |||
| the next time connectivity does exist. That is, to recover, the TEEP Agent | the next time connectivity does exist. | |||
| must be able to reach out to the TAM, for example whenever the | That is, to recover, the TEEP Agent | |||
| must be able to reach out to the TAM, for example, whenever the | ||||
| RequestPolicyCheck API (<xref target="apis"/>) is invoked by a timer or other ev ent.</t> | RequestPolicyCheck API (<xref target="apis"/>) is invoked by a timer or other ev ent.</t> | |||
| <t>Furthermore, the policy in the Verifier in an attestation process can | ||||
| <t>Furthermore, the policy in the Verifier in an attestation process can be | be | |||
| updated so that any evidence that includes the malicious TA would result | updated so that any evidence that includes the malicious TA would result | |||
| in an attestation failure. There is, however, a time window during which | in an attestation failure. There is, however, a time window during which | |||
| a malicious TA might be able to operate successfully, which is the | a malicious TA might be able to operate successfully, which is the | |||
| validity time of the previous attestation result. For example, if | validity time of the previous attestation result. For example, if | |||
| the Verifier in <xref target="attestation-roles"/> is updated to treat a previou sly | the Verifier in <xref target="attestation-roles"/> is updated to treat a previou sly | |||
| valid TA as no longer trustworthy, any attestation result it previously | valid TA as no longer trustworthy, any attestation result it previously | |||
| generated saying that the TA is valid will continue to be used until | generated saying that the TA is valid will continue to be used until | |||
| the attestation result expires. As such, the TAM's Verifier should | the attestation result expires. As such, the TAM's Verifier should | |||
| take into account the acceptable time window when generating attestation | take into account the acceptable time window when generating attestation | |||
| results. See <xref target="I-D.ietf-rats-architecture"/> for further discussion. | results. See <xref target="RFC9334"/> for further discussion.</t> | |||
| </t> | </section> | |||
| <section anchor="tee-certificate-expiry-and-renewal"> | ||||
| </section> | <name>TEE Certificate Expiry and Renewal</name> | |||
| <section anchor="tee-certificate-expiry-and-renewal"><name>TEE Certificate Expir | <t>TEE device certificates are expected to be long-lived, longer | |||
| y and Renewal</name> | ||||
| <t>TEE device certificates are expected to be long-lived, longer | ||||
| than the lifetime of a device. A TAM certificate usually has a | than the lifetime of a device. A TAM certificate usually has a | |||
| moderate lifetime of 1 to 5 years. A TAM should get renewed or | moderate lifetime of 1 to 5 years. A TAM should get renewed or | |||
| rekeyed certificates. The root CA certificates for a TAM, which are | rekeyed certificates. The root CA certificates for a TAM, which are | |||
| embedded into the Trust Anchor Store in a device, should have long | embedded into the Trust Anchor Store in a device, should have long | |||
| lifetimes that don't require device Trust Anchor updates. On the | lifetimes that don't require device Trust Anchor updates. On the | |||
| other hand, it is imperative that OEMs or device providers plan for | other hand, it is imperative that OEMs or device providers plan for | |||
| support of Trust Anchor update in their shipped devices.</t> | support of a Trust Anchor update in their shipped devices.</t> | |||
| <t>For those cases where TEE devices are given certificates for which no | ||||
| <t>For those cases where TEE devices are given certificates for which no good | good | |||
| expiration date can be assigned the recommendations in Section 4.1.2.5 of | expiration date can be assigned, the recommendations in <xref target="RFC5280" s | |||
| <xref target="RFC5280"/> are applicable.</t> | ectionFormat="of" section="4.1.2.5"/> are applicable.</t> | |||
| </section> | ||||
| </section> | <section anchor="keeping-secrets-from-the-tam"> | |||
| <section anchor="keeping-secrets-from-the-tam"><name>Keeping Secrets from the TA | <name>Keeping Secrets from the TAM</name> | |||
| M</name> | <t>In some scenarios, it is desirable to protect the TA binary or Person | |||
| alization Data | ||||
| <t>In some scenarios, it is desirable to protect the TA binary or Personalizatio | ||||
| n Data | ||||
| from being disclosed to the TAM that distributes them. In such a scenario, | from being disclosed to the TAM that distributes them. In such a scenario, | |||
| the files can be encrypted end-to-end between a Trusted Component Signer and a T EE. However, there | the files can be encrypted end-to-end between a Trusted Component Signer and a T EE. However, there | |||
| must be some means of provisioning the decryption key into the TEE and/or some | must be some means of provisioning the decryption key into the TEE and/or some | |||
| means of the Trusted Component Signer securely learning a public key of the TEE that it can use to | means of the Trusted Component Signer securely learning a public key of the TEE that it can use to | |||
| encrypt. The Trusted Component Signer cannot necessarily even trust the | encrypt. The Trusted Component Signer cannot necessarily even trust the | |||
| TAM to report the correct public key of a TEE for use with encryption, since the TAM might instead | TAM to report the correct public key of a TEE for use with encryption, since the TAM might instead | |||
| provide the public key of a TEE that it controls.</t> | provide the public key of a TEE that it controls.</t> | |||
| <t>One way to solve this is for the Trusted Component Signer to run | ||||
| <t>One way to solve this is for the Trusted Component Signer to run its own TAM | its own TAM that is only used to distribute the decryption key via the | |||
| that is only used to | TEEP protocol and the key file can be a dependency in the manifest of | |||
| distribute the decryption key via the TEEP protocol, and the key file can be a | the encrypted TA. Thus, the TEEP Agent would look at the Trusted | |||
| dependency in the manifest of the encrypted TA. Thus, the TEEP Agent would | Component manifest to determine if there is a dependency with a TAM | |||
| look at the Trusted Component manifest, determine there is a dependency with a T | URI of the Trusted Component Signer's TAM. The Agent would then | |||
| AM URI of the | install the dependency and continue with the Trusted Component | |||
| Trusted Component Signer's TAM. The Agent would then install the dependency, and | installation steps, including decrypting the TA binary with the | |||
| then continue with | relevant key.</t> | |||
| the Trusted Component installation steps, including decrypting the TA binary wit | </section> | |||
| h the relevant key.</t> | <section anchor="ree-privacy"> | |||
| <name>REE Privacy</name> | ||||
| </section> | <t>The TEEP architecture is applicable to cases where devices have a TEE | |||
| <section anchor="ree-privacy"><name>REE Privacy</name> | that protects data | |||
| <t>The TEEP architecture is applicable to cases where devices have a TEE that pr | ||||
| otects data | ||||
| and code from the REE administrator. In such cases, the TAM administrator, not the REE administrator, | and code from the REE administrator. In such cases, the TAM administrator, not the REE administrator, | |||
| controls the TEE in the devices. As some examples:</t> | controls the TEE in the devices. Examples include:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>A cloud hoster may be the REE administrator where a customer admin | |||
| <t>a cloud hoster may be the REE administrator where a customer administrator | istrator controls the TEE hosted in the cloud.</li> | |||
| controls the TEE hosted in the cloud.</t> | <li>A device manufacturer might control the TEE in a device purchased | |||
| <t>a device manufacturer might control the TEE in a device purchased by a cust | by a customer.</li> | |||
| omer</t> | </ul> | |||
| </list></t> | <t>The privacy risk is that data in the REE might be susceptible to | |||
| disclosure to the TEE administrator. This risk is not introduced by | ||||
| <t>The privacy risk is that data in the REE might be susceptible to disclosure t | the TEEP architecture, but it is inherent in most uses of TEEs. This | |||
| o the TEE administrator. | risk can be mitigated by making sure the REE administrator explicitly | |||
| This risk is not introduced by the TEEP architecture, but is inherent in most us | chooses to have a TEE that is managed by another party. In the cloud | |||
| es of TEEs. | hoster example, this choice is made by explicitly offering a service | |||
| This risk can be mitigated by making sure the REE administrator is aware of and | to customers to provide TEEs for them to administer. In the device | |||
| explicitly chooses | manufacturer example, this choice is made by the customer choosing to | |||
| to have a TEE that is managed by another party. In the cloud hoster example, th | buy a device made by a given manufacturer.</t> | |||
| is choice is made | </section> | |||
| by explicitly offering a service to customers to provide TEEs for them to admini | </section> | |||
| ster. In the device | <section anchor="iana-considerations"> | |||
| manufacturer example, this choice is made by the customer choosing to buy a devi | <name>IANA Considerations</name> | |||
| ce made by a given | <t>This document has no IANA actions.</t> | |||
| manufacturer.</t> | </section> | |||
| </section> | ||||
| </section> | ||||
| <section anchor="iana-considerations"><name>IANA Considerations</name> | ||||
| <t>This document does not require actions by IANA.</t> | ||||
| </section> | ||||
| <section anchor="contributors"><name>Contributors</name> | ||||
| <t><list style="symbols"> | ||||
| <t>Andrew Atyeo, Intercede (andrew.atyeo@intercede.com)</t> | ||||
| <t>Liu Dapeng, Alibaba Group (maxpassion@gmail.com)</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="acknowledgements"><name>Acknowledgements</name> | ||||
| <t>We would like to thank Nick Cook, Minho Yoo, Brian Witten, Tyler Kim, Alin Mu | ||||
| tu, Juergen Schoenwaelder, Nicolae Paladi, Sorin Faibish, Ned Smith, Russ Housle | ||||
| y, Jeremy O'Donoghue, Anders Rundgren, and Brendan Moran for their feedback.</t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title='Informative References'> | <displayreference target="I-D.ietf-rats-daa" to="RATS-DAA"/> | |||
| <displayreference target="I-D.ietf-rats-eat" to="EAT"/> | ||||
| <displayreference target="I-D.ietf-suit-manifest" to="SUIT-MANIFEST"/> | ||||
| <displayreference target="I-D.ietf-teep-otrp-over-http" to="TEEP-HTTP"/> | ||||
| <displayreference target="I-D.ietf-teep-protocol" to="TEEP"/> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.602 | ||||
| 4.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.933 | ||||
| 4.xml"/> | ||||
| <reference anchor='RFC6024' target='https://www.rfc-editor.org/info/rfc6024'> | <!-- [I-D.ietf-rats-daa] IESG state I-D Exists --> | |||
| <front> | ||||
| <title>Trust Anchor Management Requirements</title> | ||||
| <author fullname='R. Reddy' initials='R.' surname='Reddy'><organization/></autho | ||||
| r> | ||||
| <author fullname='C. Wallace' initials='C.' surname='Wallace'><organization/></a | ||||
| uthor> | ||||
| <date month='October' year='2010'/> | ||||
| <abstract><t>A trust anchor represents an authoritative entity via a public key | ||||
| and associated data. The public key is used to verify digital signatures, and t | ||||
| he associated data is used to constrain the types of information for which the t | ||||
| rust anchor is authoritative. A relying party uses trust anchors to determine i | ||||
| f a digitally signed object is valid by verifying a digital signature using the | ||||
| trust anchor's public key, and by enforcing the constraints expressed in the ass | ||||
| ociated data for the trust anchor. This document describes some of the problems | ||||
| associated with the lack of a standard trust anchor management mechanism and de | ||||
| fines requirements for data formats and push-based protocols designed to address | ||||
| these problems. This document is not an Internet Standards Track specificatio | ||||
| n; it is published for informational purposes.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='6024'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC6024'/> | ||||
| </reference> | ||||
| <reference anchor='I-D.ietf-rats-architecture'> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ie | |||
| <front> | tf-rats-daa.xml"/> | |||
| <title>Remote Attestation Procedures Architecture</title> | ||||
| <author fullname='Henk Birkholz' initials='H.' surname='Birkholz'> | ||||
| <organization>Fraunhofer SIT</organization> | ||||
| </author> | ||||
| <author fullname='Dave Thaler' initials='D.' surname='Thaler'> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <author fullname='Michael Richardson' initials='M.' surname='Richardson'> | ||||
| <organization>Sandelman Software Works</organization> | ||||
| </author> | ||||
| <author fullname='Ned Smith' initials='N.' surname='Smith'> | ||||
| <organization>Intel Corporation</organization> | ||||
| </author> | ||||
| <author fullname='Wei Pan' initials='W.' surname='Pan'> | ||||
| <organization>Huawei Technologies</organization> | ||||
| </author> | ||||
| <date day='28' month='September' year='2022'/> | ||||
| <abstract> | ||||
| <t> In network protocol exchanges it is often useful for one end of a | ||||
| communication to know whether the other end is in an intended | ||||
| operating state. This document provides an architectural overview of | ||||
| the entities involved that make such tests possible through the | ||||
| process of generating, conveying, and evaluating evidentiary claims. | ||||
| An attempt is made to provide for a model that is neutral toward | ||||
| processor architectures, the content of claims, and protocols. | ||||
| </t> | <!-- [I-D.ietf-rats-eat] IESG state I-D Exists --> | |||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-rats-architecture-22'/> | ||||
| <format target='https://www.ietf.org/archive/id/draft-ietf-rats-architecture- | ||||
| 22.txt' type='TXT'/> | ||||
| </reference> | ||||
| <reference anchor='I-D.ietf-rats-daa'> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ie | |||
| <front> | tf-rats-eat.xml"/> | |||
| <title>Direct Anonymous Attestation for the Remote Attestation Procedures | ||||
| Architecture</title> | ||||
| <author fullname='Henk Birkholz' initials='H.' surname='Birkholz'> | ||||
| <organization>Fraunhofer SIT</organization> | ||||
| </author> | ||||
| <author fullname='Christopher Newton' initials='C.' surname='Newton'> | ||||
| <organization>University of Surrey</organization> | ||||
| </author> | ||||
| <author fullname='Liqun Chen' initials='L.' surname='Chen'> | ||||
| <organization>University of Surrey</organization> | ||||
| </author> | ||||
| <author fullname='Dave Thaler' initials='D.' surname='Thaler'> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <date day='7' month='September' year='2022'/> | ||||
| <abstract> | ||||
| <t> This document maps the concept of Direct Anonymous Attestation (DA | ||||
| A) | ||||
| to the Remote Attestation Procedures (RATS) Architecture. The role | ||||
| DAA Issuer is introduced and its interactions with existing RATS | ||||
| roles is specified. | ||||
| </t> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.901 | |||
| </abstract> | 9.xml"/> | |||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-rats-daa-02'/> | ||||
| <format target='https://www.ietf.org/archive/id/draft-ietf-rats-daa-02.txt' t | ||||
| ype='TXT'/> | ||||
| </reference> | ||||
| <reference anchor='I-D.ietf-rats-eat'> | <!-- [I-D.ietf-suit-manifest] IESG state I-D Exists --> | |||
| <front> | ||||
| <title>The Entity Attestation Token (EAT)</title> | ||||
| <author fullname='Laurence Lundblade' initials='L.' surname='Lundblade'> | ||||
| <organization>Security Theory LLC</organization> | ||||
| </author> | ||||
| <author fullname='Giridhar Mandyam' initials='G.' surname='Mandyam'> | ||||
| <organization>Qualcomm Technologies Inc.</organization> | ||||
| </author> | ||||
| <author fullname='Jeremy O'Donoghue' initials='J.' surname='O'Dono | ||||
| ghue'> | ||||
| <organization>Qualcomm Technologies Inc.</organization> | ||||
| </author> | ||||
| <author fullname='Carl Wallace' initials='C.' surname='Wallace'> | ||||
| <organization>Red Hound Software, Inc.</organization> | ||||
| </author> | ||||
| <date day='22' month='October' year='2022'/> | ||||
| <abstract> | ||||
| <t> An Entity Attestation Token (EAT) provides an attested claims set | ||||
| that describes state and characteristics of an entity, a device like | ||||
| a smartphone, IoT device, network equipment or such. This claims set | ||||
| is used by a relying party, server or service to determine how much | ||||
| it wishes to trust the entity. | ||||
| An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ie | |||
| attestation-oriented claims. | tf-suit-manifest.xml"/> | |||
| </t> | <!-- [I-D.ietf-teep-otrp-over-http] IESG state Waiting for Writeup --> | |||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-rats-eat-17'/> | ||||
| <format target='https://www.ietf.org/archive/id/draft-ietf-rats-eat-17.txt' t | ||||
| ype='TXT'/> | ||||
| </reference> | ||||
| <reference anchor='RFC9019' target='https://www.rfc-editor.org/info/rfc9019'> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ie | |||
| <front> | tf-teep-otrp-over-http.xml"/> | |||
| <title>A Firmware Update Architecture for Internet of Things</title> | ||||
| <author fullname='B. Moran' initials='B.' surname='Moran'><organization/></autho | ||||
| r> | ||||
| <author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'><organizatio | ||||
| n/></author> | ||||
| <author fullname='D. Brown' initials='D.' surname='Brown'><organization/></autho | ||||
| r> | ||||
| <author fullname='M. Meriac' initials='M.' surname='Meriac'><organization/></aut | ||||
| hor> | ||||
| <date month='April' year='2021'/> | ||||
| <abstract><t>Vulnerabilities in Internet of Things (IoT) devices have raised the | ||||
| need for a reliable and secure firmware update mechanism suitable for devices w | ||||
| ith resource constraints. Incorporating such an update mechanism is a fundamenta | ||||
| l requirement for fixing vulnerabilities, but it also enables other important ca | ||||
| pabilities such as updating configuration settings and adding new functionality. | ||||
| </t><t>In addition to the definition of terminology and an architecture, this do | ||||
| cument provides the motivation for the standardization of a manifest format as a | ||||
| transport-agnostic means for describing and protecting firmware updates.</t></a | ||||
| bstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='9019'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC9019'/> | ||||
| </reference> | ||||
| <reference anchor='I-D.ietf-suit-manifest'> | <!-- [I-D.ietf-teep-protocol] IESG state I-D Exists --> | |||
| <front> | ||||
| <title>A Concise Binary Object Representation (CBOR)-based Serialization F | ||||
| ormat for the Software Updates for Internet of Things (SUIT) Manifest</title> | ||||
| <author fullname='Brendan Moran' initials='B.' surname='Moran'> | ||||
| <organization>Arm Limited</organization> | ||||
| </author> | ||||
| <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'> | ||||
| <organization>Arm Limited</organization> | ||||
| </author> | ||||
| <author fullname='Henk Birkholz' initials='H.' surname='Birkholz'> | ||||
| <organization>Fraunhofer SIT</organization> | ||||
| </author> | ||||
| <author fullname='Koen Zandberg' initials='K.' surname='Zandberg'> | ||||
| <organization>Inria</organization> | ||||
| </author> | ||||
| <author fullname='Øyvind Rønningstad' initials='O.' surname='Rønningstad'> | ||||
| <organization>Nordic Semiconductor</organization> | ||||
| </author> | ||||
| <date day='7' month='October' year='2022'/> | ||||
| <abstract> | ||||
| <t> This specification describes the format of a manifest. A manifest | ||||
| is | ||||
| a bundle of metadata about code/data obtained by a recipient (chiefly | ||||
| the firmware for an IoT device), where to find the that code/data, | ||||
| the devices to which it applies, and cryptographic information | ||||
| protecting the manifest. Software updates and Trusted Invocation | ||||
| both tend to use sequences of common operations, so the manifest | ||||
| encodes those sequences of operations, rather than declaring the | ||||
| metadata. | ||||
| </t> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ie | |||
| </abstract> | tf-teep-protocol.xml"/> | |||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-suit-manifest-20'/> | ||||
| <format target='https://www.ietf.org/archive/id/draft-ietf-suit-manifest-20.t | ||||
| xt' type='TXT'/> | ||||
| </reference> | ||||
| <reference anchor='I-D.ietf-teep-otrp-over-http'> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.769 | |||
| <front> | 6.xml"/> | |||
| <title>HTTP Transport for Trusted Execution Environment Provisioning: Agen | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.528 | |||
| t Initiated Communication</title> | 0.xml"/> | |||
| <author fullname='Dave Thaler' initials='D.' surname='Thaler'> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <date day='14' month='October' year='2022'/> | ||||
| <abstract> | ||||
| <t> The Trusted Execution Environment Provisioning (TEEP) Protocol is | ||||
| used to manage code and configuration data in a Trusted Execution | ||||
| Environment (TEE). This document specifies the HTTP transport for | ||||
| TEEP communication where a Trusted Application Manager (TAM) service | ||||
| is used to manage code and data in TEEs on devices that can initiate | ||||
| communication to the TAM. | ||||
| </t> | <reference anchor="CC-Overview" target="https://confidentialcomputing.io/w | |||
| </abstract> | p-content/uploads/sites/85/2021/03/confidentialcomputing_outreach_whitepaper-8-5 | |||
| </front> | x11-1.pdf"> | |||
| <seriesInfo name='Internet-Draft' value='draft-ietf-teep-otrp-over-http-14'/> | <front> | |||
| <format target='https://www.ietf.org/archive/id/draft-ietf-teep-otrp-over-htt | <title>Confidential Computing: Hardware-Based Trusted Execution for Ap | |||
| p-14.txt' type='TXT'/> | plications and Data</title> | |||
| </reference> | <author> | |||
| <organization>Confidential Computing Consortium</organization> | ||||
| </author> | ||||
| <date year="2022" month="November"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor='I-D.ietf-teep-protocol'> | <reference anchor="CC-Technical-Analysis" target="https://confidentialcomputing. | |||
| <front> | io/wp-content/uploads/sites/10/2023/03/CCC-A-Technical-Analysis-of-Confidential- | |||
| <title>Trusted Execution Environment Provisioning (TEEP) Protocol</title> | Computing-v1.3_unlocked.pdf"> | |||
| <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'> | <front> | |||
| <organization>Arm Ltd.</organization> | <title>A Technical Analysis of Confidential Computing</title> | |||
| </author> | <author> | |||
| <author fullname='Mingliang Pei' initials='M.' surname='Pei'> | <organization>Confidential Computing Consortium</organization> | |||
| <organization>Broadcom</organization> | </author> | |||
| </author> | <date year="2022" month="November"/> | |||
| <author fullname='Dave Wheeler' initials='D. M.' surname='Wheeler'> | </front> | |||
| <organization>Amazon</organization> | <refcontent>v1.3</refcontent> | |||
| </author> | </reference> | |||
| <author fullname='Dave Thaler' initials='D.' surname='Thaler'> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <author fullname='Akira Tsukamoto' initials='A.' surname='Tsukamoto'> | ||||
| <organization>AIST</organization> | ||||
| </author> | ||||
| <date day='28' month='July' year='2022'/> | ||||
| <abstract> | ||||
| <t> This document specifies a protocol that installs, updates, and | ||||
| deletes Trusted Components in a device with a Trusted Execution | ||||
| Environment (TEE). This specification defines an interoperable | ||||
| protocol for managing the lifecycle of Trusted Components. | ||||
| </t> | <reference anchor="GPTEE" target="https://globalplatform.org/specs-library | |||
| </abstract> | /tee-system-architecture/"> | |||
| </front> | <front> | |||
| <seriesInfo name='Internet-Draft' value='draft-ietf-teep-protocol-10'/> | <title>TEE System Architecture v1.3</title> | |||
| <format target='https://www.ietf.org/archive/id/draft-ietf-teep-protocol-10.t | <author> | |||
| xt' type='TXT'/> | <organization>GlobalPlatform</organization> | |||
| </reference> | </author> | |||
| <date year="2022" month="May"/> | ||||
| </front> | ||||
| <seriesInfo name="GlobalPlatform" value="GPD_SPE_009"/> | ||||
| </reference> | ||||
| <reference anchor='RFC7696' target='https://www.rfc-editor.org/info/rfc7696'> | <reference anchor="GSMA" target="https://www.gsma.com/esim/wp-content/uplo | |||
| <front> | ads/2020/06/SGP.22-v2.2.2.pdf"> | |||
| <title>Guidelines for Cryptographic Algorithm Agility and Selecting Mandatory-to | <front> | |||
| -Implement Algorithms</title> | <title>SGP.22 RSP Technical Specification</title> | |||
| <author fullname='R. Housley' initials='R.' surname='Housley'><organization/></a | <author> | |||
| uthor> | <organization>GSM Association</organization> | |||
| <date month='November' year='2015'/> | </author> | |||
| <abstract><t>Many IETF protocols use cryptographic algorithms to provide confide | <date year="2020" month="June"/> | |||
| ntiality, integrity, authentication, or digital signature. Communicating peers | </front> | |||
| must support a common set of cryptographic algorithms for these mechanisms to wo | <refcontent>Version 2.2.2</refcontent> | |||
| rk properly. This memo provides guidelines to ensure that protocols have the ab | </reference> | |||
| ility to migrate from one mandatory-to-implement algorithm suite to another over | <reference anchor="OP-TEE" target="https://optee.readthedocs.io/en/latest/ | |||
| time.</t></abstract> | "> | |||
| </front> | <front> | |||
| <seriesInfo name='BCP' value='201'/> | <title>OP-TEE Documentation</title> | |||
| <seriesInfo name='RFC' value='7696'/> | <author> | |||
| <seriesInfo name='DOI' value='10.17487/RFC7696'/> | <organization>TrustedFirmware.org</organization> | |||
| </reference> | </author> | |||
| </front> | ||||
| </reference> | ||||
| <reference anchor='RFC5280' target='https://www.rfc-editor.org/info/rfc5280'> | <reference anchor="OTRP" target="https://globalplatform.org/specs-library/ | |||
| <front> | tee-management-framework-open-trust-protocol/"> | |||
| <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revo | <front> | |||
| cation List (CRL) Profile</title> | <title>TEE Management Framework: Open Trust Protocol (OTrP) Profile | |||
| <author fullname='D. Cooper' initials='D.' surname='Cooper'><organization/></aut | v1.1</title> | |||
| hor> | <author> | |||
| <author fullname='S. Santesson' initials='S.' surname='Santesson'><organization/ | <organization>GlobalPlatform</organization> | |||
| ></author> | </author> | |||
| <author fullname='S. Farrell' initials='S.' surname='Farrell'><organization/></a | <date year="2020" month="July"/> | |||
| uthor> | </front> | |||
| <author fullname='S. Boeyen' initials='S.' surname='Boeyen'><organization/></aut | <seriesInfo name="GlobalPlatform" value="GPD_SPE_123"/> | |||
| hor> | </reference> | |||
| <author fullname='R. Housley' initials='R.' surname='Housley'><organization/></a | ||||
| uthor> | ||||
| <author fullname='W. Polk' initials='W.' surname='Polk'><organization/></author> | ||||
| <date month='May' year='2008'/> | ||||
| <abstract><t>This memo profiles the X.509 v3 certificate and X.509 v2 certificat | ||||
| e revocation list (CRL) for use in the Internet. An overview of this approach a | ||||
| nd model is provided as an introduction. The X.509 v3 certificate format is des | ||||
| cribed in detail, with additional information regarding the format and semantics | ||||
| of Internet name forms. Standard certificate extensions are described and two | ||||
| Internet-specific extensions are defined. A set of required certificate extensi | ||||
| ons is specified. The X.509 v2 CRL format is described in detail along with sta | ||||
| ndard and Internet-specific extensions. An algorithm for X.509 certification pa | ||||
| th validation is described. An ASN.1 module and examples are provided in the ap | ||||
| pendices. [STANDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='5280'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC5280'/> | ||||
| </reference> | ||||
| <reference anchor="CC-Overview" target="https://confidentialcomputing.io/wp-cont | <reference anchor="SGX" target="https://www.intel.com/content/www/us/en/ar | |||
| ent/uploads/sites/85/2021/03/confidentialcomputing_outreach_whitepaper-8-5x11-1. | chitecture-and-technology/software-guard-extensions.html"> | |||
| pdf"> | <front> | |||
| <front> | <title>Intel(R) Software Guard Extensions (Intel (R) SGX)</title> | |||
| <title>Confidential Computing: Hardware-Based Trusted Execution for Applicat | <author> | |||
| ions and Data</title> | <organization>Intel</organization> | |||
| <author > | </author> | |||
| <organization>Confidential Computing Consortium</organization> | </front> | |||
| </author> | </reference> | |||
| <date year="2021" month="January"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="CC-Technical-Analysis" target="https://confidentialcomputing. | ||||
| io/wp-content/uploads/sites/85/2022/01/CCC-A-Technical-Analysis-of-Confidential- | ||||
| Computing-v1.2.pdf"> | ||||
| <front> | ||||
| <title>A Technical Analysis of Confidential Computing, v1.2</title> | ||||
| <author > | ||||
| <organization>Confidential Computing Consortium</organization> | ||||
| </author> | ||||
| <date year="2021" month="October"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="GPTEE" target="https://globalplatform.org/specs-library/tee-s | ||||
| ystem-architecture/"> | ||||
| <front> | ||||
| <title>GlobalPlatform Device Technology: TEE System Architecture, v1.3</titl | ||||
| e> | ||||
| <author > | ||||
| <organization>GlobalPlatform</organization> | ||||
| </author> | ||||
| <date year="2022" month="May"/> | ||||
| </front> | ||||
| <seriesInfo name="GlobalPlatform" value="GPD_SPE_009"/> | ||||
| </reference> | ||||
| <reference anchor="GSMA" target="https://www.gsma.com/esim/wp-content/uploads/20 | ||||
| 20/06/SGP.22-v2.2.2.pdf"> | ||||
| <front> | ||||
| <title>GP.22 RSP Technical Specification, Version 2.2.2</title> | ||||
| <author > | ||||
| <organization>GSM Association</organization> | ||||
| </author> | ||||
| <date year="2020" month="June"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="OP-TEE" target="https://optee.readthedocs.io/en/latest/"> | ||||
| <front> | ||||
| <title>OP-TEE Documentation</title> | ||||
| <author > | ||||
| <organization>TrustedFirmware.org</organization> | ||||
| </author> | ||||
| <date year="2022"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="OTRP" target="https://globalplatform.org/specs-library/tee-ma | ||||
| nagement-framework-open-trust-protocol/"> | ||||
| <front> | ||||
| <title>Open Trust Protocol (OTrP) Profile v1.1</title> | ||||
| <author > | ||||
| <organization>GlobalPlatform</organization> | ||||
| </author> | ||||
| <date year="2020" month="July"/> | ||||
| </front> | ||||
| <seriesInfo name="GlobalPlatform" value="GPD_SPE_123"/> | ||||
| </reference> | ||||
| <reference anchor="SGX" target="https://www.intel.com/content/www/us/en/architec | ||||
| ture-and-technology/software-guard-extensions.html"> | ||||
| <front> | ||||
| <title>Intel(R) Software Guard Extensions (Intel (R) SGX)</title> | ||||
| <author > | ||||
| <organization>Intel</organization> | ||||
| </author> | ||||
| <date year="n.d."/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="TrustZone" target="https://developer.arm.com/ip-products/secu | ||||
| rity-ip/trustzone"> | ||||
| <front> | ||||
| <title>Arm TrustZone Technology</title> | ||||
| <author > | ||||
| <organization>Arm</organization> | ||||
| </author> | ||||
| <date year="n.d."/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor='RFC4949' target='https://www.rfc-editor.org/info/rfc4949'> | <reference anchor="TrustZone" target="https://www.arm.com/technologies | |||
| <front> | /trustzone-for-cortex-a"> | |||
| <title>Internet Security Glossary, Version 2</title> | <front> | |||
| <author fullname='R. Shirey' initials='R.' surname='Shirey'><organization/></aut | <title>TrustZone for Cortex-A</title> | |||
| hor> | <author> | |||
| <date month='August' year='2007'/> | <organization>Arm</organization> | |||
| <abstract><t>This Glossary provides definitions, abbreviations, and explanations | </author> | |||
| of terminology for information system security. The 334 pages of entries offer | </front> | |||
| recommendations to improve the comprehensibility of written material that is gen | </reference> | |||
| erated in the Internet Standards Process (RFC 2026). The recommendations follow | ||||
| the principles that such writing should (a) use the same term or definition when | ||||
| ever the same concept is mentioned; (b) use terms in their plainest, dictionary | ||||
| sense; (c) use terms that are already well-established in open publications; and | ||||
| (d) avoid terms that either favor a particular vendor or favor a particular tec | ||||
| hnology or mechanism over other, competing techniques that already exist or coul | ||||
| d be developed. This memo provides information for the Internet community.</t>< | ||||
| /abstract> | ||||
| </front> | ||||
| <seriesInfo name='FYI' value='36'/> | ||||
| <seriesInfo name='RFC' value='4949'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC4949'/> | ||||
| </reference> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.494 9.xml"/> | ||||
| </references> | </references> | |||
| <section anchor="acknowledgements" numbered="false"> | ||||
| <name>Acknowledgments</name> | ||||
| <t>We would like to thank <contact fullname="Nick Cook"/>, <contact | ||||
| fullname="Minho Yoo"/>, <contact fullname="Brian Witten"/>, <contact | ||||
| fullname="Tyler Kim"/>, <contact fullname="Alin Mutu"/>, <contact | ||||
| fullname="Juergen Schoenwaelder"/>, <contact fullname="Nicolae | ||||
| Paladi"/>, <contact fullname="Sorin Faibish"/>, <contact fullname="Ned | ||||
| Smith"/>, <contact fullname="Russ Housley"/>, <contact fullname="Jeremy | ||||
| O'Donoghue"/>, <contact fullname="Anders Rundgren"/>, and <contact | ||||
| fullname="Brendan Moran"/> for their feedback.</t> | ||||
| </section> | ||||
| <section anchor="contributors" numbered="false"> | ||||
| <name>Contributors</name> | ||||
| <contact fullname="Andrew Atyeo"> | ||||
| <organization>Intercede</organization> | ||||
| <address> | ||||
| <email>andrew.atyeo@intercede.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <contact fullname="Liu Dapeng"> | ||||
| <organization>Alibaba Group</organization> | ||||
| <address> | ||||
| <email>maxpassion@gmail.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| </section> | ||||
| </back> | </back> | |||
| <!-- ##markdown-source: | ||||
| H4sIAB/SVmMAA+29W5cbx7Em+p6/oha11qh7CIAibXlvU3s8hkhJ5ti0esjW | ||||
| yGcetlcBKDTKBKqwqwrdhEnOb5+4Z2RdmqS2j9d5OP1AdgNVeY2MjMsXEfP5 | ||||
| PHRlty+eZtfNqe2KTfbd22J96sq6yr6rbsumrg5F1WVXTX1btvBpWd1kF9ff | ||||
| fXd1mS2b9a7sinV3aoqQr1ZNcQvNwFfpN5t6XeUH6GHT5NtuXhbddt4VxXGe | ||||
| u6fmj38b1nlX3NTN+WlWVts6hPLYPM06HNaTr7767VdPQt4U+dPsNYyvKbtz | ||||
| uKubNzdNfTpyr+FNcYaPNk+zF1VXNFXRzZ9jjyG0XV5t/prv6wpGcS7acCyf | ||||
| hixrtuti03bnvXyaZV29dr+W1Qamrh+0ddM1xba1v8+H5M+uKdf28Lo+4LLZ | ||||
| t2W1L6vYTfG2m+/LtptDI6t6D4/N6//6EL6BtTrkxyMsMj+bn7pd3cBg5/Al | ||||
| /ZQVPP1ykV0VpX7Eq/sSXtqXOWyP+6pubvKq/HuO+/k0+7ap8w0MTb8tDnm5 | ||||
| f5od9M3FsSh/v5KHFvhgv+M/LLLrdr2rt0VV3qT9/yGvqqId+Todw7I5ZH8q | ||||
| D7Dvm94wdtTAorMGfp8346N4DqPY5fuiSUfwPL8tel+kfb8s103d1kASac+b | ||||
| jl76/UG/n+r1511RjHVbbvpf9SZ9yP9eV/1eYbh38Nbvc/qW+0TKbw7w2m2B | ||||
| JPrq+2e/+erJr/HXF/PnCzo7Td61ydkZfrvJ8+GHRd5Jk7/96vFvk+/bU9nN | ||||
| DzDgbdF2yTd0UOuugX9ui2a+67rj8PtjU8NxqffS/L/85re/kV+/fvKvXz3N | ||||
| 4Pdnz+Y/QgO3ZXH3lNbBKFuX62n2rK62JR65Mt/DH4cjsCEgZ/gYz155YroV | ||||
| dvVg/Gmkw2ZzB5xi/m3eAjsbsjVY4Gx5PO7LNe1OmwFzgE3s8gfU/ga40NPs | ||||
| yVdPHs+/esw95s1NAUcbJ98+ffRo7Xpea8eLsn50d5zDdx188+h03MMxah+1 | ||||
| sEnto3/9+hE2+OirX42//Nf6BLwlX+/+eoe7esyPsNb/Ov/67ePH88eL42bL | ||||
| K3hdrHcVDHs/X1b5/tyW7T9oLZeZNZ1p01m9nWhllt0+XjwZrNbjr/6hq/Xk | ||||
| 0VePHz2DWS9H5j2vt3M/uLkNbo5jkyX74Qruhckl+mFfr/L91T7v8Mgl65F+ | ||||
| lT0vbst1wWtU7+ubM1042eszUNYhuexoaX7VW5on86++Hl2aG+rmKN0sYFSP | ||||
| 2mOxbuFuWDV5c34EpwuuCOwlOfCPqLW2aMqiRYah00qHDTO8ev7X11ff/RVu | ||||
| T1yN1y+X04vx+mW2bFu49OhQpKtxtXjyJHv1+spRyWsYZ7mVIzTL/lfRoHCQ | ||||
| PYG171PGV/OvfjM6/bu7u8VNe8iR8z2CmRzGSAIbePTVbx69plHMb6kH2d8f | ||||
| r+b3bbAc/e/L5oAMAdc3mRe/nj2v1ye8rGkq/a0bHXh9hI1ZwIGFi6OAK7tF | ||||
| ci6qR7DwwD9xd368fnX1Swjvx2NR8bhR4iKmml38eN2AtAV/b8t9gQT2eLjC | ||||
| //LLCQz4fn5T4ArMtw3caChWzWsYyJxkL+Pun0t1j5/8Cp54/cNfJhcC5bR9 | ||||
| Mn/65OLVZfYabmHctOyHE/Bz4N5AFC1x6wt6JqOHfvjL5YNJ0irxOaItpSn4 | ||||
| 9NGpxZ1KRE/g/3CP6dl+1ErX8xvsel5Y14tdd8Dh0v78bxQmpya27G0rCj32 | ||||
| luMj44PfFLfFHjagWYgA9KikO3ZzWnfAI0X8nZfHR7RBIDsUIczn8yxfgRSa | ||||
| r0HiXX5EnEcJ/jIr8e7LCvc5CEJdKFAGWYMsh3/BE2cQZzdFdld2u7LiD/07 | ||||
| a5Db6i5bFTCRA4waOsVHZwHvVWsCiDXPTngjr85Ze1rvuNH4Mh4nWL20kQAP | ||||
| 2wDgkmyB4Q9GsAjXO5yK21MUpOlQZ4caZCk8l/AafAyke1PRjU9KAWywCGkB | ||||
| rrs8U1onIYEOBt6a+OYeZKP1eQ0HEB7sZHFzJ0aE5lSRdgTCIo6S5pjjRbHg | ||||
| 3TmUm80edip8kSHl835iz4kwUvB+UTvw+oavHjwJxdtjjevX1TgyWNFyu4WF | ||||
| gjnmXZev37QBKR50FnoEr9qmPpRtQcMvjAxw+PCBGzquOuhuBbB1+CbwTh3h | ||||
| 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 | ||||
| kxMGeJDbvCcakTsYtX4SGiyHDYtxLVdd2eQHCdElg1bCZlk5VNe3eY1kT2XU | ||||
| P95hJkaqjRmRTi5TQMI8Ja+/2iL2aFWWfLUrDO7EVJtjszDrvEr7hFSQCvZj | ||||
| PtU4gFlIwI6wwZielrTpo+n27Od3QjIGfTa3Ku2Ik53nEszIaCHwyKbiu4oH | ||||
| 1lj4WgPw9rHUKklieOv1ZgUHRNLWt+yBi742AWfwqrLtSsA3Ck2h0ZUiCO/y | ||||
| 8SpibSx7cE8RBrXBE/SfuB+ilpAST5ppsV1IkmPzwfld05h0kGpzFir7fBuN | ||||
| UxK0oEgkl/SJDpZew3zPm/JK1lym4tnAhpqQpSivVDZur4kqMJOxsWIUUPwq | ||||
| W7CiojsxhlNSpFM5hJkKSgo2iGo1e/B7tMth5ksqv4yBxc/+5KO3KW879Ycv | ||||
| i89pTB0pNJHlEQ0jnQwvasLCYhaUSoL8wGxNzTl1x76+4RTnFJOay77pQJ/y | ||||
| FpN9qiUTURB35Eph/81mVFOiFGSMkLPILdPTKfxszrKecdBkYsGi2hNz/qT+ | ||||
| lMYLSPxCfzYLzP6AayB1U5ISbH0ny60UxburG7TJcBFGzCTrjmL2ir1b46bC | ||||
| XGAhsbxuFII4lkZbin6iJJOg4t8ktSwlQE5YgQMu8D2PM47XrwVmg/R8FFOC | ||||
| 4leETjGn4VmVdRaSJOhGMhtG7tXzylyQBG/pHuQ1YYHAKHxjXNf1egkn15mz | ||||
| YjpO8wGZ/2PZXi6mXWIh3S0uRDbGKTV4HPMrcqjLlEVB4gYS0xJnhUXjspw/ | ||||
| PAvmP2VXfZofXqqrgsZvSBrYJQPzoyFaqN5Oept4ZMWMoAYRCeNeklfU1cl2 | ||||
| YV6RSM9suG0zrHTbBM7GznfO6nRzwygtL7wmKbcTPUaMJEXfhSsTWgmq6Bzx | ||||
| 8iA1UN5A8rvKYxeEtnc81IznTcKNs/gmXmUTp0Eyj6InN6YBwbJDLyIxWFg5 | ||||
| pyZCwDAb4tEfUEUPSs8yV8eskarMpNk+7ojO6zU0Gxiq+bYjCE+m7d7i3lL3 | ||||
| nHUasTF0ic54dhQf1S/JGvoFPNg+TehMI5AkKIOMa8WtXPHhoyAhhXq8URF2 | ||||
| DHeE0UecFwQRmjxIQQbJAbKA2bGYOY74Yok5WC0IEbpxQw00k2LhCXbiudmd | ||||
| +O4pjnrYE2oZmr2Y4A8eh8AzAyZVbeq7TIDfUq4h7WXAHjXiHzYeZ4IWwbOm | ||||
| NGL2w+A4ytvsarXpeRwJfx3ka9yG/jKOZoqgJEeygpSYVu2IevJ5JMRUWpeo | ||||
| yTGBGcPRhkkPys63E4NLWk4P68RxHAX3o5WrQAhhyJt6jTDD1z700FHaE6vL | ||||
| 5HpSEGoU3WwNGEIRMIiUg0XhsiD3FbXqMou4fSXTsgy9h+QKEng88DpOZfUY | ||||
| psKxRKGJGVLsk8jLXkHPd8AJqdakKpmJKo5Xq6mivF64RXMUZjYz2a5ANgec | ||||
| pi//pxzIaoR4mfjUMhqIhHfK/Ukk699/jP19nZ2LvIl1RgSnwnoIDJ60Dlgq | ||||
| EC+LzbDKQzFmB9EU4cSLJL8paLLFYVVsNkl2vInyKsZZeTDEkXElgg5flEF2 | ||||
| K1m+GlF+h4YpHOuPtICicmFi8ql6U2gDYI8eNafV6VoUByqGTii8fDtqBWMW | ||||
| iIV+diXcyq7cOAdtsibAiHjGZUXiYIJglNhgRXkp4RDfILKXDo3kqCELj9SZ | ||||
| agWqzTcxggmLaiN4Pod2+/Xi8eLJ4msCmnrjLWHJDEK2wOwSX2C17eKI5wfe | ||||
| bgotlipnNPrvnOeO1xa98I1LNGCAp1inFuY1XvUHe2BnNR64fd26KDnFpnn5 | ||||
| mIEnFO/IF7KOhqHxmNZ7pKDqeO2DqRJ/Pkm8xzc2hd3MtBCMOOMw7xjmzriE | ||||
| pPhqUjNUEuVgC8FaGNdiZDwG4gHVqZHQcxdv6ZBb3gyDRm+qYENDEQF3qgtx | ||||
| OKvnqtyfGaDEBcDxSIlQ3RR0KLxXMh1KLpkvCfHE8ABfptMVqUf7jmTmg0Hl | ||||
| GwMIOexD0qgraoiQSxSMf6woxzJFlSBwlSXXso0hJ1MzlhzraGVA90EEQraM | ||||
| vhTsRHAW6pGdRWF/YNiOSS7wEco0r8c2OMyh1XmrgN9JWfVdkv18Sdz31PYF | ||||
| RBaJwr6u32T5lAqs7c5cVbNOJKQUdBlR1NlPr15olZyplfuyZbw10pMbDb5j | ||||
| znNZKu3BFqSKUoPVr/xIfQL47ti6VBS2A+byUh5jUBRLc85lhTF9PlDPFcf3 | ||||
| hgjlTTS9su1haj3rVrYttQ+MGIXZCfqPIVqbIvJNwhn6KoOOdUmgoB6F5LEZ | ||||
| aSujLcyCkr+d+iSXl8pXXIOWsUVPQ/ivaGna16cNFQ+RlIirYrwPS58IElBX | ||||
| o2aQfj0YAbVpoHHqZ0FdjpVg1FoWjJt2k7DHjyfYmbxV5URHoahIidMu2zcs | ||||
| iOed4Y10OibNt6cWRcZSy7nwJYMb7llyskVsytTm2YrQaeUhj9/w9DNTLbus | ||||
| dhyZp2j7k1QxcmZSaltYglopuU5A/oYzCTRTO4NkSpYaCjDZoFSJSgwVjKFM | ||||
| vy0q3H06LSWPgayoQFIxOdtZa2wVKXn0oLCM7KRmNkUgqIj1W2MsoiZEaTQ3 | ||||
| g25a69F45LIQ1kwloXRyRRPHwUSQpJe7dzi6J0astBDEH0DSPp09GfLTmrXW | ||||
| d0EhhNmL5Z+Xg/hB2jOt4BmNCZakRMBk0DC+Tg09Q+rGW6NuoIE5yI6bprjL | ||||
| lt25qGeM6ANqKsgWAl8scvzi96V+vgCB7hJe+1N5AjkJ2OjNLFvuy1W+yrMf | ||||
| KN/CxSF/i7Af6Pn3NwdQgfkVDP9eYwz1vtgwvAK6/7kQFo1waab7vHqT/blc | ||||
| v4GB1m9m2Uug2jr7f2oY27dNCYT5M5qM4bq+PmNJlT+WB+q/yl6eutMs+x+n | ||||
| ogHOn72GlS6qu7zYb1BEggbrfV5kV/k+35Sz7HUNZJF9n5ersgVl789Afa+B | ||||
| 3OHXV6BZgWgFKifas/8HHJjDOfvxy+d1Vd/sTrDNy4qE8VenanPTFJL95tsG | ||||
| ZVwYRN3kliqgxDoJxWaVr9/Ays/n8wx/Df8XAcvekHw3AQA= | ||||
| </rfc> | </rfc> | |||
| End of changes. 242 change blocks. | ||||
| 2012 lines changed or deleted | 1119 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||