<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.7 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-song-lake-ra-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="RA-EDHOC">Remote attestation over EDHOC</title>
    <seriesInfo name="Internet-Draft" value="draft-song-lake-ra-00"/>
    <author initials="Y." surname="Song" fullname="Yuxuan Song">
      <organization>Inria</organization>
      <address>
        <email>yuxuan.song@inria.fr</email>
      </address>
    </author>
    <date year="2024" month="March" day="04"/>
    <area>Security</area>
    <workgroup>Lightweight Authenticated Key Exchange</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 45?>

<t>This document specifies how to perform remote attestation as part of the lightweight authenticated Diffie-Hellman key exchange protocol EDHOC (Ephemeral Diffie-Hellman Over COSE), based on the Remote ATtestation procedureS (RATS) architecture.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ysong02.github.io/RemoteAttestation_overEDHOC/draft-song-lake-ra.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-song-lake-ra/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Lightweight Authenticated Key Exchange Working Group mailing list (<eref target="mailto:lake@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/lake/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/lake/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ysong02/RemoteAttestation_overEDHOC"/>.</t>
    </note>
  </front>
  <middle>
    <?line 49?>

<section anchor="introduction">
      <name>Introduction</name>
      <!--Discuss remote attestation and mention some use cases.-->
<t>Remote attestation is a security process which verifies and confirms the integrity and trustworthiness of a remote device or system in the network.
This process helps establish a level of trust in the remote system before allowing the device to e.g. join the network or access some sensitive information and resources.
The use cases that require remote attestation include secure boot and firmware management, cloud computing, network access control, etc.</t>
      <!--Summarize RATS architecture {{RFC9334}} and main roles.-->
<t>The IETF working group Remote ATtestation procedureS (RATS) has defined an architecture <xref target="RFC9334"/> for remote attestation.
The three main roles in the RATS architecture are the Attester, the Verifier and the Relying Party.
The Attester generates the evidence concerning its identity and integrity, which must be appraised by the Verifier for its validity.
Then, the Verifier produces the attestation result, which is consequently used by the Relying Party for the purposes of reliably applying application-specific actions.</t>
      <!--Discuss the background check model and say that this specification supports the background check model.-->
<t>One type of interaction model defined in the RATS architecture is called the background-check model.
It resembles the procedure of how employers perform background checks to determine the prospective employee's trustworthiness, by contacting the respective organization that issues a report.
In this case, the employer acts as the Relying Party, the employee acts as the Attester and the organization acts as the Verifier.
The Attester conveys evidence directly to the Relying Party and the Relying Party forwards the evidence to the Verifier for appraisal.
Once the attestation result is computed by the Verifier, it is sent back to the Relying Party to decide what action to take based on the attestation result.
This specification employs the RATS background check model.</t>
      <!--Discuss EAT-->
<t>One way of conveying attestation evidence is the Entity Attestation Token (EAT) <xref target="I-D.ietf-rats-eat"/>.
It provides an attested claims set that describes the state and the characteristics of the Attester, which can be used to determine its level of trustworthiness.
This specification relies on the EAT as the attestation evidence.</t>
      <!--Summarize EDHOC {{I-D.ietf-lake-edhoc}}. Mention EAD fields of EDHOC.-->
<t>Ephemeral Diffie-Hellman over COSE (EDHOC) <xref target="I-D.ietf-lake-edhoc"/> is a lightweight authenticated key exchange protocol for highly constrained networks.
In EDHOC, the two parties involved in the key exchange are referred to as the Initiator (I) and the Responder (R).
EDHOC supports the transport of external authorization data, through the dedicated EAD fields.
This specification delivers EAT through EDHOC.
Specifically, EAT is transported as an EAD item.</t>
      <!--Discuss implementation aspects such as the internal attestation service running on the Attester.
Root of trust. Separation between secure and non-secure worlds.-->
<t>Typically, the Attester incorporates an internal attestation service, including a specific trusted element known as the "root of trust".
Root of trust serves as the starting point for establishing and validating the trustworthiness appraisals of other components on the system.
The measurements signed by the attestation service are referred to as the Evidence.
The signing is requested through an attestation API.
How the components are separated between the secure and non-secure worlds on a device is out of scope of this specification.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

<t>The reader is assumed to be familiar with the terms and concepts defined in EDHOC <xref target="I-D.ietf-lake-edhoc"/> and RATS <xref target="RFC9334"/>.</t>
    </section>
    <section anchor="problem-description">
      <name>Problem Description</name>
      <t>This specification describes how to perform remote attestation over the EDHOC protocol according to the RATS architecture.
Remote attestation protocol elements are carried within EDHOC's External Authorization Data (EAD) fields.
More specifically, this specification supports the RATS background check model.
It describes how the Attester (EDHOC Initiator) and Relying Party (EDHOC Responder) complete the EDHOC handshake complemented with remote attestation protocol elements.</t>
    </section>
    <section anchor="assumptions">
      <name>Assumptions</name>
      <t>The details of the protocol between Relying Party and Verifier are out of the scope.
The only assumption is that the Verifier outputs a fresh nonce and that same nonce is passed on to the EDHOC session.
That is where the link between the two protocols comes in.
The remainder, such as the evidence type selection is just the negotiation.
In general, the Verifier is supposed to know how to verify more than one format of the evidence type.
Therefore, the Verifier <bcp14>MUST</bcp14> send back at least one format to the Relying Party.
We assume in this specification, the Relying Party also has knowledge about the Attester, so it can narrow down the type selection and send to the Attester only one format of evidnece type.</t>
      <t>The Attester should have an explicit relation with the Verifier, such as from device manufacuture, so that the Verifier can evaluate the Evidence that is produced by the Attester.
The authentication between the Attester and the Relying Party is performed with EDHOC <xref target="I-D.ietf-lake-edhoc"/> and defines the process of remote attestation using the External Authorization Data (EAD) fields defined in EDHOC.</t>
    </section>
    <section anchor="the-protocol">
      <name>The Protocol</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>EDHOC Initiator plays the role of the RATS Attester.
EDHOC Responder plays the role of the RATS Relying Party.
An external entity, out of scope of this specification, plays the role of the RATS Verifier.</t>
        <figure anchor="fig-overview">
          <name>Overview of message flow. EDHOC is used between A and RP. Remote attestation proposal and request are sent in EDHOC External Authorization Data (EAD). The link between V and RP is out of scope of this specification.</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="536" viewBox="0 0 536 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,256" fill="none" stroke="black"/>
                <path d="M 96,32 L 96,256" fill="none" stroke="black"/>
                <path d="M 216,32 L 216,256" fill="none" stroke="black"/>
                <path d="M 312,32 L 312,256" fill="none" stroke="black"/>
                <path d="M 440,32 L 440,256" fill="none" stroke="black"/>
                <path d="M 528,32 L 528,256" fill="none" stroke="black"/>
                <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
                <path d="M 216,32 L 312,32" fill="none" stroke="black"/>
                <path d="M 440,32 L 528,32" fill="none" stroke="black"/>
                <path d="M 96,64 L 208,64" fill="none" stroke="black"/>
                <path d="M 312,80 L 432,80" fill="none" stroke="black"/>
                <path d="M 320,96 L 440,96" fill="none" stroke="black"/>
                <path d="M 104,112 L 216,112" fill="none" stroke="black"/>
                <path d="M 96,192 L 208,192" fill="none" stroke="black"/>
                <path d="M 312,192 L 432,192" fill="none" stroke="black"/>
                <path d="M 320,208 L 440,208" fill="none" stroke="black"/>
                <path d="M 8,256 L 96,256" fill="none" stroke="black"/>
                <path d="M 216,256 L 312,256" fill="none" stroke="black"/>
                <path d="M 440,256 L 528,256" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="440,192 428,186.4 428,197.6" fill="black" transform="rotate(0,432,192)"/>
                <polygon class="arrowhead" points="440,80 428,74.4 428,85.6" fill="black" transform="rotate(0,432,80)"/>
                <polygon class="arrowhead" points="328,208 316,202.4 316,213.6" fill="black" transform="rotate(180,320,208)"/>
                <polygon class="arrowhead" points="328,96 316,90.4 316,101.6" fill="black" transform="rotate(180,320,96)"/>
                <polygon class="arrowhead" points="216,192 204,186.4 204,197.6" fill="black" transform="rotate(0,208,192)"/>
                <polygon class="arrowhead" points="216,64 204,58.4 204,69.6" fill="black" transform="rotate(0,208,64)"/>
                <polygon class="arrowhead" points="112,112 100,106.4 100,117.6" fill="black" transform="rotate(180,104,112)"/>
                <g class="text">
                  <text x="152" y="36">Attestation</text>
                  <text x="140" y="52">proposal</text>
                  <text x="372" y="52">Provided</text>
                  <text x="52" y="68">Attester</text>
                  <text x="264" y="68">Relying</text>
                  <text x="376" y="68">EvidenceTypes</text>
                  <text x="484" y="68">Verifier</text>
                  <text x="264" y="100">Party</text>
                  <text x="372" y="116">Selected</text>
                  <text x="152" y="132">Attestation</text>
                  <text x="376" y="132">EvidenceType(s)</text>
                  <text x="136" y="148">request</text>
                  <text x="48" y="164">(A)</text>
                  <text x="260" y="164">(RP)</text>
                  <text x="480" y="164">(V)</text>
                  <text x="140" y="180">Evidence</text>
                  <text x="372" y="180">Evidence</text>
                  <text x="376" y="228">Attestation</text>
                  <text x="356" y="244">Result</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
+----------+ Attestation  +-----------+               +----------+
|          | proposal     |           |   Provided    |          |
| Attester +------------->|  Relying  | EvidenceTypes | Verifier |
|          |              |           +-------------->|          |
|          |              |   Party   |<--------------+          |
|          |<-------------+           |   Selected    |          |
|          | Attestation  |           |EvidenceType(s)|          |
|          | request      |           |               |          |
|   (A)    |              |   (RP)    |               |   (V)    |
|          | Evidence     |           |   Evidence    |          |
|          +------------->|           +-------------->|          |
|          |              |           |<--------------+          |
|          |              |           |  Attestation  |          |
|          |              |           |  Result       |          |
+----------+              +-----------+               +----------+

]]></artwork>
          </artset>
        </figure>
        <t>The Attester and the Relying Party communicate by transporting messages within EDHOC's External Authorization Data (EAD) fields.</t>
      </section>
      <section anchor="ead1">
        <name>External Authorization Data 1</name>
        <t>In EAD_1, the Attester transports the Proposed_EvidenceType object.
