<?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 2.6.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-frost-rats-eat-collection-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="EAT Collection">Entity Attestation Token (EAT) Collection Type</title>
    <seriesInfo name="Internet-Draft" value="draft-frost-rats-eat-collection-02"/>
    <author fullname="Simon Frost">
      <organization>Arm</organization>
      <address>
        <email>Simon.Frost@arm.com</email>
      </address>
    </author>
    <date year="2022" month="December" day="08"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>EAT</keyword>
    <keyword>collection container</keyword>
    <abstract>
      <t>The default top-level definitions for an EAT <xref target="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>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-frost-rats-eat-collection/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Remote ATtestation ProcedureS Working Group mailing list (<eref target="mailto:rats@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/rats/"/>.
      </t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>An Attestation Token conforming to EAT <xref target="I-D.ietf-rats-eat"/> has a default top level definition for a token to be constructed principally as a claim set within a CBOR Web Token (CWT) <xref target="RFC8392"/> with the associated COSE envelope <xref target="STD96"/> providing at least integrity and authentication. An equivalent JSON encoding for a JWT <xref target="RFC7519"/> in a JWS envelope <xref target="RFC7515"/> is supported as an alternative at the top-level definition. The top level token can be augmented with related claims in a Detached EAT Bundle.</t>
      <t>For the use case of transmitting a claim set through a secure channel, the top-level definition can be extended to use an Unprotected CWT Claim Set (UCCS) <xref target="I-D.ietf-rats-uccs"/>.</t>
      <t>This document outlines an additional top-level extension for which neither of the above top level definitions match exactly: the attestation token consists of a collection of objects, each with their own integrity and some internally defined relationship through which the integrity of the whole collection can be determined. i.e. there is no top-level signer for the set. The objects may all share the same logical hierarchy in a device or have a hierarchy which is internally defined within the object set.</t>
    </section>
    <section anchor="terminology-and-requirements-language">
      <name>Terminology and Requirements Language</name>
      <t>Readers are also expected to be familiar with the terminology from <xref target="I-D.ietf-rats-eat"/> and <xref target="I-D.ietf-rats-architecture"/>.</t>
      <t>In this document, the structure of data is specified in CDDL <xref target="RFC8610"/> <xref target="RFC9165"/>.</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="design-considerations-use-cases">
      <name>Design Considerations / Use Cases</name>
      <t>Take a device with an attestation system consisting of a platform claim set and a workload claim set, each controlled by different components and with an underlying hardware Root of Trust. The two claim sets are delivered together to make up the overall attestation token. Depending upon the implementation and deployment use case, the signing system can either be entirely centric to the platform RoT or can have separate signers for the two claim sets. In either case, a cryptographic binding is established between the two parts of the token.</t>
      <t>A specific manifestation of such a device is one incorporating the Arm Confidential Compute Architecture (CCA) attestation token <xref target="Arm-CCA"/>. In trying to prepare the attestation token using EAT, there were no issues constructing the claim sets or incorporating them into individual CWTs where appropriate. However, in trying to design an 'envelope structure' to convey the two parts as a single report it was found that maintaining EAT compatibility would require very different shaped compound tokens for different models, for example one based on a submod arrangement and another based on a Detached EAT Bundle, though with different 'leading' objects. This would create extra code and explanation in areas where keeping things simple is desirable. There was an alternative approach considered, which stays close to existing thinking on EAT, which would be to create the wrapper from the UCCS EAT extension containing only submods for the respective components. This however stretches the current use case for UCCS beyond its existing description. The RATS WG approach of separating UCCS from the core EAT specification to be an extension also encourages proposing this further extension.</t>
      <t>To support the CCA use case, it is also relevant to consider current attestation technologies which are based on certificate chains (e.g. SPDM, DICE, several key attestation systems). Here also are multiple objects with their own integrity and an internally defined relationship. If attempting to move such a technology to the EAT world, the same challenges apply.</t>
      <t>An additional use case beyond the production of tokens from an Attester occurs when using EAT to convey Attestation Results from a Verifier.
