<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3174.xml">
<!ENTITY RFC3526 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3526.xml">
<!ENTITY RFC4250 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4250.xml">
<!ENTITY RFC4251 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4251.xml">
<!ENTITY RFC4253 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4253.xml">
<!ENTITY RFC4419 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4419.xml">
<!ENTITY RFC4432 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4432.xml">
<!ENTITY RFC4462 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4462.xml">
<!ENTITY RFC5656 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5656.xml">
<!ENTITY RFC7296 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7296.xml">
<!ENTITY RFC6194 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6194.xml">
<!ENTITY NEWMODP PUBLIC '' 'http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-curdle-ssh-modp-dh-sha2-07.xml'>
<!ENTITY SSHCURVES PUBLIC '' 'http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-curdle-ssh-curves-05.xml'>
<!ENTITY NEWGSSAPI PUBLIC '' 'http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-curdle-gss-keyex-sha2-02.xml'>
<!ENTITY NEW4419 PUBLIC '' 'http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-curdle-ssh-dh-group-exchange-05.xml'>
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="std"
     docName="draft-ietf-curdle-ssh-kex-sha2-09"
     updates="4250"
     ipr="trust200902">
 <front>

   <title abbrev="KEX Method Updates/Recommendations for SSH">
     Key Exchange (KEX) Method Updates and Recommendations for Secure
     Shell (SSH)</title>
    <author initials="M. D." surname="Baushke" fullname="Mark D.
    Baushke">
      <organization>Juniper Networks, Inc.</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089-1228</code>
          <country>US</country>
        </postal>
        <email>mdb@juniper.net</email>
        <uri>http://www.juniper.net/</uri>
      </address>
    </author>
   <date year="2017" />

   <workgroup>Internet Engineering Task Force</workgroup>

   <abstract>
     <t>
       This document is intended to update the recommended set of key
       exchange methods for use in the Secure Shell (SSH) protocol to
       meet evolving needs for stronger security. This document
       updates RFC 4250.
     </t>

   </abstract>

 </front>

 <middle>

   <section title="Overview and Rationale">
     <t>
       Secure Shell (SSH) is a common protocol for secure
       communication on the Internet. In <xref target="RFC4253"/>, SSH
       originally defined two Key Exchange Method Names that MUST be
       implemented. Over time, what was once considered secure, is no
       longer considered secure. The purpose of this RFC is to
       recommend that some published key exchanges be deprecated as
       well as recommending some that SHOULD and one that MUST be
       adopted. This document updates <xref target="RFC4250"/>.
     </t>

     <t>
       This document adds recommendations for adoption of Key Exchange
       Methods which MUST, SHOULD, MAY, SHOULD NOT, and MUST NOT be
       implemented. New key exchange methods will use the SHA-2 family
       of hashes and are drawn from these ssh-curves from <xref
       target="I-D.ietf-curdle-ssh-curves"/> and new-modp from the
       <xref target="I-D.ietf-curdle-ssh-modp-dh-sha2"/> and gss-keyex
       <xref target="I-D.ietf-curdle-gss-keyex-sha2"/>.
     </t>

     <t>
       [TO BE REMOVED: Please send comments on this draft to curdle@ietf.org.]
     </t>

   </section>

   <section title="Requirements Language">

     <t>
       The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
       NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
       "OPTIONAL" in this document are to be interpreted as described
       in <xref target="RFC2119">RFC 2119</xref>.
     </t>

   </section>

   <section title="Key Exchange Methods">

     <t>
       This memo adopts the style and conventions of <xref
       target="RFC4253"/> in specifying how the use of data key
       exchange is indicated in SSH.
     </t>

     <t>
       This RFC also collects Key Exchange Method Names in various
       existing RFCs <xref target="RFC4253"/>, <xref
       target="RFC4419"/>, <xref target="RFC4432"/>, <xref
       target="RFC4462"/>, <xref target="RFC5656"/>, <xref
       target="I-D.ietf-curdle-ssh-modp-dh-sha2"/>, <xref
       target="I-D.ietf-curdle-gss-keyex-sha2"/>, and <xref
       target="I-D.ietf-curdle-ssh-curves"/> and provides a suggested
       suitability for implementation of MUST, SHOULD, SHOULD NOT, and
       MUST NOT. Any method not explicitly listed, MAY be implemented.
     </t>

     <t>
       This document is intended to provide guidance as to what Key
       Exchange Algorithms are to be considered for new or updated SSH
       implementations. This document will be superseded when one or
       more of the listed algorithms are considered too weak to
       continue to use securely, in which case they will likely be
       downgraded to SHOULD NOT or MUST NOT. Or, when newer methods
       have been analyzed and found to be secure with wide enough
       adoption to upgrade their recommendation from MAY to SHOULD or
       MUST.
     </t>

     <section title="curve25519-sha256">
       <t>
         The Curve25519 provides strong security and is efficient on a
         wide range of architectures with properties that allow better
         implementation properties compared to traditional elliptic
         curves. The use of SHA2-256 for integrity is a reasonable one
         for this method. This Key Exchange Method has multiple
         implementations and SHOULD be implemented in any SSH
         interested in using elliptic curve based key exchanges.
       </t>
     </section>

     <section title="curve448-sha512">
       <t>
         The Curve448 provides very strong security. It is probably
         stronger and more work than is currently needed. 
         This method MAY be implemented.
       </t>
     </section>

     <section title="diffie-hellman-group-exchange-sha1">
       <t>
         This set of ephemerally generated key exchange groups uses
         SHA-1 as defined in <xref target="RFC4419"/>. However, SHA-1
         has security concerns provided in <xref target="RFC6194"/>.
         It is recommended that these key exchange groups NOT be used.
         This key exchange SHOULD NOT be used.
       </t>
     </section>

     <section title="diffie-hellman-group-exchange-sha256">
       <t>
         This set of ephemerally generated key exchange groups uses
         SHA2-256 as defined in <xref target="RFC4419"/>.
	 <xref target="I-D.ietf-curdle-ssh-dh-group-exchange"/>
         mandates implementations avoid any MODP group with less than
         2048 bits. This key exchange MAY be used.
       </t>
     </section>

     <section title="diffie-hellman-group1-sha1">
       <t>
         This method uses <xref target="RFC7296"/> Oakley Group 2 (a
         1024-bit MODP group) and SHA-1 <xref target="RFC3174"/>. Due
         to recent security concerns with SHA-1 <xref
         target="RFC6194"/> and with MODP groups with less than 2048
         bits (see <xref target="LOGJAM"/> and <xref
         target="NIST-SP-800-131Ar1"/>), this method is considered
         insecure. This method is being moved from MUST to SHOULD NOT
         instead of MUST NOT only to allow a transition time to get
         off of it. There are many old implementations out there that
         may still need to use this key exchange, it should be removed
         from server implementations as quickly as possible.
       </t>
     </section>

     <section title="diffie-hellman-group14-sha1">
       <t>
         This method uses <xref target="RFC3526"/> group14 (a 2048-bit
         MODP group) which is still a reasonable size. This key
         exchange group uses SHA-1 which has security concerns <xref
         target="RFC6194"/>. However, this group is still strong
         enough and is widely deployed. This method is being moved
         from MUST to SHOULD to aid in transition to stronger SHA-2
         based hashes. This method will transition to SHOULD NOT when
         SHA-2 alternatives are more generally available.
       </t>
     </section>

     <section title="diffie-hellman-group14-sha256">
       <t>
         This key exchange uses the group14 (a 2048-bit MODP group)
         along with a SHA-2 (SHA2-256) hash. This represents the
         smallest Finite Field Cryptography (FFC) Diffie-Hellman (DH)
         key exchange method considered to be secure. It is a
         reasonably simple transition to move from SHA-1 to SHA-2.
         This method MUST be implemented.
       </t>
     </section>

     <section title="diffie-hellman-group15-sha512">
       <t>
         Note: The use of this 3072-bit MODP group would be equally
         justified to use SHA2-384 as the hash rather than SHA2-512.
         However, some small implementations would rather only worry
         about two rather than three new hashing functions. This group
         does not really provide much additional head room over the
         2048-bit group14 FFC DH and the predominate open source
         implementations are not adopting it. This method MAY be
         implemented.
       </t>
     </section>

     <section title="diffie-hellman-group16-sha512">
       <t>
         The use of FFC DH is well understood and trusted. Adding
         larger modulus sizes and protecting with SHA2-512 should give
         enough head room to be ready for the next scare that someone
         has pre-computed it. This modulus (4096-bit) is larger than
         that required by <xref target="CNSA-SUITE"/> and should be
         sufficient to inter-operate with more paranoid nation-states.
         This method SHOULD be implemented.
       </t>
     </section>

     <section title="diffie-hellman-group17-sha512">
       <t>
         The use of this 6144-bit MODP group is going to be slower
         than what may be desirable. It is provided to help those
         who wish to avoid using ECC algorithms.
         This method MAY be implemented.
       </t>
     </section>

     <section title="diffie-hellman-group18-sha512">
       <t>
         The use of this 8192-bit MODP group is going to be slower
         than what may be desirable. It is provided to help those
         who wish to avoid using ECC algorithms.
         This method MAY be implemented.
       </t>
     </section>

     <section title="ecdh-sha2-nistp256">
       <t>
         Elliptic Curve Diffie-Hellman (ECDH) are often implemented
         because they are smaller and faster than using large FFC
         primes with traditional Diffie-Hellman (DH). However, given
         <xref target="CNSA-SUITE"/> and <xref target="safe-curves"/>,
         this curve may not be as useful and strong as desired for
         handling TOP SECRET information for some applications. The
         SSH development community is divided on this and many
         implementations do exist. If traditional ECDH key exchange
         methods are implemented, then this method SHOULD be
         implemented. It is advisable to match the ECDSA and ECDH
         algorithms to use the same family of curves.
       </t>
     </section>

     <section title="ecdh-sha2-nistp384">
       <t>
         This ECDH method should be implemented because it is smaller
         and faster than using large FFC primes with traditional
         Diffie-Hellman (DH). Given <xref target="CNSA-SUITE"/>, it is
         considered good enough for TOP SECRET. If traditional ECDH
         key exchange methods are implemented, then this method SHOULD
         be implemented.
       </t>
     </section>

     <section title="ecdh-sha2-nistp521">
       <t>
         This ECDH method may be implemented because it is smaller and
         faster than using large FFC primes with traditional
         Diffie-Hellman (DH). It is not listed in <xref
         target="CNSA-SUITE"/>, so it is not currently appropriate for
         TOP SECRET. This method MAY be implemented.
       </t>
     </section>

     <section title="gss-gex-sha1-*">
       <t>
         This set of ephemerally generated key exchange groups uses
         SHA-1 which has security concerns <xref target="RFC6194"/>.
         It is recommended that these key exchange groups NOT be used.
         This key exchange SHOULD NOT be used. It is intended that it
         move to MUST NOT as soon as the majority of server
         implementations no longer offer it. It should be removed from
         server implementations as quickly as possible.
       </t>
     </section>

     <section title="gss-group1-sha1-*">
       <t>
         This method suffers from the same problems of
         diffie-hellman-group1-sha1. It uses <xref target="RFC7296"/>
         Oakley Group 2 (a 1024-bit MODP group) and SHA-1 <xref
         target="RFC3174"/>. Due to recent security concerns with
         SHA-1 <xref target="RFC6194"/> and with MODP groups with less
         than 2048 bits (see <xref target="LOGJAM"/> and <xref
         target="NIST-SP-800-131Ar1"/>), this method is considered
         insecure. This method SHOULD NOT be implemented. It is
         intended that it move to MUST NOT as soon as the majority of
         server implementations no longer offer it. It should be
         removed from server implementations as quickly as possible.
       </t>
     </section>

     <section title="gss-group14-sha1-*">
       <t>
         This generated key exchange groups uses SHA-1 which has
         security concerns <xref target="RFC6194"/>. If GSS-API key
         exchange methods are being used, then this one SHOULD be
         implemented until such time as SHA-2 variants may be
         implemented and deployed. This method will transition to
         SHOULD NOT when SHA-2 alternatives are more generally
         available. No other standard indicated that this method was
	 anything other than optional even though it was implemented
	 in all GSS-API systems. This method MAY be implemented.
       </t>
     </section>

     <section title="gss-group14-sha256-*">
       <t>
         This key exchange uses the group14 (a 2048-bit MODP group)
         along with a SHA-2 (SHA2-256) hash. This represents the
         smallest Finite Field Cryptography (FFC) Diffie-Hellman (DH)
         key exchange method considered to be secure. It is a
         reasonably simple transition to move from SHA-1 to SHA-2.
         If the GSS-API is to be used, then this method SHOULD be
         implemented.
       </t>
     </section>

     <section title="gss-group15-sha512-*">
       <t>
         The use of this 3072-bit MODP group does not really provide
         much additional head room over the 2048-bit group14 FFC DH.
         If the GSS-API is to be used, then this method MAY be
         implemented.
       </t>
     </section>

     <section title="gss-group16-sha512-*">
       <t>
         The use of FFC DH is well understood and trusted. Adding
         larger modulus sizes and protecting with SHA2-512 should give
         enough head room to be ready for the next scare that someone
         has pre-computed. This modulus (4096-bit) is larger than that
         required by <xref target="CNSA-SUITE"/> and should be
         sufficient to inter-operate with more paranoid nation-states.
         If the GSS-API is to be used, then this method SHOULD
         be implemented.
       </t>
     </section>

     <section title="gss-group17-sha512-*">
       <t>
         The use of this 6144-bit MODP group is going to be slower
         than what may be desirable. It is provided to help those
         who wish to avoid using ECC algorithms.
         If the GSS-API is to be used, then this method MAY be
         implemented.
       </t>
     </section>

     <section title="gss-group18-sha512-*">
       <t>
         The use of this 8192-bit MODP group is going to be slower
         than what may be desirable. It is provided to help those who
         prefer to avoid using ECC algorithms. If the GSS-API is to be
         used, then this method MAY be implemented.
       </t>
     </section>

      <section title="gss-nistp256-sha256-*">
       <t>
         If the GSS-API is to be used with ECC algorithms, then this
         method SHOULD be implemented.
       </t>
      </section>

      <section title="gss-nistp384-sha384-*">
       <t>
         If the GSS-API is to be used with ECC algorithms, then this
         method SHOULD be implemented to permit TOP SECRET information
	 to be communicated.
       </t>
      </section>

      <section title="gss-nistp521-sha512-*">
       <t>
         If the GSS-API is to be used with ECC algorithms, then this
         method MAY be implemented.
       </t>
      </section>

      <section title="gss-curve25519-sha256-*">
       <t>
         If the GSS-API is to be used with ECC algorithms, then this
         method SHOULD be implemented.
       </t>
      </section>

      <section title="gss-curve448-sha512-*">
       <t>
         If the GSS-API is to be used with ECC algorithms, then this
         method MAY be implemented.
       </t>
      </section>

     <section title="rsa1024-sha1">
       <t>
         The security of RSA 1024-bit modulus keys is not good enough
         any longer. A key size should be 2048-bits.
         This generated key exchange groups uses SHA-1 which has
         security concerns <xref target="RFC6194"/>. This method
         MUST NOT be implemented.
       </t>
     </section>

     <section title="rsa2048-sha256">
       <t>
         An RSA 2048-bit modulus key with a SHA2-256 hash. This method
         MAY be implemented.
       </t>
     </section>

   </section>

   <section title="Selecting an appropriate hashing algorithm">
     <t>
       As may be seen from the above, the Key Exchange Methods area
       all using either SHA256 or SHA512 with the exception of the
       ecdh-sha2-nistp384 which uses SHA384.
     </t>

     <t>
       The cited CNSA Suite specifies the use of SHA384 and says that
       SHA256 is no longer good enough for TOP SECRET. Nothing is said
       about the use of SHA512. It may be that the internal state of
       1024 bits in both SHA384 and SHA512 makes the SHA384 more
       secure because it does not leak an additional 128 bits of
       state. Of course, use of SHA384 also reduces the security
       strength to 192 bits instead of being 256 bits or more. This
       seems to contradict the desire to double the symmetric key
       strength in order to try to be safe from Post Quantum Computing
       (PQC) attacks given a session key derived from the key
       exchange will be limited to the security strength of the hash
       being used.
     </t>

     <t>
       The move away from SHA256 to SHA512 for the newer key exchange
       methods is more to try to slow Grover's algorithm (a PQC
       attack) slightly. It is also the case that SHA2-512 may, in
       many modern CPUs, be implemented more efficiently using 64-bit
       arithmetic than SHA256 which is faster on 32-bit CPUs. The
       selection of SHA384 vs SHA512 is more about reducing the number
       of code point alternatives to negotiate. There seemed to be
       consensus in favor of SHA2-512 over SHA2-384 for key exchanges.
       </t>
   </section>

   <section title="Summary Guidance for Key Exchange Method Names">

     <t>
       The Implement column is the current recommendations of this
       RFC. Key Exchange Method Names are listed alphabetically.
     </t>

     <texttable style="headers">
       <ttcol>Key Exchange Method Name</ttcol>
       <ttcol>Reference</ttcol>
       <ttcol>Implement</ttcol>
       <c>curve25519-sha256</c><c>ssh-curves</c><c>SHOULD</c>
       <c>diffie-hellman-group-exchange-sha1</c><c>RFC4419</c><c>SHOULD NOT</c>
       <c>diffie-hellman-group1-sha1</c><c>RFC4253</c><c>SHOULD NOT</c>
       <c>diffie-hellman-group14-sha1</c><c>RFC4253</c><c>SHOULD</c>
       <c>diffie-hellman-group14-sha256</c><c>new-modp</c><c>MUST</c>
       <c>diffie-hellman-group16-sha512</c><c>new-modp</c><c>SHOULD</c>
       <c>ecdh-sha2-nistp256</c><c>RFC5656</c><c>SHOULD</c>
       <c>ecdh-sha2-nistp384</c><c>RFC5656</c><c>SHOULD</c>
       <c>gss-gex-sha1-*</c><c>RFC4462</c><c>SHOULD NOT</c>
       <c>gss-group1-sha1-*</c><c>RFC4462</c><c>SHOULD NOT</c>
       <c>gss-group14-sha256-*</c><c>gss-keyex</c><c>SHOULD</c>
       <c>gss-group16-sha512-*</c><c>gss-keyex</c><c>SHOULD</c>
       <c>gss-nistp256-sha256-*</c><c>gss-keyex</c><c>SHOULD</c>
       <c>gss-nistp384-sha384-*</c><c>gss-keyex</c><c>SHOULD</c>
       <c>gss-curve25519-sha256-*</c><c>gss-keyex</c><c>SHOULD</c>
       <c>rsa1024-sha1</c><c>RFC4432</c><c>MUST NOT</c>
     </texttable>

     <t>
       The full set of official <xref target="IANA-KEX"/> key algorithm
       method names not otherwise mentioned in this document MAY be
       implemented.
     </t>

     <t>
       The guidance of this document is that the SHA-1 algorithm
       hashing SHOULD NOT be used.  If it is used in implementations, it
       should only be provided for backwards compatibility, should not
       be used in new designs, and should be phased out of existing
       key exchanges as quickly as possible because of its known
       weaknesses.  Any key exchange using SHA-1 should not be in a
       default key exchange list if at all possible. If they are
       needed for backward compatibility, they SHOULD be listed after
       all of the SHA-2 based key exchanges.
     </t>

     <t>
       The <xref target="RFC4253"/> MUST diffie-hellman-group14-sha1
       method SHOULD be retained for compatibility with older Secure
       Shell implementations. It is intended that this key exchange
       method be phased out as soon as possible. It SHOULD be listed
       after all possible SHA-2 based key exchanges.
     </t>

     <t>
       It is believed that all current SSH implementations should be
       able to achieve an implementation of the
       "diffie-hellman-group14-sha256" method. To that end, this is
       one method that MUST be implemented.
     </t>

     <t>
       [TO BE REMOVED: This registration should take place at the
       following location:
       &lt;http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-16>]
     </t>
   </section>

   <section title="Acknowledgements">

     <t>
       Thanks to the following people for review and comments: Denis
       Bider, Peter Gutmann, Damien Miller, Niels Moeller, Matt
       Johnston, Iwamoto Kouichi, Simon Josefsson, Dave Dugal, Daniel
       Migault, Anna Johnston, and Tero Kivinen.
     </t>

     <t>
       Thanks to the following people for code to implement
       inter-operable exchanges using some of these groups as found in
       an this draft: Darren Tucker for OpenSSH and Matt Johnston for
       Dropbear. And thanks to Iwamoto Kouichi for information about
       RLogin, Tera Term (ttssh) and Poderosa implementations also
       adopting new Diffie-Hellman groups based on this draft.
     </t>

   </section>

   <section title="Security Considerations">

     <t>
       This SSH protocol provides a secure encrypted channel over an
       insecure network.  It performs server host authentication, key
       exchange, encryption, and integrity protection.  It also
       derives a unique session ID that may be used by higher-level
       protocols.
     </t>

     <t>
       Full security considerations for this protocol are provided in
       <xref target="RFC4251"/>
     </t>

     <t>
       It is desirable to deprecate or remove key exchange method name
       that are considered weak. A key exchange method may be weak
       because too few bits are used, or the hashing algorithm is
       considered too weak.
     </t>

     <t>
       The diffie-hellman-group1-sha1 is being moved from MUST to MUST
       NOT. This method used <xref target="RFC7296"/> Oakley Group 2
       (a 1024-bit MODP group) and SHA-1 <xref target="RFC3174"/>. Due
       to recent security concerns with SHA-1 <xref target="RFC6194"/>
       and with MODP groups with less than 2048 bits <xref
       target="NIST-SP-800-131Ar1"/>, this method is no longer
       considered secure.
     </t>

     <t>
       The United States Information Assurance Directorate (IAD) at
       the National Security Agency (NSA) has published a FAQ <xref
       target="MFQ-U-OO-815099-15"/> suggesting that the use of
       Elliptic Curve Diffie-Hellman (ECDH) using the nistp256 curve
       and SHA-2 based hashes less than SHA2-384 are no longer
       sufficient for transport of TOP SECRET information. If your
       systems need to be concerned with TOP SECRET information, then
       the guidance for supporting lesser security strength key
       exchanges may be omitted for your implementations.
     </t>

     <t>
       The MODP group14 is already required for SSH implementations
       and most implementations already have a SHA2-256
       implementation, so diffie-hellman-group14-sha256 is provided as
       an easy to implement and faster to use key exchange. Small
       embedded applications may find this KEX desirable to use.
     </t>

     <t>
       The NSA Information Assurance Directorate (IAD) has also
       published the <xref target="CNSA-SUITE">Commercial National
       Security Algorithm Suite (CNSA Suite)</xref> in which the
       3072-bit MODP Group 15 in <xref target="RFC3526"/> is
       explicitly mentioned as the minimum modulus to protect TOP
       SECRET communications.
     </t>

     <t>
       It has been observed in <xref target="safe-curves"/> that the
       NIST Elliptic Curve Prime Curves (P-256, P-384, and P-521) are
       perhaps not the best available for Elliptic Curve Cryptography
       (ECC) Security. For this reason, none of the <xref
       target="RFC5656"/> curves are mandatory to implement.
       However, the requirement that "every compliant SSH ECC
       implementation MUST implement ECDH key exchange" is now taken
       to mean that if ecdsa-sha2-[identifier] is implemented, then
       ecdh-sha2-[identifier] MUST be implemented.
     </t>

     <t>
       In a Post-Quantum Computing (PQC) world, it will be desirable
       to use larger cyclic subgroups. To do this using Elliptic Curve
       Cryptography will require much larger prime base fields, greatly
       reducing their efficiency. Finite Field based Cryptography
       already requires large enough base fields to accommodate larger
       cyclic subgroups. Until such time as a PQC method of key
       exchange is developed and adopted, it may be desirable to
       generate new and larger DH groups to avoid pre-calculation
       attacks that are provably not backdoored.
     </t>

   </section>

    <section anchor="iana-considerations" title="IANA Considerations">

      <t>
        IANA is requested to annotate entries in <xref
        target="IANA-KEX"/> which MUST NOT be implemented as being
        deprecated by this document.
      </t>

    </section>
 </middle>

 <back>

   <references title="Normative References">

     &RFC2119;
     &RFC3526;
     &RFC4250;
     &RFC4253;

   </references>

   <references title="Informative References">
     <!-- Here we use entities that we defined at the beginning. -->

     <reference
         anchor="CNSA-SUITE"
         target="https://www.iad.gov/iad/programs/iad-initiatives/cnsa-suite.cfm">
       <front>
         <title>Commercial National Security Algorithm Suite</title>
         <author fullname="NSA/IAD">
           <organization abbrev="NSA/IAD">"Information Assurance by the National Security Agency"</organization>
         </author>
         <date month="September" year="2016"/>
       </front>
     </reference>

     &SSHCURVES;
     &NEW4419;
     &NEWMODP;

     <reference
         anchor="IANA-KEX"
         target="http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-16">
       <front>
         <title>Secure Shell (SSH) Protocol Parameters:
         Key Exchange Method Names</title>
         <author>
           <organization>Internet Assigned Numbers Authority (IANA)
           </organization>
         </author>
         <date month="March" year="2017"/>
       </front>
     </reference>

     <reference
         anchor="LOGJAM"
         target="https://weakdh.org/imperfect-forward-secrecy-ccs15.pdf">
       <front>
         <title>
           Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice
         </title>
         <author surname="Adrian" initials="D." fullname="David Adrian">
           <organization>Univeristy of Michigan</organization>
         </author>
         <author surname="Bhargavan" initials="K."
                 fullname="Karthikeyan Bhargavan">
           <organization>INRIA Paris-Rocquencourt</organization>
         </author>
         <author surname="Durumeric" initials="Z." fullname="Zakir Durumeric">
           <organization>Univeristy of Michigan</organization>
         </author>
         <author surname="Gaudry" initials="P." fullname="Pierrick Gaudry">
           <organization>
             INRIA Nancy-Grand Est, CNRS, and Université de Lorraine
           </organization>
         </author>
         <author surname="Green" initials="M." fullname="Matthew Green">
           <organization>Johns Hopkins</organization>
         </author>
         <author surname="Halderman" initials="J. A."
                 fullname="J. Alex Halderman">
           <organization>Univeristy of Michigan</organization>
         </author>
         <author surname="Heninger" initials="N." fullname="Nadia Heninger">
           <organization> University of Pennsylvania</organization>
         </author>
         <author surname="Springall" initials="D." fullname="Drew Springall">
           <organization>Univeristy of Michigan</organization>
         </author>
         <author surname="Thomé" initials="E." fullname="Emmanuel Thomé">
           <organization>
             INRIA Nancy-Grand Est, CNRS, and Université de Lorraine
           </organization>
         </author>
         <author surname="Valenta" initials="L." fullname="Luke Valenta">
           <organization> University of Pennsylvania</organization>
         </author>
         <author surname="VanderSloot" initials="B."
                 fullname="Benjamin VanderSloot">
           <organization>Univeristy of Michigan</organization>
         </author>
         <author surname="Wustrow" initials="E." fullname="Eric Wustrow">
           <organization>Univeristy of Michigan</organization>
         </author>
         <author surname="Zanella-Béguelin" initials="S."
                 fullname="Santiago Zanella-Béguelin">
           <organization>Microsoft Research</organization>
         </author>
         <author surname="Zimmermann" initials="P."
                 fullname="Paul Zimmermann">
           <organization>Univeristy of Michigan</organization>
         </author>
         <date year="2015"/>
       </front>
       <seriesInfo
           name="ACM Conference on Computer and Communications Security (CCS)"
           value="2015" />
     </reference>

     <reference
         anchor="MFQ-U-OO-815099-15"
         target="https://www.iad.gov/iad/library/ia-guidance/ia-solutions-for-classified/algorithm-guidance/cnsa-suite-and-quantum-computing-faq.cfm">
       <front>
         <title>CNSA Suite and Quantum Computing FAQ</title>
         <author fullname="NSA/CSS">
           <organization abbrev="NSA/CSS">"National Security Agency/Central Security Service"</organization>
         </author>
         <date month="January" year="2016"/>
       </front>
     </reference>

     &NEWGSSAPI;

     <reference
         anchor="NIST-SP-800-131Ar1"
         target="http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-131Ar1.pdf">
       <front>
         <title>Transitions: Recommendation for the Transitioning of
         the Use of Cryptographic Algorithms and Key Lengths</title>
         <author surname="Barker" fullname="Elaine Barker"/>
         <author surname="Roginsky" fullname="Allen Roginsky"/>
         <date month="November" year="2015"/>
       </front>
       <seriesInfo
           name="NIST Special Publication" value="800-131A Revision 1"/>
     </reference>

     &RFC3174;
     &RFC4251;
     &RFC4419;
     &RFC4432;
     &RFC4462;
     &RFC5656;
     &RFC6194;
     &RFC7296;

     <reference
         anchor="safe-curves"
         target="https://safecurves.cr.yp.to/">
       <front>
       <title>SafeCurves: choosing safe curves for elliptic-curve
       cryptography.</title>
       <author surname="Bernstein" fullname="Daniel J. Bernstein"/>
       <author surname="Lange" fullname="Tanja Lange"/>
       <date month="February" year="2016"/>
       </front>
     </reference>

   </references>

   <!-- Change Log