It signals to the Relying Party the proposal to do remote attestation, as well as which attestation claims the Attester supports.
The supported attestation claims are encoded in CBOR in the form of a sequence.</t>
        <t>The external authorization data EAD_1 contains an EAD item with</t>
        <ul spacing="normal">
          <li>
            <t>ead_label = TBD1</t>
          </li>
          <li>
            <t>ead_value = Attestation_proposal, which is a CBOR byte string:</t>
          </li>
        </ul>
        <artwork><![CDATA[
Attestation_proposal = bstr .cbor Proposed_EvidenceType

Proposed_EvidenceType = (
        content-format:         [ + uint]
)
]]></artwork>
        <t>where</t>
        <ul spacing="normal">
          <li>
            <t>content-format is an array that contains all the supported evidence types by the Attester in decreasing order of preference.</t>
          </li>
          <li>
            <t>There <bcp14>MUST</bcp14> be at least one item in the array.</t>
          </li>
          <li>
            <t>content-format is an indicator of the format type (e.g., application/eat+cwt with an appropriate eat_profile parameter set).</t>
          </li>
        </ul>
        <t>The sign of ead_label <bcp14>MUST</bcp14> be negative to indicate that the EAT item is critical.
If the receiver cannot recognize the critical EAD item, or cannot process the information in the critical EAD item, then the receiver <bcp14>MUST</bcp14> send an EDHOC error message back.</t>
      </section>
      <section anchor="ead2">
        <name>External Authorization Data 2</name>
        <t>In EAD_2, the Relying Party signals to the Attester the supported and requested evidence types.