Attestation results may be separated into different sections depending upon what aspects of Appraisal Policy are applied by the Verifier.
For example, the set of validated evidence claims may form one section, while claims reflecting semantic conclusions drawn by an Appraisal Policy could form another section.
Given the role of different authorities in concluding result sections, each could have a different signer rather than all results being under a single signature from the Verifier. In this case, a collection can be used to collate all result sections into a single response message. Using a collection simplifies operations if individual sections from the collated result sections need to be later dispersed to different Relying Parties.</t>
      <t>A further Attestation Result use case can be seen in the "Below Zero Trust" system described in <xref target="I-D.ietf-rats-ar4si"/> where the AR-augmented Evidence credential has compound form.</t>
    </section>
    <section anchor="token-collection">
      <name>Token Collection</name>
      <t>The proposed extension for the top-level definition is to add a 'Token Collection' type. The contents of the type are a map of CWTs (JWTs). The Detached EAT Bundle top-level entry for EAT is included for completeness, and the UCCS extension can also be embraced, though the use cases for these have not been explored. The identification of collection members and the intra collection integrity mechanism is considered usage specific. A verifier will be expected to extract each of the members of the collection and check their validity both individually and as a set. In addition to entries which have their own integrity, it is also
supported to include an unsigned Claims Set, provided that the integrity for that Claims Set is provided
within another entry that uses one of the signed forms.</t>
      <t>A map was chosen rather than an unbounded array to give the opportunity to add identifying map tags to each entry. The interpretation of the tags will be usage specific, but may correspond to registered identities of specific token types. To assist a verifier correlate the expected contents a profile entry can be added as the 'profile-label' identity in the map.</t>
      <t>See <xref target="cddl"/> for a CDDL description of the proposed extension.</t>
      <t>While most of the use cases for collections are for scenarios where there will be at least two entries in a collection, the CDDL allows for &gt;= 1 entries in a collection to allow for the scenario where only one entry is currently available even though the normal set is larger.</t>
      <section anchor="binder-definition">
        <name>Binder Definition</name>
        <t>This specification includes a proposal for a Collection Binder claim (see <xref target="fig-binder"/>). This claim would be
included within any collection entry as a definiton of the integrity mechanism that binds that collection
entry to another collection entry. A verifier can use the information within this claim to drive inter
collection entry integrity checking. This claim would not be mandatory within a collection entry as a
verifier may implement the integrity checking based upon information in the profile alone.</t>
        <figure anchor="fig-binder">
          <name>EAT collection binder</name>
          <sourcecode type="cddl"><![CDATA[
; The Collection Binder is a formal declaration of the inter entry
; binding mechanism. It would be included within the body of one or
; more of the collection entries. 
Collection-Binder = [
    binder-function,
    [*binder-source-label],
    destination-collection-entry,
    destination-claim
]

; binder-function is the name/id of a hash algorithm
binder-function = JC<text,int>

; By definition, the binder-function is applied to a concatenation
; of the ordered list of source claims.
; If the array is empty, the function is applied to the whole
; contents of the token.
binder-source-label = Claim-Label

destination-collection-entry = collection-entry-label
destination-claim = Claim-Label

Claim-Label = JC<"text", int>
collection-entry-label = JC<text, int>
JC<J,C> = J .feature "json" / C .feature "cbor"
]]></sourcecode>
        </figure>
        <t>The attributes within the binder claim are:</t>
        <ul spacing="normal">
          <li>
            <tt>binder-function</tt>: the identity of the binding cryptographic function, usually a hash function, applied
to the values identified by the binder-source-label array.</li>
          <li>
            <tt>binder-source-label</tt>: an array defining the set of claims providing the binding information within the
collection entry. It is assumed that the values corresponding to this (ordered) list will be concatenated
and have the binder-function applied to produce a binder value. If the array is empty, the entire source
collection entry is used as input to the binder-function. This latter condition would normally be applied
to a collection entry consisting of a Claim Set.</li>
          <li>
            <tt>destination-collection-entry</tt>: this defines the collection entry that will hold (receive) the binding
for this (source) collection entry.</li>
          <li>
            <tt>destination-claim</tt>: this defines the claim label within destination-collection-entry which will store
the binder value.</li>
        </ul>
        <t>A verifier can check the binding between two collection entries by computing the binder value for one
