<?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.4.19 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-teep-otrp-over-http-14" category="std">

  <front>
    <title abbrev="TEEP HTTP Transport">HTTP Transport for Trusted Execution Environment Provisioning: Agent Initiated Communication</title>

    <author initials="D." surname="Thaler" fullname="Dave Thaler">
      <organization>Microsoft</organization>
      <address>
        <email>dthaler@microsoft.com</email>
      </address>
    </author>

    <date year="2022" month="October" day="14"/>

    <area>Security</area>
    <workgroup>TEEP WG</workgroup>
    <keyword>Internet-Draft</keyword>

    <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>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>A Trusted Execution Environment (TEE) is an environment that
enforces that any code within that environment cannot be tampered with,
and that any data used by such code cannot be read or tampered with
by any code outside that environment.
The Trusted Execution Environment Provisioning (TEEP) protocol is designed to
provision authorized code and configuration into TEEs.</t>

<t>To be secure against malware, a TEEP implementation (referred to as a
TEEP “Agent” on the client side, and a “Trusted Application Manager (TAM)” on
the server side) SHOULD themselves run inside a TEE, although a TAM running
outside a TEE is also supported. However, the transport for TEEP,
along with the underlying TCP/IP stack, does not necessarily run inside a TEE.  This split allows
the set of highly trusted code to be kept as small as possible, including allowing code
(e.g., TCP/IP or QUIC <xref target="RFC9000"/>) that only sees encrypted messages, to be kept out of the TEE.
See section 6.2 of <xref target="I-D.ietf-teep-architecture"/> for a depiction
of various implementation models.</t>

<t>The TEEP specification <xref target="I-D.ietf-teep-protocol"/> describes the
behavior of TEEP Agents and TAMs, but does not specify the details of the transport.
The purpose of this document is to provide such details.  That is,
a TEEP-over-HTTP (TEEP/HTTP) implementation delivers messages up to a TEEP
implementation, and accepts messages from the TEEP implementation to be sent over a network.
The TEEP-over-HTTP implementation can be implemented either outside a TEE (i.e., in
a TEEP “Broker”) or inside a TEE.</t>

<t>There are two topological scenarios in which TEEP could be deployed:</t>

<t><list style="numbers">
  <t>TAMs are reachable on the Internet, and Agents are on networks that might be
behind a firewall or stateful NAT, so that communication must be initiated by an Agent.
Thus, the Agent has an HTTP Client and the TAM has an HTTP Server.</t>
  <t>Agents are reachable on the Internet, and TAMs are on networks that might be
behind a firewall or stateful NAT, so that communication must be initiated by a TAM.
Thus, the Agent has an HTTP Server and the TAM has an HTTP Client.</t>
</list></t>

<t>The remainder of this document focuses primarily on the first scenario as depicted
in <xref target="communication-model"/>, but some sections (<xref target="use-of-http"/>
and <xref target="security"/>) may apply to the second scenario as well.  A more complete
discussion of the second scenario may be handled by a separate document.</t>

<figure title="Agent Initiated Communication" anchor="communication-model"><artwork><![CDATA[
    +------------------+           TEEP           +------------------+
    |    TEEP Agent    | <----------------------> |        TAM       |
    +------------------+                          +------------------+
             |                                              |
    +------------------+      TEEP-over-HTTP      +------------------+
    | TEEP/HTTP Client | <----------------------> | TEEP/HTTP Server |
    +------------------+                          +------------------+
             |                                              |
    +------------------+           HTTP           +------------------+
    |    HTTP Client   | <----------------------> |    HTTP Server   |
    +------------------+                          +------------------+
]]></artwork></figure>

<t>This document specifies the middle layer (TEEP-over-HTTP), whereas
the top layer (TEEP) is specified in <xref target="I-D.ietf-teep-protocol"/>
and the bottom layer (HTTP) is specified in <xref target="RFC9110"/>.</t>

</section>
<section anchor="terminology" title="Terminology">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”,
and “OPTIONAL” in this document are to be interpreted as described
in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear
in all capitals, as shown here.</t>

