<?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 rfc3766 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3766.xml">
<!ENTITY rfc4250 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4250.xml">
<!ENTITY rfc4253 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4253.xml">
<!ENTITY rfc6194 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6194.xml">
<!ENTITY rfc6234 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6234.xml">
]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="no"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="std"
     docName="draft-ietf-curdle-ssh-modp-dh-sha2-07"
     updates="4250, 4253"
     ipr="pre5378Trust200902">
 <front>
   <title abbrev="More MODP DH KEX Groups for SSH">More Modular
   Exponential (MODP) Diffie-Hellman (DH) Key Exchange (KEX) Groups
   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>
        <phone>+1 408 745 2952</phone>
        <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 defines added Modular Exponential (MODP) Groups
       for the Secure Shell (SSH) protocol using SHA-2 hashes. This
       document updates RFC 4250. This document updates RFC 4253.
     </t>
   </abstract>
 </front>

 <middle>
   <section title="Overview and Rationale">

     <t>
       Secure Shell (SSH) is a common protocol for secure
       communication on the Internet. 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"/>
       implementer and users request support for larger Diffie Hellman
       (DH) MODP group sizes with data integrity verification using
       the SHA-2 family of secure hash algorithms as well as MODP
       groups providing more security.
     </t>

     <t>
       DH primes being adopted by this document are all "safe primes"
       such that p = 2q + 1 where q is also a prime. New MODP groups
       are being introduced starting with the MODP 3072-bit group 15
       all use SHA512 as the hash algorithm.
     </t>

     <t>
       The DH 2048-bit MODP group 14 is already present in most SSH
       implementations and most implementations already have a SHA256
       implementation, so diffie-hellman-group14-sha256 is provided as
       easy to implement.
     </t>

     <t>
       It is intended that these new MODP groups with SHA-2 based
       hashes update the <xref target="RFC4253"/> section 6.4 and
       <xref target="RFC4250"/> section 4.10 standards.
     </t>

     <t>
       The United States Information Assurance Directorate (IAD) at
       the National Security Agency (NSA) has published "Commercial
       National Security Algorithm (CNSA) Suite and Quantum Computing
       Frequently Asked Questions (FAQ)" <xref
       target="MFQ-U-OO-815099-15"/> addressed to organizations that
       run classified or unclassified national security systems (NSS)
       and vendors that build products used in NSS.
     </t>

     <t>
       This FAQ document indicates that NSS should no longer use:

       <list style="symbols">
         <t>ECDH and ECDSA with NIST P-256</t>
         <t>SHA-256</t>
         <t>AES-128</t>
         <t>RSA with 2048-bit keys</t>
         <t>Diffie-Hellman with 2048-bit keys</t>
       </list>
     </t>

     <t>
       The FAQ also states that NSS users should select DH groups
       based upon well established and validated parameter sets that
       comply with the minimum required sizes. Some specific examples
       include:

       <list style="symbols">
         <t>
           Elliptic Curves are currently restricted to the NIST
           P-384 group only for both ECDH and ECDSA, in accordance
           with existing NIST and NIAP standards.
         </t>

         <t>
           RSA moduli should have a minimum size of 3072 bits
           (other than the noted PKI exception), and keys should be
           generated in accordance with all relevant NIST standards.
         </t>

         <t>
           For Diffie-Hellman use a Diffie-Hellman prime modulus of at
           least 3072 bits as specified in <xref target="RFC3526">IETF
           RFC 3526</xref> (Groups 15-18).
         </t>
       </list>
     </t>

     <t>
       Although SSH may not always be used to protect Top Secret
       communications, this document adopts the use of the DH groups
       provided as an example in the FAQ as well as the use of SHA512
       rather than SHA256 for the new DH groups.
     </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 Algorithms">
     <t>
       This memo adopts the style and conventions of
       <xref target="RFC4253"/> in specifying how the use of new
       data key exchange is indicated in SSH.
     </t>
     <figure anchor="figure.algs">
       <preamble>
         The following new key exchange algorithms are defined:
       </preamble>
       <artwork>