In case none of the evidence types is supported, the Relying Party rejects the first message_1 with an error indicating support for another evidence type.</t>
        <t>EAD_2 carries the Selected_EvidenceType object.
Similarly to EAD_1, Selected_EvidenceType object is encoded in CBOR.</t>
        <t>The external authorization data EAD_2 contains an EAD item with</t>
        <ul spacing="normal">
          <li>
            <t>ead_label = TBD2</t>
          </li>
          <li>
            <t>ead_value = Attestation_request, which is a CBOR byte string:</t>
          </li>
        </ul>
        <artwork><![CDATA[
Attestation_request = bstr .cbor Selected_EvidenceType
Selected_EvidenceType = (
        content-format:uint,
        nonce:bstr
)
]]></artwork>
        <t>where</t>
        <ul spacing="normal">
          <li>
            <t>content-format is the selected evidence type by the Relying Party and supported by the Verifier.</t>
          </li>
          <li>
            <t>nonce is generated by the Verifier and forwarded by the Relying Party.</t>
          </li>
        </ul>
      </section>
      <section anchor="ead3">
        <name>External Authorization Data 3</name>
        <t>As a response to the attestation request, the Attester calls its local attestation service to generate and return the serialized EAT <xref target="I-D.ietf-rats-eat"/> as Evidence.</t>
        <t>The external authorization data EAD_3 contains an EAD item with</t>
        <ul spacing="normal">
          <li>
            <t>ead_label = TBD3</t>
          </li>
          <li>
            <t>ead_value is a serialized EAT.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO: Security considerations</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="edhoc-external-authorization-data-registry">
        <name>EDHOC External Authorization Data Registry</name>
        <t>IANA is requested to register the following entry in the "EDHOC External Authorization Data" registry under the group name "Ephemeral Diffie-Hellman Over Cose (EDHOC)".