v00 2015-12-10  MDB   Initial version

v01 2015-12-10  MDB   Fix SHA1 -> SHA-1 for the name of the algorithm.
                      Add recommendation that DH-group14-sha256 be
                      in the negotiation list before DH-group14-sha1.

v02 2016-02-12  MDB   List all of the key exchange methods currently
                      listed in the IANA registry for Secure Shell.
                      Update the rationale.

v03 2016-02-13  MDB   Adopt some feedback from the list.

v04 2016-02-14  MDB   Update Title to include the text 'Secure Shell'
                      Drop references to group15 and group17. Fix text
                      to use group16 and group18.

v05 2016-02-19  MDB   Demote ecdh-sha2-nistp384 to SHOULD from MUST.
                      Reference safecurves.cr.yp.to as justification.

v06 2016-03-01  MDB   Clarify RFC5656 SSH ECC MUST requirements.
                      Update to I-D.draft-josefsson-ssh-curves-04.
                      Add acknowledgements section.
v00 2016-03-07  MDB   Rename as draft-ietf-curdle-ssh-kex-sha2-00
                      from draft-baushke-ssh-dh-group-sha2-06
v01 2016-03-08  MDB   Reference new draft-ietf-curdle-ssh-curves-00.xml
                      instead of draft-josefsson-ssh-curves-04.xml
