| < draft-ietf-curdle-ssh-kex-sha2-06.txt | draft-ietf-curdle-ssh-kex-sha2-07.txt > | |||
|---|---|---|---|---|
| Internet Engineering Task Force M. Baushke | Internet Engineering Task Force M. Baushke | |||
| Internet-Draft Juniper Networks, Inc. | Internet-Draft Juniper Networks, Inc. | |||
| Updates: 4253, 4419, 4432, 4462, 5656 September 20, 2016 | Updates: 4250, 4253 (if approved) March 27, 2017 | |||
| (if approved) | ||||
| Intended status: Standards Track | Intended status: Standards Track | |||
| Expires: March 24, 2017 | Expires: September 28, 2017 | |||
| Key Exchange (KEX) Method Updates and Recommendations for Secure Shell | Key Exchange (KEX) Method Updates and Recommendations for Secure Shell | |||
| (SSH) | (SSH) | |||
| draft-ietf-curdle-ssh-kex-sha2-06 | draft-ietf-curdle-ssh-kex-sha2-07 | |||
| Abstract | Abstract | |||
| This document adds recommendations for adoption of ssh-curves from | This document is intended to update the recommended set of key | |||
| the [I-D.ietf-curdle-ssh-curves] and new-modp from the | exchange methods for use in the Secure Shell (SSH) protocol to meet | |||
| [I-D.ietf-curdle-ssh-modp-dh-sha2], and deprecates some previously | evolving needs for stronger security. This RFC updates [RFC4253] | |||
| specified Key Exchange Method algorithm names for the Secure Shell | MUST algorithms. This RFC also notes that the [IANASSH] has replaced | |||
| (SSH) protocol. It also updates [RFC4253], [RFC4419], [RFC4462], and | [RFC4250] as the primary reference document for SSH Protocol Assigned | |||
| [RFC5656] by specifying the set key exchange algorithms that | Numbers. | |||
| currently exist and which ones MUST, SHOULD, MAY, and SHOULD NOT be | ||||
| implemented. New key exchange methods use the SHA-2 family of | This document adds recommendations for adoption of Key Exchange | |||
| hashes. | Methods which MUST, SHOULD+, SHOULD, 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 from | ||||
| [I-D.ietf-curdle-ssh-curves] and new-modp from the | ||||
| [I-D.ietf-curdle-ssh-modp-dh-sha2] and gss-keyex [NEWGSSAPI]. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on March 24, 2017. | This Internet-Draft will expire on September 28, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| 1. Overview and Rationale | Table of Contents | |||
| Secure Shell (SSH) is a common protocol for secure communication on | ||||
| the Internet. In [RFC4253], SSH originally defined the Key Exchange | ||||
| Method Name diffie-hellman-group1-sha1 which used [RFC2409] Oakley | ||||
| Group 2 (a 1024-bit MODP group) and SHA-1 [RFC3174]. Due to recent | ||||
| security concerns with SHA-1 [RFC6194] and with MODP groups with less | ||||
| than 2048 bits [NIST-SP-800-131Ar1] implementer and users request | ||||
| support for larger MODP group sizes with data integrity verification | ||||
| using the SHA-2 family of secure hash algorithms as well as MODP | ||||
| groups providing more security. | ||||
| The United States Information Assurance Directorate (IAD) at the | 1. Overview and Rationale . . . . . . . . . . . . . . . . . . . 2 | |||
| National Security Agency (NSA) has published a FAQ | 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 | |||
| [MFQ-U-OO-815099-15] suggesting that the use of Elliptic Curve | 3. Key Exchange Methods . . . . . . . . . . . . . . . . . . . . 3 | |||
| Diffie-Hellman (ECDH) using the nistp256 curve and SHA-2 based hashes | 3.1. curve25519-sha256 . . . . . . . . . . . . . . . . . . . . 4 | |||
| less than SHA2-384 are no longer sufficient for transport of Top | 3.2. diffie-hellman-group-exchange-sha1 . . . . . . . . . . . 4 | |||
| Secret information. It is for this reason that this draft moves | 3.3. diffie-hellman-group1-sha1 . . . . . . . . . . . . . . . 4 | |||
| ecdh-sha2-nistp256 from a REQUIRED to OPTIONAL as a key exchange | 3.4. diffie-hellman-group14-sha1 . . . . . . . . . . . . . . . 4 | |||
| method. This is the same reason that the stronger MODP groups being | 3.5. diffie-hellman-group14-sha256 . . . . . . . . . . . . . . 4 | |||
| adopted. As the MODP group14 is already present in most SSH | 3.6. diffie-hellman-group16-sha512 . . . . . . . . . . . . . . 4 | |||
| implementations and most implementations already have a SHA2-256 | 3.7. ecdh-sha2-nistp256 . . . . . . . . . . . . . . . . . . . 5 | |||
| implementation, so diffie-hellman-group14-sha256 is provided as an | 3.8. ecdh-sha2-nistp384 . . . . . . . . . . . . . . . . . . . 5 | |||
| easy to implement and faster to use key exchange. Small embedded | 3.9. gss-gex-sha1-* . . . . . . . . . . . . . . . . . . . . . 5 | |||
| applications may find this KEX desirable to use. | 3.10. gss-group1-sha1-* . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.11. gss-group14-sha1-* . . . . . . . . . . . . . . . . . . . 5 | ||||
| 3.12. gss-group14-sha256-* . . . . . . . . . . . . . . . . . . 6 | ||||
| 3.13. gss-group16-sha512-* . . . . . . . . . . . . . . . . . . 6 | ||||
| 3.14. rsa1024-sha1 . . . . . . . . . . . . . . . . . . . . . . 6 | ||||
| 4. Summary Guidance for Key Exchange Method Names . . . . . . . 6 | ||||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | ||||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | ||||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | ||||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 8 | ||||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 9 | ||||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| The NSA Information Assurance Directorate (IAD) has also published | 1. Overview and Rationale | |||
| the Commercial National Security Algorithm Suite (CNSA Suite) | ||||
| [CNSA-SUITE] in which the 3072-bit MODP Group 15 in RFC 3526 is | ||||
| explicitly mentioned as the minimum modulus to protect Top Secret | ||||
| communications. | ||||
| It has been observed in [safe-curves] that the NIST recommended | Secure Shell (SSH) is a common protocol for secure communication on | |||
| Elliptic Curve Prime Curves (P-256, P-384, and P-521) are perhaps not | the Internet. In [RFC4253], SSH originally defined two Key Exchange | |||
| the best available for Elliptic Curve Cryptography (ECC) Security. | Method Names that MUST be implemented. Over time, what was once | |||
| For this reason, none of the [RFC5656] curves are marked as a MUST | considered secure, is no longer considered secure. The purpose of | |||
| implement. However, the requirement that "every compliant SSH ECC | this RFC is to recommend that some published key exchanges be adopted | |||
| implementation MUST implement ECDH key exchange" is now taken to mean | or reclassified and others retired. | |||
| that if ecdsa-sha2-[identifier] is implemented, then ecdh- | ||||
| sha2-[identifier] MUST be implemented. | ||||
| Please send comments on this draft to curdle@ietf.org. | [TO BE REMOVED: Please send comments on this draft to | |||
| curdle@ietf.org.] | ||||
| 2. Requirements Language | 2. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 3. Key Exchange Algorithms | When used in the tables in this document, these terms indicate that | |||
| the listed algorithm MUST, MUST NOT, SHOULD, SHOULD NOT or MAY be | ||||
| implemented as part of a Secure Shell implementation. Additional | ||||
| terms used in this document are: | ||||
| SHOULD+ This term means the same as SHOULD. However, it is likely | ||||
| that an algorithm marked as SHOULD+ will be promoted at | ||||
| some future time to be a MUST. | ||||
| SHOULD- This term means the same as SHOULD. However, an algorithm | ||||
| marked as SHOULD- may be deprecated to a MAY in a future | ||||
| version of this document. | ||||
| 3. Key Exchange Methods | ||||
| This memo adopts the style and conventions of [RFC4253] in specifying | This memo adopts the style and conventions of [RFC4253] in specifying | |||
| how the use of new data key exchange is indicated in SSH. | how the use of data key exchange is indicated in SSH. | |||
| A new set of Elliptic Curve Diffie-Hellman ssh-curves exist. The | This RFC also collects Key Exchange Method Names in various existing | |||
| curve25519-sha256 MUST be adopted where possible. | RFCs [RFC4253], [RFC4419], [RFC4432], [RFC4462], [RFC5656], | |||
| [I-D.ietf-curdle-ssh-modp-dh-sha2], [NEWGSSAPI], and | ||||
| [I-D.ietf-curdle-ssh-curves] and provides a suggested suitability for | ||||
| implementation of MUST, SHOULD+, SHOULD, SHOULD-, SHOULD NOT, and | ||||
| MUST NOT. | ||||
| As a hedge against uncertainty raised by the NSA IAD FAQ publication, | This document is intended to provide guidance as to what Key Exchange | |||
| new MODP Diffie-Hellman based key exchanges are proposed for | Algorithms are to be considered for new or updated SSH | |||
| inclusion in the set of key exchange method names as well as the | implementations. This document will be superseded when one or more | |||
| curve448-sha512 curve. | of the listed algorithms are considered too weak to continue to use | |||
| securely, 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. | ||||
| The following new key exchange algorithms are defined: | 3.1. curve25519-sha256 | |||
| Key Exchange Method Name Note | The Curve25519 provides strong security and is efficient on a wide | |||
| ----------------------------- ------------------ | range of architectures with properties that allow better | |||
| curve25519-sha256 MUST/REQUIRED | implementation properties compared to traditional elliptic curves. | |||
| curve448-sha512 MAY/OPTIONAL | The use of SHA2-256 for integrity is a reasonable one for this | |||
| diffie-hellman-group14-sha256 MUST/REQUIRED | method. This Key Exchange Method has a few implementations and | |||
| diffie-hellman-group15-sha512 MAY/OPTIONAL | SHOULD+ be implemented in any SSH interested in using elliptic curve | |||
| diffie-hellman-group16-sha512 SHOULD/RECOMMENDED | based key exchanges. | |||
| diffie-hellman-group17-sha512 MAY/OPTIONAL | ||||
| diffie-hellman-group18-sha512 MAY/OPTIONAL | ||||
| gss-group14-sha256-* SHOULD/RECOMMENDED | ||||
| gss-group15-sha512-* MAY/OPTIONAL | ||||
| gss-group16-sha512-* SHOULD/RECOMMENDED | ||||
| gss-group17-sha512-* MAY/OPTIONAL | ||||
| gss-group18-sha512-* MAY/OPTIONAL | ||||
| The SHA-2 family of secure hash algorithms are defined in | 3.2. diffie-hellman-group-exchange-sha1 | |||
| [FIPS-180-4]. | ||||
| 4. IANA Considerations | This set of ephemerally generated key exchange groups uses SHA-1 | |||
| which has security concerns [RFC6194]. It is recommended that these | ||||
| key exchange groups NOT be used. This key exchange MUST NOT be | ||||
| implemented. | ||||
| This RFC augments the Key Exchange Method Names in [RFC4253]. It | 3.3. diffie-hellman-group1-sha1 | |||
| downgrades the use of SHA-1 hashing for key exchange methods in | ||||
| [RFC4419], [RFC4432], and [RFC4462]. It also moves from MUST to | ||||
| SHOULD the ecdh-sha2-nistp256 given in [RFC5656]. | ||||
| It adds a new set of named "gss-*" methods to [RFC4462] with a MAY | This method uses [RFC2409] Oakley Group 2 (a 1024-bit MODP group) and | |||
| recommendation. | SHA-1 [RFC3174]. Due to recent security concerns with SHA-1 | |||
| [RFC6194] and with MODP groups with less than 2048 bits | ||||
| [NIST-SP-800-131Ar1], this method is considered insecure. This | ||||
| method is being moved from MUST to MUST NOT. | ||||
| It is desirable to also include the new-modp from the | 3.4. diffie-hellman-group14-sha1 | |||
| [I-D.ietf-curdle-ssh-modp-dh-sha2] in this list. | ||||
| It is desirable to also include the ssh-curves from the | This generated key exchange groups uses SHA-1 which has security | |||
| [I-D.ietf-curdle-ssh-curves] in this list. The "curve25519-sha256" | concerns [RFC6194]. However, this group is still strong enough and | |||
| is currently available in some Secure Shell implementations under the | is widely deployed. This method is being moved from MUST to SHOULD- | |||
| name "curve25519-sha256@libssh.org" and is the best candidate for a | to aid in transition to stronger SHA-2 based hashes. This method | |||
| fast, safe, and secure key exchange method. | will transition to MUST NOT when SHA-2 alternatives are more | |||
| generally available. | ||||
| IANA is requested to update the SSH algorithm registry to ensure that | 3.5. diffie-hellman-group14-sha256 | |||
| all of the listed Key Exchange Method Name and References exist in | ||||
| the following table. However, the Implement column is just the | ||||
| current recommendations of this RFC. | ||||
| Key Exchange Method Name Reference Implement | This generated key exchange uses a 2048-bit sized MODP group along | |||
| ------------------------------------ ---------- ---------- | with a SHA-2 (SHA2-256) hash. This represents the smallest Finite | |||
| curve25519-sha256 ssh-curves MUST | Field cryptography Diffie-Hellman key exchange method. It is a | |||
| curve448-sha512 ssh-curves MAY | reasonably simple transition to move from SHA-1 to SHA-2. This | |||
| diffie-hellman-group-exchange-sha1 RFC4419 SHOULD NOT | method MUST be implemented. | |||
| diffie-hellman-group-exchange-sha256 RFC4419 MAY | ||||
| diffie-hellman-group1-sha1 RFC4253 SHOULD NOT | ||||
| diffie-hellman-group14-sha1 RFC4253 SHOULD | ||||
| diffie-hellman-group14-sha256 new-modp MUST | ||||
| diffie-hellman-group15-sha512 new-modp MAY | ||||
| diffie-hellman-group16-sha512 new-modp SHOULD | ||||
| diffie-hellman-group17-sha512 new-modp MAY | ||||
| diffie-hellman-group18-sha512 new-modp MAY | ||||
| ecdh-sha2-nistp256 RFC5656 SHOULD | ||||
| ecdh-sha2-nistp384 RFC5656 SHOULD | ||||
| ecdh-sha2-nistp521 RFC5656 SHOULD | ||||
| ecdh-sha2-* RFC5656 MAY | ||||
| ecmqv-sha2 RFC5656 SHOULD NOT | ||||
| gss-gex-sha1-* RFC4462 SHOULD NOT | ||||
| gss-group1-sha1-* RFC4462 SHOULD NOT | ||||
| gss-group14-sha1-* RFC4462 SHOULD | ||||
| gss-group14-sha256-* new-modp SHOULD | ||||
| gss-group15-sha512-* new-modp MAY | ||||
| gss-group16-sha512-* new-modp SHOULD | ||||
| gss-group17-sha512-* new-modp MAY | ||||
| gss-group18-sha512-* new-modp MAY | ||||
| gss-* RFC4462 MAY | ||||
| rsa1024-sha1 RFC4432 SHOULD NOT | ||||
| rsa2048-sha256 RFC4432 MAY | ||||
| The Implement column in the above table is a suggestion/ | 3.6. diffie-hellman-group16-sha512 | |||
| recommendation for the listed key exchange method to be implemented | ||||
| in the default list of key exchange methods. It is up to the end- | ||||
| user as to what algorithms they choose to be able to negotiate, so | ||||
| the KEX algorithms should be configurable by the administrator of the | ||||
| server as well as the user of the client. This RFC is intended to | ||||
| provide IANA defined names for these groups for interoperability. | ||||
| The Note column of the IANA table should probably continue to point | ||||
| to the implementation detail sections of the Reference RFCs where | ||||
| appropriate. | ||||
| The guidance of his RFC is that the SHA-1 algorithm hashing SHOULD | The use of FFC DH is well understood and trusted. Adding larger | |||
| NOT be used. If it is used, it should only be provided for backwards | modulus sizes and protecting with SHA2-512 should give enough head | |||
| compatibility, should not be used in new designs, and should be | room to be ready for the next scare that someone has pre-computed. | |||
| phased out of existing key exchanges as quickly as possible because | This modulus is larger than that required by [CNSA-SUITE] and should | |||
| of its known weaknesses. Any key exchange using SHA-1 SHOULD NOT be | be sufficient to inter-operate with more paranoid nation-states. | |||
| in a default key exchange list if at all possible. If they are | This method SHOULD+ be implemented. | |||
| needed for backward compatibility, they SHOULD be listed after all of | ||||
| the SHA-2 based key exchanges. | ||||
| The RFC4253 REQUIRED diffie-hellman-group14-sha1 method SHOULD be | 3.7. ecdh-sha2-nistp256 | |||
| 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 [CNSA-SUITE] and | ||||
| [safe-curves], this curve may not be as useful and strong as desired. | ||||
| The SSH development community is divided on this and many | ||||
| implementations do exist. However, there are good implementations of | ||||
| this along with a constant-time SHA2-256 implementation. If an | ||||
| implementer does not have a constant-time SHA2-384 implementation | ||||
| (which helps avoid side-channel attacks), then this is the correct | ||||
| ECDH to implement. This method SHOULD- be implemented. | ||||
| 3.8. ecdh-sha2-nistp384 | ||||
| This ECDH method should be implemented because it is smaller and | ||||
| faster than using large FFC primes with traditional Diffie-Hellman | ||||
| (DH). Given [CNSA-SUITE], it is considered good enough for TOP | ||||
| SECRET for now. This really needs a constant-time implementation of | ||||
| SHA2-384 to be useful. This method SHOULD+ be implemented. | ||||
| 3.9. gss-gex-sha1-* | ||||
| This set of ephemerally generated key exchange groups uses SHA-1 | ||||
| which has security concerns [RFC6194]. It is recommended that these | ||||
| key exchange groups NOT be used. This key exchange MUST NOT be | ||||
| implemented. | ||||
| 3.10. gss-group1-sha1-* | ||||
| This method suffers from the same problems of diffie-hellman- | ||||
| group1-sha1. It uses [RFC2409] Oakley Group 2 (a 1024-bit MODP | ||||
| group) and SHA-1 [RFC3174]. Due to recent security concerns with | ||||
| SHA-1 [RFC6194] and with MODP groups with less than 2048 bits | ||||
| [NIST-SP-800-131Ar1], this method is considered insecure. This | ||||
| method MUST NOT be implemented. | ||||
| 3.11. gss-group14-sha1-* | ||||
| This generated key exchange groups uses SHA-1 which has security | ||||
| concerns [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. | ||||
| 3.12. gss-group14-sha256-* | ||||
| If the GSS-API is to be used, then this method SHOULD be implemented. | ||||
| 3.13. gss-group16-sha512-* | ||||
| If the GSS-API is to be used, then this method SHOULD+ be | ||||
| implemented. | ||||
| 3.14. rsa1024-sha1 | ||||
| The security of RSA 1024-bit modulus keys is not good enough any | ||||
| longer. A minimum bit size should be 2048-bit groups. This | ||||
| generated key exchange groups uses SHA-1 which has security concerns | ||||
| [RFC6194]. This method MUST NOT be implemented. | ||||
| 4. Summary Guidance for Key Exchange Method Names | ||||
| The full set of official [IANASSH] key algorithm method names not | ||||
| otherwise mentioned in this RFC MAY be implemented. | ||||
| The Implement column is the current recommendations of this RFC. Key | ||||
| Exchange Method Names are listed alphabetically. | ||||
| Key Exchange Method Name Reference Implement | ||||
| ---------------------------------- ---------- --------- | ||||
| curve25519-sha256 ssh-curves SHOULD+ | ||||
| diffie-hellman-group-exchange-sha1 RFC4419 MUST NOT | ||||
| diffie-hellman-group1-sha1 RFC4253 MUST NOT | ||||
| diffie-hellman-group14-sha1 RFC4253 SHOULD- | ||||
| diffie-hellman-group14-sha256 new-modp MUST | ||||
| diffie-hellman-group16-sha512 new-modp SHOULD+ | ||||
| ecdh-sha2-nistp256 RFC5656 SHOULD- | ||||
| ecdh-sha2-nistp384 RFC5656 SHOULD+ | ||||
| gss-gex-sha1-* RFC4462 MUST NOT | ||||
| gss-group1-sha1-* RFC4462 MUST NOT | ||||
| gss-group14-sha1-* RFC4462 SHOULD- | ||||
| gss-group14-sha256-* gss-keyex SHOULD | ||||
| gss-group16-sha512-* gss-keyex SHOULD+ | ||||
| rsa1024-sha1 RFC4432 MUST NOT | ||||
| The guidance of this RFC is that the SHA-1 algorithm hashing MUST 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 MUST 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. | ||||
| The RFC4253 MUST diffie-hellman-group14-sha1 method SHOULD- be | ||||
| retained for compatibility with older Secure Shell implementations. | retained for compatibility with older Secure Shell implementations. | |||
| It is intended that this key exchange method be phased out as soon as | It is intended that this key exchange method be phased out as soon as | |||
| possible. | possible. | |||
| It is believed that all current SSH implementations should be able to | It is believed that all current SSH implementations should be able to | |||
| achieve an implementation of the "diffie-hellman-group14-sha256" | achieve an implementation of the "diffie-hellman-group14-sha256" | |||
| method. To that end, this is one method that MUST be implemented. | method. To that end, this is one method that MUST be implemented. | |||
| If GSS-API methods are available, then the RFC4462 REQUIRED gss- | ||||
| group14-sha1-* method SHOULD be retained for compatibility with older | ||||
| Secure Shell implementations and the gss-groups14-sha256-* method | ||||
| SHOULD be added as for "sha1". | ||||
| [TO BE REMOVED: This registration should take place at the following | [TO BE REMOVED: This registration should take place at the following | |||
| location: <http://www.iana.org/assignments/ssh-parameters/ssh- | location: <http://www.iana.org/assignments/ssh-parameters/ssh- | |||
| parameters.xhtml#ssh-parameters-16>] | parameters.xhtml#ssh-parameters-16>] | |||
| 5. Acknowledgements | 5. Acknowledgements | |||
| Thanks to the following people for review and comments: Denis Bider, | Thanks to the following people for review and comments: Denis Bider, | |||
| Peter Gutmann, Damien Miller, Niels Moeller, Matt Johnston, Iwamoto | Peter Gutmann, Damien Miller, Niels Moeller, Matt Johnston, Iwamoto | |||
| Kouichi, Simon Josefsson, Dave Dugal, Daniel Migault. | Kouichi, Simon Josefsson, Dave Dugal, Daniel Migault, Anna Johnston. | |||
| Thanks to the following people for code to implement interoperable | Thanks to the following people for code to implement inter-operable | |||
| exchanges using some of these groups as found in an this draft: | exchanges using some of these groups as found in an this draft: | |||
| Darren Tucker for OpenSSH and Matt Johnston for Dropbear. And thanks | Darren Tucker for OpenSSH and Matt Johnston for Dropbear. And thanks | |||
| to Iwamoto Kouichi for information about RLogin, Tera Term (ttssh) | to Iwamoto Kouichi for information about RLogin, Tera Term (ttssh) | |||
| and Poderosa implementations also adopting new Diffie-Hellman groups | and Poderosa implementations also adopting new Diffie-Hellman groups | |||
| based on this draft. | based on this draft. | |||
| 6. Security Considerations | 6. Security Considerations | |||
| The security considerations of [RFC4253] apply to this RFC. | The security considerations of [RFC4253] apply to this RFC. | |||
| The security considerations of [RFC3526] suggest that these MODP | It is desirable to deprecate or remove key exchange method name that | |||
| groups have security strengths given in this table. They are based | are considered weak. A key exchange method may be weak because too | |||
| on [RFC3766] Determining Strengths For Public Keys Used For | few bits are used, or the hashing algorithm is considered too weak. | |||
| Exchanging Symmetric Keys. | ||||
| Group modulus security strength estimates (RFC3526) | The diffie-hellman-group1-sha1 is being moved from MUST to MUST NOT. | |||
| This method used [RFC2409] Oakley Group 2 (a 1024-bit MODP group) and | ||||
| SHA-1 [RFC3174]. Due to recent security concerns with SHA-1 | ||||
| [RFC6194] and with MODP groups with less than 2048 bits | ||||
| [NIST-SP-800-131Ar1], this method is no longer considered secure. | ||||
| +--------+----------+---------------------+---------------------+ | The United States Information Assurance Directorate (IAD) at the | |||
| | Group | Modulus | Strength Estimate 1 | Strength Estimate 2 | | National Security Agency (NSA) has published a FAQ | |||
| | | +----------+----------+----------+----------+ | [MFQ-U-OO-815099-15] suggesting that the use of Elliptic Curve | |||
| | | | | exponent | | exponent | | Diffie-Hellman (ECDH) using the nistp256 curve and SHA-2 based hashes | |||
| | | | in bits | size | in bits | size | | less than SHA2-384 are no longer sufficient for transport of Top | |||
| +--------+----------+----------+----------+----------+----------+ | Secret information. It is for this reason that this draft moves | |||
| | 14 | 2048-bit | 110 | 220- | 160 | 320- | | ecdh-sha2-nistp256 from a MUST to MAY as a key exchange method. This | |||
| | 15 | 3072-bit | 130 | 260- | 210 | 420- | | is the same reason that the stronger MODP groups being adopted. As | |||
| | 16 | 4096-bit | 150 | 300- | 240 | 480- | | the MODP group14 is already present in most SSH implementations and | |||
| | 17 | 6144-bit | 170 | 340- | 270 | 540- | | most implementations already have a SHA2-256 implementation, so | |||
| | 18 | 8192-bit | 190 | 380- | 310 | 620- | | 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. | ||||
| Figure 1 | The NSA Information Assurance Directorate (IAD) has also published | |||
| the Commercial National Security Algorithm Suite (CNSA Suite) | ||||
| [CNSA-SUITE] in which the 3072-bit MODP Group 15 in [RFC3526] is | ||||
| explicitly mentioned as the minimum modulus to protect Top Secret | ||||
| communications. | ||||
| Many users seem to be interested in the perceived safety of using | It has been observed in [safe-curves] that the NIST Elliptic Curve | |||
| larger MODP groups and hashing with SHA2-based algorithms. | 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 [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. | ||||
| 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. | ||||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [FIPS-180-4] | ||||
| National Institute of Standards and Technology, "Secure | ||||
| Hash Standard (SHS)", FIPS PUB 180-4, August 2015, | ||||
| <http://nvlpubs.nist.gov/nistpubs/FIPS/ | ||||
| NIST.FIPS.180-4.pdf>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3526] Kivinen, T. and M. Kojo, "More Modular Exponential (MODP) | [RFC3526] Kivinen, T. and M. Kojo, "More Modular Exponential (MODP) | |||
| Diffie-Hellman groups for Internet Key Exchange (IKE)", | Diffie-Hellman groups for Internet Key Exchange (IKE)", | |||
| RFC 3526, DOI 10.17487/RFC3526, May 2003, | RFC 3526, DOI 10.17487/RFC3526, May 2003, | |||
| <http://www.rfc-editor.org/info/rfc3526>. | <http://www.rfc-editor.org/info/rfc3526>. | |||
| [RFC4250] Lehtinen, S. and C. Lonvick, Ed., "The Secure Shell (SSH) | ||||
| Protocol Assigned Numbers", RFC 4250, | ||||
| DOI 10.17487/RFC4250, January 2006, | ||||
| <http://www.rfc-editor.org/info/rfc4250>. | ||||
| [RFC4253] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | [RFC4253] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | |||
| Transport Layer Protocol", RFC 4253, DOI 10.17487/RFC4253, | Transport Layer Protocol", RFC 4253, DOI 10.17487/RFC4253, | |||
| January 2006, <http://www.rfc-editor.org/info/rfc4253>. | January 2006, <http://www.rfc-editor.org/info/rfc4253>. | |||
| 7.2. Informative References | 7.2. Informative References | |||
| [CNSA-SUITE] | [CNSA-SUITE] | |||
| "Information Assurance by the National Security Agency", | "Information Assurance by the National Security Agency", | |||
| "Commercial National Security Algorithm Suite", September | "Commercial National Security Algorithm Suite", September | |||
| 2016, <https://www.iad.gov/iad/programs/iad-initiatives/ | 2016, <https://www.iad.gov/iad/programs/iad-initiatives/ | |||
| cnsa-suite.cfm>. | cnsa-suite.cfm>. | |||
| [I-D.ietf-curdle-ssh-curves] | [I-D.ietf-curdle-ssh-curves] | |||
| Adamantiadis, A. and S. Josefsson, "Secure Shell (SSH) Key | Adamantiadis, A. and S. Josefsson, "Secure Shell (SSH) Key | |||
| Exchange Method using Curve25519 and Curve448", draft- | Exchange Method using Curve25519 and Curve448", draft- | |||
| ietf-curdle-ssh-curves-00 (work in progress), March 2016. | ietf-curdle-ssh-curves-00 (work in progress), March 2016. | |||
| [I-D.ietf-curdle-ssh-modp-dh-sha2] | [I-D.ietf-curdle-ssh-modp-dh-sha2] | |||
| Baushke, M., "More Modular Exponential (MODP) Diffie- | Baushke, M., "More Modular Exponential (MODP) Diffie- | |||
| Hellman (DH) Key Exchange (KEX) Groups for Secure Shell | Hellman (DH) Key Exchange (KEX) Groups for Secure Shell | |||
| (SSH)", draft-ietf-curdle-ssh-modp-dh-sha2-00 (work in | (SSH)", draft-ietf-curdle-ssh-modp-dh-sha2-03 (work in | |||
| progress), September 2016. | progress), March 2017. | |||
| [IANASSH] "Internet Assigned Numbers Authority", "IANA, Secure Shell | ||||
| (SSH) Protocol Parameters", March 2017, | ||||
| <http://www.iana.org/assignments/ssh-parameters/ | ||||
| ssh-parameters.xhtml>. | ||||
| [MFQ-U-OO-815099-15] | [MFQ-U-OO-815099-15] | |||
| "National Security Agency/Central Security Service", "CNSA | "National Security Agency/Central Security Service", "CNSA | |||
| Suite and Quantum Computing FAQ", January 2016, | Suite and Quantum Computing FAQ", January 2016, | |||
| <https://www.iad.gov/iad/library/ia-guidance/ia-solutions- | <https://www.iad.gov/iad/library/ia-guidance/ia-solutions- | |||
| for-classified/algorithm-guidance/cnsa-suite-and-quantum- | for-classified/algorithm-guidance/cnsa-suite-and-quantum- | |||
| computing-faq.cfm>. | computing-faq.cfm>. | |||
| [NEWGSSAPI] | ||||
| Sorce, S. and H. Kario, "GSS-API Key Exchange with SHA2", | ||||
| December 2016, <https://tools.ietf.org/html/draft-ssorce- | ||||
| gss-keyex-sha2-00>. | ||||
| [NIST-SP-800-131Ar1] | [NIST-SP-800-131Ar1] | |||
| Barker, and Roginsky, "Transitions: Recommendation for the | Barker, and Roginsky, "Transitions: Recommendation for the | |||
| Transitioning of the Use of Cryptographic Algorithms and | Transitioning of the Use of Cryptographic Algorithms and | |||
| Key Lengths", NIST Special Publication 800-131A Revision | Key Lengths", NIST Special Publication 800-131A Revision | |||
| 1, November 2015, | 1, November 2015, | |||
| <http://nvlpubs.nist.gov/nistpubs/SpecialPublications/ | <http://nvlpubs.nist.gov/nistpubs/SpecialPublications/ | |||
| NIST.SP.800-131Ar1.pdf>. | NIST.SP.800-131Ar1.pdf>. | |||
| [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange | [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange | |||
| (IKE)", RFC 2409, DOI 10.17487/RFC2409, November 1998, | (IKE)", RFC 2409, DOI 10.17487/RFC2409, November 1998, | |||
| <http://www.rfc-editor.org/info/rfc2409>. | <http://www.rfc-editor.org/info/rfc2409>. | |||
| [RFC3174] Eastlake 3rd, D. and P. Jones, "US Secure Hash Algorithm 1 | [RFC3174] Eastlake 3rd, D. and P. Jones, "US Secure Hash Algorithm 1 | |||
| (SHA1)", RFC 3174, DOI 10.17487/RFC3174, September 2001, | (SHA1)", RFC 3174, DOI 10.17487/RFC3174, September 2001, | |||
| <http://www.rfc-editor.org/info/rfc3174>. | <http://www.rfc-editor.org/info/rfc3174>. | |||
| [RFC3766] Orman, H. and P. Hoffman, "Determining Strengths For | ||||
| Public Keys Used For Exchanging Symmetric Keys", BCP 86, | ||||
| RFC 3766, DOI 10.17487/RFC3766, April 2004, | ||||
| <http://www.rfc-editor.org/info/rfc3766>. | ||||
| [RFC4419] Friedl, M., Provos, N., and W. Simpson, "Diffie-Hellman | [RFC4419] Friedl, M., Provos, N., and W. Simpson, "Diffie-Hellman | |||
| Group Exchange for the Secure Shell (SSH) Transport Layer | Group Exchange for the Secure Shell (SSH) Transport Layer | |||
| Protocol", RFC 4419, DOI 10.17487/RFC4419, March 2006, | Protocol", RFC 4419, DOI 10.17487/RFC4419, March 2006, | |||
| <http://www.rfc-editor.org/info/rfc4419>. | <http://www.rfc-editor.org/info/rfc4419>. | |||
| [RFC4432] Harris, B., "RSA Key Exchange for the Secure Shell (SSH) | [RFC4432] Harris, B., "RSA Key Exchange for the Secure Shell (SSH) | |||
| Transport Layer Protocol", RFC 4432, DOI 10.17487/RFC4432, | Transport Layer Protocol", RFC 4432, DOI 10.17487/RFC4432, | |||
| March 2006, <http://www.rfc-editor.org/info/rfc4432>. | March 2006, <http://www.rfc-editor.org/info/rfc4432>. | |||
| [RFC4462] Hutzelman, J., Salowey, J., Galbraith, J., and V. Welch, | [RFC4462] Hutzelman, J., Salowey, J., Galbraith, J., and V. Welch, | |||
| skipping to change at page 9, line 4 ¶ | skipping to change at page 11, line 6 ¶ | |||
| Considerations for the SHA-0 and SHA-1 Message-Digest | Considerations for the SHA-0 and SHA-1 Message-Digest | |||
| Algorithms", RFC 6194, DOI 10.17487/RFC6194, March 2011, | Algorithms", RFC 6194, DOI 10.17487/RFC6194, March 2011, | |||
| <http://www.rfc-editor.org/info/rfc6194>. | <http://www.rfc-editor.org/info/rfc6194>. | |||
| [safe-curves] | [safe-curves] | |||
| Bernstein, and Lange, "SafeCurves: choosing safe curves | Bernstein, and Lange, "SafeCurves: choosing safe curves | |||
| for elliptic-curve cryptography.", February 2016, | for elliptic-curve cryptography.", February 2016, | |||
| <https://safecurves.cr.yp.to/>. | <https://safecurves.cr.yp.to/>. | |||
| Author's Address | Author's Address | |||
| Mark D. Baushke | Mark D. Baushke | |||
| Juniper Networks, Inc. | Juniper Networks, Inc. | |||
| 1133 Innovation Way | 1133 Innovation Way | |||
| Sunnyvale, CA 94089-1228 | Sunnyvale, CA 94089-1228 | |||
| US | US | |||
| Phone: +1 408 745 2952 | ||||
| Email: mdb@juniper.net | Email: mdb@juniper.net | |||
| URI: http://www.juniper.net/ | URI: http://www.juniper.net/ | |||
| End of changes. 43 change blocks. | ||||
| 185 lines changed or deleted | 274 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||