<?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.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bft-rats-kat-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="KAT">An EAT-based Key Attestation Token</title>
    <seriesInfo name="Internet-Draft" value="draft-bft-rats-kat-00"/>
    <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>arm</organization>
      <address>
        <email>thomas.fossati@arm.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>arm</organization>
      <address>
        <email>hannes.tschofenig@arm.com</email>
      </address>
    </author>
    <date year="2022" month="October" day="21"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>evidence</keyword>
    <keyword>key attestation</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <t>This document defines an evidence format for key attestation based on
the Entity Attestation Token (EAT) format.</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>
    <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. 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 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 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.</t>
        </dd>
        <dt>Usage Protocol:</dt>
        <dd>
          <t>A (security) protocol that allows demonstrating possession of the
private key.</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="I-D.ietf-rats-architecture"/>.</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 proof-of-possession (PoP) 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.</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="I-D.ietf-rats-architecture"/>.</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>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>Key attestation is an extension to the attestation functionality
described in <xref target="I-D.ietf-rats-architecture"/>.  We describe this conceptually by splitting
the internals of the attester into a 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="456" viewBox="0 0 456 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 16,32 L 16,160" fill="none" stroke="black"/>
              <path d="M 16,288 L 16,352" fill="none" stroke="black"/>
              <path d="M 32,80 L 32,144" fill="none" stroke="black"/>
              <path d="M 64,168 L 64,280" fill="none" stroke="black"/>
              <path d="M 144,80 L 144,144" fill="none" stroke="black"/>
              <path d="M 160,288 L 160,352" fill="none" stroke="black"/>
              <path d="M 168,80 L 168,144" fill="none" stroke="black"/>
              <path d="M 280,80 L 280,144" fill="none" stroke="black"/>
              <path d="M 296,32 L 296,160" fill="none" stroke="black"/>
              <path d="M 304,288 L 304,352" fill="none" stroke="black"/>
              <path d="M 448,288 L 448,352" fill="none" stroke="black"/>
              <path d="M 16,32 L 296,32" fill="none" stroke="black"/>
              <path d="M 32,80 L 144,80" fill="none" stroke="black"/>
              <path d="M 168,80 L 280,80" fill="none" stroke="black"/>
              <path d="M 32,144 L 144,144" fill="none" stroke="black"/>
              <path d="M 168,144 L 280,144" fill="none" stroke="black"/>
              <path d="M 16,160 L 296,160" fill="none" stroke="black"/>
              <path d="M 16,288 L 160,288" fill="none" stroke="black"/>
              <path d="M 304,288 L 448,288" fill="none" stroke="black"/>
              <path d="M 160,320 L 296,320" fill="none" stroke="black"/>
              <path d="M 16,352 L 160,352" fill="none" stroke="black"/>
              <path d="M 304,352 L 448,352" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="304,320 292,314.4 292,325.6" fill="black" transform="rotate(0,296,320)"/>
              <polygon class="arrowhead" points="72,280 60,274.4 60,285.6" fill="black" transform="rotate(90,64,280)"/>
              <polygon class="arrowhead" points="72,168 60,162.4 60,173.6" fill="black" transform="rotate(270,64,168)"/>
              <g class="text">
                <text x="312" y="36">.</text>
                <text x="60" y="52">Attester</text>
                <text x="312" y="52">.</text>
                <text x="312" y="68">.</text>
                <text x="312" y="84">.</text>
                <text x="56" y="100">Key</text>
                <text x="212" y="100">Platform</text>
                <text x="312" y="100">.</text>
                <text x="88" y="116">Attestation</text>
                <text x="224" y="116">Attestation</text>
                <text x="312" y="116">.</text>
                <text x="72" y="132">Service</text>
                <text x="208" y="132">Service</text>
                <text x="312" y="132">.</text>
                <text x="312" y="148">.</text>
                <text x="312" y="164">.</text>
                <text x="312" y="180">.</text>
                <text x="312" y="196">.</text>
                <text x="152" y="212">Trusted</text>
                <text x="224" y="212">Computing</text>
                <text x="284" y="212">Base</text>
                <text x="312" y="212">.</text>
                <text x="32" y="228">.......</text>
                <text x="192" y="228">...............................</text>
                <text x="192" y="308">Usage</text>
                <text x="252" y="308">Protocol</text>
                <text x="88" y="324">Presenter</text>
                <text x="376" y="324">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="I-D.ietf-rats-architecture"/>. Here is the symbolic API call
to request a KAT and a PAT, which are concatinated 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>The signature protecting the PAT <bcp14>MUST</bcp14> pass verification when using
available trust anchor(s).</li>
        <li>The chaining of PAT and KAT <bcp14>MUST</bcp14> be verified. The detailed
verification procedure depends on the chaining mechanism utilized.</li>
        <li>The claims in the PAT <bcp14>MUST</bcp14> be matched against stored reference values.</li>
        <li>The signature protecting the KAT <bcp14>MUST</bcp14> pass verification.</li>
        <li>The KAT <bcp14>MUST</bcp14> be checked for replays using the nonce included in the
