<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bft-rats-kat-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="KAT">An EAT-based Key Attestation Token</title>
    <seriesInfo name="Internet-Draft" value="draft-bft-rats-kat-06"/>
    <author initials="M." surname="Brossard" fullname="Mathias Brossard">
      <organization>arm</organization>
      <address>
        <email>mathias.brossard@arm.com</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization/>
      <address>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization/>
      <address>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="I." surname="Mihalcea" fullname="Ionuț Mihalcea">
      <organization/>
      <address>
        <email>ionut.mihalcea@arm.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="17"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>evidence</keyword>
    <keyword>key attestation</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 55?>

<t>This document defines an evidence format for key attestation based on
the Entity Attestation Token (EAT).</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Remote ATtestation ProcedureS Working Group mailing list (rats@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/thomas-fossati/draft-kat"/>.</t>
    </note>
  </front>
  <middle>
    <?line 60?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines an evidence format for key attestation based on
EAT <xref target="I-D.ietf-rats-eat"/>.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The following terms are used in this document:</t>
      <dl newline="true">
        <dt>Root of Trust (RoT):</dt>
        <dd>
          <t>A set of software and/or hardware components that need to be trusted
to act as a security foundation required for accomplishing the security
goals of a system. In our case, the RoT is expected to offer the
functionality for attesting to the state of the platform, and indirectly
also to attest the integrity of the IK (public as well as private key)
and the confidentiality of the IK private key.</t>
        </dd>
        <dt>Attestation Key (AK):</dt>
        <dd>
          <t>Cryptographic key belonging to the RoT that is only used to sign
attestation tokens.</t>
        </dd>
        <dt>Platform Attestation Key (PAK):</dt>
        <dd>
          <t>An AK used specifically for signing attestation tokens relating to the
state of the platform.</t>
        </dd>
        <dt>Key Attestation:</dt>
        <dd>
          <t>Evidence containing properties of the environment(s) in which the private
keys are stored. For example, a Relying Party may want to know whether
a private key is stored in a hardware security module and cannot be
exported in unencrypted fashion.</t>
        </dd>
        <dt>Key Attestation Key (KAK):</dt>
        <dd>
          <t>An AK used specifically for signing KATs. In some systems only a
single AK is used. In that case the AK is used as a PAK and a KAK.</t>
        </dd>
        <dt>Identity Key (IK):</dt>
        <dd>
          <t>The IK consists of a private and a public key. The private key is used
by the usage protocol. The public key is included in the Key Attestation
Token.  The IK is protected by the RoT.</t>
        </dd>
        <dt>Usage Protocol:</dt>
        <dd>
          <t>A (security) protocol that requires demonstrating possession of the
private IK.</t>
        </dd>
        <dt>Attestation Token (AT):</dt>
        <dd>
          <t>A collection of claims that a RoT assembles (and signs) with the
purpose of informing - in a verifiable way - relying parties about the
identity and state of the platform. Essentially a type of Evidence as
per the RATS architecture terminology <xref target="RFC9334"/>.</t>
        </dd>
        <dt>Platform Attestation Token (PAT):</dt>
        <dd>
          <t>An AT containing claims relating to the security state of the
platform, including software constituting the platform trusted computing
base (TCB). The process of generating a PAT typically involves gathering
data during measured boot.</t>
        </dd>
        <dt>Key Attestation Token (KAT):</dt>
        <dd>
          <t>An AT containing a claim with a public key. The KAT
may also contain other claims, such as those indicating its validity.
The KAT is signed by the KAK. The key attestation service, which is part
of the platform root of trust (RoT), conceptually acts as a local
certification authority since the KAT behaves like a certificate.</t>
        </dd>
        <dt>Combined Attestation Bundle (CAB):</dt>
        <dd>
          <t>A structure used to bundle a KAT and a PAT together for transport in
the usage protocol. If the KAT already includes a PAT, in form of a
nested token, then it already corresponds to a CAB.  A CAB is equivalent
to a certificate that binds the identity of the platform's TCB with the
IK public key.</t>
        </dd>
        <dt>Presenter:</dt>
        <dd>
          <t>Party that proves possession of a private key to a recipient of a KAT.</t>
        </dd>
        <dt>Recipient:</dt>
        <dd>
          <t>Party that receives the KAT containing the proof-of-possession key
information from the presenter.</t>
        </dd>
        <dt>Key Attestation Service (KAS):</dt>
        <dd>
          <t>The issuer that creates the KAT and bundles a KAT together with a PAT
in a CAB.</t>
        </dd>
      </dl>
      <t>The reader is assumed to be familiar with the vocabulary and concepts
defined in <xref target="RFC9334"/>.</t>
      <t>CDDL <xref target="RFC8610"/> <xref target="RFC9165"/> is used to describe the data formats and
the examples in <xref target="examples"/> use CBOR diagnostic notation defined in
<xref section="8" sectionFormat="of" target="STD94"/> and <xref section="G" sectionFormat="of" target="RFC8610"/>.</t>
      <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?>

</section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>Key attestation is an extension to the attestation functionality
described in <xref target="RFC9334"/>.  We describe this conceptually by splitting
the internals of the attester into two parts, platform attestation and
key attestation. This is shown in <xref target="fig-arch"/>. These are logical roles
and implementations may combine them into a single physical entity.</t>
      <t>Security-sensitive functionality, like attestation, has to be placed
into the trusted computing base. Since the trusted computing base itself
may support different isolation layers, the design allows platform
attestation to be separated from key attestation whereby platform
attestation requires more privilege than the key attestation code.
Cryptographic services, used by key attestation and by platform
attestation, are separated although not shown in the figure.</t>
      <t>The protocol used for communication between the Presenter and the
Recipient is referred as usage protocol. The usage protocol, which is
outside the scope of this specification, needs to support
proof-of-possession of the private key (explained further below). An
example usage protocol is TLS with the extension defined in
<xref target="I-D.fossati-tls-attestation"/>.</t>
      <figure anchor="fig-arch">
        <name>Architecture</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="448" viewBox="0 0 448 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,192" fill="none" stroke="black"/>
              <path d="M 8,272 L 8,336" fill="none" stroke="black"/>
              <path d="M 24,48 L 24,160" fill="none" stroke="black"/>
              <path d="M 40,80 L 40,144" fill="none" stroke="black"/>
              <path d="M 72,168 L 72,264" fill="none" stroke="black"/>
              <path d="M 152,80 L 152,144" fill="none" stroke="black"/>
              <path d="M 152,272 L 152,336" fill="none" stroke="black"/>
              <path d="M 176,80 L 176,144" fill="none" stroke="black"/>
              <path d="M 288,80 L 288,144" fill="none" stroke="black"/>
              <path d="M 296,272 L 296,336" fill="none" stroke="black"/>
              <path d="M 304,48 L 304,160" fill="none" stroke="black"/>
              <path d="M 320,48 L 320,192" fill="none" stroke="black"/>
              <path d="M 440,272 L 440,336" fill="none" stroke="black"/>
              <path d="M 24,32 L 304,32" fill="none" stroke="black"/>
              <path d="M 24,48 L 304,48" fill="none" stroke="black"/>
              <path d="M 40,80 L 152,80" fill="none" stroke="black"/>
              <path d="M 176,80 L 288,80" fill="none" stroke="black"/>
              <path d="M 40,144 L 152,144" fill="none" stroke="black"/>
              <path d="M 176,144 L 288,144" fill="none" stroke="black"/>
              <path d="M 24,160 L 304,160" fill="none" stroke="black"/>
              <path d="M 24,208 L 304,208" fill="none" stroke="black"/>
              <path d="M 8,272 L 152,272" fill="none" stroke="black"/>
              <path d="M 296,272 L 440,272" fill="none" stroke="black"/>
              <path d="M 152,304 L 288,304" fill="none" stroke="black"/>
              <path d="M 8,336 L 152,336" fill="none" stroke="black"/>
              <path d="M 296,336 L 440,336" fill="none" stroke="black"/>
              <path d="M 24,32 C 15.16936,32 8,39.16936 8,48" fill="none" stroke="black"/>
              <path d="M 304,32 C 312.83064,32 320,39.16936 320,48" fill="none" stroke="black"/>
              <path d="M 24,208 C 15.16936,208 8,200.83064 8,192" fill="none" stroke="black"/>
              <path d="M 304,208 C 312.83064,208 320,200.83064 320,192" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="296,304 284,298.4 284,309.6" fill="black" transform="rotate(0,288,304)"/>
              <polygon class="arrowhead" points="80,264 68,258.4 68,269.6" fill="black" transform="rotate(90,72,264)"/>
              <polygon class="arrowhead" points="80,168 68,162.4 68,173.6" fill="black" transform="rotate(270,72,168)"/>
              <g class="text">
                <text x="68" y="68">Attester</text>
                <text x="64" y="100">Key</text>
                <text x="220" y="100">Platform</text>
                <text x="96" y="116">Attestation</text>
                <text x="232" y="116">Attestation</text>
                <text x="80" y="132">Service</text>
                <text x="216" y="132">Service</text>
                <text x="160" y="196">Trusted</text>
                <text x="232" y="196">Computing</text>
                <text x="292" y="196">Base</text>
                <text x="184" y="292">Usage</text>
                <text x="244" y="292">Protocol</text>
                <text x="80" y="308">Presenter</text>
                <text x="368" y="308">Recipient</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
  .------------------------------------.
 | .----------------------------------. |
 | | Attester                         | |
 | | .-------------.  .-------------. | |
 | | | Key         |  | Platform    | | |
 | | | Attestation |  | Attestation | | |
 | | | Service     |  | Service     | | |
 | | '-------------'  '-------------' | |
 | '----------------------------------' |
 |       ^                              |
 |       |       Trusted Computing Base |
  '------+-----------------------------'
         |
         |
         v
 .-----------------.                 .-----------------.
 |                 | Usage Protocol  |                 |
 |    Presenter    +---------------->|    Recipient    |
 |                 |                 |                 |
 '-----------------'                 '-----------------'
]]></artwork>
        </artset>
      </figure>
      <t>The Presenter triggers the generation of the IK. The IK consists of a
