<?xml version='1.0' encoding='utf-8'?> version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
  <!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"> nbsp    "&#160;">
  <!ENTITY RFC5280 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml"> zwsp   "&#8203;">
  <!ENTITY RFC8152 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml"> nbhy   "&#8209;">
  <!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8949 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
<!ENTITY I-D.ietf-anima-constrained-voucher SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-anima-constrained-voucher.xml">
<!ENTITY I-D.ietf-lake-edhoc SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-edhoc.xml">
<!ENTITY I-D.ietf-tls-dtls13 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-dtls13.xml">
<!ENTITY RFC2585 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2585.xml">
<!ENTITY RFC2634 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2634.xml">
<!ENTITY RFC3986 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
<!ENTITY RFC6838 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6838.xml">
<!ENTITY RFC8392 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml">
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC8551 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8551.xml">
<!ENTITY RFC8610 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
<!ENTITY RFC8613 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml"> wj     "&#8288;">
]>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" docName="draft-ietf-cose-x509-09" category="std" ipr="trust200902"> consensus="true" docName="draft-ietf-cose-x509-09" number="9360" ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs="true" tocInclude="true" version="3">

  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <!-- Generated by id2xml 1.5.0 on 2022-11-16T00:19:45Z -->
	<?rfc strict="yes"?>
	<?rfc compact="yes"?>
	<?rfc subcompact="no"?>
	<?rfc symrefs="yes"?>
	<?rfc sortrefs="yes"?>
	<?rfc text-list-symbols="**o+-"?>
	<?rfc toc="yes"?>
	<front>
    <title abbrev="CBOR Object Signing and Encryption (COSE">CBOR abbrev="COSE X.509">CBOR Object Signing and Encryption (COSE): Header parameters Parameters for carrying Carrying and referencing Referencing X.509 certificates</title> Certificates</title>
    <seriesInfo name="RFC" value="9360"/>
    <author initials="J." surname="Schaad" fullname="Jim Schaad">
      <organization>August Cellars</organization>
	<address><email>ietf@augustcellars.com</email>
	</address>
    </author>
    <date year="2022" month="November"/>
	<abstract><t> year="2023" month="February"/>

    <area>sec</area>
    <workgroup>cose</workgroup>

    <abstract>
      <t>
   The CBOR Object Signing And Encrypted Message and Encryption (COSE) message structure uses references to
   keys in general.  For some algorithms, additional properties are defined
   which
   that carry parameters relating to keys as needed.  The COSE Key structure
   is used for transporting keys outside of COSE messages.  This document
   extends the way that keys can be identified and transported by providing
   attributes that refer to or contain X.509 certificates.</t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction" anchor="sect-1"><t> anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
   In the process of writing <xref target="RFC8152"/>, target="RFC8152" format="default"/> and <xref target="RFC9052" format="default"/>, the working group CBOR Object Signing and Encryption (COSE) Working Group discussed X.509
   certificates <xref target="RFC5280"/> target="RFC5280" format="default"/> and decided that no use cases were presented that
   showed a need to support certificates.  Since that time, a number of cases
   have been defined in which X.509 certificate support is necessary, and by
   implication, applications will need a documented and consistent way to
   handle such certificates.  This document defines a set of attributes that
   will allow applications to transport and refer to X.509 certificates in a
   consistent manner.</t>

      <t>
   In some of these cases, a constrained device is being deployed in the
   context of an existing X.509 PKI: for example,
   <xref target="I-D.ietf-anima-constrained-voucher"/> target="Constrained-BRSKI" format="default"/> describes a device enrollment solution
   that relies on the presence of a factory-installed certificate on the
   device.  The  <xref target="I-D.ietf-lake-edhoc"/> draft target="EDHOC" format="default"/> was also written with the idea
   that long term long-term certificates could be used to provide for authentication of
   devices,
   devices and uses them to establish session keys.  Another possible
   scenario is the use of COSE as the basis for a secure messaging
   application.  This scenario assumes the presence of long term long-term keys and a
   central authentication authority.  Basing such an application on public key
   certificates allows it to make use of well established well-established key management
   disciplines.</t>

      <section title="Requirements Terminology" anchor="sect-1.1"><t>
   The anchor="sect-1.1" numbered="true" toc="default">
        <name>Requirements Terminology</name>
         <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", "<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
   "OPTIONAL" "<bcp14>OPTIONAL</bcp14>" in this document
         are to be interpreted as described in BCP 14 BCP&nbsp;14
         <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
         when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section title="X.509 anchor="sect-2" numbered="true" toc="default">
      <name>X.509 COSE Header Parameters" anchor="sect-2"><t> Parameters</name>
      <t>
   The use of X.509 certificates allows for an existing trust infrastructure
   to be used with COSE.  This includes the full suite of enrollment
   protocols, trust anchors, trust chaining chaining, and revocation checking that have
   been defined over time by the IETF and other organizations.  The Concise Binary Object Representation (CBOR) key structures <xref target="RFC8949" format="default"/> that have been defined in COSE currently do not support all of
   these properties, although some may be found in COSE CBOR Web Tokens (CWT) (CWTs)
   <xref target="RFC8392"/>.</t> target="RFC8392" format="default"/>.</t>
      <t>
   It is not necessarily expected that constrained devices themselves will
   evaluate and process X.509 certificates: it is perfectly reasonable for a
   constrained device to be provisioned with a certificate that it
   subsequently provides to a relying party - -- along with a signature or
   encrypted message - -- on the assumption that the relying party is not a
   constrained device, device and is capable of performing the required certificate
   evaluation and processing.  It is also reasonable that a constrained device
   would have the hash of a certificate associated with a public key and be
   configured to use a public key for that thumbprint, but without performing
   the certificate evaluation or even having the entire certificate.  In any
   case, there still needs to be an entity that is responsible for handling
   the possible certificate revocation.</t>
      <t>
   Parties that intend to rely on the assertions made by a certificate
   obtained from any of these methods still need to validate it.  This
   validation can be done according to the PKIX rules specified in <xref target="RFC5280"/> target="RFC5280" format="default"/> or by using
   a different trust structure, such as a trusted certificate distributor for
   self-signed certificates.  The PKIX validation includes matching against
   the trust anchors configured for the application.  These rules apply when
   the validation succeeds in a single step as well as when certificate chains
   need to be built.  If the application cannot establish trust in the
   certificate, the public key contained in the certificate cannot be used for
   cryptographic operations.</t>
      <t>
   The header parameters defined in this document are:</t>

	<t>
   x5bag: This are as follows:</t>
   <dl spacing="normal" newline="false">
   <dt>x5bag:</dt><dd><t>This header parameter contains a bag of X.509 certificates.  The set
   of certificates in this header parameter is unordered and may contain
   self-signed certificates.  Note that there could be duplicate certificates.
   The certificate bag can contain certificates which that are completely
   extraneous to the message.  (An example of this would be where a signed
   message is being used to transport a certificate containing a key agreement
   key.)  As the certificates are unordered, the party evaluating the
   signature will need to be capable of building the certificate path as
   necessary.  That party will also have to take into account that the bag may
   not contain the full set of certificates needed to build any particular
   chain.</t>
      <t>
   The trust mechanism MUST <bcp14>MUST</bcp14> process any certificates in this parameter as
   untrusted input.  The presence of a self-signed certificate in the
   parameter MUST NOT <bcp14>MUST NOT</bcp14> cause the update of the set of trust anchors without
   some out-of-band confirmation.  As the contents of this header parameter
   are untrusted input, the header parameter can be in either the protected or
   unprotected header bucket.  Sending the header parameter in the unprotected
   header bucket allows an intermediary to remove or add certificates.</t>
      <t>
   The end-entity certificate MUST <bcp14>MUST</bcp14> be integrity protected by COSE.  This can
   e.g. can,
   for example, be done by sending the header parameter in the protected header,
   sending a x5bag an 'x5bag' in the unprotected header combined with a x5t an 'x5t' in the
   protected header, or including the end-entity certificate in the
   external_aad.</t>
      <t>
   This header parameter allows for a single X.509 certificate or a bag of
   X.509 certificates to be carried in the message.

   <list style="symbols">

     <t>If
      </t>
      <ul spacing="normal">
        <li>If a single certificate is conveyed, it is placed in a CBOR byte string.</t>

     <t>If string.</li>
        <li>If multiple certificates are conveyed, a CBOR array of byte strings is
     used, with each certificate being in its own byte string.</t>

	</list>
	</t>

	<t>
   x5chain: This string.</li>
      </ul>