The ead_label = TBD1 corresponds to the ead_value Attestation_proposal in EAD_1 with processing specified in <xref target="ead1"/>.
The ead_label = TBD2 corresponds to the ead_value Attestation_request in <xref target="ead2"/>.
The ead_label = TBD3 corresponds to the ead_value which carries the EAT, as specified in <xref target="ead3"/>.</t>
        <table anchor="ead-table">
          <name>Addition to the EDHOC EAD registry</name>
          <thead>
            <tr>
              <th align="right">Label</th>
              <th align="left">Value Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBD1</td>
              <td align="left">bstr</td>
              <td align="left">Attestation Proposal</td>
            </tr>
            <tr>
              <td align="right">TBD2</td>
              <td align="left">bstr</td>
              <td align="left">Attestation Request</td>
            </tr>
            <tr>
              <td align="right">TBD3</td>
              <td align="left">bstr</td>
              <td align="left">Evidence for remote attestation</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-lake-edhoc">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="22" month="January" year="2024"/>
            <abstract>
              <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-23"/>
        </reference>
        <reference anchor="I-D.ietf-rats-eat">
          <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">
         </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="15" month="January" year="2024"/>
            <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 the type
   and degree of trust placed in the entity.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-25"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <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">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <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. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="IANA.CWT.Claims" target="http://www.iana.org/assignments/cwt">
          <front>
            <title>CBOR Web Token (CWT) Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="I-D.tschofenig-rats-psa-token">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Simon Frost" initials="S." surname="Frost">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Mathias Brossard" initials="M." surname="Brossard">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Adrian L. Shaw" initials="A. L." surname="Shaw">
              <organization>HP Labs</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="21" month="February" year="2024"/>
            <abstract>
              <t>   The Arm Platform Security Architecture (PSA) is a family of hardware
   and firmware security specifications, as well as open-source
   reference implementations, to help device makers and chip
   manufacturers build best-practice security into products.  Devices
   that are PSA compliant can produce attestation tokens as described in
   this memo, which are the basis for many different protocols,
   including secure provisioning and network access control.  This
   document specifies the PSA attestation token structure and semantics.

   The PSA attestation token is a profile of the Entity Attestation
   Token (EAT).  This specification describes what claims are used in an
   attestation token generated by PSA compliant systems, how these
   claims get serialized to the wire, and how they are cryptographically
   protected.

   This informational document is published as an independent submission
   to improve interoperability with ARM's architecture.  It is not a
   standard nor a product of the IETF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-22"/>
        </reference>
        <reference anchor="IANA-CoAP-Content-Formats" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>CoAP Content-Formats</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 255?>