<t>This document also uses various terms defined in
<xref target="I-D.ietf-teep-architecture"/>, including Trusted Execution Environment (TEE),
Trusted Application (TA), Trusted Application Manager (TAM), TEEP Agent, TEEP Broker,
and Rich Execution Environment (REE).</t>

</section>
<section anchor="teep-broker" title="TEEP Broker">

<t>Section 6 of the TEEP architecture <xref target="I-D.ietf-teep-architecture"/> defines a TEEP “Broker”
as being a component on the device, but outside the TEE, that facilitates communication
with a TAM. That document further explains that the protocol layer at which the
TEEP broker operates may vary by implementation, and it depicts several exemplary models.
An implementation is free to choose any of these models, although model A is the one we
will use in our examples.</t>

<t>Passing information from an REE component to a TEE component is typically spoken of as
being passed “in” to the TEE, and information passed in the opposite direction is spoken of
as being passed “out”.  In the protocol layering sense, information is typically spoken
of as being passed “up” or “down” the stack.  Since the layer at which information is
passed in/out may vary by implementation, we will generally use “up” and “down” in this
document.</t>

<section anchor="use-of-abstract-apis" title="Use of Abstract APIs">

<t>This document refers to various APIs between a TEEP implementation and a TEEP/HTTP implementation
in the abstract, meaning the literal syntax and programming language
are not specified, so that various concrete APIs can be designed
(outside of the IETF) that are compliant.</t>

<t>Some TEE architectures (e.g., SGX) may support API calls both into and out of a TEE.
In other TEE architectures, there may be no calls out from a TEE, but merely data returned
from calls into a TEE.  This document attempts to be agnostic as to the
concrete API architecture for Broker/Agent communication.  Since in model A,
the Broker/Agent communication is done at the layer between the TEEP and TEEP/HTTP
implementations, and there may be some architectures that do not support calls out
of the TEE (which would be downcalls from TEEP in model A), we will refer to passing
information up to the TEEP implementation as API calls, but will simply refer to
“passing data” back down from a TEEP implementation.  A concrete API might pass data
back via an API downcall or via data returned from an API upcall.</t>

<t>This document will also refer to passing “no” data back out of a TEEP implementation.
In a concrete API, this might be implemented by not making any downcall, or by
returning 0 bytes from an upcall, for example.</t>

</section>
</section>
<section anchor="use-of-http" title="Use of HTTP as a Transport">

<t>This document uses HTTP <xref target="RFC9110"/> as a transport.
For the motivation behind the HTTP recommendations in this document,
see the discussion of HTTP as a transport in <xref target="RFC9205"/>.</t>

<t>Redirects MUST NOT be automatically followed.
Cookies are not used.</t>

<t>Content is not intended to be treated as active by browsers and so HTTP responses
with content SHOULD have the following header fields as explained in Section 4.13 of
<xref target="RFC9205"/> (using the TEEP media type defined
in <xref target="I-D.ietf-teep-protocol"/>):</t>

<figure><artwork><![CDATA[
    Content-Type: application/teep+cbor
    X-Content-Type-Options: nosniff
    Content-Security-Policy: default-src 'none'
    Referrer-Policy: no-referrer
]]></artwork></figure>

<t>Only the POST method is specified for TAM resources exposed over HTTP.
Since POST responses without explicit freshness information are uncacheable
(see Section 9.3.3 of <xref target="RFC9110"/>), no Cache-Control header is needed.</t>

<t>A URI of such a resource is referred to as a “TAM URI”.  A TAM URI can
be any HTTP(S) URI.  The URI to use is configured in a TEEP Agent
via an out-of-band mechanism, as discussed in the next section.</t>

<t>It is strongly RECOMMENDED that implementations use HTTPS.
Although TEEP is protected end-to-end inside of HTTP, there is still value
in using HTTPS for transport, since HTTPS can provide additional protections
as discussed in Sections 4.4.2 and 6 of <xref target="RFC9205"/>.</t>