</dd>
   <dt>x5chain:</dt><dd><t>This header parameter contains an ordered array of X.509
   certificates.  The certificates are to be ordered starting with the
   certificate containing the end-entity key followed by the certificate which that
   signed it it, and so on.  There is no requirement for the entire chain to be
   present in the element if there is reason to believe that the relying party
   already has, or can locate locate, the missing certificates.  This means that the
   relying party is still required to do path building, building but that a candidate
   path is proposed in this header parameter.</t>
      <t>
   The trust mechanism MUST <bcp14>MUST</bcp14> process any certificates in this parameter as
   untrusted input.  The presence of a self-signed certificate in the
   parameter MUST NOT <bcp14>MUST NOT</bcp14> cause the update of the set of trust anchors without
   some out-of-band confirmation.  As the contents of this header parameter
   are untrusted input, the header parameter can be in either the protected or
   unprotected header bucket.  Sending the header parameter in the unprotected
   header bucket allows an intermediary to remove or add certificates.</t>
      <t>
   The end-entity certificate MUST <bcp14>MUST</bcp14> be integrity protected by COSE.  This can
   e.g. can,
   for example, be done by sending the header parameter in the protected header,
   sending a x5chain an 'x5chain' in the unprotected header combined with a x5t an 'x5t' in the
   protected header, or including the end-entity certificate in the
   external_aad as.</t>
   external_aad.</t>
      <t>
   This header parameter allows for a single X.509 certificate or a chain of
   X.509 certificates to be carried in the message.

   <list style="symbols">

     <t>If
      </t>
      <ul spacing="normal">
        <li>If a single certificate is conveyed, it is placed in a CBOR byte string.</t>

     <t>If string.</li>
        <li>If multiple certificates are conveyed, a CBOR array of byte strings is
     used, with each certificate being in its own byte string.</t>

	</list>
	</t>

	<t>
   x5t: This string.</li>
      </ul>