<section anchor="example-remote-attestation-flow">
      <name>Example: Remote Attestation Flow</name>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1056" width="576" viewBox="0 0 576 1056" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
            <path d="M 8,112 L 8,768" fill="none" stroke="black"/>
            <path d="M 32,80 L 32,112" fill="none" stroke="black"/>
            <path d="M 32,144 L 32,992" fill="none" stroke="black"/>
            <path d="M 136,40 L 136,72" fill="none" stroke="black"/>
            <path d="M 136,112 L 136,144" fill="none" stroke="black"/>
            <path d="M 168,80 L 168,1040" fill="none" stroke="black"/>
            <path d="M 224,32 L 224,80" fill="none" stroke="black"/>
            <path d="M 264,704 L 264,712" fill="none" stroke="black"/>
            <path d="M 304,48 L 304,80" fill="none" stroke="black"/>
            <path d="M 368,80 L 368,1040" fill="none" stroke="black"/>
            <path d="M 432,48 L 432,80" fill="none" stroke="black"/>
            <path d="M 440,368 L 440,376" fill="none" stroke="black"/>
            <path d="M 480,48 L 480,80" fill="none" stroke="black"/>
            <path d="M 528,80 L 528,992" fill="none" stroke="black"/>
            <path d="M 568,48 L 568,80" fill="none" stroke="black"/>
            <path d="M 568,160 L 568,768" fill="none" stroke="black"/>
            <path d="M 8,32 L 224,32" fill="none" stroke="black"/>
            <path d="M 304,48 L 432,48" fill="none" stroke="black"/>
            <path d="M 480,48 L 568,48" fill="none" stroke="black"/>
            <path d="M 8,80 L 224,80" fill="none" stroke="black"/>
            <path d="M 304,80 L 432,80" fill="none" stroke="black"/>
            <path d="M 480,80 L 568,80" fill="none" stroke="black"/>
            <path d="M 8,112 L 136,112" fill="none" stroke="black"/>
            <path d="M 8,144 L 552,144" fill="none" stroke="black"/>
            <path d="M 168,256 L 360,256" fill="none" stroke="black"/>
            <path d="M 368,304 L 520,304" fill="none" stroke="black"/>
            <path d="M 376,416 L 528,416" fill="none" stroke="black"/>
            <path d="M 176,496 L 368,496" fill="none" stroke="black"/>
            <path d="M 40,576 L 168,576" fill="none" stroke="black"/>
            <path d="M 32,656 L 160,656" fill="none" stroke="black"/>
            <path d="M 168,736 L 360,736" fill="none" stroke="black"/>
            <path d="M 8,768 L 568,768" fill="none" stroke="black"/>
            <path d="M 368,832 L 520,832" fill="none" stroke="black"/>
            <path d="M 376,896 L 528,896" fill="none" stroke="black"/>
            <path d="M 368,912 L 392,912" fill="none" stroke="black"/>
            <path d="M 376,944 L 392,944" fill="none" stroke="black"/>
            <path d="M 32,992 L 528,992" fill="none" stroke="black"/>
            <path d="M 176,1024 L 360,1024" fill="none" stroke="black"/>
            <path d="M 552,144 C 560.83064,144 568,151.16936 568,160" fill="none" stroke="black"/>
            <path d="M 392,912 C 400.83064,912 408,919.16936 408,928" fill="none" stroke="black"/>
            <path d="M 392,944 C 400.83064,944 408,936.83064 408,928" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="528,832 516,826.4 516,837.6" fill="black" transform="rotate(0,520,832)"/>
            <polygon class="arrowhead" points="528,304 516,298.4 516,309.6" fill="black" transform="rotate(0,520,304)"/>
            <polygon class="arrowhead" points="384,944 372,938.4 372,949.6" fill="black" transform="rotate(180,376,944)"/>
            <polygon class="arrowhead" points="384,896 372,890.4 372,901.6" fill="black" transform="rotate(180,376,896)"/>
            <polygon class="arrowhead" points="384,416 372,410.4 372,421.6" fill="black" transform="rotate(180,376,416)"/>
            <polygon class="arrowhead" points="368,1024 356,1018.4 356,1029.6" fill="black" transform="rotate(0,360,1024)"/>
            <polygon class="arrowhead" points="368,736 356,730.4 356,741.6" fill="black" transform="rotate(0,360,736)"/>
            <polygon class="arrowhead" points="368,256 356,250.4 356,261.6" fill="black" transform="rotate(0,360,256)"/>
            <polygon class="arrowhead" points="184,1024 172,1018.4 172,1029.6" fill="black" transform="rotate(180,176,1024)"/>
            <polygon class="arrowhead" points="184,496 172,490.4 172,501.6" fill="black" transform="rotate(180,176,496)"/>
            <polygon class="arrowhead" points="168,656 156,650.4 156,661.6" fill="black" transform="rotate(0,160,656)"/>
            <polygon class="arrowhead" points="48,576 36,570.4 36,581.6" fill="black" transform="rotate(180,40,576)"/>
            <g class="text">
              <text x="64" y="52">Attestation</text>
              <text x="180" y="52">Attester</text>
              <text x="48" y="68">Service</text>
              <text x="344" y="68">Relying</text>
              <text x="400" y="68">Party</text>
              <text x="524" y="68">Verifier</text>
              <text x="40" y="132">EDHOC</text>
              <text x="96" y="132">session</text>
              <text x="192" y="180">EDHOC</text>
              <text x="256" y="180">message_1</text>
              <text x="208" y="196">{...}</text>
              <text x="212" y="212">EAD_1(</text>
              <text x="252" y="228">types(a,b,c)</text>
              <text x="192" y="244">)</text>
              <text x="400" y="356">Body:</text>
              <text x="432" y="356">{</text>
              <text x="416" y="372">nonce</text>
              <text x="200" y="388">EDHOC</text>
              <text x="264" y="388">message_2</text>
              <text x="436" y="388">types(a,b)</text>
              <text x="208" y="404">{...}</text>
              <text x="384" y="404">}</text>
              <text x="212" y="420">EAD_2(</text>
              <text x="228" y="436">nonce,</text>
              <text x="232" y="452">type(a)</text>
              <text x="192" y="468">)</text>
              <text x="260" y="484">Auth_CRED(Sig/MAC)</text>
              <text x="84" y="516">Body:{</text>
              <text x="92" y="532">nonce,</text>
              <text x="96" y="548">type(a)</text>
              <text x="64" y="564">}</text>
              <text x="68" y="596">Body:{</text>
              <text x="84" y="612">nonce,</text>
              <text x="92" y="628">Evidence</text>
              <text x="48" y="644">}</text>
              <text x="200" y="676">EDHOC</text>
              <text x="264" y="676">message_3</text>
              <text x="208" y="692">{...}</text>
              <text x="224" y="708">EAT(nonce</text>
              <text x="304" y="708">Evidence)</text>
              <text x="260" y="724">Auth_CRED(sig/MAC)</text>
              <text x="400" y="804">Body:</text>
              <text x="432" y="804">{</text>
              <text x="404" y="820">EAT}</text>
              <text x="400" y="852">Body:</text>
              <text x="432" y="852">{</text>
              <text x="432" y="868">att-result:</text>
              <text x="500" y="868">AR{}</text>
              <text x="384" y="884">}</text>
              <text x="444" y="932">verify</text>
              <text x="492" y="932">AR{}</text>
              <text x="248" y="1012">application</text>
              <text x="316" y="1012">data</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