public key (pIK) and a private key (sIK).  The Presenter may, for
example, use the following API call to trigger the generation of the key
pair for a given algorithm and to obtain a key handle (key_id).</t>
      <sourcecode type="c"><![CDATA[
key_id = GenerateKeyPair(alg_id)
]]></sourcecode>
      <t>The private key is created and stored such that it is only accessible to
the KAS rather than to the Presenter.</t>
      <t>Next, the KAS needs to trigger the creation of the Platform Attestation
Token (PAT) by the Platform Attestation Service.  The PAT needs to be
linked to the Key Attestation Token (KAT) and this linkage can occur in
a number of ways. One approach is described in this specification in
<xref target="bundle"/>. The Key Attestation Token (KAT) includes the public key of
the IK (pIK) and is then signed with the Key Attestation Key (KAK).</t>
      <t>To ensure freshness of the PAT and the KAT a nonce is used, as suggested
by the RATS architecture <xref target="RFC9334"/>. Here is the symbolic API call
to request a KAT and a PAT, which are concatenated together as the CAB.</t>
      <artwork><![CDATA[
cab = createCAB(key_id, nonce)
]]></artwork>
      <t>Once the CAB has been sent by the Presenter to the Recipient, the
Presenter has to demonstrate possession of the private key.  The
signature operation uses the private key of the IK (sIK).  How this
proof-of-possession of the private key is accomplished depends on the
details of the usage protocol and is outside the scope of this
specification.</t>
      <t>The Recipient of the CAB and the proof-of-possession data (such as a
digital signature) first extracts the PAT and the KAT. The PAT and the
KAT may need to be conveyed to a Verifier. If the PAT is in the form of
attestation results the checks can be performed locally at the
Recipient, whereby the following checks are made:</t>
      <ul spacing="normal">
        <li>
          <t>The signature protecting the PAT <bcp14>MUST</bcp14> pass verification when using