<t>However, there may be constrained nodes where code space is an
issue. <xref target="RFC7925"/> provides TLS profiles that can be used in many
constrained nodes, but in rare cases the most constrained nodes
might need to use HTTP without a TLS stack, relying on the end-to-end
security provided by the TEEP protocol. See Sections 4.4.2 and 6 of <xref target="RFC9205"/>
for more discussion of additional security considerations that apply
in this case.</t>

<t>When HTTPS is used, clients MUST use the procedures detailed in
Section 4.3.4 of <xref target="RFC9110"/> to verify the authenticity of the server.
See <xref target="BCP195"/> for additional TLS recommendations
and <xref target="RFC7925"/> for TLS recommendations related to IoT devices.</t>

</section>
<section anchor="teephttp-client-behavior" title="TEEP/HTTP Client Behavior">

<section anchor="request-ta" title="Receiving a request to install a new Trusted Application">

<t>In some environments, an application installer can determine (e.g., from an application manifest)
that the application being installed or updated has a dependency on a given Trusted Application (TA)
being available in a given type of TEE. In such a case, it will notify a TEEP Broker, where
the notification will contain the following:</t>

<t><list style="symbols">
  <t>A unique identifier of the TA</t>
  <t>Optionally, any metadata to provide to the TEEP Agent.  This might
include a TAM URI provided in the application manifest, for example.</t>
  <t>Optionally, any requirements that may affect the choice of TEE,
if multiple are available to the TEEP Broker.</t>
</list></t>

<t>When a TEEP Broker receives such a notification, it first identifies
in an implementation-dependent way which TEE (if any) is most appropriate
based on the constraints expressed.  If there is only one TEE, the choice
is obvious.  Otherwise, the choice might be based on factors such as
capabilities of available TEE(s) compared with TEE requirements in the notification.
Once the TEEP Broker picks a TEE, it passes the notification to the TEEP/HTTP Client for that TEE.</t>

<t>The TEEP/HTTP Client then informs the TEEP Agent in that TEE by invoking
an appropriate “RequestTA” API that identifies the TA needed and any other
associated metadata.  The TEEP/HTTP Client need not know whether the TEE already has
such a TA installed or whether it is up to date.</t>

<t>The TEEP Agent will either (a) pass no data back, (b) pass back a TAM URI to connect to,
or (c) pass back a message buffer and TAM URI to send it to.  The TAM URI
passed back may or may not be the same as the TAM URI, if any, provided by
the TEEP/HTTP Client, depending on the TEEP Agent’s configuration.  If they differ,
the TEEP/HTTP Client MUST use the TAM URI passed back.</t>

<section anchor="client-start" title="Session Creation">

<t>If no data is passed back, the TEEP/HTTP Client simply informs its caller (e.g., the
application installer) of success.</t>

<t>If the TEEP Agent passes back a TAM URI with no message buffer, the TEEP/HTTP Client
attempts to create session state,
then sends an HTTP(S) POST to the TAM URI with an Accept header field with the TEEP media type
specified in <xref target="I-D.ietf-teep-protocol"/>,
and an empty body. The HTTP request is then associated with the TEEP/HTTP Client’s session state.</t>

<t>If the TEEP Agent instead passes back a TAM URI with a message buffer, the TEEP/HTTP Client
attempts to create session state and handles the message buffer as
specified in <xref target="send-msg"/>.</t>

<t>Session state consists of:</t>

<t><list style="symbols">
  <t>Any context (e.g., a handle) that the TEEP Agent wishes to be provided back to it
in any later conceptual API calls into it related to this session.</t>
  <t>Any context that identifies an HTTP request, if one is outstanding.  Initially, none exists.</t>
</list></t>

</section>
</section>
<section anchor="receiving-a-notification-that-a-trusted-application-is-no-longer-needed" title="Receiving a notification that a Trusted Application is no longer needed">