.--------------------------.
| Attestation   | Attester |         .---------------.     .----------.
| Service       |          |         | Relying Party |     | Verifier |
'--+----------------+------'         '-------+-------'     '-----+----'
   |                |                        |                   |
.--+------------.   |                        |                   |
| EDHOC session |   |                        |                   |
+--+------------+---+------------------------+-------------------+---.
|  |                |                        |                   |    |
|  |                |EDHOC message_1         |                   |    |
|  |                |  {...}                 |                   |    |
|  |                |  EAD_1(                |                   |    |
|  |                |    types(a,b,c)        |                   |    |
|  |                |  )                     |                   |    |
|  |                +----------------------->|                   |    |
|  |                |                        |                   |    |
|  |                |                        |                   |    |
|  |                |                        +------------------>|    |
|  |                |                        |                   |    |
|  |                |                        |                   |    |
|  |                |                        | Body: {           |    |
|  |                |                        |   nonce,          |    |
|  |                | EDHOC message_2        |   types(a,b)      |    |
|  |                |  {...}                 | }                 |    |
|  |                |  EAD_2(                |<------------------+    |
|  |                |    nonce,              |                   |    |
|  |                |    type(a)             |                   |    |
|  |                |  )                     |                   |    |
|  |                |  Auth_CRED(Sig/MAC)    |                   |    |
|  |                |<-----------------------+                   |    |
|  |   Body:{       |                        |                   |    |
|  |    nonce,      |                        |                   |    |
|  |    type(a)     |                        |                   |    |
|  |   }            |                        |                   |    |
|  |<---------------+                        |                   |    |
|  | Body:{         |                        |                   |    |
|  |   nonce,       |                        |                   |    |
|  |   Evidence     |                        |                   |    |
|  | }              |                        |                   |    |
|  +--------------->|                        |                   |    |
|  |                | EDHOC message_3        |                   |    |
|  |                |  {...}                 |                   |    |
|  |                |  EAT(nonce,Evidence)   |                   |    |
|  |                |  Auth_CRED(sig/MAC)    |                   |    |
|  |                +----------------------->|                   |    |
|  |                |                        |                   |    |
'--+----------------+------------------------+-------------------+----'
   |                |                        |                   |
   |                |                        | Body: {           |
   |                |                        |  EAT}             |
   |                |                        +------------------>|
   |                |                        | Body: {           |
   |                |                        |  att-result: AR{} |
   |                |                        | }                 |
   |                |                        |<------------------+
   |                |                        +---.               |
   |                |                        |    | verify AR{}  |
   |                |                        |<--'               |
   |                |                        |                   |
   |                |                        |                   |
   '----------------+------------------------+-------------------'
                    |    application data    |
                    |<---------------------->|
                    |                        |
]]></artwork>
      </artset>
      <t>{: #figure-iot-example title="Example of remote attestation."</t>
    </section>
    <section anchor="example-firmware-version">
      <name>Example: Firmware Version</name>
      <t>The goal in this example is to verify that the firmware running on the device is the latest version, and is neither tampered or compromised.
A device acts as the Attester, currently in an untrusted state.
The Attester needs to generate the Evidence to attest itself.
A gateway that can communicate with the Attester and can control its access to the network acts as the Relying Party.
The gateway will finally decide whether the device can join the network or not depending on the Attestation Result.
The Attestation Result is produced by the Verifier, which is a web server that can be seen as the manufacturer of the device.
Therefore it can appraise the Evidence that is sent by the Attester.
The remote attestation session starts with the Attester sending EAD_1 in EDHOC message 1, as specified in <xref target="ead1"/>.
In EAD_1 field, the Attester indicates that the format of EAT is in CWT and the profile of EAT is Platform Security Architecture (PSA) attestation token <xref target="I-D.tschofenig-rats-psa-token"/>.
PSA attestation token contains the claims relating to the security state of the platform, which are provided by PSA's Initial Attestation API.</t>
      <t>Therefore, the EAD_1 in EDHOC message_1 is:</t>
      <artwork><![CDATA[
TBD
]]></artwork>
      <t>According to <xref target="I-D.tschofenig-rats-psa-token"/>, IANA is requested to register the Content-Format ID in the "CoAP Content-Formats" registry <xref target="IANA-CoAP-Content-Formats"/>, for the <tt>application/eat+cwt</tt> media type with the <tt>eat_profile</tt> parameter equal to <tt>tag:psacertified.org,2023:psa#tfm</tt>.</t>
      <t>The Media Type equivalent is:</t>
      <artwork><![CDATA[
media-type: application/eat+cwt; eat_profile="tag:psacertified.org,2023:psa#tfm"
]]></artwork>
      <t>If the Verifier and the Relying Party can support this evidence type that is proposed by the Attester, the Relying Party will include in the EAD_2 field the same evidence type, alongside a nonce for message freshness.</t>
      <artwork><![CDATA[
TBD
]]></artwork>
      <t>The Evidence in EAD_3 field is the Platform Security Architecture (PSA) attestation token, which is the attestation of the platform state to assure the firmware integrity.
This can be generated from Measured boot, which creates the measurements of loaded code and data during the boot process and make them part of an overall chain of trust.
Each stage of the chain of trust stores the measurements in a local root of trust, then the Root of Trust for Report (RTR) of the device can use them as materials to generate the Evidence.
The components of the Evidence should at least be:</t>
      <artwork><![CDATA[
TBD
]]></artwork>
      <t>The Relying Party (co-located with the gateway) then treats the Evidence as opaque and sends it to the Verifier.
Once the Verifier sends back the Attestation Result, the Relying Party can be assured on the version of the firmware that the device is running.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to thank Thomas Fossati, Goran Selander, and Malisa Vucinic for the provided feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
uJHVhz7sTjkFJ5Xrtf4Fl9VYDxFNAAA=

-->

</rfc>