Key Exchange Method Name
diffie-hellman-group14-sha256
diffie-hellman-group15-sha512
diffie-hellman-group16-sha512
diffie-hellman-group17-sha512
diffie-hellman-group18-sha512
       </artwork>
     </figure>
     <t>
       The SHA-2 family of secure hash algorithms are defined in
       <xref target="RFC6234"/>.
     </t>
     <t>
       The method of key exchange used for the name
       "diffie-hellman-group14-sha256" is the same as that for
       "diffie-hellman-group14-sha1" except that the SHA256 hash
       algorithm is used. It is recommended that
       diffie-hellman-group14-sha256 SHOULD be supported to smooth the
       transition to newer group sizes.
     </t>
     <t>
       The group15 through group18 names are the same as those
       specified in <xref target="RFC3526"/> 3072-bit MODP Group 15,
       4096-bit MODP Group 16, 6144-bit MODP Group 17, and 8192-bit
       MODP Group 18.
     </t>
     <t>
       The SHA512 algorithm is to be used when "sha512" is
       specified as a part of the key exchange method name.
     </t>
   </section>

   <section title="Checking the Peer's DH Public Key">
     <t>
       Section 3 of <xref target="RFC4253"/> contains a small errata.
       When checking e (client public key) and f (server public key)
       values, an incorrect range is provided. The erroneous text is:
       <list>
	 <t>
	   Values of 'e' or 'f' that are not in the range [1, p-1]
	   MUST NOT be sent or accepted by either side. If this
	   condition is violated, the key exchange fails.
	 </t>
       </list>

       The errata is that the range should have been an open interval
       excluding the end point values. (i.e "(1, p-1)").
       This document amends that document text as follows:
       <list>
	 <t>
	   DH Public key values MUST be checked and both conditions:
	   <list>
	     <t>
	       1 &lt; e &lt; p-1
	     </t>
	     <t>
	       1 &lt; f &lt; p-1
	     </t>
	   </list>
	   MUST be true. Values not within these bounds MUST NOT be
	   sent or accepted by either side. If either one of these
	   condition is violated, then the key exchange fails.
	 </t>
       </list>

       This simple check ensures:
       <list style="symbols">
	 <t>
	   The remote peer behaves properly.
	 </t>
	 <t>
	   The local system is not forced into the two-element
	   subgroup.
	 </t>
       </list>
     </t>

   </section>
   
   <section title="IANA Considerations">
     <t>
       This document augments the Key Exchange Method Names in <xref
       target="RFC4253"/> and <xref target="RFC4250"/>.
     </t>
     <t>
       IANA is requested to add to the Key Exchange Method Names
       algorithm registry <xref target="IANA-KEX"/> with the following
       entries:
     </t>
     <texttable style="headers">
       <ttcol>Key Exchange Method Name</ttcol><ttcol>Reference</ttcol>
       <c>diffie-hellman-group14-sha256</c><c>This Draft</c>
       <c>diffie-hellman-group15-sha512</c><c>This Draft</c>
       <c>diffie-hellman-group16-sha512</c><c>This Draft</c>
       <c>diffie-hellman-group17-sha512</c><c>This Draft</c>
       <c>diffie-hellman-group18-sha512</c><c>This Draft</c>
     </texttable>
      <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 Möller, Matt
       Johnston, Iwamoto Kouichi, Dave Dugal, Daniel Migault, Anna
       Johnston, Ron Frederick, Rich Salz, Travis Finkenauer, Eric
       Rescorla.
     </t>

   </section>

   <section title="Security Considerations">
     <t>
       The security considerations of <xref target="RFC4253"/> apply
       to this document.
     </t>

     <t>
       The security considerations of <xref target="RFC3526"/> suggest
       that MODP group14 through group18 have security strengths that
       range between 110 bits of security through 310 bits of
       security. They are based on <xref target="RFC3766"/>
       Determining Strengths For Public Keys Used For Exchanging
       Symmetric Keys. Care should be taken to use sufficient entropy
       and/or DRBG algorithms to maximize the true security strength
       of the key exchange and ciphers selected.
     </t>

     <t>
       Using a fixed set of Diffie-Hellman parameters makes them a
       high value target for pre-computation.
       Generating additional sets of primes to be used, or moving to
       larger values is a mitigation against this issue.
     </t>
   </section>

 </middle>

 <back>

   <references title="Normative References">

     &rfc2119;
     &rfc3526;
     &rfc4250;
     &rfc4253;

   </references>

   <references title="Informative References">

     <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="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>

     <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>

     &rfc3766;
     &rfc6194;
     &rfc6234;

   </references>

   <!-- Change Log

v00 2016-09-11  MDB   Initial version forked from
                       draft-ietf-curdle-ssh-kex-sha2

v01 2016-09-12  MDB   Remove ambiguity of IANA table update.
                      per Tero Kivinen and denis bider.

v02 2017-03-06  MDB   IANA moved to use texttable.
                      Simo Sorce will be providing gss-* updates
                      in a separate document.

v03 2017-03-26  MDB   Remove extraneous text after figure.strength in
                      section 5. Remove old gss-group14 orphaned text.

v04 2017-04-09  MDB   Informative reference for IANA-KEX.
                      Clean up nits.

v05 2017-05-10  MDB   per Hubert Kario fix 3071-bit to 3072-bit typo.

v06 2017-06-17  MDB   Update to address comments by AD Eric Rescorla.

w07 2017-06-21  MDB   Fix errata for RFC4253 checking peer public keys
                      as noted by Eric Rescorla. Add acknowledgements.
   -->
 </back>
</rfc>