</dd>
   <dt>x5t:</dt><dd><t>This header parameter identifies the end-entity X.509 certificate by a
   hash value (a thumbprint).  The 'x5t' header parameter is represented as an
   array of two elements.  The first element is an algorithm identifier which that
   is an integer or a string containing the hash algorithm identifier
   corresponding to the Value column (integer or text string) of the algorithm
   registered in the "COSE Algorithms" registry
   (see <eref target="https://www.iana.org/assignments/cose/cose.xhtml#algorithms."/> target="https://www.iana.org/assignments/cose/" brackets="angle"/>). The second
   element is a binary string containing the hash value computed over the DER
   encoded
   DER-encoded certificate.</t>
      <t>
   As this header parameter does not provide any trust, the header parameter
   can be in either a protected or unprotected header bucket.</t>
      <t>
   The identification of the end-entity certificate MUST <bcp14>MUST</bcp14> be integrity
   protected by COSE.  This can be done by sending the header parameter in the
   protected header or including the end-entity certificate in the
   external_aad.</t>
      <t>
   The 'x5t' header parameter can be used alone or together with the 'x5bag',
   'x5chain', or 'x5u' header parameters to provide integrity protection of
   the end-entity certificate.</t>
      <t>
   For interoperability, applications which that use this header parameter MUST <bcp14>MUST</bcp14>
   support the hash algorithm 'SHA-256', 'SHA-256' but can use other hash algorithms.
   This requirement allows for different implementations to be configured to
   use an interoperable algorithm, but does not preclude the use (by prior
   agreement) of other algorithms.</t>

	<t>
   RFC Editor please remove the following two paragraphs:</t>

	<t>
   During AD review, a question was raised about how effective the previous
   statement is in terms of dealing with a MTI algorithm.  There needs to be
   some type of arrangement between the parties to agree that a specific hash
   algorithm is going to be used in computing the thumbprint.  Making it a
   MUST use would make that true, but it then means that agility is going to
   be very difficult.</t>

	<t>
   The worry is that while SHA-256 may be mandatory, if a sender supports
   SHA-256 but only sends SHA-512 then the recipient which only does SHA-256
   would not be able to use the thumbprint.  In that case both applications
   would conform to the specification, but still not be able to inter-operate.</t>

	<t>
   x5u: This
