<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.1 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mattsson-tls-compact-ecc-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.1 -->
  <front>
    <title abbrev="Compact ECDSA and ECDHE">Compact ECDHE and ECDSA Encodings for TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-mattsson-tls-compact-ecc-05"/>
    <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization abbrev="Ericsson">Ericsson AB</organization>
      <address>
        <postal>
          <street>SE-164 80 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization/>
      <address>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <date year="2023" month="October" day="23"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 75?>

<t>The encodings used in the ECDHE groups secp256r1, secp384r1, and secp521r1 and the ECDSA signature algorithms ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, and ecdsa_secp521r1_sha512 have significant overhead and the ECDSA encoding produces variable-length signatures. This document defines new optimal fixed-length encodings and registers new ECDHE groups and ECDSA signature algorithms using these new encodings. The new encodings reduce the size of the ECDHE groups with 33, 49, and 67 bytes and the ECDSA algorithms with an average of 7 bytes. These new encodings also work in DTLS 1.3 and are especially useful in cTLS.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://emanjon.github.io/draft-mattsson-tls-compact-ecc/draft-mattsson-tls-compact-ecc.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mattsson-tls-compact-ecc/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security Working Group mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/emanjon/draft-mattsson-tls-compact-ecc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The encodings used in the ECDHE groups secp256r1, secp384r1, and secp521r1 and the ECDSA signature algorithms ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, and ecdsa_secp521r1_sha512 have significant overhead and the ECDSA encodings produces variable-length signatures. This document defines new optimal fixed-length encodings and registers new ECDHE groups and ECDSA signature algorithms using these new encodings. The new encodings reduce the size of the ECDHE groups with 33, 49, and 67 bytes and the ECDSA algorithms with an average of 7 bytes. These new encodings also work in DTLS 1.3 <xref target="RFC9147"/> and are especially useful in cTLS <xref target="I-D.ietf-tls-ctls"/>. When secp256r1 and ecdsa_secp256r1_sha256 are used as a replacement for the old encodings they reduce the size of a mutually authenticated TLS handshake with on average 80 bytes. The new encodings have the same security properties and requirements as the old encodings.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="compact-ecdhe-encoding">
      <name>Compact ECDHE Encoding</name>
      <t>The encoding specified in <xref target="RFC8446"/> of the ECDHE groups secp256r1, secp384r1, and secp521r1 <xref target="RFC8422"/> have significant overhead. This document specifies a new optimal fixed-length encoding for the groups. The new encoding is defined as a compression of the UncompressedPointRepresentation structure. Given a UncompressedPointRepresentation structure <xref target="RFC8446"/></t>
      <artwork><![CDATA[
      struct {
          uint8 legacy_form = 4;
          opaque X[coordinate_length];
          opaque Y[coordinate_length];
      } UncompressedPointRepresentation;
]]></artwork>
      <t>the legacy_form and Y field are omitted to create a CompactRepresentation structure.</t>
      <artwork><![CDATA[
      struct {
          opaque X[coordinate_length];
      } CompactRepresentation;
]]></artwork>
      <t>The resulting groups are called secp256r1_compact, secp384r1_compact, and secp521r1_compact. The new encodings have CompactRepresentation structures of length 32, 48, and 66 bytes, and reduce the size with 33, 49, and 67 bytes respectively. For secp256r1_compact, secp384r1_compact, and secp521r1_compact the opaque key_exchange field contains the serialized value of the CompactRepresentation struct.</t>
      <table anchor="ecdhe-table">
        <name>Compact ECDHE Groups</name>
        <thead>
          <tr>
            <th align="right">Value</th>
            <th align="left">Description</th>
            <th align="right">Recommended</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD1</td>
            <td align="left">secp256r1_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
          <tr>
            <td align="right">TBD2</td>
            <td align="left">secp384r1_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
          <tr>
            <td align="right">TBD3</td>
            <td align="left">secp521r1_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
        </tbody>
      </table>
      <t>The difference between compact representation <xref target="RFC6090"/> and point compression <xref target="SECG"/>) is that point compression also communicates the sign bit of the y-coordinate along with the x-coordinate while compact representation only transmits the x-coordinate.</t>
      <section anchor="example-compact-ecdhe-encoding">
        <name>Example Compact ECDHE Encoding</name>
        <t>The following shows an example compact ECDHE encoding. <xref target="ecdhe-old"/> shows a 65 bytes secp256r1 UncompressedPointRepresentation structure.</t>
        <figure anchor="ecdhe-old">
          <name>secp256r1</name>
          <artwork><![CDATA[
          04 A6 DA 73 92 EC 59 1E 17 AB FD 53 59 64 B9 98
          94 D1 3B EF B2 21 B3 DE F2 EB E3 83 0E AC 8F 01
          51 81 26 77 C4 D6 D2 23 7E 85 CF 01 D6 91 0C FB
          83 95 4E 76 BA 73 52 83 05 34 15 98 97 E8 06 57
          80
]]></artwork>
        </figure>
        <t><xref target="ecdhe-new"/> shows the 32 bytes secp256r1_compact CompactRepresentation structure encoding of the same key share.</t>
        <figure anchor="ecdhe-new">
          <name>secp256r1_compact</name>
          <artwork><![CDATA[
          A6 DA 73 92 EC 59 1E 17 AB FD 53 59 64 B9 98 94
          D1 3B EF B2 21 B3 DE F2 EB E3 83 0E AC 8F 01 51
]]></artwork>
        </figure>
      </section>
      <section anchor="implementation-considerations-for-compact-representation">
        <name>Implementation Considerations for Compact Representation</name>
        <t>For compatibility with APIs a compressed y-coordinate might be required. For compatibility with APIs that do not support the full <xref target="SECG"/> format an uncompressed y-coordinate might be required. For point validation an uncompressed y-coordinate is required. Using the notation in <xref target="SECG"/>:</t>
        <ul spacing="normal">
          <li>
            <t>If a compressed y-coordinate is required, then the value ~yp set to zero can be used. The compact representation described above can in such a case be transformed into the SECG point compressed format by prepending X with the single byte 0x02 (i.e., M = 0x02 || X).</t>
          </li>
          <li>
            <t>If an uncompressed y-coordinate is required, then a y-coordinate has to be calculated following Section 2.3.4 of <xref target="SECG"/> or Appendix C of <xref target="RFC6090"/>. Any of the square roots (see <xref target="SECG"/> or <xref target="RFC6090"/>) can be used. The uncompressed SECG format is M = 0x04 || X || Y.</t>
          </li>
        </ul>
        <t>For example: The curve P-256 has the parameters (using the notation in <xref target="RFC6090"/>)</t>
        <ul spacing="normal">
          <li>
            <t>p = 2<sup>256</sup> − 2<sup>224</sup> + 2<sup>192</sup> + 2<sup>96</sup> − 1</t>
          </li>
          <li>
            <t>a = -3</t>
          </li>
          <li>
            <t>b = 410583637251521421293261297800472684091144410159937255