v02 2016-03-08  MDB   Problems with the -01 upload occurred.

v03 2015-03-14  MDB   Clear up abstract and implementation text on
                      advice of Daniel Migault. Use new title too.

v04 2016-09-05  MDB   Peter Gutman suggests that the embedded world
                      needs DH-2048+SHA-256 for performance issues.
                      denis bider requests that entries be made for
                      both Group 15 and Group 17. Group 15 is also
                      explicitly referenced in the CNSA Suite.

v05 2016-09-20  MDB   Split the MODP implementation to
                      draft-ietf-curdle-ssh-modp-dh-sha2 and add gss-*
                      entries to the table. Use 'SHOULD NOT' for
                      'ecmqv-sha2' per suggestion by Damien Miller.
                      Add clarity to GSS-API SHOULD requirements.
                      Adjust texttable entries.

v06 2017-03-27  MDB   Point to the GSS Keyex SHA2 draft given in
                      draft-ssorce-gss-keyex-sha2-00.
                      Remove some left-over MODP text.
                      General reformatting.

v07 2017-03-27  MDB   Update I-D.ietf-curdle-ssh-curves and
                      I.D.ietf-curdle-ssh-modp-dh-sha2 references.

v08 2017-04-16  MDB   Clean up nits.

v09 2017-07-17  MDB   Input from Tero Kivinen and IETF meeting minutes.
                      Try to clear up confusion by listing all known
                      Kex methods and explicitly providing information
		      on why they are MUST, SHOULD, MAY, SHOULD NOT,
		      or MUST NOT implement.
   -->
 </back>
</rfc>