</dd>
   <dt>x5u:</dt><dd><t>This header parameter provides the ability to identify an X.509
   certificate by a URI <xref target="RFC3986"/>. target="RFC3986" format="default"/>.  It contains a CBOR text string.  The
   referenced resource can be any of the following media types:

   <list style="symbols">

     <t>application/pkix-cert <xref target="RFC2585"/></t>

     <t>application/pkcs7-mime;
      </t>
      <ul spacing="normal">
        <li>application/pkix-cert <xref target="RFC2585" format="default"/></li>
        <li>application/pkcs7-mime; smime-type="certs-only" <xref target="RFC8551"/></t>

     <t>application/cose-x509 <xref target="sect-4.3"/></t>

     <t>application/cose-x509; target="RFC8551" format="default"/></li>
        <li>application/cose-x509 (<xref target="sect-4.3" format="default"/>)</li>
        <li>application/cose-x509; usage=chain <xref target="sect-4.3"/></t>

	</list>
	</t> (<xref target="sect-4.3" format="default"/>)</li>
      </ul>
      <t>
   When the application/cose-x509 media type is used, the data is a CBOR
   sequence of single-entry COSE_X509 structures (encoding "bstr").  If the
   parameter "usage" is set to "chain", this sequence indicates a certificate
   chain.</t>
      <t>
   The end-entity certificate MUST <bcp14>MUST</bcp14> be integrity protected by COSE.  This can
   e.g. can,
   for example, be done by sending the x5u 'x5u' in the unprotected or protected header
   combined with a x5t an 'x5t' in the protected header, or including the end-entity
   certificate in the external_aad.  As the end-entity certificate is
   integrity protected by COSE, the URI does not need to provide any
   protection.</t>
      <t>
   If a retrieved certificate does not chain to an existing trust anchor, that
   certificate MUST NOT <bcp14>MUST NOT</bcp14> be trusted unless the URI provided provides integrity
   protection and server authentication and the server is configured as
   trusted to provide new trust anchors or if an out-of-band confirmation can
   be received for trusting the retrieved certificate.  In case  If an HTTP or
   CoAP
   Constrained Application Protocol (CoAP) GET request is used to retrieve a certificate, TLS <xref target="RFC8446"/>, target="RFC8446" format="default"/>, DTLS
   <xref target="I-D.ietf-tls-dtls13"/> target="RFC9147" format="default"/>, or OSCORE <xref target="RFC8613"/> SHOULD Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613" format="default"/> <bcp14>SHOULD</bcp14> be used.</t>
</dd>
   </dl>
      <t>
   The header parameters are used in the following locations:

   <list style="symbols">

     <t>COSE_Signature
      </t>
      <dl spacing="normal" newline="false">
        <dt>COSE_Signature and COSE_Sign1 objects: in objects:</dt><dd>In these objects they objects, the parameters identify the
     certificate to be used for validating the signature.</t>

     <t>COSE_recipient objects: in signature.</dd>
        <dt>COSE_recipient objects:</dt><dd>In this location they location, the parameters identify the certificate
     for the recipient of the message.</t>

	</list>
	</t> message.</dd>
      </dl>
      <t>
   The labels assigned to each header parameter can be found in the following
   table.</t>

<!-- draft-ietf-cose-x509-09-manual.txt(301): Warning: Unexpected title: expected
   'Figure ...', found 'Table 1: X.509 COSE Header Parameters'.  This looks like
   a figure that has been entered as a texttable.  The generated XML will need
   adjustment. -->

<figure title="Table 1: X.509 <xref target="tab-1"/>.</t>