54835256314039467401291</t>
          </li>
        </ul>
        <t>Given an example x:</t>
        <ul spacing="normal">
          <li>
            <t>x = 115792089183396302095546807154740558443406795108653336
398970697772788799766525</t>
          </li>
        </ul>
        <t>we can calculate y as the square root w = (x<sup>3</sup> + a <contact fullname="⋅"/> x + b)<sup>((p + 1)/4)</sup> (mod p)</t>
        <ul spacing="normal">
          <li>
            <t>y = 834387180070192806820075864918626005281451259964015754
16632522940595860276856</t>
          </li>
        </ul>
        <t>Note that this does not guarantee that (x, y) is on the correct elliptic curve. A full validation according to Section 5.6.2.3.3 of <xref target="SP-800-56A"/> is done by also checking that 0 <contact fullname="≤"/> x &lt; p and that y<sup>2</sup> <contact fullname="≡"/> x<sup>3</sup> + a <contact fullname="⋅"/> x + b (mod p). The implementation <bcp14>MUST</bcp14> perform public-key validation.</t>
      </section>
    </section>
    <section anchor="compact-ecdsa-encoding">
      <name>Compact ECDSA Encoding</name>
      <t>The variable-length encoding of the ECDSA signature algorithms ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, and ecdsa_secp521r1_sha512 specified in <xref target="RFC8446"/> have significant overhead.</t>
      <t>This document specifies a new optimal fixed-length encoding for the algorithms. The new encoding is defined as a compression of the DER-encoded ECDSA-Sig-Value structure. Given a DER-encoded ECDSA-Sig-Value structure <xref target="RFC8422"/></t>
      <artwork><![CDATA[
      Ecdsa-Sig-Value ::= SEQUENCE {
          r       INTEGER,
          s       INTEGER
      }
]]></artwork>
      <t>the SEQUENCE type, INTEGER type, and length fields are omitted and if necessary the two INTEGER value fields are truncated (at most a single zero byte) or left padded with zeroes to the fixed length L. For secp256r1, secp384r1, and secp521r1, L is 32, 48, and 66 bytes respectively. The resulting signatures are called ecdsa_secp256r1_sha256_compact, ecdsa_secp384r1_sha384_compact, and ecdsa_secp521r1_sha512_compact and has length 64, 96, and 132 bytes respectively. The new encodings reduce the size of the signatures with an average of 7 bytes. For secp256r1_compact, secp384r1_compact, and secp521r1_compact the opaque signature field contains the compressed Ecdsa-Sig-Value.</t>
      <table anchor="ecdsa-table">
        <name>Compact ECDSA Signature Algorithms</name>
        <thead>
          <tr>
            <th align="right">Value</th>
            <th align="left">Description</th>
            <th align="right">Recommended</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD4</td>
            <td align="left">ecdsa_secp256r1_sha256_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
          <tr>
            <td align="right">TBD5</td>
            <td align="left">ecdsa_secp384r1_sha384_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
          <tr>
            <td align="right">TBD6</td>
            <td align="left">ecdsa_secp521r1_sha512_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
        </tbody>
      </table>
      <section anchor="example-compact-ecdsa-encoding">
        <name>Example Compact ECDSA Encoding</name>
        <t>The following shows an example compact ECDSA encoding. <xref target="ecdsa-old"/> shows a 71 bytes DER encoded ecdsa_secp256r1_sha256 ECDSA-Sig-Value structure. The values on the left are the ASN.1 tag (in hexadecimal) and the length (in decimal).</t>
        <figure anchor="ecdsa-old">
          <name>ecdsa_secp256r1_sha256</name>
          <artwork><![CDATA[
30  69: SEQUENCE {
02  33:  INTEGER
          00 D7 A4 D3 4B D5 4F 55 FE E1 A8 96 25 67 8C 3D
          D5 E5 F6 0D AC 73 EC 94 0C 5C 7B 93 04 A0 20 84
          A9
02  32:  INTEGER
          28 9F 59 5E D4 88 B9 AC 68 9A 3D 19 2B 1A 8B B3
          8F 34 AF 78 74 C0 59 C9 80 6A 1F 38 26 93 53 E8
          }
]]></artwork>
        </figure>
        <t><xref target="ecdsa-new"/> shows the 64 bytes ecdsa_secp256r1_sha256_compact encoding of the same signature.</t>
        <figure anchor="ecdsa-new">
          <name>ecdsa_secp256r1_sha256_compact</name>
          <artwork><![CDATA[
          D7 A4 D3 4B D5 4F 55 FE E1 A8 96 25 67 8C 3D D5
          E5 F6 0D AC 73 EC 94 0C 5C 7B 93 04 A0 20 84 A9
          28 9F 59 5E D4 88 B9 AC 68 9A 3D 19 2B 1A 8B B3
          8F 34 AF 78 74 C0 59 C9 80 6A 1F 38 26 93 53 E8
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The new encodings are just encodings and have the same security properties and security requirements as the old encodings. Compact representation of a ECDHE key share produces the same shared secret as the uncompressed encoding and does not change any requirements on point validation, the peers <bcp14>MUST</bcp14> validate each other's public key shares.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to update the TLS Supported Groups registry <xref target="RFC8447"/> under the Transport Layer Security (TLS) Parameters heading with the contents of <xref target="ecdhe-table"/>.</t>
      <t>IANA is requested to update the TLS SignatureScheme registry <xref target="RFC8447"/> under the Transport Layer Security (TLS) Parameters heading with the contents of <xref target="ecdsa-table"/>.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8422">
          <front>
            <title>Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS) Versions 1.2 and Earlier</title>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="M. Pegourie-Gonnard" initials="M." surname="Pegourie-Gonnard"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes key exchange algorithms based on Elliptic Curve Cryptography (ECC) for the Transport Layer Security (TLS) protocol. In particular, it specifies the use of Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) key agreement in a TLS handshake and the use of the Elliptic Curve Digital Signature Algorithm (ECDSA) and Edwards-curve Digital Signature Algorithm (EdDSA) as authentication mechanisms.</t>
              <t>This document obsoletes RFC 4492.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8422"/>
          <seriesInfo name="DOI" value="10.17487/RFC8422"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8447">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy. These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6090">
          <front>
            <title>Fundamental Elliptic Curve Cryptography Algorithms</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="K. Igoe" initials="K." surname="Igoe"/>
            <author fullname="M. Salter" initials="M." surname="Salter"/>
            <date month="February" year="2011"/>
            <abstract>
              <t>This note describes the fundamental algorithms of Elliptic Curve Cryptography (ECC) as they were defined in some seminal references from 1994 and earlier. These descriptions may be useful for implementing the fundamental algorithms without using any of the specialized methods that were developed in following years. Only elliptic curves defined over fields of characteristic greater than three are in scope; these curves are those used in Suite B. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6090"/>
          <seriesInfo name="DOI" value="10.17487/RFC6090"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="I-D.ietf-tls-ctls">
          <front>
            <title>Compact TLS 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Windy Hill Systems, LLC</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Google</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   This document specifies a "compact" version of TLS 1.3 and DTLS 1.3.
   It saves bandwidth by trimming obsolete material, tighter encoding, a
   template-based specialization technique, and alternative
   cryptographic techniques. cTLS is not directly interoperable with TLS
   1.3 or DTLS 1.3 since the over-the-wire framing is different.  A
   single server can, however, offer cTLS alongside TLS or DTLS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-ctls-09"/>
        </reference>
        <reference anchor="SECG" target="https://www.secg.org/sec1-v2.pdf">
          <front>
            <title>Standards for Efficient Cryptography 1 (SEC 1)</title>
            <author>
              <organization/>
            </author>
            <date year="2009" month="May"/>
          </front>
        </reference>
        <reference anchor="SP-800-56A" target="https://doi.org/10.6028/NIST.SP.800-56Ar3">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography</title>
            <author initials="E." surname="Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-56A Revision 3"/>
        </reference>
      </references>
    </references>
    <?line 243?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors want to thank