<t>In some environments, an application installer can determine (e.g., from an application manifest)
that a given Trusted Application is no longer needed, such as
if the application that previously depended on the TA is uninstalled
or updated in a way that removes the dependency.
In such a case, it will notify a TEEP Broker, where
the notification will contain the following:</t>

<t><list style="symbols">
  <t>A unique identifier of the TA</t>
  <t>Optionally, any metadata to provide to the TEEP Agent.  This might
include a TAM URI provided in the original application manifest, for example.</t>
  <t>Optionally, any requirements that may affect the choice of TEE,
if multiple are available to the TEEP Broker.</t>
</list></t>

<t>When a TEEP Broker receives such a notification, it first identifies
in an implementation-dependent way which TEE (if any) is believed to
contain the TA that is no longer needed, similar to the process in <xref target="request-ta"/>.
Once the TEEP Broker picks a TEE, it passes the notification to the TEEP/HTTP
Client for that TEE.</t>

<t>The TEEP/HTTP Client then informs the TEEP Agent in that TEE by invoking
an appropriate “UnrequestTA” API that identifies the unneeded TA.
The TEEP/HTTP Client need not know whether the TEE actually has
the TA installed.</t>

<t>Finally, the TEEP Agent responds to the TEEP/HTTP Client as in <xref target="request-ta"/>.
Specifically, the TEEP Agent will either (a) pass no data back, (b) pass back a TAM URI to connect to,
or (c) pass back a message buffer and TAM URI to send it to.  The TAM URI
passed back may or may not be the same as the TAM URI, if any, provided by
the TEEP/HTTP Client, depending on the TEEP Agent’s configuration.  If they differ,
the TEEP/HTTP Client MUST use the TAM URI passed back.</t>

<t>Processing then continues as in <xref target="client-start"/>.</t>

</section>
<section anchor="send-msg" title="Getting a TAM URI and message buffer back from a TEEP Agent">

<t>When a TEEP Agent passes a TAM URI and optionally a message buffer to a TEEP/HTTP Client, the
TEEP/HTTP Client MUST do the following, using the TEEP/HTTP Client’s session state associated
with its API call to the TEEP Agent.</t>

<t>The TEEP/HTTP Client sends an HTTP POST request to the TAM URI with Accept
and Content-Type header fields with the TEEP media type, and a body
containing the TEEP message buffer (if any) provided by the TEEP Agent.
The HTTP request is then associated with the TEEP/HTTP Client’s session state.</t>

</section>
<section anchor="http-response" title="Receiving an HTTP response">

<t>When an HTTP response is received in response to a request associated
with a given session state, the TEEP/HTTP Client MUST do the following.</t>

<t>If the HTTP response body is empty, the TEEP/HTTP Client’s task is complete, and
it can delete its session state, and its task is done.</t>

<t>If instead the HTTP response body is not empty, the TEEP/HTTP Client passes
(e.g., using the “ProcessTeepMessage” API as mentioned in Section 6.2.1 of <xref target="I-D.ietf-teep-architecture"/>)
the response body up to the TEEP Agent
associated with the session.  The TEEP Agent will then either pass no data back,
or pass back a message buffer.</t>

<t>If no data is passed back, the TEEP/HTTP Client’s task is complete, and it
can delete its session state, and inform its caller (e.g., the application
installer) of success.</t>

<t>If instead the TEEP Agent passes back a message buffer, the TEEP/HTTP Client
handles the message buffer as specified in <xref target="send-msg"/>.</t>

</section>
<section anchor="handling-checks-for-policy-changes" title="Handling checks for policy changes">

<t>An implementation MUST provide a way to periodically check for TAM policy
changes, such as a Trusted Application needing to be deleted from a TEE
because it is no longer permitted, or needing to be updated to a later
version.
This can be done in any implementation-specific manner, such as any of the
following or a combination thereof:</t>

<t>A) The TEEP/HTTP Client might call up to the TEEP Agent at an interval previously
   specified by the TEEP Agent.
   This approach requires that the TEEP/HTTP Client be capable of running a periodic timer.</t>