KAT definition (see <xref target="fig-kat-cddl"/>).</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[
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>
            <tt>eat_nonce</tt>: challenge from the relying party</li>
          <li>
            <tt>cnf</tt>: the key confirmation <xref target="RFC8747"/> of the pIK, encoded as
COSE_Key <xref target="STD96"/></li>
          <li>
            <tt>kak-pub</tt>: the public part of the KAK (used for verification of the
KAT), encoded as COSE_Key</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 an EAT "collection" <xref target="I-D.frost-rats-eat-collection"/>
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[
kat-bundle = {
    &(eat_profile: 265) =>
        "https://datatracker.ietf.org/doc/draft-bft-rats-kat",
    "kat" => COSE-Sign1-kat
    "pat" => EAT-CBOR-Token
}
]]></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="I-D.ietf-rats-architecture"/>).  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>COSE Sign1 signed KAT</name>
        <artwork type="cbor-diag" align="left"><![CDATA[
[
    / protected / h'A10126',
    / unprotected / {},
    / payload (KAT Claims-Set) / <<
{
    / 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'
        }
    }
}
    >>,
    / signature / h'56F50D131FA83979AE064E76E70DC75C070B6D991AEC08AD
F9F41CAB7F1B7E2C47F67DACA8BB49E3119B7BAE77AEC6C89162713E0CC6D0E73278
31E67F32841A'
]
]]></artwork>
      </figure>
      <figure anchor="fig-example-pat">
        <name>COSE Sign1 signed minimal PAT</name>
        <artwork type="cbor-diag" align="left"><![CDATA[
[
    / protected / h'A10126',
    / unprotected / {},
    / payload (PAT Claims-Set) / <<
{
    / eat_nonce / 10: h'5ca3750daf829c30c20797eddb7949b1fd028c5408f2
dd8650ad732327e3fb64'
    / further platform specific claims /
}
    >>,
    / signature / h'F9F41CAB7F1B7E2C47F67DACA8BB49E3119B7BAE77AEC6C8
9162713E0CC6D0E7327831E67F32841A56F50D131FA83979AE064E76E70DC75C070B
6D991AEC08AD'
]
]]></artwork>
      </figure>
      <figure anchor="fig-example-cab">
        <name>EAT Collection combining KAT and PAT</name>
        <artwork type="cbor-diag" align="left"><![CDATA[
{
    / eat_profile / 265:
        'https://datatracker.ietf.org/doc/draft-bft-rats-kat-00',
    "kat": <<
[
    / protected / h'A10126',
    / unprotected / {},
    / payload (KAT Claims-Set) / <<
{
    / 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'
        }
    }
}
    >>,
    / signature / h'56F50D131FA83979AE064E76E70DC75C070B6D991AEC08AD
F9F41CAB7F1B7E2C47F67DACA8BB49E3119B7BAE77AEC6C89162713E0CC6D0E73278
31E67F32841A'
]
>>,
    "pat": <<
[
    / protected / h'A10126',
    / unprotected / {},
    / payload (PAT Claims-Set) / <<
{
    / eat_nonce / 10: h'5ca3750daf829c30c20797eddb7949b1fd028c5408f2
dd8650ad732327e3fb64'
    / further platform specific claims /
}
    >>,
    / signature / h'F9F41CAB7F1B7E2C47F67DACA8BB49E3119B7BAE77AEC6C8
9162713E0CC6D0E7327831E67F32841A56F50D131FA83979AE064E76E70DC75C070B
6D991AEC08AD'
]
>>
}
]]></artwork>
      </figure>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO IANA</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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>Qualcomm Technologies Inc.</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="9" month="October" year="2022"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine how much
   it wishes to trust the entity.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-16"/>
        </reference>
        <reference anchor="I-D.frost-rats-eat-collection">
          <front>
            <title>Entity Attestation Token (EAT) Collection Type</title>
            <author fullname="Simon Frost" initials="S." surname="Frost">
              <organization>Arm</organization>
            </author>
            <date day="27" month="June" year="2022"/>
            <abstract>
              <t>   The default top-level definitions for an EAT [I-D.ietf-rats-eat]
   assume a hierarchy involving a leading signer within the Attester.
   Some token use cases do not match that model.  This specification
   defines an extension to EAT allowing the top-level of the token to
   consist of a collection of otherwise defined tokens.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-frost-rats-eat-collection-01"/>
        </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">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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: , , and  for the construction of constants; / for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and 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">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <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">
          <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-rats-architecture">
          <front>
            <title>Remote Attestation Procedures Architecture</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel Corporation</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="28" month="September" year="2022"/>
            <abstract>
              <t>   In network protocol exchanges it is often useful for one end of a
   communication to know whether the other end is in an intended
   operating state.  This document provides an architectural overview of
   the entities involved that make such tests possible through the
   process of generating, conveying, and evaluating evidentiary claims.
   An attempt is made to provide for a model that is neutral toward
   processor architectures, the content of claims, and protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-architecture-22"/>
        </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">
              <organization>Arm Limited</organization>
            </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>Arm Limited</organization>
            </author>
            <date day="6" month="September" year="2022"/>
            <abstract>
              <t>   The 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
   are able to produce attestation tokens as described in this memo,
   which are the basis for a number of 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 profiled 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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-10"/>
        </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">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Arm Limited</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>
            <date day="26" month="August" year="2022"/>
            <abstract>
              <t>   Various attestation technologies have been developed and formats have
   been standardized.  Examples include the Entity Attestation Token
   (EAT) and Trusted Platform Modules (TPMs).  Once attestation
   information has been produced on a device it needs to be communicated
   to a relying party.  This information exchange may happen at
   different layers in the protocol stack.

   This specification provides a generic way of passing attestation
   information in the TLS handshake.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-fossati-tls-attestation-01"/>
        </reference>
      </references>
    </references>
    <section anchor="amalgamated-cddl">
      <name>Amalgamated CDDL</name>
      <sourcecode type="cddl"><![CDATA[
start = kat-bundle

kat-bundle = {
    &(eat_profile: 265) =>
        "https://datatracker.ietf.org/doc/draft-bft-rats-kat",
    "kat" => COSE-Sign1-kat
    "pat" => EAT-CBOR-Token
}

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
}

COSE-Sign1-kat = [
    protected: bytes .cbor kat-protected-headers
    unprotected: {}
    payload: bytes .cbor kat
    signature: bytes
]

kat-protected-headers = {
    &(alg-id: 1) => int
}

EAT-CBOR-Token = any


label = int / text
values = any

COSE_Key = {
    &(kty: 1) => text / int
    ? &(kid: 2) => bytes
    ? &(alg: 3) => text / int
    ? &(key_ops: 4) => [+ (text / int) ]
    ? &(base_iv: 5) => bytes
    * label => values
}

]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
vLlwiw2hDn4SzI1Ksx8xzKI0ecGKpd8rpIU6Ndu4N0ABCDkavnkrF4FaRaiU
EC2j2PKwwE08Pt7amNQjMVeo1MFyIuXx0dtuNdzBe/knM8boWg6RmlBNnMqz
H366nZ1dmt/yxzf8/HbyHz9dvZ2M6fn2e+/16/xB2Bm337/56fW4eCpWjt78
8MPkx7FZjK/y4JM4+8H7M0YIxbM3N7OrNz96r8+eZPOc5xuhUUaaQKcyTmKE
4yrLZji6+Z+/11sg9l9QtTXq9T4LhF569W4LLw9rsjnajdMm8wre74UCe6AK
pDrIaX21DTK42UvyVOk6fogkdIx8zTc/E2d+Gcjv5v623nplPxDBBx8dzw4+
Ms+efnmy2DDxxKcT2+TcPPh+xOlDfL0/H7w7vpc+UvHllTIBY7rleBCY8u59
hhTYJMOs2OUpB3XJoaSOrEjK/9JlAwHwg5iB4JSiYMo4mNM2rAUAnLp8x+xL
Vh6xv8seYg5QkGBR7pRwI5s7CnEU9yj/dAJnNJco2R2SsBQYIqkiEiLKERDt
YKCCyyiyVVJVBpVKCtO+CUuE38bhZdP07XqfMgSTv0GvXCurkhJDqclwyL9L
G/rKPaq1Sq1VgEYfSTZvQux4kgJxkV2Vt3lQPT2D0gQdLjnLSHdbDnuLgCpN
ssIgjUPDvlDtdZKa2hRyQwrhUmzH7aMijJBMNSSiaFMODscZxgNZGCR9EoIt
oMHYODEFRhDqFZGiTJlwDM2PFzDXw1LS5jDAm50y9jpexfHlNAqXLPmCBhUi
U9mt1uSJC43hejxY7dhX2FTT1CG8JSUU4PhmF7mEZ66zB63NwjzI5zV0HqFJ
LRMNOSSmeDtVRx1+KzI1gXIhRbpvMm0/3toEmzTd1ZqGQupssEpZ2YtTkd6l
fKUU41y/B8s4DC13CYdjKtkfkG57kbCR7Ag/ooiarHnwLXzJQUj7TFOM49ev
v/6qVHq/EvLbyhd/vpVVIT/YHARYfurng5n3xR8779ujTZ58sPM+cDVbLMaf
vIriD/m8cpbE8w4/5PNcBpXDO/zwm/D7Wv6Zn//+PGfyeV/g4pN5M+uYRrlj
GpJjqoqq+flQ/fxPDu/Jw/0pEr99gtGJOad04YM87ECcovSDXVgY9in4r3hO
YeqlhUc7fsWXf5xGGBL1TJ+5kCf5yOflWTkPoD7q7MBTZUmwWiEWsAm7Yrrw
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

-->

</rfc>
