<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.20 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mattsson-tls-compact-ecc-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.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-03"/>
    <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>
    <date year="2023" month="January" day="19"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <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>
    <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 the old encdodings they reduce the size of the 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>
    </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 ecdsa_secp256r1_sha256 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 validation or for compatibility with APIs that do not support the full <xref target="SECG"/> format an uncompressed y-coordinate might be required (using the notation in <xref target="SECG"/>):</t>
        <ul spacing="normal">
          <li>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).</li>
          <li>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.</li>
        </ul>
        <t>For example: The curve P-256 has the parameters (using the notation in <xref target="RFC6090"/>)</t>
        <ul spacing="normal">
          <li>p = 2<sup>256</sup> - 2<sup>224</sup> + 2<sup>192</sup> + 2<sup>96</sup> - 1</li>
          <li>a = -3</li>
          <li>b = 410583637251521421293261297800472684091144410159937255
54835256314039467401291</li>
        </ul>
        <t>Given an example x:</t>
        <ul spacing="normal">
          <li>x = 115792089183396302095546807154740558443406795108653336
398970697772788799766525</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>y = 834387180070192806820075864918626005281451259964015754
16632522940595860276856</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>
        <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">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <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">
              <organization/>
            </author>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <author fullname="M. Pegourie-Gonnard" initials="M." surname="Pegourie-Gonnard">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <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>
        <name>Informative References</name>
        <reference anchor="RFC6090">
          <front>
            <title>Fundamental Elliptic Curve Cryptography Algorithms</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew">
              <organization/>
            </author>
            <author fullname="K. Igoe" initials="K." surname="Igoe">
              <organization/>
            </author>
            <author fullname="M. Salter" initials="M." surname="Salter">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <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>Mozilla</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Google</organization>
            </author>
            <date day="3" month="January" year="2023"/>
            <abstract>
              <t>   This document specifies a "compact" version of TLS and DTLS.  It is
   logically isomorphic to ordinary TLS, but saves space by trimming
   obsolete material, tighter encoding, a template-based specialization
   technique, and alternative cryptographic techniques. cTLS is not
   directly interoperable with TLS or DTLS, but it should eventually be
   possible for a single server port to offer cTLS alongside TLS or
   DTLS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-ctls-07"/>
        </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>
    <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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
/TdVV26vvS0AAA==

-->

</rfc>