<t>B) The TEEP/HTTP Client might be informed when an existing TA is invoked, and call up to the TEEP Agent if
   more time has passed than was previously specified by the TEEP Agent.  This approach allows
   the device to go to sleep for a potentially long period of time.</t>

<t>C) The TEEP/HTTP Client might be informed when any attestation attempt determines that the device
   is out of compliance, and call up to the TEEP Agent to remediate.</t>

<t>The TEEP/HTTP Client informs the TEEP Agent by invoking an appropriate “RequestPolicyCheck” API.
The TEEP Agent will either (a) pass no data back, (b) pass back a TAM URI to connect to,
or (c) pass back a message buffer and TAM URI to send it to.  Processing then continues
as specified in <xref target="client-start"/>.</t>

<t>The TEEP Agent might need to talk to multiple TAMs, however, as shown in
Figure 1 of <xref target="I-D.ietf-teep-architecture"/>.  To accomplish this,
the TEEP/HTTP Client keeps invoking the “RequestPolicyCheck” API until
the TEEP Agent passes no data back, so that the TEEP Agent can return
each TAM URI in response to a separate API call.</t>

</section>
<section anchor="error-handling" title="Error handling">

<t>If any local error occurs where the TEEP/HTTP Client cannot get
a message buffer (empty or not) back from the TEEP Agent, the
TEEP/HTTP Client deletes its session state, and informs its caller (if any, e.g.,
the application installer) of a failure.</t>

<t>If any HTTP request results in an HTTP error response or
a lower layer error (e.g., network unreachable), the
TEEP/HTTP Client calls the TEEP Agent’s “ProcessError” API, and then
deletes its session state and informs its caller of a failure.</t>

</section>
</section>
<section anchor="teephttp-server-behavior" title="TEEP/HTTP Server Behavior">

<section anchor="receiving-an-http-post-request" title="Receiving an HTTP POST request">

<t>If the TAM does not receive the appropriate Content-Type header
field value, the TAM SHOULD fail the request, returning a 415 Unsupported Media Type
response.  Similarly, if an appropriate Accept header field is not
present, the TAM SHOULD fail the request with an appropriate error response.
(This is for consistency with common implementation practice to allow
the HTTP server to choose a default error response, since in some
implementations the choice is done at the HTTP layer rather than the
layer at which TEEP-over-HTTP would be implemented.)
Otherwise, processing continues as follows.</t>

<t>When an HTTP POST request is received with an empty body, this indicates
a request for a new TEEP session, and
the TEEP/HTTP Server invokes the TAM’s “ProcessConnect” API.  The TAM will then
pass back a message buffer.</t>

<t>When an HTTP POST request is received with a non-empty body, this indicates a
message on an existing TEEP session, and the TEEP/HTTP Server passes the
request body to the TAM (e.g., using the “ProcessTeepMessage” API mentioned in
<xref target="I-D.ietf-teep-architecture"/>). The TAM will
then pass back a (possibly empty) message buffer.</t>

</section>
<section anchor="getting-an-empty-buffer-back-from-the-tam" title="Getting an empty buffer back from the TAM">

<t>If the TAM passes back an empty buffer, the TEEP/HTTP Server sends a successful
(2xx) response with no body.  It SHOULD be status 204 (No Content).</t>

</section>
<section anchor="getting-a-message-buffer-from-the-tam" title="Getting a message buffer from the TAM">

<t>If the TAM passes back a non-empty buffer, the TEEP/HTTP Server
generates a successful (2xx) response with a Content-Type
header field with the TEEP media type, and with the message buffer as the body.</t>

</section>
<section anchor="error-handling-1" title="Error handling">

<t>If any error occurs where the TEEP/HTTP Server cannot get
a message buffer (empty or not) back from the TAM, the
TEEP/HTTP Server generates an appropriate HTTP 5xx error response.</t>

</section>
</section>
<section anchor="sample-message-flow" title="Sample message flow">

<t>The following shows a sample TEEP message flow that uses application/teep+cbor
as the Content-Type.</t>