available trust anchor(s).</t>
        </li>
        <li>
          <t>The chaining of PAT and KAT <bcp14>MUST</bcp14> be verified. The detailed
verification procedure depends on the chaining mechanism utilized.</t>
        </li>
        <li>
          <t>The claims in the PAT <bcp14>MUST</bcp14> be matched against stored reference values.</t>
        </li>
        <li>
          <t>The signature protecting the KAT <bcp14>MUST</bcp14> pass verification.</t>
        </li>
        <li>
          <t>The KAT <bcp14>MUST</bcp14> be checked for replays using the nonce included in the
KAT definition (see <xref target="fig-kat-cddl"/>).</t>
        </li>
      </ul>
      <t>Once all these steps are completed, the verifier produces the
attestation result and includes (if needed) the IK public key (pIK).</t>
    </section>
    <section anchor="key-attestation-token-format">
      <name>Key Attestation Token Format</name>
      <section anchor="proof-of-possession">
        <name>Proof-of-Possession</name>
        <t>The KAT utilizes the proof-of-possession functionality defined in
<xref target="RFC8747"/> to encode the public key of the IK (pIK).</t>
        <figure anchor="fig-kat-cddl">
          <name>KAT Definition</name>
          <artwork type="cddl" align="left"><![CDATA[
;# import rfc9052

kat = {
  &(eat_nonce: 10) => bstr .size (8..64)
  &(cnf: 8) => ak-pub
  &(kak-pub: 2500) => COSE_Key
}

ak-pub = cnf-map

cnf-map = {
  &(cose-key: 1) => COSE_Key
}
]]></artwork>
        </figure>
        <t>The claims in the KAT are as follows:</t>
        <ul spacing="normal">
          <li>
            <t><tt>eat_nonce</tt>: challenge from the relying party</t>
          </li>
          <li>
            <t><tt>cnf</tt>: the key confirmation <xref target="RFC8747"/> of the pIK, encoded as