<table anchor="tab-1">
  <name>X.509 COSE Header Parameters" anchor="Fig1">
  <artwork><![CDATA[

      +=========+=======+===============+=====================+
      | Name    | Label | Value Type    | Description         |
      +=========+=======+===============+=====================+
      | x5bag   | 32    | COSE_X509     | An Parameters</name>
  <thead>
    <tr>
      <th>Name</th>
      <th>Label</th>
      <th>Value Type</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>x5bag</td>
      <td>32</td>
      <td>COSE_X509</td>
      <td>An unordered bag of |
      |         |       |               | X.509 certificates  |
      +---------+-------+---------------+---------------------+
      | x5chain | 33    | COSE_X509     | An certificates</td>
    </tr>
    <tr>
      <td>x5chain</td>
      <td>33</td>
      <td>COSE_X509</td>
      <td>An ordered chain of |
      |         |       |               | X.509 certificates  |
      +---------+-------+---------------+---------------------+
      | x5t     | 34    | COSE_CertHash | Hash certificates</td>
    </tr>
    <tr>
      <td>x5t</td>
      <td>34</td>
      <td>COSE_CertHash</td>
      <td>Hash of an X.509    |
      |         |       |               | certificate         |
      +---------+-------+---------------+---------------------+
      | x5u     | 35    | uri           | URI certificate</td>
    </tr>
    <tr>
      <td>x5u</td>
      <td>35</td>
      <td>uri</td>
      <td>URI pointing to an  |
      |         |       |               | X.509 certificate   |
      +---------+-------+---------------+---------------------+
]]></artwork></figure> certificate</td>
    </tr>
  </tbody>
</table>

      <t>
   Below is an equivalent CDDL <xref target="RFC8610"/> Concise Data Definition Language (CDDL) description
   (see <xref target="RFC8610" format="default"/>) of the text above.</t>

   <figure><artwork><![CDATA[
<sourcecode name="" type="cddl"><![CDATA[
COSE_X509 = bstr / [ 2*certs: bstr ]
COSE_CertHash = [ hashAlg: (int / tstr), hashValue: bstr ]
   ]]></artwork></figure>
]]></sourcecode>

      <t>The content contents of the bstr "bstr" are the bytes of a DER encoded DER-encoded certificate.</t>
    </section>
    <section title="X.509 certificates anchor="sect-3" numbered="true" toc="default">
      <name>X.509 Certificates and static-static ECDH" anchor="sect-3"><t> Static-Static ECDH</name>
      <t>
   The header parameters defined in the previous section are used to identify
   the recipient certificates for the ECDH Elliptic Curve Diffie-Hellman (ECDH) key agreement algorithms.  In this
   section
   section, we define the algorithm specific algorithm-specific parameters that are used for
   identifying or transporting the sender's key for static-static key
   agreement algorithms.</t>
      <t>
   These attributes are defined analogously to those in the previous section.
   There is no definition for the certificate bag, as the same attribute would
   be used for both the sender and recipient certificates.</t>

	<t>
   x5chain-sender: This
      <dl spacing="normal" newline="true">
      <dt>x5chain-sender:</dt><dd>This header parameter contains the chain of certificates
   starting with the sender's key exchange certificate.  The structure is the
   same as 'x5chain'.</t>

	<t>
   x5t-sender: This 'x5chain'.</dd>
   <dt>x5t-sender:</dt><dd>This header parameter contains the hash value for the sender's
   key exchange certificate.  The structure is the same as 'x5t'.</t>

	<t>
   x5u-sender: This 'x5t'.</dd>
   <dt>x5u-sender:</dt><dd>This header parameter contains a URI for the sender's key
   exchange certificate.  The structure and processing are the same as 'x5u'.</t>

<!-- draft-ietf-cose-x509-09-manual.txt(354): Warning: Unexpected title:
     expected 'Figure ...', found 'Table 2: Static ECDH Algorithm Values'.
     This looks like a figure that has been entered as a texttable.  The
     generated XML will need adjustment. -->

   <figure title="Static 'x5u'.</dd>
      </dl>