<t><list style="numbers">
  <t>An application installer determines (e.g., from an application manifest)
that the application has a dependency on TA “X”, and passes
this notification to the TEEP Broker.  The TEEP Broker
picks a TEE (e.g., the only one available) based on
this notification, and passes the information to the
TEEP/HTTP Cient for that TEE.</t>
  <t>The TEEP/HTTP Client calls the TEEP Agent’s “RequestTA” API, passing
TA Needed = X.</t>
  <t>The TEEP Agent finds that no such TA is already installed,
but that it can be obtained from a given TAM.  The TEEP
Agent passes back the TAM URI (e.g., “https://example.com/tam”)
to the TEEP/HTTP Client.</t>
  <t>The TEEP/HTTP Client sends an HTTP POST request to the TAM URI:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
        POST /tam HTTP/1.1
        Host: example.com
        Accept: application/teep+cbor
        Content-Length: 0
        User-Agent: Foo/1.0
]]></artwork></figure>
  <vspace blankLines='1'/>
where the TEEP/HTTP Client fills in an implementation-specific value in the
User-Agent header field.</t>
  <t>On the TAM side, the TEEP/HTTP Server receives the HTTP POST request, and calls
the TAM’s “ProcessConnect” API.</t>
  <t>The TAM generates a TEEP message (where typically QueryRequest
is the first message) and passes it to the TEEP/HTTP Server.</t>
  <t>The TEEP/HTTP Server sends an HTTP successful response with
the TEEP message in the body:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
        HTTP/1.1 200 OK
        Content-Type: application/teep+cbor
        Content-Length: [length of TEEP message here]
        Server: Bar/2.2
        X-Content-Type-Options: nosniff
        Content-Security-Policy: default-src 'none'
        Referrer-Policy: no-referrer

        [TEEP message here]
]]></artwork></figure>
  <vspace blankLines='1'/>
where the TEEP/HTTP Server fills in an implementation-specific value in the
Server header field.</t>
  <t>Back on the TEEP Agent side, the TEEP/HTTP Client gets the HTTP response, extracts the TEEP
message and passes it up to the TEEP Agent.</t>
  <t>The TEEP Agent processes the TEEP message, and generates a TEEP
response (e.g., QueryResponse) which it passes back to the TEEP/HTTP Client.</t>
  <t>The TEEP/HTTP Client gets the TEEP message buffer and sends
an HTTP POST request to the TAM URI, with the TEEP message in the body:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
       POST /tam HTTP/1.1
       Host: example.com
       Accept: application/teep+cbor
       Content-Type: application/teep+cbor
       Content-Length: [length of TEEP message here]
       User-Agent: Foo/1.0

       [TEEP message here]
]]></artwork></figure>
  </t>
  <t>The TEEP/HTTP Server receives the HTTP POST request, and passes the payload up
to the TAM.</t>
  <t>Steps 6-11 are then repeated until the TAM passes no data back
to the TEEP/HTTP Server in step 6.</t>
  <t>The TEEP/HTTP Server sends an HTTP successful response with
no body:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
       HTTP/1.1 204 No Content
       Server: Bar/2.2
]]></artwork></figure>
  </t>
  <t>The TEEP/HTTP Client deletes its session state.</t>
</list></t>

</section>
<section anchor="security" title="Security Considerations">

<t><xref target="use-of-http"/> discussed security recommendations for HTTPS transport
of TEEP messages. See Section 6 of <xref target="RFC9205"/>
for additional discussion of HTTP(S) security considerations.
See section 9 of <xref target="I-D.ietf-teep-architecture"/> for security considerations
specific to the use of TEEP.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document has no actions for IANA.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>




<reference anchor='I-D.ietf-teep-protocol'>
   <front>
      <title>Trusted Execution Environment Provisioning (TEEP) Protocol</title>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         <organization>Arm Ltd.</organization>
      </author>
      <author fullname='Mingliang Pei' initials='M.' surname='Pei'>
         <organization>Broadcom</organization>
      </author>
      <author fullname='Dave Wheeler' initials='D. M.' surname='Wheeler'>
         <organization>Amazon</organization>
      </author>
      <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>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-teep-protocol-10'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-teep-protocol-10.txt' type='TXT'/>