<contact fullname="Dan Brown"/>,
<contact fullname="Scott Fluhrer"/>,
<contact fullname="Erik Thormarker"/>,
and
<contact fullname="Hannes Tschofenig"/>
for their valuable comments and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
INRRgi1SyO28yZ2NSdkMmAcpHJHsKu0VO7RuRRkr3hz7WS9gMV9inReH/EB/
/fO/VTDLKWG/KiFm29qAtOtoJpYMsGTTxsOAqw/TcH3bs1uWayLHcSzTatuW
h78t3zCcluX5jtE2TcfBTNNtt3mmq7mOb7ugyDYdw247XssxgGJqWllRrQLy
nbSfO2xlmm6rbRl+2/Rtu+3ZhmW0XdfxfKNlug5WcF0UVrZjeK22axq+59q2
7Wl222+3DK/darWslu+32u2W52FvTbtVZrFUIVpUTZea9OkWW+/dSVbYS9YE
YPTHv/7rn+6hD3d4H+zLCXt7c7yY+4fOfjl1b5YgtZKiWGAh33Zsv2WCNS0D
rPYNz7fw7Pqeg2N5lmcYruWbjmta4JUHrrgt19FMz7Mt17LaOGQbkw2r5fmu
p2lvklwo31h2WLhBCaLHoB9VtSgH9+4OaCHTuEQ5lzBJUxgJiemU8+VQaRss
QDnUuhsMQ2l2Yza4yrBc3dPZuOzSuJbXUGCHJCNmT1AmhxMRXitVBSWGZNy/
/Jdi3Avop+pBYmihVLJknJz2n3LaU7yvmKysL1oPZLKdMxepLETn8nqpyYF8
dUR9oyNSu/FX6eJmj3gzOfhlmtw72zG7WylM/t/fS1kd5+f1U3r9i6acL8q2
d/MyGjdVzball/Ks6fVe0lPJWJ/5WVuk03kJr/z7d/03x/21fkFa/p6+uep/
3b84qA1l60NV9+DxFshyE/6C4aDCLd9Y0iXHZSmcrXVGeDQagdUheBmkC8nI
/DZZLqKygxomOBOrLvUebGmWZEiDqqAsMweOzPscvKZihEouGDKDZfjmYSED
qsyoWBkq0s42GgC7u3sHdMbKsK0BsdFRWG+hrC5c6m2U7Xaz6jVst5/1XsR2
O1qWADyF42p5Ug/W1/YUprmsHB5S/qzrl9qhHrtJ+R/sray8z5bGSi0d2TCG
n98+cQB8XEqPN0bcNfxtUnwc31vD3yrhJ7os4MOuLgvc+eWSod2l/9vSc9ne
cXgQQp7XcahdUZYdB9C43nFomaVmwk1S5SZ33Ic94myvqgJjmRFIryAdCV66
l290k/JgjCye70rugiEiB0LF/vLKsDQbHq/GHimLbYPIa3fqfhclAdl2Z9On
yq6HQT0Uyg71bHKOCLrinJDr0kmf+iZ1US57ZLncsfSPye7VS2eX+pjnkdHj
EhnVN0rvtsOdChevR9S2ZU/FIMsgv150d9uKImsrRRb2POGK3e0TVN/3uW7H
Bh7gXZBAZpusIzK75B+hYK93Nk6499E9oZZPLYeODV7luM23hV6XTIz63GsB
XS6IrXdwdkeXlQLXWiLblWDZH8Hkzf6I55S69IQdb22GLB3Os5ohnyNOTKhh
fo44WYj/GzJ7Wk61BszjzGZ5IR2tvn/c6MMoZ7Jx9Q6b/aHI8o3vD55347yE
P331vPRvm11Zbm2odumyQbb6vmJFAcPlhqnIqx3WKuWlmjFhy0qmvC4I4g0a
sfNmy+ZA1ciCy2OZ9pdDgkQQTijBaPqPWVkErIhVt+qn3TfdB9yWwLIbIbLy
yqqYyzV5L/4g4FJ1ozCmGvPllx/I2aoknT9/KBBHVTq961NX2sNq+3S+KvE5
h4/qrXIO6urwo2VDWoaw+3v9mcRWVqu+3vslaa3CraSVP0MaBOE1c74bXsfJ
LX8ZLCULq1HfL4vhy8YIJaSo7jbUh39IqbjIkdlqEF/Du33sIZwepcltjJLw
gAGXYZLndDItJqlIK2A/ja4R+LgVwx8ISjBUjYcefI+KQa2sf6JURkqZKaiM
KFe2MxJiyGfQtb8BW8QLm0UuAAA=

-->

</rfc>