<table anchor="tab-2">
  <name>Static ECDH Algorithm Values" anchor="Fig2">
     <artwork><![CDATA[
+===============+=====+=============+===================+===========+
|Name           |Label|Type         | Algorithm         |Description|
+===============+=====+=============+===================+===========+
|x5t-sender     |TBD  |COSE_CertHash| ECDH-SS+HKDF-256, |Thumbprint |
|               |     |             | Values</name>
  <thead>
    <tr>
      <th>Name</th>
      <th>Label</th>
      <th>Type</th>
      <th>Algorithm</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>x5t-sender</td>
      <td>-27</td>
      <td>COSE_CertHash</td>
      <td>ECDH-SS+HKDF-256, ECDH-SS+HKDF-512, |for the    |
|               |     |             | ECDH-SS+A128KW,   |sender's   |
|               |     |             | ECDH-SS+A192KW,   |X.509      |
|               |     |             | ECDH-SS+A256KW    |certificate|
+---------------+-----+-------------+-------------------+-----------+
|x5u-sender     |TBD  |uri          | ECDH-SS+HKDF-256, |URI for the|
|               |     |             | ECDH-SS+A256KW</td>
      <td>Thumbprint for the sender's X.509 certificate</td>
    </tr>
    <tr>
      <td>x5u-sender</td>
      <td>-28</td>
      <td>uri</td>
      <td>ECDH-SS+HKDF-256, ECDH-SS+HKDF-512, |sender's   |
|               |     |             | ECDH-SS+A128KW,   |X.509      |
|               |     |             | ECDH-SS+A192KW,   |certificate|
|               |     |             | ECDH-SS+A256KW    |           |
+---------------+-----+-------------+-------------------+-----------+
|x5chain-sender |TBD  |COSE_X509    | ECDH-SS+HKDF-256, |static key |
|               |     |             | ECDH-SS+A256KW</td>
      <td>URI for the sender's X.509 certificate</td>
    </tr>
    <tr>
      <td>x5chain-sender</td>
      <td>-29</td>
      <td>COSE_X509</td>
      <td>ECDH-SS+HKDF-256, ECDH-SS+HKDF-512, |X.509      |
|               |     |             | ECDH-SS+A128KW,   |certificate|
|               |     |             | ECDH-SS+A192KW,   |chain      |
|               |     |             | ECDH-SS+A256KW    |           |
+---------------+-----+-------------+-------------------+-----------+
]]></artwork></figure> ECDH-SS+A256KW</td>
      <td>static key X.509 certificate chain</td>
    </tr>
  </tbody>