</reference>



<reference anchor='RFC9110' target='https://www.rfc-editor.org/info/rfc9110'>
<front>
<title>HTTP Semantics</title>
<author fullname='R. Fielding' initials='R.' role='editor' surname='Fielding'><organization/></author>
<author fullname='M. Nottingham' initials='M.' role='editor' surname='Nottingham'><organization/></author>
<author fullname='J. Reschke' initials='J.' role='editor' surname='Reschke'><organization/></author>
<date month='June' year='2022'/>
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the &quot;http&quot; and &quot;https&quot; Uniform Resource Identifier (URI) schemes. </t><t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t></abstract>
</front>
<seriesInfo name='STD' value='97'/>
<seriesInfo name='RFC' value='9110'/>
<seriesInfo name='DOI' value='10.17487/RFC9110'/>
</reference>



<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<date month='March' year='1997'/>
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<date month='May' year='2017'/>
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference anchor='RFC7925' target='https://www.rfc-editor.org/info/rfc7925'>
<front>
<title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
<author fullname='H. Tschofenig' initials='H.' role='editor' surname='Tschofenig'><organization/></author>
<author fullname='T. Fossati' initials='T.' surname='Fossati'><organization/></author>
<date month='July' year='2016'/>
<abstract><t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t><t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery.  The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t></abstract>
</front>
<seriesInfo name='RFC' value='7925'/>
<seriesInfo name='DOI' value='10.17487/RFC7925'/>
</reference>



<reference anchor='BCP195' target='https://www.rfc-editor.org/info/rfc7525'>
<front>
<title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
<author fullname='Y. Sheffer' initials='Y.' surname='Sheffer'><organization/></author>
<author fullname='R. Holz' initials='R.' surname='Holz'><organization/></author>
<author fullname='P. Saint-Andre' initials='P.' surname='Saint-Andre'><organization/></author>
<date month='May' year='2015'/>
<abstract><t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are widely used to protect data exchanged over application protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP.  Over the last few years, several serious attacks on TLS have emerged, including attacks on its most commonly used cipher suites and their modes of operation.  This document provides recommendations for improving the security of deployed services that use TLS and DTLS. The recommendations are applicable to the majority of use cases.</t></abstract>
</front>
<seriesInfo name='BCP' value='195'/>
<seriesInfo name='RFC' value='7525'/>
<seriesInfo name='DOI' value='10.17487/RFC7525'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='RFC9000' target='https://www.rfc-editor.org/info/rfc9000'>
<front>
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
<author fullname='J. Iyengar' initials='J.' role='editor' surname='Iyengar'><organization/></author>
<author fullname='M. Thomson' initials='M.' role='editor' surname='Thomson'><organization/></author>
<date month='May' year='2021'/>
<abstract><t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t></abstract>
</front>
<seriesInfo name='RFC' value='9000'/>
<seriesInfo name='DOI' value='10.17487/RFC9000'/>
</reference>


<reference anchor='I-D.ietf-teep-architecture'>
   <front>
      <title>Trusted Execution Environment Provisioning (TEEP) Architecture</title>
      <author fullname='Mingliang Pei' initials='M.' surname='Pei'>
         <organization>Broadcom</organization>
      </author>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='Dave Thaler' initials='D.' surname='Thaler'>
         <organization>Microsoft</organization>
      </author>
      <author fullname='Dave Wheeler' initials='D. M.' surname='Wheeler'>
         <organization>Amazon</organization>
      </author>
      <date day='11' month='July' year='2022'/>
      <abstract>
	 <t>   A Trusted Execution Environment (TEE) is an environment that enforces
   that any code within that environment cannot be tampered with, and
   that any data used by such code cannot be read or tampered with by
   any code outside that environment.  This architecture document
   motivates the design and standardization of a protocol for managing
   the lifecycle of trusted applications running inside such a TEE.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-teep-architecture-18'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-teep-architecture-18.txt' type='TXT'/>