COSE_Key <xref target="STD96"/></t>
          </li>
          <li>
            <t><tt>kak-pub</tt>: the public part of the KAK (used for verification of the
KAT), encoded as COSE_Key</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="platform-attestation-token-format">
      <name>Platform Attestation Token Format</name>
      <t>There are no strict requirements regarding the composition of the
platform attestation token's claims-set, except for the presence of the
<tt>eat_nonce</tt> claim used for binding (<xref target="kat-pat-linkage"/>).</t>
      <t>An example of PAT could be the PSA Token <xref target="I-D.tschofenig-rats-psa-token"/>.</t>
      <section anchor="bundle">
        <name>KAT-PAT Bundle</name>
        <t>The KAT and PAT tokens are combined in a CMW "collection" <xref target="I-D.ietf-rats-msg-wrap"/>
as shown in <xref target="fig-kat-bundle-cddl"/>.</t>
        <figure anchor="fig-kat-bundle-cddl">
          <name>KAT Bundle Definition</name>
          <artwork type="cddl" align="left"><![CDATA[
cab = {
  "kat": [ "application/eat+cwt", bytes .cbor cose_sign1<kat> ]
  "pat": [ "application/eat+cwt", bytes .cbor cose_sign1<pat> ]

  "__cmwc_t": "tag:ietf.org,2024-02-29:rats/kat"
}
]]></artwork>
        </figure>
        <section anchor="kat-pat-linkage">
          <name>KAT-PAT linkage</name>
          <t>KAT and PAT are a form of layered attestation (<xref section="3.2" sectionFormat="of" target="RFC9334"/>).  For the scheme to be secure, it is crucial that their