</table>

    </section>
    <section title="IANA Considerations" anchor="sect-4"><section title="COSE anchor="sect-4" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <name>COSE Header Parameter Registry" anchor="sect-4.1"><t> Parameters Registry</name>
        <t>
   IANA is requested to register has registered the new COSE Header parameters in Table 1 <xref target="tab-1"/> in
   the "COSE Header Parameters" registry.  The "Value Registry" field is empty
   for all of the items.  For each item, the 'Reference' "Reference" field points to this
   document.</t>
      </section>
      <section title="COSE anchor="sect-4.2" numbered="true" toc="default">
        <name>COSE Header Algorithm Parameter Registry" anchor="sect-4.2"><t> Parameters Registry</name>
        <t>
   IANA is requested to register has registered the new COSE Header Algorithm parameters in
   Table 2
   <xref target="tab-2"/> in the "COSE Header Algorithm Parameters" registry.  For each item,
   the 'Reference' "Reference" field points to this document.</t>
      </section>
      <section title="Media anchor="sect-4.3" numbered="true" toc="default">
        <name>Media Type application/cose-x509" anchor="sect-4.3"><t> application/cose-x509</name>
        <t>
   When the application/cose-x509 media type is used, the data is a CBOR
   sequence of single-entry COSE_X509 structures (encoding "bstr").  If the
   parameter "usage" is set to "chain", this sequence indicates a certificate
   chain.</t>
        <t>
   IANA is requested to register has registered the following media type <xref target="RFC6838"/>:</t>

   <t>Type name: application</t>

   <t>Subtype name: cose-x509</t>

   <t>Required parameters: N/A</t>

   <t>Optional parameters: usage</t>

      <t><list style="symbols">

	<t>Can target="RFC6838" format="default"/>:</t>
    <dl spacing="normal" newline="false">
        <dt>Type name:</dt><dd><t>application</t></dd>
        <dt>Subtype name:</dt><dd><t>cose-x509</t></dd>
        <dt>Required parameters:</dt><dd><t>N/A</t></dd>
        <dt>Optional parameters:</dt><dd><t>usage</t>
        <ul spacing="normal">
          <li>Can be absent to provide no further information about the intended
	meaning of the order in the CBOR sequence of certificates.</t>

	<t>Can certificates.</li>
          <li>Can be set to "chain" to indicate that the sequence of data items
	is to be interpreted as a certificate chain.</t>

	</list>
	</t>

	<t>
   Encoding considerations: binary</t>

	<t>
   Security considerations: See chain.</li>
        </ul>
      </dd>
        <dt>Encoding considerations:</dt>
         <dd><t>binary</t></dd>
        <dt>Security considerations:</dt>
         <dd><t>See the Security Considerations section of
   RFCthis.</t>

	<t>
   Interoperability considerations: N/A</t>

	<t>
   Published specification: RFCthis</t>

	<t>
   Applications RFC 9360.</t></dd>
        <dt>Interoperability considerations:</dt>
         <dd><t>N/A</t></dd>
        <dt>Published specification:</dt>
         <dd><t>RFC 9360</t></dd>
        <dt>Applications that use this media type: Applications type:</dt>
         <dd><t>Applications that employ COSE and use X.509 as a certificate type.</t>

	<t>
   Fragment type.</t></dd>
        <dt>Fragment identifier considerations: N/A

   <list style="hanging" hangIndent="24">

     <t hangText="Additional information: Deprecated considerations:</dt>
         <dd><t>N/A</t></dd>
        <dt>Additional information:</dt><dd>
	<t><br/></t>
        <dl spacing="compact">
        <dt>Deprecated alias names for this type: N/A"></t>

     <t>Magic number(s): N/A</t>

     <t>File extension(s): N/A</t>

     <t>Macintosh type:</dt><dd>N/A</dd>
          <dt>Magic number(s):</dt><dd>N/A</dd>
          <dt>File extension(s):</dt><dd>N/A</dd>
          <dt>Macintosh file type code(s): N/A</t>

	</list>
	</t>

	<t>
   Person code(s):</dt><dd>N/A</dd>
        </dl>
      </dd>
      <dt>Person &amp; email address to contact for further information: iesg@ietf.org
   Intended usage: COMMON</t>

	<t>
   Restrictions information:</dt><dd><br/>iesg@ietf.org</dd>
      <dt>Intended usage:</dt><dd>COMMON</dd>
      <dt>Restrictions on usage: N/A</t>

	<t>
   Author: COSE WG</t>

	<t>
   Change controller: IESG</t>

	<t>
   Provisional registration? (standards tree only): no</t> usage:</dt><dd>N/A</dd>
      <dt>Author:</dt><dd>COSE WG</dd>
      <dt>Change controller:</dt><dd>IESG</dd>
    </dl>
      </section>
    </section>
    <section title="Security Considerations" anchor="sect-5"><t> anchor="sect-5" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
   Establishing trust in a certificate is a vital part of processing.  A major
   component of establishing trust is determining what the set of trust
   anchors are for the process.  A new self-signed certificate appearing on
   the client cannot be a trigger to modify the set of trust anchors, because
   a well-defined trust-establishment process is required.  One common way for
   a new trust anchor to be added to (or removed) from removed from) a device is by doing a new
   firmware upgrade.</t>
      <t>
   In constrained systems, there is a trade-off between the order of checking
   the signature and checking the certificate for validity.  Validating
   certificates can require that network resources be accessed in order to get
   revocation information or retrieve certificates during path building.  The
   resulting network access can consume power and network bandwidth.  On the
   other hand, if the certificates are validated after the signature is
   validated, an oracle can potentially be built based on detecting the
   network resources resources, which is only done if the signature validation passes.
   In any event, both the signature validation and the certificate validation MUST <bcp14>MUST</bcp14> be
   completed successfully before acting on any requests.</t>
      <t>
   Unless it is known that the CA Certificate Authority (CA) required proof-of-possession proof of possession of the
   subject's private key to issue an end-entity certificate, the end-entity
   certificate MUST <bcp14>MUST</bcp14> be integrity protected by COSE.  Without
   proof-of-possession,
   proof of possession, an attacker can trick the CA to issue into issuing an
   identity-misbinding certificate with someone else's "borrowed" public-key public key
   but with a different subject.  A MITM  An on-path attacker can then perform an
   identity-misbinding attack by replacing the real end-entity certificate in
   COSE with such an identity-misbinding certificate.</t>
      <t>
   End-entity X.509 certificates contain identities that a passive on-path
   attacker eavesdropping on the conversation can use to identify and track
   the subject.  COSE does not provide identity protection by itself itself, and the
   x5t
   'x5t' and x5u 'x5u' header parameters are just alternative permanent identifiers
   and can also be used to track the subject.  To provide identity protection,
   COSE can be sent inside another security protocol providing
   confidentiality.</t>
      <t>
   Before using the key in a certificate, the key MUST <bcp14>MUST</bcp14> be checked against the
   algorithm to be used used, and any algorithm specific algorithm-specific checks need to be made.
   These checks can include validating that points are on curves for
   elliptical curve algorithms, algorithms and that the sizes of RSA keys are of within an acceptable size. range.  The use of unvalidated keys can lead either to either loss of
   security or excessive consumption of resources (for example example, using a 200K
   RSA key).</t>
      <t>
   When processing the x5u 'x5u' header parameter parameter, the security considerations of
   <xref target="RFC3986"/> target="RFC3986" format="default"/>, and specifically those defined in Section 7.1 of <xref target="RFC3986"/> target="RFC3986" sectionFormat="of" section="7.1"/>, also
   apply.</t>
      <t>
   Regardless of the source, certification path validation is an important
   part of establishing trust in a certificate.  Section 6 of  <xref target="RFC5280"/> target="RFC5280" sectionFormat="of" section="6"/>
   provides guidance for the path validation.  The security considerations of
   <xref target="RFC5280"/> target="RFC5280" format="default"/> are also important for the correct usage of this document.</t>
      <t>
   Protecting the integrity of the x5bag, x5chain 'x5bag', 'x5chain', and x5t 'x5t' contents by placing
   them in the protected header bucket can help mitigate some risks of a
   misbehaving certificate authority (cf.  Section 5.1 of <xref target="RFC2634"/>).</t> CA (cf.&nbsp;<xref target="RFC2634" sectionFormat="of" section="5.1"/>).</t>
      <t>
   The security of the algorithm used for 'x5t' does not affect the security
   of the system system, as this header parameter selects which certificate that is
   already present on the system should be used, but it does not provide any
   trust.</t>
    </section>
  </middle>
  <back>
	<references title="Normative References">
	&RFC2119;
	&RFC5280;
	&RFC8152;
	&RFC8174;
	&RFC8949;

    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9052.xml"/>
      </references>
      <references>
        <name>Informative References</name>