entry and comparing the result stored within the value of the destination claim (in the destination
collection entry).</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>A verifier for an attestation token must apply a verification process for the full set of entries contained within the Token Collection.
This process will be custom to the relevant profile for the Token Collection and take into account any individual verification per entry and/or verification for the objects considered collectively, including the intra token integrity scheme.
As there is no overall signature for the Collection, protection against malicious modification must be contained within the entries.
It is expected that there exists a cryptographic binding between entries, this can for example be one to many or one to one in a (chain) series.
The implementation of creating these bindings may involve passing data across
ABIs. This provides an attack vector on the integrity of the collection which
must be considered within any threat model.
With respect to binder claims, these require integrity protection.
This protection can either be provided by the signature on the token entry
which contains the binder or, in the case where the entry does not have a
signature, by including the binder claim with any other claims when preparing
input into the cryptographic binding function.
Depending upon the use case and associated threat model, the freshness of entries may need extra consideration.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>In the registry <xref target="IANA.cbor-tags"/>, IANA is requested to allocate the tag in <xref target="tbl-eat-collection"/> from the FCFS space, with the present document as the specification reference.</t>
      <table align="left" anchor="tbl-eat-collection">
        <name>EAT Collection</name>
        <thead>
          <tr>
            <th align="left">Tag</th>
            <th align="left">Data Item</th>
            <th align="left">Semantics</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD399</td>
            <td align="left">map</td>
            <td align="left">EAT Collection RFCthis</td>
          </tr>
        </tbody>
      </table>
    </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="4" month="December" 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-18"/>
        </reference>
        <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
          <format target="http://www.iana.org/assignments/cbor-tags" type="TXT"/>
        </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="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="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-uccs">
          <front>
            <title>A CBOR Tag for Unprotected CWT Claims Sets</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Nancy Cam-Winget" initials="N." surname="Cam-Winget">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   CBOR Web Token (CWT, RFC 8392) Claims Sets sometimes do not need the
   protection afforded by wrapping them into COSE, as is required for a
   true CWT.  This specification defines a CBOR tag for such unprotected
   CWT Claims Sets (UCCS) and discusses conditions for its proper use.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-uccs-03"/>
        </reference>
        <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.ietf-rats-ar4si">
          <front>
            <title>Attestation Results for Secure Interactions</title>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Hardjono" initials="T." surname="Hardjono">
              <organization>MIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="6" month="September" year="2022"/>
            <abstract>
              <t>   This document defines reusable Attestation Result information
   elements.  When these elements are offered to Relying Parties as
   Evidence, different aspects of Attester trustworthiness can be
   evaluated.  Additionally, where the Relying Party is interfacing with
   a heterogeneous mix of Attesting Environment and Verifier types,
   consistent policies can be applied to subsequent information exchange
   between each Attester and the Relying Party.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-03"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones">
              <organization/>
            </author>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem">
              <organization/>
            </author>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties.  The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection.  A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value.  CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="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="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones">
              <organization/>
            </author>
            <author fullname="J. Bradley" initials="J." surname="Bradley">
              <organization/>
            </author>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura">
              <organization/>
            </author>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties.  The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones">
              <organization/>
            </author>
            <author fullname="J. Bradley" initials="J." surname="Bradley">
              <organization/>
            </author>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura">
              <organization/>
            </author>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures.  Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification.  Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="Arm-CCA" target="https://www.arm.com/architecture/security-features/arm-confidential-compute-architecture">
          <front>
            <title>Confidential Compute Architecture</title>
            <author>
              <organization>Arm Ltd</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="cddl">
      <name>CDDL</name>
      <sourcecode type="cddl"><![CDATA[
$$EAT-CBOR-Tagged-Token /= Tagged-Collection
$$EAT-CBOR-Untagged-Token /= TL-Collection

Tagged-Collection =  #6.TBD399(TL-Collection)

TL-Collection = {
    ? eat-collection-identifier,
    + all-collection-types
}

eat-collection-identifier = (
    profile-label => general-uri / general-oid
)

all-collection-types = (
    cwt-collection-entries //
    jwt-collection-entries //
    claim-set-collection-entries //
    detatched-eat-bundle-collection-entries
)

cwt-collection-entries = (
    collection-entry-label => CWT-Messages
)

jwt-collection-entries = (
    collection-entry-label => JWT-Messages
)

claim-set-collection-entries = (
    collection-entry-label => JC<json-wrapped-claims-set,
                                 cbor-wrapped-claims-set>
)

detatched-eat-bundle-collection-entries = (
    collection-entry-label => BUNDLE-Messages
)

collection-entry-label = JC<text, int>

; The Collection Binder is a formal declaration of the inter entry
; binding mechanism. It would be included within the body of one or
; more of the collection entries.
Tagged-Collection-Binder =  #6.TBD99(Collection-Binder)
Collection-Binder = [
    binder-function,
    [*binder-source-label],
    destination-collection-entry,
    destination-claim
]
; binder function is normally the name/id of a hash algorithm
binder-function = JC<text,int>

; by definition, the binder-function is applied to a concatenation
; of the ordered list of source claims
; If the array is empty, the function is applied to the whole
; contents of the token
binder-source-label = Claim-Label

destination-collection-entry = collection-entry-label

destination-claim = Claim-Label


]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thomas Fossati proposed the inclusion of the Binder definiton and collaborated
on the CDDL. Yogesh Deshpande provided insightful comments and review for this
proposal.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="T." surname="Fossati" fullname="Thomas Fossati">
        <organization>Arm Limited</organization>
        <address>
          <email>thomas.fossati@arm.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAET4kWMAA9Vb/3IbR3L+f59iAl3F4h0BWrLsOzGWchBI2lRRP0JSUTku
V91gdwCstdjZ7OySxkl03WNc/suz5FHuSfJ198zsLgDJrkpdUrkq64DB7ExP
//j6657leDxOmrwpzLEanZb4tFHTpjGu0U1uS3Vt35lS3T+dXh+omS0Kk8rw
pjKjRM/ntbmhB6fXvV9HSaobs7T15li5JkuSzKalXmOHrNaLZryorWvGtW7c
2OhmnMYHx4WmnRPXzte5cxhpsM+xOj+9PkvKdj039XGSYc5xktrSmdK17lg1
dWsSSPFFomujIc2VSdsaBxklt7Z+t6xtW2H00qxtY9T0ujvc69qmJmtrczVK
3pkNZmfHyVjhNPi3Ewsfy0bnpamTG1O22F2pX7mqUnKC0VtIkpdL9Q09R+Nr
nRcYJy38MTfNYmLr5ShJdNusbE07jPGfUou2KER3V/kai5+R7vgXzNdl/mfe
81hN6zWPGlmXJ0948h91vZ6kdp2Qzpo6n7cNbTBWsuz1yq61U2fWOSyV8Lq8
nLrI13ljsiQu2vDUyUKmduuWtl5j4IYVcz4+mdB5on2PFf6hH6Yvp5N0butx
o5eOpl6ezf7w1YPPj1WaZYV8f/zgqy/le1W0LknycvHxxds0dbujuk5XkDtt
YIFjtTO0Z/4jl8eJ+Owl++LxQ1r86vrk8VfHrNsxJLPO8Ocnxyzu518+lOm/
//LB4+P48Uv6CB2OZ7OpPNvZ1dsOtmclN9mIB0MMzmy5yDODSNQFYmpdteRe
vQP46bpeGuh21TSVOz46ur29nXiDHPWPe+R8MIwXMAMGHH5eI+a6XfCFd9lW
k1Icaurh5w8fJolhbGCNnF6ckeefzZpV7uCz4/FY6blrap02SXK9MiozC90W
jWpsNS7MjSloJC9z8lWnYFKlSwoz9f79jr/c3SntXLs2SqtVbmqSaqPy8sYW
NxRBWhVGZ/TJ5UvEpLrNIUcJ7zQeuUw9UVcWCzQMXq0zKtXOOJVZVdoGodek
K8zX+GgzU0wQBLlTrjJpvshTiWIWGM9AUPNTA6ihwcay1Loo7C1JQHt2Z7QL
P0C7YiphVO4aGtd9OMF3i4n1be6M3yeTp9xEtLnOEQEmSe6pc4SszVp+MEmm
5R5wJlsiSFge+wmtrhDmum8atW0asUx3gLnhMwBgUwCBquq8TPMKp98oXist
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
AA==

-->

</rfc>