linkage is captured in their combined wire image.  The way this is
achieved is by hashing the CBOR-encoded COSE_Key corresponding to the
KAK (i.e., the <tt>kak-pub</tt> claim in the KAT) and using it to populate the
<tt>eat_nonce</tt> claim in the PAT.  The signature on the PAT seals the image
of the used KAK and therefore the linkage between the two layers.</t>
        </section>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <figure anchor="fig-example-sign1-kat">
        <name>KAT</name>
        <artwork type="cbor-diag" align="left"><![CDATA[
{
    / nonce / 10: h'B91B03129222973C214E42BF31D6872A3EF2DBDDA401FBD1
F725D48D6BF9C817',
    / kak-pub / 2500: {
        / kty /  1: 2, / EC2 /
        / crv / -1: 1, / P-256 /
        / x /   -2: h'F0FFFA7BA35E76E44CA1F5446D327C8382A5A40E5F2974
5DF948346C7C88A5D3',
        / y /   -3: h'7CB4C4873CBB6F097562F61D5280768CD2CFE35FBA97E9
97280DBAAAE3AF92FE'
    },
    / cnf / 8: {
        / COSE_Key / 1: {
            / kty /  1: 2, / EC2 /
            / crv / -1: 1, / P-256 /
            / x /   -2: h'D7CC072DE2205BDC1537A543D53C60A6ACB62ECCD8
90C7FA27C9E354089BBE13',
            / y /   -3: h'F95E1D4B851A2CC80FFF87D8E23F22AFB725D535E5
15D020731E79A3B4E47120'
        }
    }
}
]]></artwork>
      </figure>
      <figure anchor="fig-example-pat">
        <name>Minimal PAT</name>
        <artwork type="cbor-diag" align="left"><![CDATA[
{
  / eat_nonce / 10: h'FAF2BCA754DFD3F309FCED20791DC1173B1BF61CF5
49145A6EDD4AD4CE2DC4F2'
}
]]></artwork>
      </figure>
      <figure anchor="fig-example-cab">
        <name>CMW Collection combining KAT and PAT</name>
        <artwork type="cbor-diag" align="left"><![CDATA[
{
  "kat": [
    "application/eat+cwt",
    << [
      / protected / h'A10126',
      / unprotected / {},
      / payload (KAT Claims-Set) / << {
        / nonce / 10: h'B91B03129222973C214E42BF31D6872A3EF2DBDD
A401FBD1F725D48D6BF9C817',
        / kak-pub / 2500: {
          / kty /  1: 2, / EC2 /
          / crv / -1: 1, / P-256 /
          / x /   -2: h'F0FFFA7BA35E76E44CA1F5446D327C8382A5A40E
5F29745DF948346C7C88A5D3',
          / y /   -3: h'7CB4C4873CBB6F097562F61D5280768CD2CFE35F
BA97E997280DBAAAE3AF92FE'
        },
        / cnf / 8: {
          / COSE_Key / 1: {
            / kty /  1: 2, / EC2 /
            / crv / -1: 1, / P-256 /
            / x /   -2: h'D7CC072DE2205BDC1537A543D53C60A6ACB62E
CCD890C7FA27C9E354089BBE13',
            / y /   -3: h'F95E1D4B851A2CC80FFF87D8E23F22AFB725D5
35E515D020731E79A3B4E47120'
          }
        }
      } >>,
      / signature / h'56F50D131FA83979AE064E76E70DC75C070B6D991A
EC08ADF9F41CAB7F1B7E2C47F67DACA8BB49E3119B7BAE77AEC6C89162713E0C
C6D0E7327831E67F32841A'
    ] >>
  ],

  "pat": [
    "application/eat+cwt",
    << [
      / protected / h'A10126',
      / unprotected / {},
      / payload (PAT Claims-Set) / << {
      / eat_nonce / 10: h'5CA3750DAF829C30C20797EDDB7949B1FD028C
5408F2DD8650AD732327E3FB64'
      / further platform specific claims /
    } >>,
    / signature / h'F9F41CAB7F1B7E2C47F67DACA8BB49E3119B7BAE77AE
C6C89162713E0CC6D0E7327831E67F32841A56F50D131FA83979AE064E76E70D
C75C070B6D991AEC08AD'
    ] >>
  ],

  "__cmwc_t": "tag:ietf.org,2024-02-29:rats/kat"
}
]]></artwork>
      </figure>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="semantics-of-key-attestation">
        <name>Semantics of Key Attestation</name>
        <t>The semantics of the KAT, i.e. what exact properties are attested, is highly implementation dependent. At the very least, the platform <bcp14>MUST NOT</bcp14> sign the KAT unless the IK's private key is generated by the Trusted Computing Base and is never exported in the clear.</t>
        <t>The Identity Key, when it is ephemeral, is used to secure specific protocol sessions. However in general, protocol security depends on much more than the key's security. A vulnerable protocol stack (e.g. an insecure TLS library) may leak sensitive network traffic or may not protect its integrity. As a result, the Verifier's policy must take system-level security considerations into account when deciding whether or not to accept the CAB for a particular use case. In pratice this means that in order to trust the Attester, the Verifier must have some knowledge about its internal architecture and the security threats it is subject to.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO IANA</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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">
              <organization>Mediatek USA</organization>
            </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="6" month="September" 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-31"/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Independent</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Dionna Glaze" initials="D." surname="Glaze">
              <organization>Google LLC</organization>
            </author>
            <date day="29" month="September" year="2025"/>
            <abstract>
              <t>   The Conceptual Messages introduced by the RATS Architecture (RFC9334)
   are protocol-agnostic data units that are conveyed between RATS roles
   during remote attestation procedures.  Conceptual Messages describe
   the meaning and function of such data units within RATS data flows
   without specifying a wire format, encoding, transport mechanism, or
   processing details.  The initial set of Conceptual Messages is
   defined in Section 8 of RFC9334 and includes Evidence, Attestation
   Results, Endorsements, Reference Values, and Appraisal Policies.

   This document introduces the Conceptual Message Wrapper (CMW) that
   provides a common structure to encapsulate these messages.  It
   defines a dedicated CBOR tag, corresponding JSON Web Token (JWT) and
   CBOR Web Token (CWT) claims, and an X.509 extension.

   This allows CMWs to be used in CBOR-based protocols, web APIs using
   JWTs and CWTs, and PKIX artifacts like X.509 certificates.
   Additionally, the draft defines a media type and a CoAP content
   format to transport CMWs over protocols like HTTP, MIME, and CoAP.

   The goal is to improve the interoperability and flexibility of remote
   attestation protocols.  By introducing a shared message format like
   the CMW, we can consistently support different attestation message
   types, evolve message serialization formats without breaking
   compatibility, and avoid having to redefine how messages are handled
   in each protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-18"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="RFC9165">
          <front>
            <title>Additional Control Operators for the Concise Data Definition Language (CDDL)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), standardized in RFC 8610, provides "control operators" as its main language extension point.</t>
              <t>The present document defines a number of control operators that were not yet ready at the time RFC 8610 was completed:.plus,.cat, and.det for the construction of constants;.abnf/.abnfb for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and.feature for indicating the use of a non-basic feature in an instance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9165"/>
          <seriesInfo name="DOI" value="10.17487/RFC9165"/>
        </reference>
        <reference anchor="STD94">
          <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="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </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="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="23" month="September" 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-24"/>
        </reference>
        <reference anchor="I-D.fossati-tls-attestation">
          <front>
            <title>Using Attestation in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Intuit</organization>
            </author>
            <author fullname="Paul Howard" initials="P." surname="Howard">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Ionuț Mihalcea" initials="I." surname="Mihalcea">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Arto Niemi" initials="A." surname="Niemi">
              <organization>Huawei</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="30" month="April" year="2025"/>
            <abstract>
              <t>   The TLS handshake protocol allows authentication of one or both peers
   using static, long-term credentials.  In some cases, it is also
   desirable to ensure that the peer runtime environment is in a secure
   state.  Such an assurance can be achieved using attestation which is
   a process by which an entity produces evidence about itself that
   another party can use to appraise whether that entity is found in a
   secure state.  This document describes a series of protocol
   extensions to the TLS 1.3 handshake that enables the binding of the
   TLS authentication key to a remote attestation session.  This enables
   an entity capable of producing attestation evidence, such as a
   confidential workload running in a Trusted Execution Environment
   (TEE), or an IoT device that is trying to authenticate itself to a
   network access point, to present a more comprehensive set of security
   metrics to its peer.  These extensions have been designed to allow
   the peers to use any attestation technology, in any remote
   attestation topology, and mutually.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-fossati-tls-attestation-09"/>
        </reference>
      </references>
    </references>
    <?line 440?>