<!-- Constrained-BRSKI  draft-ietf-anima-constrained-voucher (I-D Exists)
     "Long way" to change "Van" to "van" and fix version number  -->
<reference anchor="Constrained-BRSKI">
  <front>
    <title>Constrained Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
    <author fullname="Michael Richardson" initials="M." surname="Richardson">
      <organization>Sandelman Software Works</organization>
    </author>
    <author fullname="Peter van der Stok" initials="P." surname="van der Stok">
      <organization>vanderstok consultancy</organization>
    </author>
    <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
      <organization>Cisco Systems</organization>
    </author>
    <author fullname="Esko Dijk" initials="E." surname="Dijk">
      <organization>IoTconsultancy.nl</organization>
    </author>
    <date month="January" day="2" year="2023"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-19"/>
</reference>

<!-- draft-ietf-lake-edhoc (Publication Requested)
     Had to do "long way" for version # and J. Preuß Mattsson's name -->
<reference anchor="EDHOC">
  <front>
    <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
    <author fullname="Göran Selander" initials="G." surname="Selander">
      <organization>Ericsson AB</organization>
    </author>
    <author fullname="John Preuß Mattsson" initials="J." surname="Preuß Mattsson">
      <organization>Ericsson AB</organization>
    </author>
    <author fullname="Francesca Palombini" initials="F." surname="Palombini">
      <organization>Ericsson AB</organization>
    </author>
    <date day="3" month="February" year="2023"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-19"/>
</reference>

<!-- draft-ietf-tls-dtls13 (RFC 9147) -->
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9147.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2585.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2634.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6838.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8551.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml"/>
      </references>
	<references title="Informative References">
	&I-D.ietf-anima-constrained-voucher;
	&I-D.ietf-lake-edhoc;
	&I-D.ietf-tls-dtls13;
	&RFC2585;
	&RFC2634;
	&RFC3986;
	&RFC6838;
	&RFC8392;
	&RFC8446;
	&RFC8551;
	&RFC8610;
	&RFC8613;
    </references>
   <section anchor="acks" numbered="false" toc="default">
   <name>Acknowledgements</name>
   <t>
   Jim Schaad passed on 3 October 2020.  This document is primarily his
   work.  Ivaylo Petrov served as the document editor after Jim's
   untimely death, mostly helping with the approval and publication
   processes.  Jim deserves all credit for the technical content.
   </t>

   </section>
  </back>
</rfc>