<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mattsson-tls-compact-ecc-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <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-06"/>
    <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="2024" month="February" 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"/>,
and
<contact fullname="Erik Thormarker"/>
for their valuable comments and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Ysik6trfAL4J2uwsLgAA

-->

</rfc>