<section anchor="amalgamated-cddl">
      <name>Amalgamated CDDL</name>
      <sourcecode type="cddl"><![CDATA[
cab = {
  "kat": [ "application/eat+cwt", bytes .cbor cose_sign1<kat> ]
  "pat": [ "application/eat+cwt", bytes .cbor cose_sign1<pat> ]

  "__cmwc_t": "tag:ietf.org,2024-02-29:rats/kat"
}

;# import rfc9052

kat = {
  &(eat_nonce: 10) => bstr .size (8..64)
  &(cnf: 8) => ak-pub
  &(kak-pub: 2500) => COSE_Key
}

ak-pub = cnf-map

cnf-map = {
  &(cose-key: 1) => COSE_Key
}

pat = {
  &(eat_nonce: 10) => bstr .size (8..64)
  * (int / text) => any
}

cose_sign1<C> = [
  Headers
  payload: bytes .cbor C
  signature: bytes
]
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Yaron Sheffer.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="I." surname="Mihalcea" fullname="Ionuț Mihalcea">
        <organization>arm</organization>
        <address>
      </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
ziHa9TLnUkSoIBd7B2kGcmdkqzpZ1FDKkEaaHAe2oNOfGMrJpwZJClRCcrZQ
Olfh4B/g59FvnSMBtqBH+K/O0MqSMGADSdBUSm4cFBwp6SVKMH9UIA9lLIWl
wYvBAGbKlMRmIqmmjC2TCg4h8jCUapaQboXbkLJm/R6CAdEP7uERUQyWIZF1
Miy5g4n8SbKs4r/SslipKFDwfZkmGzvYcn7G9+6MAZP33eVxLlRqp6GOoiYU
kJUYIXswBqKsheR2Yf0TumUan0lHJpsnJWJASCaukLa7rHopNmEUijSXOn+A
9c93kUgNVFsfUcxUGjoanuCrPx6/padU7z0/u09U+eGbi/RYEKYXoHY17qMB
ygiL6peFNmKbMymzjPsGKiDB/dH7D3wRilWcAE8DjozHyLDgjT093dlg1yc1
V6nSxHTaytOTt91KQM8n/jvzTrNrJURmQp0SxSvvfribVa7Mb/79e/35w+Qf
frj+MBnT57vvvLdv8w/Mjrj77v0Pb8fFp2Km//7du8n3YzMZT/nBI1Z55/2h
YqqCyvvb2fX77723lZMyS6eXRmlUHaSwqUznT8xJVetm5N/+27822tjs36A4
bjYaA60Q+tJv9Nr4gmQzNqvpjM18hexRiEA8MAUyHdQXgdiGGSD9ilBRrZPH
mMPGCNd+80eSzI9D/s082Dbab+wD2vDBQyezg4daZqdPTiYbIZ55dGaZXJoH
z48kfciv94eD707upYff/H0Eo+LVRv/v3zAqkb1SvmH8uByIQlOEf8pQlJjy
RFt5echBxXiotiOX4vz3suwtIH4QrBAVFcraTKcMrmBMY1vRFuuSy8fEyWOi
4yKUmYfEMmfkfkeRlcItZcFO95rJZbjKWYTTwCfJKpF0UR6CIAtf1XVoSG5L
VqtJKV3xBCYaEncbw5XgtljYrvdKUzCBASbmep1VReKkds+h9K5sxC03MddC
WQfBHgOk+mbra3maZulGSI3f5bH8/AjKTmS01MmN2m11tF2E1AEghwxVEhnx
RWIvU2V6BtAaMhfyoORR5dI+KoqJSSWhEaFLM4oTx4nNIzkb9HyWQl4lbFAf
6kgXRnKlI60pVo6pBckCnntY2tvUCXxrfMZax7N0qDnPwpUpd/M9iAgJ0m61
JlAuLIZYgc3sNGzYdNYUO3pJymMg8c0udnnWXGaPUpqJebzntrVRBGsyy1RC
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

-->

</rfc>
