<?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.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bft-rats-kat-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title abbrev="KAT">An EAT-based Key Attestation Token</title>
    <seriesInfo name="Internet-Draft" value="draft-bft-rats-kat-02"/>
    <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>
    <date year="2024" month="February" day="10"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>evidence</keyword>
    <keyword>key attestation</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 47?>

<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>
    <?line 52?>

<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 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="456" viewBox="0 0 456 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <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="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[
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[
kat-bundle = {
    "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="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>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[
{
    "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 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">
         </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="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>Intel</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <date day="29" month="January" year="2024"/>
            <abstract>
              <t>   This document defines two encapsulation formats for RATS conceptual
   messages (i.e., Evidence, Attestation Results, Endorsements and
   Reference Values.)

   The first encapsulation format uses a CBOR or JSON array with two
   mandatory members, one for the type, another for the value, and a
   third optional member complementing the type field that says which
   kind of conceptual message(s) are carried in the value.  The other
   format wraps the value in a CBOR byte string and prepends a CBOR tag
   to convey the type information.

   This document also defines a corresponding CBOR tag, as well as JSON
   Web Tokens (JWT) and CBOR Web Tokens (CWT) claims.  These allow
   embedding the wrapped conceptual messages into CBOR-based protocols
   and web APIs, respectively.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-03"/>
        </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:,, 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"/>
            <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="18" month="December" year="2023"/>
            <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
   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 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.

   This document is produced through the Independent RFC Stream and was
   not subject to the IETF's approval process.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-20"/>
        </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>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   Attestation is the process by which an entity produces evidence about
   itself that another party can use to evaluate the trustworthiness of
   that entity.

   In use cases that require the use of remote attestation, such as
   confidential computing or device onboarding, an attester has to
   convey evidence or attestation results to a relying party.  This
   information exchange may happen at different layers in the protocol
   stack.

   This specification provides a generic way of passing evidence and
   attestation results in the TLS handshake.  Functionality-wise this is
   accomplished with the help of key attestation.

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

<section anchor="amalgamated-cddl">
      <name>Amalgamated CDDL</name>
      <sourcecode type="cddl"><![CDATA[
start = kat-bundle

kat-bundle = {
    "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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
FERZDcn1wtonZMu0fyYZmRyWhIgJIam4QrLqcsmFWIdRKNKc6/wO2j/fRiI1
rtraiGImv9bR8Il/HY3Hb+grFTuPj+6Jyh68uUiPDaF6fhrOjfloB2WYRVl7
oJVYfhDIUqUy27g3QAEIPhpeveNBKJZxAn/qo7S1PCxwYw8PNzbY9UjMFSqz
sJxIeXjwNhsJ1/OB/8WMaXQth0hNqOhW/OTtTzezk3Pzm/94pZ/fTf7jp4t3
kzE937z23rzJH5idcfP66qc34+KpWDm6evt28uPYLMZXvveJnbz1/nZicuGT
q+vZxdWP3puTJ8WFLjuM0CgnTqFTmc6fmOOqls1wdP3f/6y3QOy/oTJs1Ot9
LRB66dW7Lbzcr8i+aTedsZlX8B7pN9gDVSDVQVbti02YwaWfk1dUq+Q+5tAx
8mvf/Eyc+WXAv5v7m3rrlf1ABO99dDzb+6h59vTLk8WGiUc+Hdkm5+be9wNO
7+Pr/W3v3fG99PG77yMoFa/Ue9+/YlQYeqV8w9hxORCFpvT8kCEVN0m51vLy
lL06aV9sBybF+V9l2VoAfC9YISoqFHOZThlcmZTGto4r9iWTjwmT+0THRQgz
D4llzMj8DiIrhVvKgp3sNZKLcJmjCKOBTZJWIumiPARBFraqq6+QzJa0VoNS
nLID30RDwm5tsBLcFgub1U5pCCYwQMVc26yiiJ3U69jn3rmNuOV+2EooayCg
0Ueqb0hfyadpli7/q/wmj+XHZ1B2IqOFTm7UdqOjbRBS3UsGGaokMuyLxE6m
ylTKkBoyF7Kg5F7l3D4oBQlJJSERQZvqOHGY2NyTsUHORyHkVcI6SU2ZE0Zy
qSOtKVYOoflJAMvdL2ht6gS8tX/GXoerdKg5jsK5lnxBg4iQIG2XK3LKhcYQ
KtCZrXYbNp01xY7ekvIYcHy9jV2eNZfZvZRmYR7vuS3oi2BNaplKyCE1JeSx
am7/W5EgMpQkCjmIyeb9ZGOTeNJ0V/EaCqnnolXKyp4dC/ouiSllG6fyA1im
I9Jim+rITI2De6T0XsxsUDvAjyiihm4ehwtPshfdPtOu06Hst99+E0LdLRn/
tvLFn295lfGPNh0Blp/6+WjmffHHzvv2YJMnH+y8j7qmLhbjT16p6Q/5vHLC
pOftf8jnuWQqh7f/4Xfh97X8Mz//9XnO5PO+wMUn82bWMY1yxzQkx1RlVfPz
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
dC4vOgAA

-->

</rfc>
