<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-cose-webauthn-algorithms-08" indexInclude="true" ipr="trust200902" number="8812" prepTime="2020-08-14T16:14:44" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="4" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-cose-webauthn-algorithms-08" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8812" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="COSE &amp; JOSE Registrations for WebAuthn Algs">CBOR Object Signing and Encryption (COSE) and JSON Object Signing and Encryption (JOSE) Registrations for Web Authentication (WebAuthn) Algorithms</title>
    <seriesInfo name="RFC" value="8812" stream="IETF"/>
    <author fullname="Michael B. Jones" surname="Jones" initials="M">
      <organization showOnFrontPage="true">Microsoft</organization>
      <address>
        <email>mbj@microsoft.com</email>
        <uri>https://self-issued.info/</uri>
      </address>
    </author>
    <date month="08" year="2020"/>
    <area>Security</area>
    <workgroup>COSE Working Group</workgroup>
    <keyword>Cryptography</keyword>
    <keyword>Digital Signature</keyword>
    <keyword>Encryption</keyword>
    <keyword>W3C</keyword>
    <keyword>World Wide Web Consortium</keyword>
    <keyword>WebAuthn</keyword>
    <keyword>Web Authentication</keyword>
    <keyword>FIDO Alliance</keyword>
    <keyword>FIDO</keyword>
    <keyword>FIDO2</keyword>
    <keyword>CTAP</keyword>
    <keyword>CTAP2</keyword>
    <abstract pn="section-abstract">
      <t pn="section-abstract-1">
	The W3C Web Authentication (WebAuthn) specification and the FIDO
	Alliance FIDO2 Client to Authenticator Protocol (CTAP) specification use
	CBOR Object Signing and Encryption (COSE) algorithm identifiers.  This
	specification registers the following algorithms (which are used by
	WebAuthn and CTAP implementations) in the IANA "COSE Algorithms"
	registry: RSASSA-PKCS1-v1_5 using SHA-256, SHA-384, SHA-512, and
	SHA-1; and Elliptic Curve Digital Signature Algorithm (ECDSA)
	using the secp256k1 curve and SHA-256.  It registers the secp256k1
	elliptic curve in the IANA "COSE Elliptic Curves" registry.  Also, for
	use with JSON Object Signing and Encryption (JOSE), it registers the
	algorithm ECDSA using the secp256k1 curve and SHA-256 in the IANA "JSON
	Web Signature and Encryption Algorithms" registry and the secp256k1
	elliptic curve in the IANA "JSON Web Key Elliptic Curve" registry.
      </t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8812" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t pn="section-boilerplate.2-1">
            Copyright (c) 2020 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-notation-and-c">Requirements Notation and Conventions</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rsassa-pkcs1-v1_5-signature">RSASSA-PKCS1-v1_5 Signature Algorithm</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-using-secp256k1-with-jose-a">Using secp256k1 with JOSE and COSE</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-jose-and-cose-secp256k1-cur">JOSE and COSE secp256k1 Curve Key Representations</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ecdsa-signature-with-secp25">ECDSA Signature with secp256k1 Curve</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-other-uses-of-the-secp256k1">Other Uses of the secp256k1 Elliptic Curve</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cose-algorithms-registratio">COSE Algorithms Registrations</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cose-elliptic-curves-regist">COSE Elliptic Curves Registrations</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-jose-algorithms-registratio">JOSE Algorithms Registrations</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.4">
                <t pn="section-toc.1-1.4.2.4.1"><xref derivedContent="4.4" format="counter" sectionFormat="of" target="section-4.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-json-web-key-elliptic-curve">JSON Web Key Elliptic Curves Registrations</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rsa-key-size-security-consi">RSA Key Size Security Considerations</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rsassa-pkcs1-v1_5-with-sha-">RSASSA-PKCS1-v1_5 with SHA-2 Security Considerations</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rsassa-pkcs1-v1_5-with-sha-1">RSASSA-PKCS1-v1_5 with SHA-1 Security Considerations</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-secp256k1-security-consider">secp256k1 Security Considerations</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t pn="section-toc.1-1.7.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="Introduction" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t pn="section-1-1">
	This specification defines how to use several algorithms with
	CBOR Object Signing and Encryption (COSE) <xref target="RFC8152" format="default" sectionFormat="of" derivedContent="RFC8152"/>
	that are used by implementations of the
	W3C Web Authentication (WebAuthn) <xref target="WebAuthn" format="default" sectionFormat="of" derivedContent="WebAuthn"/>
	and FIDO Alliance FIDO2 Client to Authenticator Protocol (CTAP) <xref target="CTAP" format="default" sectionFormat="of" derivedContent="CTAP"/> specifications.
	This specification registers these algorithms in
	the IANA "COSE Algorithms" registry <xref target="IANA.COSE.Algorithms" format="default" sectionFormat="of" derivedContent="IANA.COSE.Algorithms"/>
	and registers an elliptic curve in the
	IANA "COSE Elliptic Curves" registry <xref target="IANA.COSE.Curves" format="default" sectionFormat="of" derivedContent="IANA.COSE.Curves"/>.
	This specification also registers a corresponding algorithm
	for use with JSON Object Signing and Encryption (JOSE) <xref target="RFC7515" format="default" sectionFormat="of" derivedContent="RFC7515"/> in
	the IANA "JSON Web Signature and Encryption Algorithms" registry <xref target="IANA.JOSE.Algorithms" format="default" sectionFormat="of" derivedContent="IANA.JOSE.Algorithms"/>
	and registers an elliptic curve in the
	IANA "JSON Web Key Elliptic Curve" registry <xref target="IANA.JOSE.Curves" format="default" sectionFormat="of" derivedContent="IANA.JOSE.Curves"/>.
      </t>
      <section anchor="rnc" numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-requirements-notation-and-c">Requirements Notation and Conventions</name>
        <t pn="section-1.1-1">
    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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>
      </section>
    </section>
    <section anchor="RSASSA-PKCS1-v1_5" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-rsassa-pkcs1-v1_5-signature">RSASSA-PKCS1-v1_5 Signature Algorithm</name>
      <t pn="section-2-1">
	The RSASSA-PKCS1-v1_5 signature algorithm is defined in <xref target="RFC8017" format="default" sectionFormat="of" derivedContent="RFC8017"/>.
	The RSASSA-PKCS1-v1_5 signature algorithm is parameterized with a hash function (h).
      </t>
      <t pn="section-2-2">
	A key of size 2048 bits or larger <bcp14>MUST</bcp14> be used with these algorithms.
	Implementations need to check that the key type is 'RSA' when creating or verifying a signature.
      </t>
      <t pn="section-2-3">
	The RSASSA-PKCS1-v1_5 algorithms specified in this document are in the following table.
      </t>
      <table anchor="rsa-algs" align="center" pn="table-1">
        <name slugifiedName="name-rsassa-pkcs1-v1_5-algorithm">RSASSA-PKCS1-v1_5 Algorithm Values</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Name</th>
            <th align="left" colspan="1" rowspan="1">Value</th>
            <th align="left" colspan="1" rowspan="1">Hash</th>
            <th align="left" colspan="1" rowspan="1">Description</th>
            <th align="left" colspan="1" rowspan="1">Recommended</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">RS256</td>
            <td align="left" colspan="1" rowspan="1">-257</td>
            <td align="left" colspan="1" rowspan="1">SHA-256</td>
            <td align="left" colspan="1" rowspan="1">RSASSA-PKCS1-v1_5 using SHA-256</td>
            <td align="left" colspan="1" rowspan="1">No</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">RS384</td>
            <td align="left" colspan="1" rowspan="1">-258</td>
            <td align="left" colspan="1" rowspan="1">SHA-384</td>
            <td align="left" colspan="1" rowspan="1">RSASSA-PKCS1-v1_5 using SHA-384</td>
            <td align="left" colspan="1" rowspan="1">No</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">RS512</td>
            <td align="left" colspan="1" rowspan="1">-259</td>
            <td align="left" colspan="1" rowspan="1">SHA-512</td>
            <td align="left" colspan="1" rowspan="1">RSASSA-PKCS1-v1_5 using SHA-512</td>
            <td align="left" colspan="1" rowspan="1">No</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">RS1</td>
            <td align="left" colspan="1" rowspan="1">-65535</td>
            <td align="left" colspan="1" rowspan="1">SHA-1</td>
            <td align="left" colspan="1" rowspan="1">RSASSA-PKCS1-v1_5 using SHA-1</td>
            <td align="left" colspan="1" rowspan="1">Deprecated</td>
          </tr>
        </tbody>
      </table>
      <t pn="section-2-5">
	Security considerations for use of the first three algorithms
	are in <xref target="RSASSA-PKCS1-v1_5_SHA-2_considerations" format="default" sectionFormat="of" derivedContent="Section 5.2"/>.
	Security considerations for use of the last algorithm
	are in <xref target="RSASSA-PKCS1-v1_5_SHA-1_considerations" format="default" sectionFormat="of" derivedContent="Section 5.3"/>.
      </t>
      <t pn="section-2-6">
	Note that these algorithms are already present in the
	IANA "JSON Web Signature and Encryption Algorithms" registry <xref target="IANA.JOSE.Algorithms" format="default" sectionFormat="of" derivedContent="IANA.JOSE.Algorithms"/>,
	and so these registrations are only for the
	IANA "COSE Algorithms" registry <xref target="IANA.COSE.Algorithms" format="default" sectionFormat="of" derivedContent="IANA.COSE.Algorithms"/>.
      </t>
    </section>
    <section anchor="secp256k1" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-using-secp256k1-with-jose-a">Using secp256k1 with JOSE and COSE</name>
      <t pn="section-3-1">
	This section defines algorithm encodings and representations enabling the
	Standards for Efficient Cryptography Group (SECG) elliptic curve
	secp256k1 <xref target="SEC2" format="default" sectionFormat="of" derivedContent="SEC2"/> to be used for
	JOSE <xref target="RFC7515" format="default" sectionFormat="of" derivedContent="RFC7515"/> and
	COSE <xref target="RFC8152" format="default" sectionFormat="of" derivedContent="RFC8152"/> messages.
      </t>
      <section anchor="secp256k1_curve" numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-jose-and-cose-secp256k1-cur">JOSE and COSE secp256k1 Curve Key Representations</name>
        <t pn="section-3.1-1">
	  The SECG elliptic curve
	  secp256k1 <xref target="SEC2" format="default" sectionFormat="of" derivedContent="SEC2"/> is represented in
	  a JSON Web Key (JWK) <xref target="RFC7517" format="default" sectionFormat="of" derivedContent="RFC7517"/> using these values:
        </t>
        <ul spacing="compact" bare="false" empty="false" pn="section-3.1-2">
          <li pn="section-3.1-2.1">
            <tt>kty</tt>: <tt>EC</tt></li>
          <li pn="section-3.1-2.2">
            <tt>crv</tt>: <tt>secp256k1</tt></li>
        </ul>
        <t pn="section-3.1-3">
	  plus the values needed to represent the curve point, as defined in
	  <xref target="RFC7518" section="6.2.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7518#section-6.2.1" derivedContent="RFC7518"/>.  As a
	  compressed point encoding representation is not defined for JWK
	  elliptic curve points, the uncompressed point encoding defined there
	  <bcp14>MUST</bcp14> be used.  The <tt>x</tt> and <tt>y</tt> values
	  represented <bcp14>MUST</bcp14> both be exactly 256 bits, with any
	  leading zeros preserved.  Other optional values such as <tt>alg</tt>
          <bcp14>MAY</bcp14> also be present.
        </t>
        <t pn="section-3.1-4">
	  It is represented in a COSE_Key <xref target="RFC8152" format="default" sectionFormat="of" derivedContent="RFC8152"/> using these values:
        </t>
        <ul spacing="compact" bare="false" empty="false" pn="section-3.1-5">
          <li pn="section-3.1-5.1">
            <tt>kty</tt> (1): <tt>EC2</tt> (2)</li>
          <li pn="section-3.1-5.2">
            <tt>crv</tt> (-1): <tt>secp256k1</tt> (8)</li>
        </ul>
        <t pn="section-3.1-6">
	  plus the values needed to represent the curve point, as defined in
	  <xref target="RFC8152" section="13.1.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8152#section-13.1.1" derivedContent="RFC8152"/>.
	  Either the uncompressed or compressed point encoding representations
	  defined there can be used.  The <tt>x</tt> value represented
	  <bcp14>MUST</bcp14> be exactly 256 bits, with any leading zeros
	  preserved.  If the uncompressed representation is used, the
	  <tt>y</tt> value represented <bcp14>MUST</bcp14> likewise be exactly
	  256 bits, with any leading zeros preserved; if the compressed
	  representation is used, the <tt>y</tt> value is a boolean value, as
	  specified in <xref target="RFC8152" section="13.1.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8152#section-13.1.1" derivedContent="RFC8152"/>.  Other optional values such as <tt>alg</tt>
	  (3) <bcp14>MAY</bcp14> also be present.
        </t>
      </section>
      <section anchor="secp256k1_ECDSA" numbered="true" toc="include" removeInRFC="false" pn="section-3.2">
        <name slugifiedName="name-ecdsa-signature-with-secp25">ECDSA Signature with secp256k1 Curve</name>
        <t pn="section-3.2-1">
	  The ECDSA signature algorithm is defined in <xref target="DSS" format="default" sectionFormat="of" derivedContent="DSS"/>.  This specification defines the <tt>ES256K</tt>
	  algorithm identifier, which is used to specify the use of ECDSA with
	  the secp256k1 curve and the SHA-256 <xref target="DSS" format="default" sectionFormat="of" derivedContent="DSS"/> cryptographic hash function.  Implementations
	  need to check that the key type is <tt>EC</tt> for JOSE or
	  <tt>EC2</tt> (2) for COSE and that the curve of the key is secp256k1
	  when creating or verifying a signature.
        </t>
        <t pn="section-3.2-2">
	  The ECDSA secp256k1 SHA-256 digital signature is generated as follows:

        </t>
        <ol spacing="normal" type="1" start="1" pn="section-3.2-3">
          <li pn="section-3.2-3.1" derivedCounter="1.">
	      Generate a digital signature of the JWS Signing Input
	      or the COSE Sig_structure
	      using ECDSA secp256k1 SHA-256 with
	      the desired private key. The output will be the pair
	      (R, S), where R and S are 256-bit unsigned integers.
	    </li>
          <li pn="section-3.2-3.2" derivedCounter="2.">
	      Turn R and S into octet sequences in big-endian order,
	      with each array being 32 octets long.
	      The octet sequence representations <bcp14>MUST NOT</bcp14> be shortened
	      to omit any leading zero octets contained in the values.
	    </li>
          <li pn="section-3.2-3.3" derivedCounter="3.">
	      Concatenate the two octet sequences in the order R and then S.
	      (Note that many ECDSA implementations will directly produce
	      this concatenation as their output.)
	    </li>
          <li pn="section-3.2-3.4" derivedCounter="4.">
	      The resulting 64-octet sequence is the JWS Signature or COSE signature value.
	    </li>
        </ol>
        <t pn="section-3.2-4">
	  Implementations <bcp14>SHOULD</bcp14> use a deterministic algorithm
	  to generate the ECDSA nonce, k, such as the algorithm defined in
	  <xref target="RFC6979" format="default" sectionFormat="of" derivedContent="RFC6979"/>.  However, in situations
	  where devices are vulnerable to physical attacks, deterministic
	  ECDSA has been shown to be susceptible to fault injection attacks
	  <xref target="KUDELSKI17" format="default" sectionFormat="of" derivedContent="KUDELSKI17"/> <xref target="EURO-SP18" format="default" sectionFormat="of" derivedContent="EURO-SP18"/>.  Where this is a possibility,
	  implementations <bcp14>SHOULD</bcp14> implement appropriate
	  countermeasures.  Where there are specific certification
	  requirements (such as FIPS approval), implementors should check
	  whether deterministic ECDSA is an approved nonce generation method.
        </t>
        <t pn="section-3.2-5">
	  The ECDSA secp256k1 SHA-256 algorithm specified in this document uses these identifiers:
        </t>
        <table anchor="ec-algs" align="center" pn="table-2">
          <name slugifiedName="name-ecdsa-algorithm-values">ECDSA Algorithm Values</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Name</th>
              <th align="left" colspan="1" rowspan="1">Value</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
              <th align="left" colspan="1" rowspan="1">Recommended</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">ES256K</td>
              <td align="left" colspan="1" rowspan="1">-47</td>
              <td align="left" colspan="1" rowspan="1">ECDSA using secp256k1 curve and SHA-256</td>
              <td align="left" colspan="1" rowspan="1">No</td>
            </tr>
          </tbody>
        </table>
        <t pn="section-3.2-7">
	  When using a JWK or COSE_Key for this algorithm, the following checks are made:
        </t>
        <ul spacing="normal" bare="false" empty="false" pn="section-3.2-8">
          <li pn="section-3.2-8.1">
	      The <tt>kty</tt> field <bcp14>MUST</bcp14> be present, and
	      it <bcp14>MUST</bcp14> be <tt>EC</tt> for JOSE
	      or <tt>EC2</tt> for COSE.
	    </li>
          <li pn="section-3.2-8.2">
	      The <tt>crv</tt> field <bcp14>MUST</bcp14> be present, and
	      it <bcp14>MUST</bcp14> represent the <tt>secp256k1</tt> elliptic curve.
	    </li>
          <li pn="section-3.2-8.3">
	      If the <tt>alg</tt> field is present,
	      it <bcp14>MUST</bcp14> represent the <tt>ES256K</tt> algorithm.
	    </li>
          <li pn="section-3.2-8.4">
	      If the <tt>key_ops</tt> field is present,
	      it <bcp14>MUST</bcp14> include <tt>sign</tt> when creating an ECDSA signature.
	    </li>
          <li pn="section-3.2-8.5">
	      If the <tt>key_ops</tt> field is present,
	      it <bcp14>MUST</bcp14> include <tt>verify</tt> when verifying an ECDSA signature.
	    </li>
          <li pn="section-3.2-8.6">
	      If the JWK <tt>use</tt> field is present,
	      its value <bcp14>MUST</bcp14> be <tt>sig</tt>.
	    </li>
        </ul>
      </section>
      <section anchor="other-uses-of-secp256k1" numbered="true" toc="include" removeInRFC="false" pn="section-3.3">
        <name slugifiedName="name-other-uses-of-the-secp256k1">Other Uses of the secp256k1 Elliptic Curve</name>
        <t pn="section-3.3-1">
	  This specification defines how to use the secp256k1 curve for ECDSA
	  signatures for both JOSE and COSE implementations.  While in theory
	  the curve could also be used for ECDH-ES key agreement, it is beyond
	  the scope of this specification to state whether this is or is not
	  advisable.  Thus, whether or not to recommend its use with ECDH-ES is left
	  for experts to decide in future specifications.
        </t>
        <t pn="section-3.3-2">
	  When used for ECDSA, the secp256k1 curve <bcp14>MUST</bcp14> be used
	  only with the <tt>ES256K</tt> algorithm identifier and not any
	  others, including not with the COSE <tt>ES256</tt> identifier.  Note
	  that the <tt>ES256K</tt> algorithm identifier needed to be
	  introduced for JOSE to sign with the secp256k1 curve because the
	  JOSE <tt>ES256</tt> algorithm is defined to be used only with the
	  P-256 curve.  The COSE treatment of how to sign with secp256k1 is
	  intentionally parallel to that for JOSE, where the secp256k1 curve
	  <bcp14>MUST</bcp14> be used with the <tt>ES256K</tt> algorithm
	  identifier.
        </t>
      </section>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="cose-algorithms-registrations" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-cose-algorithms-registratio">COSE Algorithms Registrations</name>
        <t pn="section-4.1-1">
	  IANA has registered the following values in the
	  "COSE Algorithms" registry <xref target="IANA.COSE.Algorithms" format="default" sectionFormat="of" derivedContent="IANA.COSE.Algorithms"/>.
        </t>
        <dl spacing="compact" newline="false" pn="section-4.1-2">
          <dt pn="section-4.1-2.1">Name:</dt>
          <dd pn="section-4.1-2.2">RS256
	    </dd>
          <dt pn="section-4.1-2.3">Value:</dt>
          <dd pn="section-4.1-2.4">-257
	    </dd>
          <dt pn="section-4.1-2.5">Description:</dt>
          <dd pn="section-4.1-2.6">RSASSA-PKCS1-v1_5 using SHA-256
	    </dd>
          <dt pn="section-4.1-2.7">Change Controller:
          </dt>
          <dd pn="section-4.1-2.8">IESG
	    </dd>
          <dt pn="section-4.1-2.9">Reference:</dt>
          <dd pn="section-4.1-2.10">
            <xref target="RSASSA-PKCS1-v1_5" format="default" sectionFormat="of" derivedContent="Section 2"/> of RFC 8812
	    </dd>
          <dt pn="section-4.1-2.11">Recommended:</dt>
          <dd pn="section-4.1-2.12"> No
	    </dd>
        </dl>
        <dl spacing="compact" newline="false" pn="section-4.1-3">
          <dt pn="section-4.1-3.1">
	      Name:</dt>
          <dd pn="section-4.1-3.2">RS384
	    </dd>
          <dt pn="section-4.1-3.3">
	      Value:</dt>
          <dd pn="section-4.1-3.4">-258
	    </dd>
          <dt pn="section-4.1-3.5">
	      Description:</dt>
          <dd pn="section-4.1-3.6">RSASSA-PKCS1-v1_5 using SHA-384
	    </dd>
          <dt pn="section-4.1-3.7">Change Controller:
          </dt>
          <dd pn="section-4.1-3.8">IESG
	    </dd>
          <dt pn="section-4.1-3.9">
	      Reference:</dt>
          <dd pn="section-4.1-3.10">
            <xref target="RSASSA-PKCS1-v1_5" format="default" sectionFormat="of" derivedContent="Section 2"/> of RFC 8812
	    </dd>
          <dt pn="section-4.1-3.11">
	      Recommended:</dt>
          <dd pn="section-4.1-3.12">No
	    </dd>
        </dl>
        <dl spacing="compact" newline="false" pn="section-4.1-4">
          <dt pn="section-4.1-4.1">
	      Name:</dt>
          <dd pn="section-4.1-4.2">RS512
	    </dd>
          <dt pn="section-4.1-4.3">
	      Value:</dt>
          <dd pn="section-4.1-4.4">-259
	    </dd>
          <dt pn="section-4.1-4.5">
	      Description:</dt>
          <dd pn="section-4.1-4.6">RSASSA-PKCS1-v1_5 using SHA-512
	    </dd>
          <dt pn="section-4.1-4.7">Change Controller:
          </dt>
          <dd pn="section-4.1-4.8">IESG
	    </dd>
          <dt pn="section-4.1-4.9">
	      Reference:</dt>
          <dd pn="section-4.1-4.10">
            <xref target="RSASSA-PKCS1-v1_5" format="default" sectionFormat="of" derivedContent="Section 2"/> of RFC 8812
	    </dd>
          <dt pn="section-4.1-4.11">
	      Recommended:</dt>
          <dd pn="section-4.1-4.12"> No
	    </dd>
        </dl>
        <dl spacing="compact" newline="false" pn="section-4.1-5">
          <dt pn="section-4.1-5.1">
	      Name:</dt>
          <dd pn="section-4.1-5.2">RS1
	    </dd>
          <dt pn="section-4.1-5.3">
	      Value:</dt>
          <dd pn="section-4.1-5.4">-65535
	    </dd>
          <dt pn="section-4.1-5.5">
	      Description:</dt>
          <dd pn="section-4.1-5.6">RSASSA-PKCS1-v1_5 using SHA-1
	    </dd>
          <dt pn="section-4.1-5.7">Change Controller:
          </dt>
          <dd pn="section-4.1-5.8">IESG
	    </dd>
          <dt pn="section-4.1-5.9">
	      Reference:</dt>
          <dd pn="section-4.1-5.10">
            <xref target="RSASSA-PKCS1-v1_5" format="default" sectionFormat="of" derivedContent="Section 2"/> of RFC 8812
	    </dd>
          <dt pn="section-4.1-5.11">
	      Recommended:</dt>
          <dd pn="section-4.1-5.12">Deprecated
	    </dd>
        </dl>
        <dl spacing="compact" newline="false" pn="section-4.1-6">
          <dt pn="section-4.1-6.1">
	      Name:</dt>
          <dd pn="section-4.1-6.2">ES256K
	    </dd>
          <dt pn="section-4.1-6.3">
	      Value:</dt>
          <dd pn="section-4.1-6.4">-47
	    </dd>
          <dt pn="section-4.1-6.5">
	      Description:</dt>
          <dd pn="section-4.1-6.6">ECDSA using secp256k1 curve and SHA-256
	    </dd>
          <dt pn="section-4.1-6.7">Change Controller:
          </dt>
          <dd pn="section-4.1-6.8">IESG
	    </dd>
          <dt pn="section-4.1-6.9">
	      Reference:</dt>
          <dd pn="section-4.1-6.10">
            <xref target="secp256k1_ECDSA" format="default" sectionFormat="of" derivedContent="Section 3.2"/> of RFC 8812
	    </dd>
          <dt pn="section-4.1-6.11">
	      Recommended:</dt>
          <dd pn="section-4.1-6.12">No
	    </dd>
        </dl>
      </section>
      <section anchor="cose-curve-registration" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-cose-elliptic-curves-regist">COSE Elliptic Curves Registrations</name>
        <t pn="section-4.2-1">
	  IANA has registered the following value in the
	  "COSE Elliptic Curves" registry <xref target="IANA.COSE.Curves" format="default" sectionFormat="of" derivedContent="IANA.COSE.Curves"/>.
        </t>
        <dl spacing="compact" newline="false" pn="section-4.2-2">
          <dt pn="section-4.2-2.1">
	      Name:</dt>
          <dd pn="section-4.2-2.2">secp256k1
	    </dd>
          <dt pn="section-4.2-2.3">
	      Value:</dt>
          <dd pn="section-4.2-2.4">8
	    </dd>
          <dt pn="section-4.2-2.5">
	      Key Type:</dt>
          <dd pn="section-4.2-2.6">EC2
	    </dd>
          <dt pn="section-4.2-2.7">
	      Description:</dt>
          <dd pn="section-4.2-2.8">SECG secp256k1 curve
	    </dd>
          <dt pn="section-4.2-2.9">
	      Change Controller:</dt>
          <dd pn="section-4.2-2.10">IESG
	    </dd>
          <dt pn="section-4.2-2.11">
	      Reference:</dt>
          <dd pn="section-4.2-2.12">
            <xref target="secp256k1_curve" format="default" sectionFormat="of" derivedContent="Section 3.1"/> of RFC 8812
	    </dd>
          <dt pn="section-4.2-2.13">
	      Recommended:</dt>
          <dd pn="section-4.2-2.14">No
	    </dd>
        </dl>
      </section>
      <section anchor="jose-algorithm-registration" numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-jose-algorithms-registratio">JOSE Algorithms Registrations</name>
        <t pn="section-4.3-1">
	  IANA has registered the following value in the
	  "JSON Web Signature and Encryption Algorithms" registry <xref target="IANA.JOSE.Algorithms" format="default" sectionFormat="of" derivedContent="IANA.JOSE.Algorithms"/>.
        </t>
        <dl spacing="compact" newline="false" pn="section-4.3-2">
          <dt pn="section-4.3-2.1">
	      Algorithm Name:</dt>
          <dd pn="section-4.3-2.2"> ES256K
	    </dd>
          <dt pn="section-4.3-2.3">
	      Algorithm Description:</dt>
          <dd pn="section-4.3-2.4"> ECDSA using secp256k1 curve and SHA-256
	    </dd>
          <dt pn="section-4.3-2.5">
	      Algorithm Usage Location(s):</dt>
          <dd pn="section-4.3-2.6"> alg
	    </dd>
          <dt pn="section-4.3-2.7">
	      JOSE Implementation Requirements:</dt>
          <dd pn="section-4.3-2.8"> Optional
	    </dd>
          <dt pn="section-4.3-2.9">
	      Change Controller:</dt>
          <dd pn="section-4.3-2.10"> IESG
	    </dd>
          <dt pn="section-4.3-2.11">
	      Reference:</dt>
          <dd pn="section-4.3-2.12">
            <xref target="secp256k1_ECDSA" format="default" sectionFormat="of" derivedContent="Section 3.2"/> of RFC 8812
	    </dd>
          <dt pn="section-4.3-2.13">
	      Algorithm Analysis Document(s):</dt>
          <dd pn="section-4.3-2.14">
            <xref target="SEC2" format="default" sectionFormat="of" derivedContent="SEC2"/>
          </dd>
        </dl>
      </section>
      <section anchor="jose-curve-registration" numbered="true" toc="include" removeInRFC="false" pn="section-4.4">
        <name slugifiedName="name-json-web-key-elliptic-curve">JSON Web Key Elliptic Curves Registrations</name>
        <t pn="section-4.4-1">
	  IANA has registered the following value in the
	  "JSON Web Key Elliptic Curve" registry <xref target="IANA.JOSE.Curves" format="default" sectionFormat="of" derivedContent="IANA.JOSE.Curves"/>.
        </t>
        <dl spacing="compact" newline="false" pn="section-4.4-2">
          <dt pn="section-4.4-2.1">
	      Curve Name:</dt>
          <dd pn="section-4.4-2.2"> secp256k1
	      </dd>
          <dt pn="section-4.4-2.3">
	      Curve Description:</dt>
          <dd pn="section-4.4-2.4"> SECG secp256k1 curve
	    </dd>
          <dt pn="section-4.4-2.5">
	      JOSE Implementation Requirements:</dt>
          <dd pn="section-4.4-2.6"> Optional
	    </dd>
          <dt pn="section-4.4-2.7">
	      Change Controller:</dt>
          <dd pn="section-4.4-2.8"> IESG
	    </dd>
          <dt pn="section-4.4-2.9">
	      Specification Document(s):</dt>
          <dd pn="section-4.4-2.10">
            <xref target="secp256k1_curve" format="default" sectionFormat="of" derivedContent="Section 3.1"/> of RFC 8812
	    </dd>
        </dl>
      </section>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <section anchor="KeySize-considerations" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-rsa-key-size-security-consi">RSA Key Size Security Considerations</name>
        <t pn="section-5.1-1">
	  The security considerations on key sizes for RSA algorithms
	  from <xref target="RFC8230" section="6.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8230#section-6.1" derivedContent="RFC8230"/> also apply to the RSA algorithms
	  in this specification.
        </t>
      </section>
      <section anchor="RSASSA-PKCS1-v1_5_SHA-2_considerations" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-rsassa-pkcs1-v1_5-with-sha-">RSASSA-PKCS1-v1_5 with SHA-2 Security Considerations</name>
        <t pn="section-5.2-1">
	  The security considerations on the use of RSASSA-PKCS1-v1_5 with SHA-2 hash functions
	  (SHA-256, SHA-384, and SHA-512)
	  from <xref target="RFC7518" section="8.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7518#section-8.3" derivedContent="RFC7518"/> also apply to their use
	  in this specification.
	  For that reason, these algorithms are registered as being "Not Recommended".
	  Likewise, the exponent restrictions described in
	   <xref target="RFC7518" section="8.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7518#section-8.3" derivedContent="RFC7518"/> also apply.
        </t>
      </section>
      <section anchor="RSASSA-PKCS1-v1_5_SHA-1_considerations" numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-rsassa-pkcs1-v1_5-with-sha-1">RSASSA-PKCS1-v1_5 with SHA-1 Security Considerations</name>
        <t pn="section-5.3-1">
	  The security considerations on the use of the SHA-1 hash function
	  from <xref target="RFC6194" format="default" sectionFormat="of" derivedContent="RFC6194"/> apply in this specification.
	  For that reason, the "RS1" algorithm is registered as "Deprecated".
	  Likewise, the exponent restrictions described in
	   <xref target="RFC7518" section="8.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7518#section-8.3" derivedContent="RFC7518"/> also apply.
        </t>
        <t pn="section-5.3-2">
	  A COSE algorithm identifier for this algorithm is nonetheless being
	  registered because deployed Trusted Platform Modules (TPMs) continue
	  to use it; therefore, WebAuthn implementations need a COSE algorithm
	  identifier for "RS1" when TPM attestations using this algorithm are
	  being represented.  New COSE applications and protocols <bcp14>MUST NOT</bcp14> use this algorithm.
        </t>
      </section>
      <section anchor="secp256k1_considerations" numbered="true" toc="include" removeInRFC="false" pn="section-5.4">
        <name slugifiedName="name-secp256k1-security-consider">secp256k1 Security Considerations</name>
        <t pn="section-5.4-1">
	  Care should be taken that a secp256k1 key is not mistaken for a P-256 <xref target="RFC7518" format="default" sectionFormat="of" derivedContent="RFC7518"/> key,
	  given that their representations are the same
	  except for the <tt>crv</tt> value.
	  As described in  <xref target="RFC8152" section="8.1.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8152#section-8.1.1" derivedContent="RFC8152"/>,
	  we currently do not have any way to deal with this
	  attack except to restrict the set of curves that can be used.
        </t>
        <t pn="section-5.4-2">
	  The procedures and security considerations described in the
	  <xref target="SEC1" format="default" sectionFormat="of" derivedContent="SEC1"/>, <xref target="SEC2" format="default" sectionFormat="of" derivedContent="SEC2"/>, and <xref target="DSS" format="default" sectionFormat="of" derivedContent="DSS"/>
	  specifications apply to implementations of this specification.
        </t>
        <t pn="section-5.4-3">
	  Timing side-channel attacks are possible if the implementation of scalar multiplication
	  over the curve does not execute in constant time.
        </t>
        <t pn="section-5.4-4">
	  There are theoretical weaknesses with this curve that could result in future attacks.
	  While these potential weaknesses are not unique to this curve,
	  they are the reason that this curve is registered as "Recommended: No".
        </t>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-6">
      <name slugifiedName="name-references">References</name>
      <references pn="section-6.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="DSS" quoteTitle="true" target="https://doi.org/10.6028/NIST.FIPS.186-4" derivedAnchor="DSS">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author>
              <organization showOnFrontPage="true">National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date month="July" year="2013"/>
          </front>
          <seriesInfo name="FIPS PUB" value="186-4"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.186-4"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <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="RFC6194" target="https://www.rfc-editor.org/info/rfc6194" quoteTitle="true" derivedAnchor="RFC6194">
          <front>
            <title>Security Considerations for the SHA-0 and SHA-1 Message-Digest Algorithms</title>
            <author initials="T." surname="Polk" fullname="T. Polk">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Chen" fullname="L. Chen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Turner" fullname="S. Turner">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="March"/>
            <abstract>
              <t>This document includes security considerations for the SHA-0 and SHA-1 message digest algorithm.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6194"/>
          <seriesInfo name="DOI" value="10.17487/RFC6194"/>
        </reference>
        <reference anchor="RFC7515" target="https://www.rfc-editor.org/info/rfc7515" quoteTitle="true" derivedAnchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="May"/>
            <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="RFC7517" target="https://www.rfc-editor.org/info/rfc7517" quoteTitle="true" derivedAnchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key.  This specification also defines a JWK Set JSON data structure that represents a set of JWKs.  Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC7518" target="https://www.rfc-editor.org/info/rfc7518" quoteTitle="true" derivedAnchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications.  It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="RFC8017" target="https://www.rfc-editor.org/info/rfc8017" quoteTitle="true" derivedAnchor="RFC8017">
          <front>
            <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
            <author initials="K." surname="Moriarty" fullname="K. Moriarty" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Kaliski" fullname="B. Kaliski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Jonsson" fullname="J. Jonsson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Rusch" fullname="A. Rusch">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="November"/>
            <abstract>
              <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
              <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series.  By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
        <reference anchor="RFC8152" target="https://www.rfc-editor.org/info/rfc8152" quoteTitle="true" derivedAnchor="RFC8152">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="July"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined 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>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8152"/>
          <seriesInfo name="DOI" value="10.17487/RFC8152"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <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>
        <reference anchor="RFC8230" target="https://www.rfc-editor.org/info/rfc8230" quoteTitle="true" derivedAnchor="RFC8230">
          <front>
            <title>Using RSA Algorithms with CBOR Object Signing and Encryption (COSE) Messages</title>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="September"/>
            <abstract>
              <t>The CBOR Object Signing and Encryption (COSE) specification defines cryptographic message encodings using Concise Binary Object Representation (CBOR).  This specification defines algorithm encodings and representations enabling RSA algorithms to be used for COSE messages.  Encodings are specified for the use of RSA Probabilistic Signature Scheme (RSASSA-PSS) signatures, RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP) encryption, and RSA keys.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8230"/>
          <seriesInfo name="DOI" value="10.17487/RFC8230"/>
        </reference>
        <reference anchor="SEC1" target="https://www.secg.org/sec1-v2.pdf" quoteTitle="true" derivedAnchor="SEC1">
          <front>
            <title>SEC 1: Elliptic Curve Cryptography</title>
            <author>
              <organization showOnFrontPage="true">Standards for Efficient Cryptography Group</organization>
            </author>
            <date month="May" year="2009"/>
          </front>
          <seriesInfo name="Version" value="2.0"/>
        </reference>
        <reference anchor="SEC2" target="https://www.secg.org/sec2-v2.pdf" quoteTitle="true" derivedAnchor="SEC2">
          <front>
            <title>SEC 2: Recommended Elliptic Curve Domain Parameters</title>
            <author>
              <organization showOnFrontPage="true">Standards for Efficient Cryptography Group</organization>
            </author>
            <date month="January" year="2010"/>
          </front>
          <seriesInfo name="Version" value="2.0"/>
        </reference>
      </references>
      <references pn="section-6.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="CTAP" target="https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html" quoteTitle="true" derivedAnchor="CTAP">
          <front>
            <title>Client to Authenticator Protocol (CTAP)</title>
            <author initials="C." surname="Brand" fullname="Christiaan Brand">
              <organization showOnFrontPage="true">Google</organization>
              <address>
                <email>cbrand@google.com</email>
              </address>
            </author>
            <author initials="A." surname="Czeskis" fullname="Alexei Czeskis">
              <organization showOnFrontPage="true">Google</organization>
              <address>
                <email>aczeskis@google.com</email>
              </address>
            </author>
            <author initials="J." surname="Ehrensvärd" fullname="Jakob Ehrensvärd">
              <organization showOnFrontPage="true">Yubico</organization>
              <address>
                <email>jakob@yubico.com</email>
              </address>
            </author>
            <author initials="M." surname="Jones" fullname="Michael B. Jones">
              <organization showOnFrontPage="true">Microsoft</organization>
              <address>
                <email>mbj@microsoft.com</email>
                <uri>http://self-issued.info/</uri>
              </address>
            </author>
            <author initials="A." surname="Kumar" fullname="Akshay Kumar">
              <organization showOnFrontPage="true">Microsoft</organization>
              <address>
                <email>akshayku@microsoft.com</email>
              </address>
            </author>
            <author initials="R." surname="Lindemann" fullname="Rolf Lindemann">
              <organization showOnFrontPage="true">Nok Nok Labs</organization>
              <address>
                <email>rolf@noknok.com</email>
              </address>
            </author>
            <author initials="A." surname="Powers" fullname="Adam Powers">
              <organization showOnFrontPage="true">FIDO Alliance</organization>
              <address>
                <email>adam@fidoalliance.org</email>
              </address>
            </author>
            <author initials="J." surname="Verrept" fullname="Johan Verrept">
              <organization showOnFrontPage="true">OneSpan</organization>
              <address>
                <email>johan.verrept@onespan.com</email>
              </address>
            </author>
            <date month="January" year="2019"/>
          </front>
          <refcontent>FIDO Alliance Proposed Standard</refcontent>
        </reference>
        <reference anchor="EURO-SP18" target="https://ieeexplore.ieee.org/document/8406609" quoteTitle="true" derivedAnchor="EURO-SP18">
          <front>
            <title>Attacking Deterministic Signature Schemes using Fault Attacks</title>
            <seriesInfo name="DOI" value="10.1109/EuroSP.2018.00031"/>
            <author fullname="Damian Poddebniak" surname="Poddebniak" initials="D.">
              <organization showOnFrontPage="true">Münster University of Applied Sciences</organization>
            </author>
            <author fullname="Juraj Somorovsky" surname="Somorovsky" initials="J.">
              <organization showOnFrontPage="true">Ruhr University Bochum</organization>
            </author>
            <author fullname="Sebastian Schinzel" surname="Schinzel" initials="S.">
              <organization showOnFrontPage="true">Münster University of Applied Sciences</organization>
            </author>
            <author fullname="Manfred Lochter" surname="Lochter" initials="M.">
              <organization showOnFrontPage="true">Federal Office for Information Security</organization>
            </author>
            <author fullname="Paul Rösler" surname="Rösler" initials="P.">
              <organization showOnFrontPage="true">Ruhr University Bochum</organization>
            </author>
            <date month="April" year="2018"/>
          </front>
          <refcontent>2018 IEEE European Symposium on Security and Privacy (EuroS&amp;P)
