< draft-ietf-curdle-ssh-kex-sha2-14.txt   draft-ietf-curdle-ssh-kex-sha2-15.txt >
Internet Engineering Task Force M. D. Baushke Internet Engineering Task Force M. D. Baushke
Internet-Draft Juniper Networks, Inc. Internet-Draft Juniper Networks, Inc.
Updates: 4250 4253 4432 4462 (if approved) 10 February 2021 Updates: 4250 4253 4432 4462 (if approved) 17 March 2021
Intended status: Standards Track Intended status: Standards Track
Expires: 14 August 2021 Expires: 18 September 2021
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-14 draft-ietf-curdle-ssh-kex-sha2-15
Abstract Abstract
This document is intended to update the recommended set of key This document is intended to update the recommended set of key
exchange methods for use in the Secure Shell (SSH) protocol to meet exchange methods for use in the Secure Shell (SSH) protocol to meet
evolving needs for stronger security. This document updates RFC evolving needs for stronger security. This document updates RFC
4250, RFC 4253, RFC 4432, and RFC 4462. 4250, RFC 4253, RFC 4432, and RFC 4462.
Status of This Memo Status of This Memo
skipping to change at page 1, line 35 skipping to change at page 1, line 35
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 https://datatracker.ietf.org/drafts/current/. Drafts is at https://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 14 August 2021. This Internet-Draft will expire on 18 September 2021.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 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 (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components and restrictions with respect to this document. Code Components
extracted from this document must include Simplified BSD License text extracted from this document must include Simplified BSD License text
as described in Section 4.e of the Trust Legal Provisions and are as described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Simplified BSD License. provided without warranty as described in the Simplified BSD License.
Table of Contents Table of Contents
1. Overview and Rationale . . . . . . . . . . . . . . . . . . . 2 1. Overview and Rationale . . . . . . . . . . . . . . . . . . . 2
1.1. Selecting an appropriate hashing algorithm . . . . . . . 3 1.1. Selecting an appropriate hashing algorithm . . . . . . . 3
1.2. Selecting an appropriate Public Key Algorithm . . . . . . 4 1.2. Selecting an appropriate Public key Algorithm . . . . . . 5
1.2.1. Elliptic Curve Cryptography (ECC) . . . . . . . . . . 4 1.2.1. Elliptic Curve Cryptography (ECC) . . . . . . . . . . 6
1.2.2. Finite Field Cryptography (FFC) . . . . . . . . . . . 5 1.2.2. Finite Field Cryptography (FFC) . . . . . . . . . . . 6
1.2.3. Integer Factorization Cryptography (IFC) . . . . . . 5 1.2.3. Integer Factorization Cryptography (IFC) . . . . . . 7
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 6 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 8
3. Key Exchange Methods . . . . . . . . . . . . . . . . . . . . 6 3. Key Exchange Methods . . . . . . . . . . . . . . . . . . . . 8
3.1. SHA-1 and SHA-2 Hashing . . . . . . . . . . . . . . . . . 6 3.1. Elliptic Curve Cryptography (ECC) . . . . . . . . . . . . 8
3.2. Elliptic Curve Cryptography (ECC) . . . . . . . . . . . . 6 3.1.1. curve25519-sha256 and gss-curve25519-sha256-* . . . . 9
3.2.1. curve25519-sha256 and gss-curve25519-sha256-* . . . . 7 3.1.2. curve448-sha512 and gss-curve448-sha512-* . . . . . . 9
3.2.2. curve448-sha512 and gss-curve448-sha512-* . . . . . . 7 3.1.3. ecdh-*, ecmqv-sha2, and gss-nistp* . . . . . . . . . 10
3.2.3. ECC diffie-hellman using ecdh-*, ecmqv-sha2, and 3.2. Finite Field Cryptography (FFC) . . . . . . . . . . . . . 11
gss-nistp* . . . . . . . . . . . . . . . . . . . . . 7 3.2.1. FFC diffie-hellman using generated MODP groups . . . 11
3.3. Finite Field Cryptography (FFC) . . . . . . . . . . . . . 8 3.2.2. FFC diffie-hellman using named MODP groups . . . . . 12
3.3.1. FFC diffie-hellman using generated MODP groups . . . 8 3.3. Integer Factorization Cryptography (IFC) . . . . . . . . 13
3.3.2. FFC diffie-hellman using named MODP groups . . . . . 8 3.4. KDFs and Integrity Hashing . . . . . . . . . . . . . . . 14
3.4. Integer Factorization Cryptography (IFC) . . . . . . . . 9 3.5. Secure Shell Extension Negotiation . . . . . . . . . . . 15
3.5. Secure Shell Extension Negotiation . . . . . . . . . . . 9
4. Summary Guidance for Key Exchange Method Names 4. Summary Guidance for Key Exchange Method Names
Implementations . . . . . . . . . . . . . . . . . . . . . 9 Implementations . . . . . . . . . . . . . . . . . . . . . 15
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 17
6. Security Considerations . . . . . . . . . . . . . . . . . . . 12 6. Security Considerations . . . . . . . . . . . . . . . . . . . 17
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.1. Normative References . . . . . . . . . . . . . . . . . . 12 8.1. Normative References . . . . . . . . . . . . . . . . . . 18
8.2. Informative References . . . . . . . . . . . . . . . . . 13 8.2. Informative References . . . . . . . . . . . . . . . . . 19
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 14 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 21
1. Overview and Rationale 1. Overview and Rationale
Secure Shell (SSH) is a common protocol for secure communication on Secure Shell (SSH) is a common protocol for secure communication on
the Internet. In [RFC4253], SSH originally defined two Key Exchange the Internet. In [RFC4253], SSH originally defined two Key Exchange
(KEX) Method Names that MUST be implemented. Over time what was once (KEX) Method Names that MUST be implemented. Over time what was once
considered secure is no longer considered secure. The purpose of considered secure is no longer considered secure. The purpose of
this RFC is to recommend that some published key exchanges be this RFC is to recommend that some published key exchanges be
deprecated as well as recommending some that SHOULD and one that MUST deprecated or disallowed as well as recommending some that SHOULD and
be adopted. This document updates [RFC4250] [RFC4253] [RFC4432] one that MUST be adopted.
[RFC4462] by changing the requirement level ("MUST" moving to
"SHOULD" or "MAY" or "SHOULD NOT", and "MAY" moving to "MUST" or
"SHOULD" or "SHOULD NOT" or "MUST NOT") of various key-exchange
mechanisms.
A key exchange has two components, a hashing algorithm and a public This document updates [RFC4250] [RFC4253] [RFC4432] [RFC4462] by
key algorithm. The following subsections describe how to select each changing the requirement level ("MUST" moving to "SHOULD" or "MAY" or
component. "SHOULD NOT", and "MAY" moving to "MUST" or "SHOULD" or "SHOULD NOT"
or "MUST NOT") of various key exchange mechanisms.
[RFC4253] section 7.2 says the following:
"The key exchange produces two values: a shared secret K, and an
exchange hash H. Encryption and authentication keys are derived from
these. The exchange hash H from the first key exchange is
additionally used as the session identifier, which is a unique
identifier for this connection. It is used by authentication methods
as a part of the data that is signed as a proof of possession of a
private key. Once computed, the session identifier is not changed,
even if keys are later re-exchanged."
The security strength of the public key exchange algorithm and the
hash used in the Key Derivation Function (KDF) both impact the
security of the shared secret K being used.
The hashing algorithms used by key exchange methods described in this
document are: sha1, sha256, sha384, and sha512. In many cases, the
hash name is explicitly appended to the public key exchange algorithm
name. However, some of them are implicit and defined in the RFC that
defines the key exchange algorithm name.
It is good to try to match the security strength of the public key
exchange algorithm with security strength of the symmetric cipher.
There are many possible symmetric ciphers available, with multiple
modes. The list in Table 1 is intended as a representative sample of
those which appear to be present in most SSH implementations.
+========================+=============================+
| Cipher Name (modes) | Estimated Security Strength |
+========================+=============================+
| 3des (cbc) | 112 bits |
+------------------------+-----------------------------+
| aes128 (cbc, ctr, gcm) | 128 bits |
+------------------------+-----------------------------+
| aes192 (cbc, ctr, gcm) | 192 bits |
+------------------------+-----------------------------+
| aes256 (cbc, ctr, gcm) | 256 bits |
+------------------------+-----------------------------+
Table 1: Symmetric Cipher Security Strengths
The following subsections describe how to select each component of
the key exchange.
1.1. Selecting an appropriate hashing algorithm 1.1. Selecting an appropriate hashing algorithm
The SHA-1 hash is in the process of being deprecated for many The SHA-1 hash is in the process of being deprecated for many
reasons. There have been attacks against SHA-1 that have shown there reasons.
are weaknesses in the algorithm. Therefore, it is desirable to move
away from using it before attacks become more serious. There have been attacks against SHA-1 and it is no longer strong
enough for SSH security requirements. Therefore, it is desirable to
move away from using it before attacks become more serious.
The SHA-1 hash provides for approximately 80 bits of security
strength. This means that the shared key being used has at most 80
bits of security strength which may not be sufficient for most users.
At present, the attacks against SHA-1 are collision attacks that At present, the attacks against SHA-1 are collision attacks that
usually rely on human help, rather than a pre-image attack. SHA-1 usually rely on human help, rather than a pre-image attack. SHA-1
resistance against second pre-image is still at 160 bits, but SSH resistance against second pre-image is still at 160 bits, but SSH
does not depend on second pre-image resistance, but rather on chosen- does not depend on second pre-image resistance, but rather on chosen-
prefix collision resistance. prefix collision resistance.
Transcript Collision attacks are documented in [TRANS-COLL]. This Transcript Collision attacks are documented in [TRANS-COLL]. This
paper shows that the man in the middle does not tamper with the paper shows that the man in the middle does not tamper with the
Diffie-Hellman values and does not know the connection keys. Diffie-Hellman values and does not know the connection keys. The
However, it manages to tamper with both I_C and I_S, and can attack could be used to tamper with both I_C and I_S (as defined in
therefore downgrade the negotiated ciphersuite to a weak section 7.3 of [RFC4253]), and might potentially be able to downgrade
cryptographic algorithm that the attacker knows how to break. the negotiated ciphersuite to a weak cryptographic algorithm that the
attacker knows how to break.
These attacks are still computationally very difficult to perform, These attacks are still computationally very difficult to perform,
but is is desirable that any Key Exchanging using SHA-1 be phased out but is is desirable that any key exchanging using SHA-1 be phased out
as soon as possible. as soon as possible.
These attacks are potentially slightly easier when the server If there is a need for using SHA-1 in a key exchange for
provides the Diffie-Hellman parameters such as using the [RFC4419] compatibility, it would be desirable it be listed last in the
generated set of diffie-hellman parameters with SHA-1 hashing. If preference list of key exchanges.
there is a need for using SHA-1 in a Key Exchange for compatibility,
it would be desirable it be listed last in the preference list of key
exchanges.
Use of the SHA-2 family of hashes found in [RFC6234] rather than the Use of the SHA-2 family of hashes found in [RFC6234] rather than the
SHA-1 hash is strongly advised. SHA-1 hash is strongly advised.
When it comes to the SHA-2 family of Secure Hashing functions, When it comes to the SHA-2 family of Secure Hashing functions,
SHA2-224 has 112 bits of security strength; SHA2-256 has 128 bits of SHA2-256 has 128 bits of security strength; SHA2-384 has 192 bits of
security strength; SHA2-384 has 192 bits of security strength; and security strength; and SHA2-512 has 256 bits of security strength.
SHA2-512 has 256 bits of security strength. As the same compute It is suggested that the minimum secure hashing function that should
power is needed for both SHA2-224 and SHA2-256 and currently no KeX be used for key exchange methods is SHA2-256.
uses SHA2-224, it is suggested that the minimum secure hashing
function that should be used for Key Exchange Methods is SHA2-256.
To avoid combinatorial explosion of key exchange names, newer key To avoid combinatorial explosion of key exchange names, newer key
exchanges are restricting to the use of *-sha256 and *-sha512. exchanges are generally restricted to *-sha256 and *-sha512. The
exceptions are ecdh-sha2-nistp384 and gss-nistp384-sha384-* which are
defined to use SHA2-384 for the hash algorithm.
1.2. Selecting an appropriate Public Key Algorithm Table 2 provides a summary of security strength for hashing
functions.
SSH uses mathematically hard problems for doing Key Exchange: +===========+=============================+
| Hash Name | Estimated Security Strength |
+===========+=============================+
| sha1 | 80 bits (before attacks) |
+-----------+-----------------------------+
| sha256 | 128 bits |
+-----------+-----------------------------+
| sha384 | 192 bits |
+-----------+-----------------------------+
| sha512 | 256 bits |
+-----------+-----------------------------+
* Elliptic Curve Cryptography (ECC) has families of curves for Key Table 2: Hashing Function Security
Exchange Methods for SSH. NIST prime curves with names and other Strengths
1.2. Selecting an appropriate Public key Algorithm
SSH uses mathematically hard problems for doing key exchanges:
* Elliptic Curve Cryptography (ECC) has families of curves for key
exchange methods for SSH. NIST prime curves with names and other
curves are available using an object identifier (OID) with curves are available using an object identifier (OID) with
Elliptic Curve Diffie-Hellman (ECDH) via [RFC5656]. Curve25519 Elliptic Curve Diffie-Hellman (ECDH) via [RFC5656]. Curve25519
and Curve448 key exchanges are used with ECDH via [RFC8731]. and Curve448 key exchanges are used with ECDH via [RFC8731].
* Finite Field Cryptography (FFC) is used for Diffie-Hellman (DH) * Finite Field Cryptography (FFC) is used for Diffie-Hellman (DH)
key exchange with "safe primes" either from a specified list found key exchange with "safe primes" either from a specified list found
in [RFC3526] or generated dynamically via [RFC4419] as updated by in [RFC3526] or generated dynamically via [RFC4419] as updated by
[RFC8270]. [RFC8270].
* Integer Factorization Cryptography (IFC) using the RSA algorithm * Integer Factorization Cryptography (IFC) using the RSA algorithm
is provided for in [RFC4432]. is provided for in [RFC4432].
It is desirable for the security strength of the key exchange be It is desirable for the security strength of the key exchange be
chosen to be comparable with the security strength of the other chosen to be comparable with the security strength of the other
elements of the SSH handshake. Attackers can target the weakest elements of the SSH handshake. Attackers can target the weakest
element of the SSH handshake. element of the SSH handshake.
It is desirable to select a minimum of 112 bits of security strength. It is desirable to select a minimum of 112 bits of security strength
to match the weakest of the symmetric cipher (3des-cbc) available.
Based on implementer security needs, a stronger minimum may be Based on implementer security needs, a stronger minimum may be
desired. desired.
The larger the MODP group, the ECC curve size, or the RSA key length,
the more computation power will be required to perform the key
exchange.
1.2.1. Elliptic Curve Cryptography (ECC) 1.2.1. Elliptic Curve Cryptography (ECC)
For ECC, it is recommended to select a curve with approximately 128 For ECC, across all of the named curves the minimum security strength
bits of security strength. is approximately 128 bits. The [RFC5656] key exchanges for the named
curves use a hashing function with a matching security strength.
Likewise, the [RFC8731] key exchanges use a hashing function which
has more security strength than the curves. The minimum strength
will be the security strength of the curve. Table 3 contains a
breakdown of just the ECC security strength by curve name and not
including the hashing algorithm used. The hashing algorithm defined
have approximately the same number of bits of security as the named
curve.
+============+=============================+ +============+=============================+
| Curve Name | Estimated Security Strength | | Curve Name | Estimated Security Strength |
+============+=============================+ +============+=============================+
| nistp256 | 128 bits | | nistp256 | 128 bits |
+------------+-----------------------------+ +------------+-----------------------------+
| nistp384 | 192 bits | | nistp384 | 192 bits |
+------------+-----------------------------+ +------------+-----------------------------+
| nistp521 | 512 bits | | nistp521 | 512 bits |
+------------+-----------------------------+ +------------+-----------------------------+
| Curve25519 | 128 bits | | Curve25519 | 128 bits |
+------------+-----------------------------+ +------------+-----------------------------+
| Curve448 | 224 bits | | Curve448 | 224 bits |
+------------+-----------------------------+ +------------+-----------------------------+
Table 1: ECC Security Strengths Table 3: ECC Security Strengths
1.2.2. Finite Field Cryptography (FFC) 1.2.2. Finite Field Cryptography (FFC)
For FFC, it is recommended to use a modulus with 2048 bits (112 bits For FFC, it is recommended to use a modulus with a minimum of 2048
of security strength). bits (approximately 112 bits of security strength) with a hash that
has at least as many bits of security as the FFC. The security
strength of the FFC and the hash together will be the minimum of
those two values. This is sufficient to provide a consistent
security strength for the 3des-cbc cipher. [RFC3526] section 1 notes
that the Advanced Encryption Standard (AES) cipher, which has more
strength, needs stronger groups. For the 128-bit AES we need about a
3200-bit group. The 192 and 256-bit keys would need groups that are
about 8000 and 15400 bits respectively. Table 4 provides the
security strength of the MODP group. When paired with a hashing
algorithm, the security strength will be the minimum of the two
algorithms.
+==================+=============================+============+ +==================+=============================+============+
| Prime Field Size | Estimated Security Strength | Example | | Prime Field Size | Estimated Security Strength | Example |
| | | MODP Group | | | | MODP Group |
+==================+=============================+============+ +==================+=============================+============+
| 2048-bit | 112 bits | group14 | | 2048-bit | 112 bits | group14 |
+------------------+-----------------------------+------------+ +------------------+-----------------------------+------------+
| 3072-bit | 128 bits | group15 | | 3072-bit | 128 bits | group15 |
+------------------+-----------------------------+------------+ +------------------+-----------------------------+------------+
| 4096-bit | 152 bits | group16 | | 4096-bit | 152 bits | group16 |
+------------------+-----------------------------+------------+ +------------------+-----------------------------+------------+
| 6144-bit | 176 bits | group17 | | 6144-bit | 176 bits | group17 |
+------------------+-----------------------------+------------+ +------------------+-----------------------------+------------+
| 8192-bit | 200 bits | group18 | | 8192-bit | 200 bits | group18 |
+------------------+-----------------------------+------------+ +------------------+-----------------------------+------------+
Table 2: FFC MODP Security Strengths Table 4: FFC MODP Security Strengths
The minimum MODP group that MAY be used is the 2048-bit MODP group14. The minimum MODP group is the 2048-bit MODP group14. When used with
Implementations SHOULD support a 3072-bit MODP group or larger. sha1, this group provides approximately 80 bits of security. When
used with sha256, this group provides approximately 112 bits of
security. The 3des-cbc cipher itself provides at most 112 bits of
security, so the group14-sha256 key exchanges is sufficient to keep
all of the 3des-cbc key at 112 bits of security.
A 3072-bit MODP group with sha256 hash will provide approximately 128
bits of security. This is desirable when using a Cipher such as
aes128 or chacha20-poly1305 that provides approximately 128 bits of
security.
The 8192-bit group18 MODP group when used with sha512 provides
approximately 200 bits of security which is sufficient to protect
aes192 with 192 bits of security.
1.2.3. Integer Factorization Cryptography (IFC) 1.2.3. Integer Factorization Cryptography (IFC)
The only IFC algorithm for key exchange is the RSA algorithm The only IFC algorithm for key exchange is the RSA algorithm
specified in [RFC4432]. The minimum modulus size is 2048 bits. The specified in [RFC4432]. RSA 1024 bit keys have approximately 80 bits
use of a SHA-2 Family hash with RSA 2048-bit keys has sufficient of security strength. RSA 2048 bit keys have approximately 112 bits
security. The rsa1024-sha1 key exchange has less than 2048 bits and of security strength. It is worth noting that the IFC types of key
MUST NOT be implemented. exchange do not provide Forward Secrecy which both FFC and ECC do
provide.
In order to match the 112 bits of security strength needed for 3des-
cbc, an RSA 2048 bit key matches the security strength. The use of a
SHA-2 Family hash with RSA 2048-bit keys has sufficient security to
match the 3des-cbc symmetric cipher. The rsa1024-sha1 key exchange
has approximately 80 bits of security strength and is not desirable.
Table 5 summarizes the security strengths of these key exchanges
without including the hashing algorithm strength.
+=====================+=============================+ +=====================+=============================+
| Key Exchange Method | Estimated Security Strength | | Key Exchange Method | Estimated Security Strength |
+=====================+=============================+ +=====================+=============================+
| rsa1024-sha1 | 80 bits | | rsa1024-sha1 | 80 bits |
+---------------------+-----------------------------+ +---------------------+-----------------------------+
| rsa2048-sha256 | 112 bits | | rsa2048-sha256 | 112 bits |
+---------------------+-----------------------------+ +---------------------+-----------------------------+
Table 3: IFC Security Strengths Table 5: IFC Security Strengths
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", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
3. Key Exchange Methods 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 data key exchange is indicated in SSH. how the use of data key exchange is indicated in SSH.
This RFC also collects key exchange method names in various existing This RFC also collects key exchange method names in various existing
RFCs [RFC4253], [RFC4419], [RFC4432], [RFC4462], [RFC5656], RFCs [RFC4253], [RFC4419], [RFC4432], [RFC4462], [RFC5656],
[RFC8268], [RFC8731], [RFC8732], and [RFC8308], and provides a [RFC8268], [RFC8731], [RFC8732], and [RFC8308], and provides a
suggested suitability for implementation of MUST, SHOULD, SHOULD NOT, suggested suitability for implementation of MUST, SHOULD, MAY, SHOULD
and MUST NOT. Any method not explicitly listed MAY be implemented. NOT, and MUST NOT. Any method not explicitly listed MAY be
implemented.
This document is intended to provide guidance as to what key exchange This document is intended to provide guidance as to what key exchange
algorithms are to be considered for new or updated SSH algorithms are to be considered for new or updated SSH
implementations. implementations.
3.1. SHA-1 and SHA-2 Hashing 3.1. Elliptic Curve Cryptography (ECC)
All of the key exchanges using the SHA-1 hashing algorithm should be
deprecated and phased out of use because SHA-1 has security concerns,
as documented in [RFC6194]. The SHA-2 Family of hashes [RFC6234] is
the only one which is more secure than SHA-1 and has been
standardized for use with SSH key exchanges.
Prior to the changes made by this document, diffie-hellman- The EC key exchange algorithms used with SSH include the ECDH and EC
group1-sha1 and diffie-hellman-group14-sha1 were mandatory to Menezes-Qu-Vanstone (ecmqv).
implement (MTI). diffie-hellman-group14-sha1 is the stronger of the
two. Group14 (a 2048-bit MODP group) is defined in [RFC3526]. It is
reasonable to retain the diffie-hellman-group14-sha1 exchange for
interoperability with legacy implementations. The diffie-hellman-
group14-sha1 key exchange MAY be implemented.
The diffie-hellman-group1-sha1, diffie-hellman-group-exchange-sha1, The ECC curves defined for the key exchange algorithms above include;
gss-gex-sha1-*, and gss-group1-sha1-* key exchanges SHOULD NOT be curve25519, curve448, the NIST prime curves (nistp256, nistp384,
implemented. nistp521) as well as other curves allowed for by [RFC5656] section 6.
There are GSSAPI forms for these curves as well which have a 'gss-'
prefix.
3.2. Elliptic Curve Cryptography (ECC) 3.1.1. curve25519-sha256 and gss-curve25519-sha256-*
3.2.1. curve25519-sha256 and gss-curve25519-sha256-*
Curve25519 is efficient on a wide range of architectures with Curve25519 is efficient on a wide range of architectures with
properties that allow higher performance implementations compared to properties that allow higher performance implementations compared to
traditional elliptic curves. The use of SHA2-256 (also known as traditional elliptic curves. The use of hash SHA2-256 (also known as
SHA-256 and sha256) as defined in [RFC6234] for integrity is a SHA-256 and sha256) as defined in [RFC6234] for integrity is a
reasonable one for this method. These key exchange methods are reasonable one for both the KDF and integrity for use with both gss
described in [RFC8731] and [RFC8732] and are similar to the IKEv2 Key and non-gss uses of curve25519 key exchange methods. These key
Agreement described in [RFC8031]. The curve25519-sha256 key exchange exchange methods are described in [RFC8731] and [RFC8732] and are
method has multiple implementations and SHOULD be implemented. The similar to the IKEv2 key agreement described in [RFC8031]. The
gss-curve25519-sha256-* key exchange method SHOULD also be curve25519-sha256 key exchange method has multiple implementations
implemented because it shares the same performance and security and SHOULD be implemented. The gss-curve25519-sha256-* key exchange
characteristics as curve25519-sha2. method SHOULD also be implemented because it shares the same
performance and security characteristics as curve25519-sha256.
3.2.2. curve448-sha512 and gss-curve448-sha512-* Table 6 contains a summary of the recommendations for curve25519
based key exchanges.
+==========================+==========+
| Key Exchange Method Name | Guidance |
+==========================+==========+
| curve25519-sha256 | SHOULD |
+--------------------------+----------+
| gss-curve25519-sha256-* | SHOULD |
+--------------------------+----------+
Table 6: Curve25519 Implementation
Guidance
3.1.2. curve448-sha512 and gss-curve448-sha512-*
Curve448 provides more security strength than Curve25519 at a higher Curve448 provides more security strength than Curve25519 at a higher
computational and bandwidth cost. It uses SHA2-512 (also known as computational and bandwidth cost. The corresponding key exchange
SHA-512) defined in [RFC6234] for integrity. These Key Exchange methods use SHA2-512 (also known as SHA-512) defined in [RFC6234] for
Methods are described in [RFC8731] and [RFC8732] and are similar to integrity is a reasonable one for both the KDF and integrity for use
the IKEv2 Key Agreement described in [RFC8031]. The curve448-sha512 with both gss and non-gss uses of curve448 key exchange methods.
key exchange method MAY be implemented. The gss-curve448-sha512-* These key exchange methods are described in [RFC8731] and [RFC8732]
key exchange method MAY also be implemented because it shares the and are similar to the IKEv2 key agreement described in [RFC8031].
same performance and security characteristics as curve448-sha512. The curve448-sha512 key exchange method MAY be implemented. The gss-
curve448-sha512-* key exchange method MAY also be implemented because
it shares the same performance and security characteristics as
curve448-sha512.
3.2.3. ECC diffie-hellman using ecdh-*, ecmqv-sha2, and gss-nistp* Table 7 contains a summary of the recommendations for curve448 based
key exchanges.
The ecdh-sha2-* name-space allows for other curves to be defined for +==========================+==========+
the elliptic curve Diffie Hellman key exchange. At the time of this | Key Exchange Method Name | Guidance |
writing, there are three named curves in this name-space which SHOULD +==========================+==========+
be supported. They appear in [RFC5656] in section 10.1 ("Required | curve448-sha512 | MAY |
Curves"). All of the NISTP curves named therein are mandatory to +--------------------------+----------+
implement if any of that RFC is implemented. If implemented, the | gss-curve448-sha512-* | MAY |
named curves SHOULD always be enabled unless specifically disabled by +--------------------------+----------+
local security policy. In [RFC5656], section 6.1, the method to name
other ECDH curves using OIDs is specified. These other curves MAY be Table 7: Curve448 Implementation
implemented. Guidance
3.1.3. ecdh-*, ecmqv-sha2, and gss-nistp*
The ecdh-sha2-* name-space allows for both the named NIST prime
curves (nistp256, nistp384, nistp521) as well as other curves to be
defined for the Elliptic-curve Diffie-Hellman key exchange. At the
time of this writing, there are three named curves in this name-space
which SHOULD be supported. They appear in [RFC5656] in section 10.1
("Required Curves"). If implemented, the named curves SHOULD always
be enabled unless specifically disabled by local security policy. In
[RFC5656], section 6.1, the method to name other ECDH curves using
OIDs is specified. These other curves MAY be implemented.
The GSS-API name-space with gss-nistp*-sha* mirrors the algorithms The GSS-API name-space with gss-nistp*-sha* mirrors the algorithms
used by ecdh-sha2-* names. The are described in [RFC8732]. The used by ecdh-sha2-* names. They are described in [RFC8732].
table provides guidance for implementation.
ECDH reduces bandwidth of key exchanges compared to FFC DH at a ECDH reduces bandwidth of key exchanges compared to FFC DH at a
similar security strength. similar security strength.
The following table lists algorithms as SHOULD where implementations Table 8 lists algorithms as SHOULD where implementations may be more
may be more efficient or widely deployed. The items listed as MAY efficient or widely deployed. The items listed as MAY in Table 8 are
are potentially less efficient. potentially less efficient.
+==========================+==========+ +==========================+==========+
| Key Exchange Method Name | Guidance | | Key Exchange Method Name | Guidance |
+==========================+==========+ +==========================+==========+
| ecdh-sha2-* | MAY | | ecdh-sha2-* | MAY |
+--------------------------+----------+ +--------------------------+----------+
| ecdh-sha2-nistp256 | SHOULD | | ecdh-sha2-nistp256 | SHOULD |
+--------------------------+----------+ +--------------------------+----------+
| gss-nistp256-sha256-* | SHOULD | | gss-nistp256-sha256-* | SHOULD |
+--------------------------+----------+ +--------------------------+----------+
skipping to change at page 8, line 25 skipping to change at page 11, line 25
+--------------------------+----------+ +--------------------------+----------+
| gss-nistp384-sha384-* | SHOULD | | gss-nistp384-sha384-* | SHOULD |
+--------------------------+----------+ +--------------------------+----------+
| ecdh-sha2-nistp521 | SHOULD | | ecdh-sha2-nistp521 | SHOULD |
+--------------------------+----------+ +--------------------------+----------+
| gss-nistp521-sha512-* | SHOULD | | gss-nistp521-sha512-* | SHOULD |
+--------------------------+----------+ +--------------------------+----------+
| ecmqv-sha2 | MAY | | ecmqv-sha2 | MAY |
+--------------------------+----------+ +--------------------------+----------+
Table 4: ECDH Implementation Guidance Table 8: ECDH Implementation Guidance
It is advisable to match the ECDSA and ECDH algorithms to use the It is advisable to match the ECDSA and ECDH algorithms to use the
same curve for both to maintain the same security strength in the same curve for both to maintain the same security strength in the
connection. connection.
3.3. Finite Field Cryptography (FFC) 3.2. Finite Field Cryptography (FFC)
3.3.1. FFC diffie-hellman using generated MODP groups 3.2.1. FFC diffie-hellman using generated MODP groups
This random selection from a set of pre-generated moduli for key This random selection from a set of pre-generated moduli for key
exchange uses SHA2-256 as defined in [RFC4419]. [RFC8270] mandates exchange uses SHA2-256 as defined in [RFC4419]. [RFC8270] mandates
that implementations avoid any MODP group whose modulus size is less that implementations avoid any MODP group whose modulus size is less
than 2048 bits. Care should be taken in the pre-generation of the than 2048 bits. Care should be taken in the pre-generation of the
moduli P and generator G such that the generator provides a Q-ordered moduli P and generator G such that the generator provides a Q-ordered
subgroup of P. Otherwise, the parameter set may leak one bit of the subgroup of P. Otherwise, the parameter set may leak one bit of the
shared secret leaving the MODP group half as strong. This key shared secret. The diffie-hellman-group-exchange-sha1 uses SHA-1
exchange MAY be used. which is being deprecated. This key exchange SHOULD NOT be used.
The diffie-hellman-group-exchange-sha256 uses SHA2-256 which is
reasonable for MODP groups less than 4K bits. The diffie-hellman-
group-exchange-sha256 key exchange MAY be used.
3.3.2. FFC diffie-hellman using named MODP groups Table 9 provides a summary of the Guidance for these exchanges.
diffie-hellman-group14-sha256 represents the smallest FFC DH key +======================================+============+
exchange method considered to be secure. It is a reasonably simple | Key Exchange Method Name | Guidance |
transition from SHA-1 to SHA-2. The diffie-hellman-group14-sha256 +======================================+============+
method MUST be implemented. The rest of the FFC MODP groups MAY be | diffie-hellman-group-exchange-sha1 | SHOULD NOT |
implemented. The table below provides explicit guidance by name. +--------------------------------------+------------+
| diffie-hellman-group-exchange-sha256 | MAY |
+--------------------------------------+------------+
Table 9: FFC Generated MODP Group Implementation
Guidance
3.2.2. FFC diffie-hellman using named MODP groups
The diffie-hellman-group14-sha256 key exchange method is defined in
[RFC8268] and represents a key exchange which has approximately 112
bits of security strength that matches 3des-cbc symmetric cipher
security strength. It is a reasonably simple transition from SHA-1
to SHA-2 and given that diffie-hellman-group14-sha1 and diffie-
hellman-group14-sha256 share a MODP group and only differ in the hash
function used for the KDF and integrity. Given that diffie-hellman-
group14-sha1 is being removed from MTI status, the diffie-hellman-
group14-sha256 method MUST be implemented. The rest of the FFC MODP
group from [RFC8268] have a larger number of security bits and are
suitable for symmetric ciphers that also have a similar number of
security bits.
Table 10 below provides explicit guidance by name.
+===============================+==========+ +===============================+==========+
| Key Exchange Method Name | Guidance | | Key Exchange Method Name | Guidance |
+===============================+==========+ +===============================+==========+
| diffie-hellman-group14-sha256 | MUST | | diffie-hellman-group14-sha256 | MUST |
+-------------------------------+----------+ +-------------------------------+----------+
| gss-group14-sha256-* | SHOULD | | gss-group14-sha256-* | SHOULD |
+-------------------------------+----------+ +-------------------------------+----------+
| diffie-hellman-group15-sha512 | MAY | | diffie-hellman-group15-sha512 | MAY |
+-------------------------------+----------+ +-------------------------------+----------+
skipping to change at page 9, line 29 skipping to change at page 13, line 29
+-------------------------------+----------+ +-------------------------------+----------+
| diffie-hellman-group17-sha512 | MAY | | diffie-hellman-group17-sha512 | MAY |
+-------------------------------+----------+ +-------------------------------+----------+
| gss-group17-sha512-* | MAY | | gss-group17-sha512-* | MAY |
+-------------------------------+----------+ +-------------------------------+----------+
| diffie-hellman-group18-sha512 | MAY | | diffie-hellman-group18-sha512 | MAY |
+-------------------------------+----------+ +-------------------------------+----------+
| gss-group18-sha512-* | MAY | | gss-group18-sha512-* | MAY |
+-------------------------------+----------+ +-------------------------------+----------+
Table 5: FFC Implementation Guidance Table 10: FFC Named Group Implementation
Guidance
3.4. Integer Factorization Cryptography (IFC) 3.3. Integer Factorization Cryptography (IFC)
The rsa2048-sha256 key exchange method is defined in [RFC4432]. It The rsa1024-sha1 key exchange method is defined in [RFC4432] and uses
an RSA 1024-bit modulus with a SHA-1 hash. This key exchange does
NOT meet security requirements. This method MUST NOT be implemented.
The rsa2048-sha256 key exchange method is defined in [RFC4432] and
uses an RSA 2048-bit modulus with a SHA2-256 hash. This key exchange uses an RSA 2048-bit modulus with a SHA2-256 hash. This key exchange
meets 112 bit minimum security strength. This method MAY be meets 112 bit minimum security strength. This method MAY be
implemented. implemented.
3.5. Secure Shell Extension Negotiation Table 11 provide a summary of the guidance for IFC key exchanges.
There are two key exchange methods, ext-info-c and ext-info-s, +==========================+==========+
defined in [RFC8308] which are not actually key exchanges. They | Key Exchange Method Name | Guidance |
provide a method to support other Secure Shell negotiations. Being +==========================+==========+
able to extend functionality is desirable. This method SHOULD be | rsa1024-sha1 | MUST NOT |
+--------------------------+----------+
| rsa2048-sha256 | MAY |
+--------------------------+----------+
Table 11: IFC Implementation Guidance
3.4. KDFs and Integrity Hashing
The SHA-1 and SHA-2 family of hashing algorithms are combined with
the FFC, ECC, and IFC algorithms to comprise a key exchange method
name.
The selected hash algorithm is used both in the KDF as well as for
the integrity of the response.
All of the key exchanges methods using the SHA-1 hashing algorithm
should be deprecated and phased out due to security concerns for SHA-
1, as documented in [RFC6194].
Unconditionally deprecating and/or disallowing SHA-1 everywhere will
hasten the day when it may be simply removed from implementations
completely. Leaving partially-broken algorithms laying around is not
a good thing to do.
The SHA-2 Family of hashes [RFC6234] is more secure than SHA-1. They
have been standardized for use in SSH with many of the currently
defined key exchanges.
Please note that at the present time, there is no key exchange method
for Secure Shell which uses the SHA-3 family of Secure Hashing
functions or the Extendable Output Functions.
Prior to the changes made by this document, diffie-hellman-
group1-sha1 and diffie-hellman-group14-sha1 were mandatory to
implement (MTI). diffie-hellman-group14-sha1 is the stronger of the
two. Group14 (a 2048-bit MODP group) is defined in [RFC3526]. The
group1 MODP group with approximately 80 bits of security is too weak
to be retained. However, rather than jumping from the MTI to making
it disallowed, many implementers suggested that it should transition
to deprecated first and be disallowed at a later time. The group14
MODP group using a sha1 hash for the KDF is not as weak as the group1
MODP group. There are some legacy situations where it will still
provide administrators with value. Transitioning from MTI to one
that provides for continued use with the expectation of deprecating
or disallowing it in the future was able to find consensus.
Therefore, it is considered reasonable to retain the diffie-hellman-
group14-sha1 exchange for interoperability with legacy
implementations. The diffie-hellman-group14-sha1 key exchange MAY be
implemented, but should be put at the end of the list of negotiated
key exchanges.
The diffie-hellman-group1-sha1, diffie-hellman-group-exchange-sha1,
gss-gex-sha1-*, and gss-group1-sha1-* key exchanges SHOULD NOT be
implemented. implemented.
3.5. Secure Shell Extension Negotiation
There are two methods, ext-info-c and ext-info-s, defined in
[RFC8308]. They provide a mechanism to support other Secure Shell
negotiations. Being able to extend functionality is desirable. Both
ext-info-c and ext-info-s SHOULD be implemented.
4. Summary Guidance for Key Exchange Method Names Implementations 4. Summary Guidance for Key Exchange Method Names Implementations
The Implement column is the current recommendations of this RFC. Key The Implement column is the current recommendations of this RFC.
Exchange Method Names are listed alphabetically. Table 12 provides the existing key exchange method names listed
alphabetically.
+======================================+===========+============+ +==========================+===========+================+===========+
| Key Exchange Method Name | Reference | Implement | | Key Exchange Method | Reference | Previous | RFCxxxxx |
+======================================+===========+============+ | Name | | Recommendation | Implement |
| curve25519-sha256 | RFC8731 | SHOULD | +==========================+===========+================+===========+
+--------------------------------------+-----------+------------+ | curve25519-sha256 | RFC8731 | none | SHOULD |
| curve448-sha512 | RFC8731 | MAY | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | curve448-sha512 | RFC8731 | none | MAY |
| diffie-hellman-group-exchange-sha1 | RFC4419 | SHOULD NOT | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | diffie-hellman-group- | RFC4419 | none | SHOULD |
| diffie-hellman-group-exchange-sha256 | RFC4419 | MAY | | exchange-sha1 | RFC8270 | | NOT |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| diffie-hellman-group1-sha1 | RFC4253 | SHOULD NOT | | diffie-hellman-group- | RFC4419 | none | MAY |
+--------------------------------------+-----------+------------+ | exchange-sha256 | RFC8720 | | |
| diffie-hellman-group14-sha1 | RFC4253 | MAY | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | diffie-hellman- | RFC4253 | MUST | SHOULD |
| diffie-hellman-group14-sha256 | RFC8268 | MUST | | group1-sha1 | | | NOT |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| diffie-hellman-group15-sha512 | RFC8268 | MAY | | diffie-hellman- | RFC4253 | MUST | MAY |
+--------------------------------------+-----------+------------+ | group14-sha1 | | | |
| diffie-hellman-group16-sha512 | RFC8268 | SHOULD | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | diffie-hellman- | RFC8268 | none | MUST |
| diffie-hellman-group17-sha512 | RFC8268 | MAY | | group14-sha256 | | | |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| diffie-hellman-group18-sha512 | RFC8268 | MAY | | diffie-hellman- | RFC8268 | none | MAY |
+--------------------------------------+-----------+------------+ | group15-sha512 | | | |
| ecdh-sha2-* | RFC5656 | MAY | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | diffie-hellman- | RFC8268 | none | SHOULD |
| ecdh-sha2-nistp256 | RFC5656 | SHOULD | | group16-sha512 | | | |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| ecdh-sha2-nistp384 | RFC5656 | SHOULD | | diffie-hellman- | RFC8268 | none | MAY |
+--------------------------------------+-----------+------------+ | group17-sha512 | | | |
| ecdh-sha2-nistp521 | RFC5656 | SHOULD | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | diffie-hellman- | RFC8268 | none | MAY |
| ecmqv-sha2 | RFC5656 | MAY | | group18-sha512 | | | |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| ext-info-c | RFC8308 | SHOULD | | ecdh-sha2-* | RFC5656 | MAY | MAY |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| ext-info-s | RFC8308 | SHOULD | | ecdh-sha2-nistp256 | RFC5656 | MUST | SHOULD |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| gss-* | RFC4462 | MAY | | ecdh-sha2-nistp384 | RFC5656 | MUST | SHOULD |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| gss-curve25519-sha256-* | RFC8732 | SHOULD | | ecdh-sha2-nistp521 | RFC5656 | MUST | SHOULD |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| gss-curve448-sha512-* | RFC8732 | MAY | | ecmqv-sha2 | RFC5656 | MAY | MAY |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| gss-gex-sha1-* | RFC4462 | SHOULD NOT | | ext-info-c | RFC8308 | SHOULD | SHOULD |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| gss-group1-sha1-* | RFC4462 | SHOULD NOT | | ext-info-s | RFC8308 | SHOULD | SHOULD |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| gss-group14-sha256-* | RFC8732 | SHOULD | | gss-* | RFC4462 | none | MAY |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| gss-group15-sha512-* | RFC8732 | MAY | | gss- | RFC8732 | SHOULD | SHOULD |
+--------------------------------------+-----------+------------+ | curve25519-sha256-* | | | |
| gss-group16-sha512-* | RFC8732 | MAY | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | gss-curve448-sha512-* | RFC8732 | MAY | MAY |
| gss-group17-sha512-* | RFC8732 | MAY | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | gss-gex-sha1-* | RFC4462 | none | SHOULD |
| gss-group18-sha512-* | RFC8732 | MAY | | | | | NOT |
+--------------------------------------+-----------+------------+ +--------------------------+-----------+----------------+-----------+
| gss-nistp256-sha256-* | RFC8732 | SHOULD | | gss-group1-sha1-* | RFC4462 | none | SHOULD |
+--------------------------------------+-----------+------------+ | | | | NOT |
| gss-nistp384-sha384-* | RFC8732 | SHOULD | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | gss-group14-sha256-* | RFC8732 | none | SHOULD |
| gss-nistp521-sha512-* | RFC8732 | SHOULD | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | gss-group15-sha512-* | RFC8732 | none | MAY |
| rsa1024-sha1 | RFC4432 | MUST NOT | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | gss-group16-sha512-* | RFC8732 | none | MAY |
| rsa2048-sha256 | RFC4432 | MAY | +--------------------------+-----------+----------------+-----------+
+--------------------------------------+-----------+------------+ | gss-group17-sha512-* | RFC8732 | none | MAY |
+--------------------------+-----------+----------------+-----------+
| gss-group18-sha512-* | RFC8732 | none | MAY |
+--------------------------+-----------+----------------+-----------+
| gss-nistp256-sha256-* | RFC8732 | none | SHOULD |
+--------------------------+-----------+----------------+-----------+
| gss-nistp384-sha384-* | RFC8732 | none | SHOULD |
+--------------------------+-----------+----------------+-----------+
| gss-nistp521-sha512-* | RFC8732 | none | SHOULD |
+--------------------------+-----------+----------------+-----------+
| rsa1024-sha1 | RFC4432 | none | MUST NOT |
+--------------------------+-----------+----------------+-----------+
| rsa2048-sha256 | RFC4432 | none | MAY |
+--------------------------+-----------+----------------+-----------+
Table 6: IANA guidance for key exchange method name Table 12: IANA guidance for key exchange method name implementations
implementations
The full set of official [IANA-KEX] key algorithm method names not The full set of official [IANA-KEX] key algorithm method names not
otherwise mentioned in this document MAY be implemented. otherwise mentioned in this document MAY be implemented.
[TO BE REMOVED: This registration should take place at the following [TO BE REMOVED: This registration should take place at the following
location URL: http://www.iana.org/assignments/ssh-parameters/ssh- location URL: http://www.iana.org/assignments/ssh-parameters/ssh-
parameters.xhtml#ssh-parameters-16 ] parameters.xhtml#ssh-parameters-16 It is hoped that the Table 12 in
section 4 of this draft provide guidance information to be merged
into the IANA ssh-parameters-16 table. Future RFCs may update the
these Implementation Guidance notations. ]
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, Anna Johnston, Kouichi, Simon Josefsson, Dave Dugal, Daniel Migault, Anna Johnston,
Tero Kivinen, and Travis Finkenauer. Tero Kivinen, and Travis Finkenauer.
Thanks to the following people for code to implement interoperable Thanks to the following people for code to implement interoperable
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
This SSH protocol provides a secure encrypted channel over an This SSH protocol provides a secure encrypted channel over an
insecure network. It performs server host authentication, key insecure network. It performs server host authentication, key
exchange, encryption, and integrity checks. It also derives a unique exchange, encryption, and integrity checks. It also derives a unique
session ID that may be used by higher-level protocols. session ID that may be used by higher-level protocols. The key
exchange itself, generates a shared secret and uses the hash function
for both the KDF and integrity.
Full security considerations for this protocol are provided in Full security considerations for this protocol are provided in
[RFC4251]. [RFC4251]. In addition, the security considerations provided in
[RFC4432]. Note that Forward Secrecy is NOT available with the
rsa1024-sha1 or rsa2048-sha256 key exchanges.
It is desirable to deprecate or remove key exchange method name that It is desirable to deprecate or disallow key exchange methods that
are considered weak. A key exchange method may be weak because too are considered weak so they are not in still actively in operation
few bits are used, or the hashing algorithm is considered too weak, when they are broken.
or for other reasons.
A key exchange method is considered weak when the security strength
is insufficient to match the symmetric cipher or the algorithm has
been broken.
At this time, the 1024-bit MODP group used by diffie-hellman-
group1-sha1 is too small for the symmetric ciphers used in SSH.
At this time, the rsa1024-sha1 key exchange is too small for the
symmetric ciphers used in SSH.
The use of SHA-1 for use with any key exchange may not yet be
completely broken, but it is time to retire all uses of this
algorithm as soon as possible.
The diffie-hellman-group14-sha1 algorithm is not yet completely
deprecated. This is to provide a practical transition from the MTI
algorithms to a new one. However, it would be best to only be as a
last resort in key exchange negotiations. All key exchanges methods
using the SHA-1 hash are to be considered as deprecated.
7. IANA Considerations 7. IANA Considerations
IANA is requested to annotate entries in [IANA-KEX] which MUST NOT be IANA is requested to annotate entries in [IANA-KEX] with the
implemented as being deprecated by this document. suggested implementation guidance provided in section 4 "Summary
Guidance for Key Exchange Method Names Implementation" in this
document. A summary may be found in Table 12 in section 4. The
entry with "MUST NOT" should be considered disallowed. An entry with
"SHOULD NOT" is deprecated and may be disallowed in the future.
8. References 8. References
8.1. Normative References 8.1. Normative References
[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,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3526] Kivinen, T. and M. Kojo, "More Modular Exponential (MODP)
Diffie-Hellman groups for Internet Key Exchange (IKE)",
RFC 3526, DOI 10.17487/RFC3526, May 2003,
<https://www.rfc-editor.org/info/rfc3526>.
[RFC4250] Lehtinen, S. and C. Lonvick, Ed., "The Secure Shell (SSH) [RFC4250] Lehtinen, S. and C. Lonvick, Ed., "The Secure Shell (SSH)
Protocol Assigned Numbers", RFC 4250, Protocol Assigned Numbers", RFC 4250,
DOI 10.17487/RFC4250, January 2006, DOI 10.17487/RFC4250, January 2006,
<https://www.rfc-editor.org/info/rfc4250>. <https://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, <https://www.rfc-editor.org/info/rfc4253>. January 2006, <https://www.rfc-editor.org/info/rfc4253>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
skipping to change at page 13, line 31 skipping to change at page 19, line 44
Curve448", RFC 8731, DOI 10.17487/RFC8731, February 2020, Curve448", RFC 8731, DOI 10.17487/RFC8731, February 2020,
<https://www.rfc-editor.org/info/rfc8731>. <https://www.rfc-editor.org/info/rfc8731>.
8.2. Informative References 8.2. Informative References
[IANA-KEX] Internet Assigned Numbers Authority (IANA), "Secure Shell [IANA-KEX] Internet Assigned Numbers Authority (IANA), "Secure Shell
(SSH) Protocol Parameters: Key Exchange Method Names", (SSH) Protocol Parameters: Key Exchange Method Names",
December 2020, <http://www.iana.org/assignments/ssh- December 2020, <http://www.iana.org/assignments/ssh-
parameters/ssh-parameters.xhtml#ssh-parameters-16>. parameters/ssh-parameters.xhtml#ssh-parameters-16>.
[RFC3526] Kivinen, T. and M. Kojo, "More Modular Exponential (MODP)
Diffie-Hellman groups for Internet Key Exchange (IKE)",
RFC 3526, DOI 10.17487/RFC3526, May 2003,
<https://www.rfc-editor.org/info/rfc3526>.
[RFC4251] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) [RFC4251] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH)
Protocol Architecture", RFC 4251, DOI 10.17487/RFC4251, Protocol Architecture", RFC 4251, DOI 10.17487/RFC4251,
January 2006, <https://www.rfc-editor.org/info/rfc4251>. January 2006, <https://www.rfc-editor.org/info/rfc4251>.
[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,
<https://www.rfc-editor.org/info/rfc4419>. <https://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)
 End of changes. 61 change blocks. 
236 lines changed or deleted 500 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/