</reference>



<reference anchor='RFC9205' target='https://www.rfc-editor.org/info/rfc9205'>
<front>
<title>Building Protocols with HTTP</title>
<author fullname='M. Nottingham' initials='M.' surname='Nottingham'><organization/></author>
<date month='June' year='2022'/>
<abstract><t>Applications often use HTTP as a substrate to create HTTP-based APIs. This document specifies best practices for writing specifications that use HTTP to define new application protocols. It is written primarily to guide IETF efforts to define application protocols using HTTP for deployment on the Internet but might be applicable in other situations.</t><t>This document obsoletes RFC 3205.</t></abstract>
</front>
<seriesInfo name='BCP' value='56'/>
<seriesInfo name='RFC' value='9205'/>
<seriesInfo name='DOI' value='10.17487/RFC9205'/>
</reference>




    </references>




  </back>

<!-- ##markdown-source:
H4sIAI+2SWMAA+1caW8bR5r+ToD/oYb+EHFDtiXZTsbCzs4yshML60NjyZgs
BotFsVkkC2p2cbqakjmK97fve1RVV1+Ukgmyu9gRkFhqVtfxns97FKfT6XBQ
6jJTZ2L05vr6UlwXMrdbU5RiaQr4a2dLtRCvP6t0V2qTi9f5rS5MvlF5KS4L
c6stPNX56kzMVvjsItellvjOudlsdrlOJb43Gg7kfF6o2zNx/fr1paivNRws
TJrLDexiUchlOdWqXE5LpbZTUxbwv1tVTNdluZ2ePB8OYEa1MsX+TNhyMRwM
B3pbnIkSt3p6fPzy+BTWKpQ8E1ew6UKX++HgzhQ3q8Lstm75P/8wHNyoPTxe
nMGWS1Xkqpy+wrVxQlvKfPGfMjM57Giv7HCw1WfDgRDFMlULW+4z/1yI0qTx
7zpfABnCEwunK9TSVg/2m/rfZaHTanwKRIP3q891nuk8Wk19LqeZtuUUJpqb
DAZOzT99jR8BCTdyuyVe0Gi5K9emwH1P8XP60Tm88SoR12uZqSI8Ztq/kreq
+YkpVjLXfyMmnol3Oi2MNUgl97naSJ0B20p67V83fkACJ0FSTqdTIedwSpkS
aa/X6mdIlThCdo3xGdDWZEJbsbPwamnERuZypYBiCyWAXSAXJl/q1a6gvYqF
LCUcV8j2csNBvB4uMU4EHBwmByLu6KndqlQvtbKihB2TuJZ11UA5SmMZF3dr
VSige1hxtt1m/sN3tN0Clpu9GwuriludqgPnCQeAhazAAyl8A/cjS5HKHD5j
VcOTx9uAuXDPsA6cyvNgoxeLTOFfw8ETgTJfmMUuZXIMB7MHmEJEwt3Cuip6
jpsZDlQOFAl7k/meT3GnyzUcgB7GL8Hmc1OKuRKl3GyBZgsaOgHSwbnDHEQA
os58L+wuXfOs1dug5AsQ0PoswwGMDlswu9Jq+Le5h+SXSuI2ksSFsnqVE/fA
QvjBgvVO/w0+CMysy6bOgUfI14RUwuBhLBorGLySoKMlSEN2B1ZsgvKLkqY3
20zhrniGIzAiqihYciSwBabBYSOywiOUF5SBNNMkzECCCe1DitGDwolvg1dY
K5JSeIqvj8XVmw+f3r7CaTdWZbfA7WKHRyH60i5hiQyOvlut8e/ZOxyAtBsO
PBtoGIlRZg3wdIvqpBaJeGPuFCw1oV23FQ1FA6zxijhMY3ZgZ4tsj5y5Pr98
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
L/HfE8yS+d8eaDQkGFwAAA==

-->

</rfc>