</refcontent>
        </reference>
        <reference anchor="IANA.COSE.Algorithms" target="https://www.iana.org/assignments/cose" quoteTitle="true" derivedAnchor="IANA.COSE.Algorithms">
          <front>
            <title>COSE Algorithms</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.COSE.Curves" target="https://www.iana.org/assignments/cose" quoteTitle="true" derivedAnchor="IANA.COSE.Curves">
          <front>
            <title>COSE Elliptic Curves</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.JOSE.Algorithms" target="https://www.iana.org/assignments/jose" quoteTitle="true" derivedAnchor="IANA.JOSE.Algorithms">
          <front>
            <title>JSON Web Signature and Encryption Algorithms</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.JOSE.Curves" target="https://www.iana.org/assignments/jose" quoteTitle="true" derivedAnchor="IANA.JOSE.Curves">
          <front>
            <title>JSON Web Key Elliptic Curve</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="KUDELSKI17" target="https://research.kudelskisecurity.com/2017/10/04/defeating-eddsa-with-faults/" quoteTitle="true" derivedAnchor="KUDELSKI17">
          <front>
            <title>How to Defeat Ed25519 and EdDSA Using Faults</title>
            <author fullname="Yolan Romailler" surname="Romailler" initials="Y.">
            </author>
            <date month="October" year="2017"/>
          </front>
          <refcontent>Kudelski Security Research</refcontent>
        </reference>
        <reference anchor="RFC6979" target="https://www.rfc-editor.org/info/rfc6979" quoteTitle="true" derivedAnchor="RFC6979">
          <front>
            <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <author initials="T." surname="Pornin" fullname="T. Pornin">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2013" month="August"/>
            <abstract>
              <t>This document defines a deterministic digital signature generation procedure.  Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein.  Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6979"/>
          <seriesInfo name="DOI" value="10.17487/RFC6979"/>
        </reference>
        <reference anchor="WebAuthn" target="https://www.w3.org/TR/2019/REC-webauthn-1-20190304/" quoteTitle="true" derivedAnchor="WebAuthn">
          <front>
            <title>Web Authentication: An API for accessing Public Key Credentials - Level 1</title>
            <author initials="D." surname="Balfanz" fullname="Dirk Balfanz">
              <organization showOnFrontPage="true">Google</organization>
              <address>
                <email>balfanz@google.com</email>
              </address>
            </author>
            <author initials="A." surname="Czeskis" fullname="Alexei Czeskis">
              <organization showOnFrontPage="true">Google</organization>
              <address>
                <email>aczeskis@google.com</email>
              </address>
            </author>
            <author initials="J." surname="Hodges" fullname="Jeff Hodges">
              <organization showOnFrontPage="true">Google</organization>
              <address>
                <email>Jeff.Hodges@paypal.com</email>
              </address>
            </author>
            <author initials="J.C." surname="Jones" fullname="J.C. Jones">
              <organization showOnFrontPage="true">Mozilla</organization>
              <address>
                <email>jc@mozilla.com</email>
              </address>
            </author>
            <author initials="M." surname="Jones" fullname="Michael B. Jones">
              <organization showOnFrontPage="true">Microsoft</organization>
              <address>
                <email>mbj@microsoft.com</email>
                <uri>http://self-issued.info/</uri>
              </address>
            </author>
            <author initials="A." surname="Kumar" fullname="Akshay Kumar">
              <organization showOnFrontPage="true">Microsoft</organization>
              <address>
                <email>akshayku@microsoft.com</email>
              </address>
            </author>
            <author initials="A." surname="Liao" fullname="Angelo Liao">
              <organization showOnFrontPage="true">Microsoft</organization>
              <address>
                <email>huliao@microsoft.com</email>
              </address>
            </author>
            <author initials="R." surname="Lindemann" fullname="Rolf Lindemann">
              <organization showOnFrontPage="true">Nok Nok Labs</organization>
              <address>
                <email>rolf@noknok.com</email>
              </address>
            </author>
            <author initials="E." surname="Lundberg" fullname="Emil Lundberg">
              <organization showOnFrontPage="true">Yubico</organization>
              <address>
                <email>emil@yubico.com</email>
              </address>
            </author>
            <date month="March" year="2019"/>
          </front>
          <refcontent>W3C Recommendation</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t pn="section-appendix.a-1">
	Thanks to
	<contact fullname="Roman Danyliw"/>,
		<contact fullname="Linda Dunbar"/>,
		<contact fullname="Stephen Farrell"/>,
		<contact fullname="John Fontana"/>,
		<contact fullname="Jeff Hodges"/>,
		<contact fullname="Kevin Jacobs"/>,
		<contact fullname="J.C. Jones"/>,
		<contact fullname="Benjamin Kaduk"/>,
		<contact fullname="Murray Kucherawy"/>,
		<contact fullname="Neil Madden"/>,
		<contact fullname="John Mattsson"/>,
		<contact fullname="Matthew Miller"/>,
		<contact fullname="Tony Nadalin"/>,
		<contact fullname="Matt Palmer"/>,
		<contact fullname="Eric Rescorla"/>,
		<contact fullname="Rich Salz"/>,
		<contact fullname="Jim Schaad"/>,
		<contact fullname="Goeran Selander"/>,
		<contact fullname="Wendy Seltzer"/>,
		<contact fullname="Sean Turner"/>,
	and
		<contact fullname="Samuel Weiler"/>
	for their roles in registering these algorithm identifiers.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author fullname="Michael B. Jones" surname="Jones" initials="M">
        <organization showOnFrontPage="true">Microsoft</organization>
        <address>
          <email>mbj@microsoft.com</email>
          <uri>https://self-issued.info/</uri>
        </address>
      </author>
    </section>
  </back>
</rfc>
