Server-Led Algorithm Preference in the Secure Shell (SSH) Protocol
draft-bider-ssh-server-algs-00
This document is an Internet-Draft (I-D).
Anyone may submit an I-D to the IETF.
This I-D is not endorsed by the IETF and has no formal standing in the
IETF standards process.
| Document | Type | Active Internet-Draft (individual) | |
|---|---|---|---|
| Author | Denis Bider | ||
| Last updated | 2026-10-25 | ||
| RFC stream | (None) | ||
| Intended RFC status | (None) | ||
| Formats | |||
| Stream | Stream state | (No stream defined) | |
| Consensus boilerplate | Unknown | ||
| RFC Editor Note | (None) | ||
| IESG | IESG state | I-D Exists | |
| Telechat date | (None) | ||
| Responsible AD | (None) | ||
| Send notices to | (None) |
draft-bider-ssh-server-algs-00
Internet Engineering Task Force D. Bider
Internet-Draft Bitvise Limited
Intended status: Informational 24 October 2026
Expires: 27 April 2027
Server-Led Algorithm Preference in the Secure Shell (SSH) Protocol
draft-bider-ssh-server-algs-00
Abstract
This document specifies an optional extension to Secure Shell (SSH)
algorithm negotiation. A client and server can agree, through
indicators in their SSH_MSG_KEXINIT messages, to use the server's
algorithm preference order in place of the client's preference order.
Agreement for one key exchange round does not carry forward to
another round. Agreement governs bilateral algorithm negotiations in
SSH_MSG_KEXINIT, as well as connection-wide extension mechanisms,
including SSH_MSG_EXT_INFO delayed compression.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 27 April 2027.
Copyright Notice
Copyright (c) 2026 IETF Trust and the persons identified as the
document authors. All rights reserved.
Bider Expires 27 April 2027 [Page 1]
Internet-Draft SSH Server-Led Algorithm Preference October 2026
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions and Terminology . . . . . . . . . . . . . . . . . 3
3. Extension Negotiation . . . . . . . . . . . . . . . . . . . . 3
3.1. Indicators . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Enabling Conditions . . . . . . . . . . . . . . . . . . . 4
4. Algorithm Selection . . . . . . . . . . . . . . . . . . . . . 4
5. Scope and Lifetime . . . . . . . . . . . . . . . . . . . . . 6
6. Server Host Key Algorithms . . . . . . . . . . . . . . . . . 6
7. Algorithm Negotiation Outside SSH_MSG_KEXINIT . . . . . . . . 7
8. Guessed Key Exchange Packets . . . . . . . . . . . . . . . . 8
9. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
10. Security Considerations . . . . . . . . . . . . . . . . . . . 9
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
12. Existing Implementations . . . . . . . . . . . . . . . . . . 10
13. AI Disclosure . . . . . . . . . . . . . . . . . . . . . . . . 10
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 10
14.1. Normative References . . . . . . . . . . . . . . . . . . 11
14.2. Informative References . . . . . . . . . . . . . . . . . 11
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11
1. Introduction
SSH transport algorithm negotiation normally gives priority to the
client's ordering of mutually supported algorithms [RFC4253]. A
server can limit the algorithms it offers, but ordering its offer
does not normally determine which mutually supported algorithm is
selected.
This document defines an optional mechanism by which the client and
server agree to use the server's preference order for a particular
key exchange round. This permits a server to express preferences
among its allowed algorithms without removing the alternatives from
its offer. Where many clients connect to a server, this allows a
server administrator to control algorithm preference at the server,
instead of configuring many clients.
Bider Expires 27 April 2027 [Page 2]
Internet-Draft SSH Server-Led Algorithm Preference October 2026
The mechanism uses role-specific indicators in the kex_algorithms
field of SSH_MSG_KEXINIT. This signaling approach follows the
precedent established by [RFC8308]. The mechanism defined here
requires an indicator from both peers. It does not require
SSH_MSG_EXT_INFO or either of the ext-info-c and ext-info-s
indicators.
This extension changes algorithm preference and specifies related
host key synchronization requirements. It does not define new
cryptographic algorithms or add messages. Agreement in the initial
exchange also governs the negotiations described in Section 7.
2. Conventions and Terminology
This document uses MUST, MUST NOT, SHOULD, and MAY as requirement
terms with the meanings defined by BCP 14 ([RFC2119] and [RFC8174]).
These meanings apply only to uppercase occurrences.
The name-list data type is defined in [RFC4251]. Field names in this
document refer to the SSH_MSG_KEXINIT message defined in Section 7.1
of [RFC4253].
A key exchange round consists of the client's and server's
corresponding SSH_MSG_KEXINIT messages and the key exchange performed
using those messages. This includes both the initial key exchange
and each subsequent key re-exchange.
The terms client and server retain their SSH connection roles. These
roles do not depend on which peer initiates a key re-exchange or
sends SSH_MSG_KEXINIT first.
3. Extension Negotiation
3.1. Indicators
A client willing to use this extension for a key exchange round MAY
include the name "server-algs-c" in the kex_algorithms field of its
SSH_MSG_KEXINIT message.
A server willing to use this extension for a key exchange round MAY
include the name "server-algs-s" in the kex_algorithms field of its
SSH_MSG_KEXINIT message.
Sending an indicator expresses agreement to use server preference for
the algorithm lists in the current exchange if the peer sends its
corresponding indicator. In the initial exchange, this agreement
also covers Section 7. It is not merely an announcement that the
implementation understands the extension.
Bider Expires 27 April 2027 [Page 3]
Internet-Draft SSH Server-Led Algorithm Preference October 2026
A client MUST NOT send "server-algs-s", and a server MUST NOT send
"server-algs-c". An implementation MAY disconnect upon receiving an
indicator that is incorrect for the peer's role. An incorrect
indicator does not satisfy either enabling condition in Section 3.2.
The indicators are name-list entries, without quotation marks. Their
position does not affect whether this extension is enabled.
Implementations MUST recognize the appropriate indicator at ANY
POSITION in the peer's kex_algorithms list. Implementations MUST
accept any ordering relative to other indicators which are not key
exchange method names, such as "ext-info-c" and "ext-info-s"
([RFC8308]). This draft recommends that senders place their
indicator after all actual key exchange method names; and before
"ext-info-c" or "ext-info-s", if one is present.
Neither indicator identifies a key exchange method. Implementations
MUST NOT select either indicator as a key exchange method or use
either indicator as the method of a guessed key exchange packet.
3.2. Enabling Conditions
This extension is enabled for a key exchange round if and only if
both of the following conditions hold:
1. The client's SSH_MSG_KEXINIT for that round contains "server-
algs-c" in kex_algorithms.
2. The server's SSH_MSG_KEXINIT for that round contains "server-
algs-s" in kex_algorithms.
When both conditions hold, both peers MUST use the selection rule in
Section 4. Otherwise, this extension is not enabled and MUST NOT
change the negotiation rules for that round.
Only the two SSH_MSG_KEXINIT messages belonging to the current round
are considered. An indicator sent in another round, knowledge of the
peer's implementation, or cached knowledge of the peer's capabilities
MUST NOT substitute for either enabling condition.
Neither peer needs to wait for the other's SSH_MSG_KEXINIT before
deciding whether to include its indicator.
4. Algorithm Selection
When this extension is enabled, both peers MUST apply the algorithm
negotiation procedure in Section 7.1 of [RFC4253] with the server's
preference order replacing the client's preference order. This
replacement applies to each of the following fields:
Bider Expires 27 April 2027 [Page 4]
Internet-Draft SSH Server-Led Algorithm Preference October 2026
* kex_algorithms
* server_host_key_algorithms
* encryption_algorithms_client_to_server
* encryption_algorithms_server_to_client
* mac_algorithms_client_to_server
* mac_algorithms_server_to_client
* compression_algorithms_client_to_server
* compression_algorithms_server_to_client
Important considerations apply to server_host_key_algorithms: see
Section 6.
Wherever the applicable negotiation procedure selects among mutually
supported algorithms in client preference order, it MUST instead
select in server preference order. For an independently negotiated
list, this selects the first qualifying algorithm in the server's
list that also occurs in the client's corresponding list.
All selection conditions other than preference order remain
applicable. In particular, the requirements relating the key
exchange method to available and acceptable server host-key
algorithms remain applicable.
Algorithm-specific negotiation rules also remain applicable. These
can constrain the combination of encryption and MAC algorithms or
provide authentication without selecting a separate MAC algorithm.
Server preference applies wherever the applicable procedure consults
an algorithm list. It does not introduce a selection step that the
procedure otherwise omits.
In particular, when an encryption algorithm's specification makes the
MAC lists irrelevant, this extension MUST NOT cause a separate MAC
selection or a negotiation failure merely because those lists have no
common entry.
Changing preference order does not exchange client and server roles.
The server still offers server host-key algorithms, and the client
still states which server host-key algorithms it accepts.
Directional fields retain their meanings: a client-to-server field is
compared with the peer's client-to-server field, and likewise for
server-to-client fields.
Bider Expires 27 April 2027 [Page 5]
Internet-Draft SSH Server-Led Algorithm Preference October 2026
Existing negotiation failure rules remain applicable. A failure to
select the required algorithms MUST NOT cause an implementation to
retry the same negotiation using client preference while this
extension is enabled.
The client continues to list its algorithms in its own preference
order. That ordering is needed when this extension is not enabled
and remains relevant to guessed-packet processing as described in
Section 8.
5. Scope and Lifetime
For SSH_MSG_KEXINIT, the preference rule applies to the two messages
for the current round. It does not affect the
languages_client_to_server or languages_server_to_client fields.
Implementations MUST evaluate the enabling conditions anew for every
key exchange round. Support or agreement in an earlier round does
not carry forward. Either peer can omit its indicator in a later
round, in which case this extension is not enabled for that later
round.
Conversely, the extension MAY be enabled during a key re-exchange
even if it was not enabled during the initial key exchange or the
immediately preceding round.
The lifetime of the selection rule is distinct from the lifetime of
the selected algorithms and keys. Algorithms and keys selected in a
round are installed and remain in use according to the normal SSH
rules. Completion of the round does not undo those selections.
The initial exchange determines the preference used by qualifying
negotiations outside SSH_MSG_KEXINIT, as specified in Section 7. The
host key synchronization requirements in Section 6 also have a
connection-wide lifetime.
Except for the changes explicitly specified in this document, other
SSH extensions retain their enabling conditions, interpretation, and
lifetime.
6. Server Host Key Algorithms
A client that advertises "server-algs-c" and already has a basis for
authenticating the server SHOULD exclude algorithms from its
server_host_key_algorithms for which it has no such basis. This
basis may be a trusted host key usable with the algorithm or, for a
certificate algorithm, a trusted certification authority authorized
to certify host keys for the server. This allows the server's
Bider Expires 27 April 2027 [Page 6]
Internet-Draft SSH Server-Led Algorithm Preference October 2026
preference to govern the selected host key and signature algorithm
while limiting negotiation to algorithms for which the client already
has a basis for authenticating the server.
This filtering does not replace verification of the host key or
certificate actually presented by the server. An algorithm name does
not identify an individual host key.
If the client's initial SSH_MSG_KEXINIT includes "server-algs-c", a
server that recognizes this extension MUST NOT treat the client's
server_host_key_algorithms lists as complete lists of supported host
key algorithms, or use them to restrict the host keys published
through a host key synchronization mechanism. This requirement
applies for the rest of the connection, regardless of whether the
server advertises "server-algs-s" or later client exchanges omit
"server-algs-c".
If the client first advertises "server-algs-c" during a later key
exchange, the server MAY adopt this behavior for the rest of the
connection. The client MUST NOT assume that the server does so. The
server is not required to repeat earlier host key synchronization
advertisements.
Once a client advertises "server-algs-c" in any key exchange, it MUST
NOT reject an otherwise valid host key synchronization advertisement
solely because it includes keys using algorithms the client does not
support or did not offer in server_host_key_algorithms. The client
MAY ignore keys using unsupported algorithms or algorithms disallowed
by local policy. Accepted keys remain subject to the synchronization
mechanism's authentication and verification requirements. These
client requirements apply for the rest of the connection, regardless
of whether server preference was negotiated or either peer later
omits its indicator.
7. Algorithm Negotiation Outside SSH_MSG_KEXINIT
This section applies to bilateral algorithm negotiations with a
connection-wide effect in which each peer supplies an ordered name-
list and the ordinary selection procedure chooses one qualifying
common algorithm in client preference order, as in SSH_MSG_KEXINIT.
If both indicators were present in the initial key exchange, both
peers MUST instead use server preference for such a negotiation.
Otherwise, its ordinary preference rule applies. All other selection
conditions remain unchanged. A specification defining such a
negotiation MAY explicitly specify a different interaction with this
extension.
Bider Expires 27 April 2027 [Page 7]
Internet-Draft SSH Server-Led Algorithm Preference October 2026
This rule applies to both directional algorithm lists in "delay-
compression" ([RFC8308]). The initial exchange governs this
selection even if a later server SSH_MSG_EXT_INFO replaces its
earlier advertisement. Subsequent key exchanges do not change this
preference. The rules for activating delayed compression and
replacing it with compression negotiated by a subsequent key exchange
remain unchanged.
The rule does not apply to "server-sig-algs" ([RFC8308]), which
advertises server capabilities for client public-key authentication
rather than negotiating one algorithm from bilateral offers. Other
lists that do not meet the conditions above also remain unaffected.
Unrecognized extensions MUST continue to be ignored as required by
their containing protocol.
8. Guessed Key Exchange Packets
This extension does not change the meaning of
first_kex_packet_follows or the rules for accepting or discarding a
guessed key exchange packet.
Under the rules in Section 7 of [RFC4253], differing first choices of
key exchange method or server host-key algorithm still make a guess
wrong. A guessed packet does not become acceptable merely because
its method happens to equal the method selected using server
preference.
Any separately negotiated extension that changes guessed-packet
processing retains its own rules. Where those rules refer to the
negotiated algorithms, they refer to the algorithms selected for the
current round, including the effect of this extension when enabled.
A sender that sets first_kex_packet_follows to TRUE MUST place an
actual key exchange method first in kex_algorithms. Placing the
server preference indicator after the actual method names avoids
interfering with this requirement.
9. Example
For one traffic direction, suppose the client and server advertise
the following encryption algorithm lists. The names "cipher-a" and
"cipher-b" are illustrative placeholders, and both algorithms are
assumed to satisfy all other selection conditions.
Client: cipher-a,cipher-b
Server: cipher-b,cipher-a
Bider Expires 27 April 2027 [Page 8]
Internet-Draft SSH Server-Led Algorithm Preference October 2026
If the client advertises "server-algs-c" and the server advertises
"server-algs-s" in their respective kex_algorithms lists for this
round, the selected encryption algorithm is "cipher-b".
If either indicator is absent, the selection remains "cipher-a" under
the ordinary client preference rule.
If a subsequent round has the same encryption lists but only the
server repeats its indicator, that subsequent round selects "cipher-
a". The earlier agreement does not affect the subsequent selection.
10. Security Considerations
Server preference can select a different algorithm from the one that
client preference would select. It does not establish that the
selected algorithm is stronger, faster, or otherwise preferable for
the client's purposes.
Each peer remains responsible for the algorithms it permits. A
client that advertises "server-algs-c" agrees to let the server's
ordering determine selection among the qualifying mutually supported
algorithms. Algorithms that are unacceptable under the client's
security policy must be excluded from its offer; placing them later
in the list does not exclude their selection.
A client may order server host-key algorithms to favor a key it
already trusts. Server preference can result in selection of a
different host-key algorithm. This extension does not authorize
acceptance of an untrusted server host key or relax server
authentication requirements.
Implementations MUST preserve the complete, original SSH_MSG_KEXINIT
payloads when those payloads are included in the key exchange's
authenticated data. In particular, implementations MUST NOT remove
these indicators or reorder name-lists in the authenticated
representation when applying the selection rule.
Authentication of the key exchange transcript protects the indicators
and advertised order in the same way as the other SSH_MSG_KEXINIT
contents. This extension adds no separate authentication mechanism
and does not replace the security requirements of the selected key
exchange and transport algorithms.
Bider Expires 27 April 2027 [Page 9]
Internet-Draft SSH Server-Led Algorithm Preference October 2026
11. IANA Considerations
The author acknowledges that current procedures for IANA SSH registry
additions may require a threshold which this draft does not meet.
This draft describes registry additions which would be requested if
the required threshold was met.
IANA is requested to add the following entries to the "Key Exchange
Method Names" registry within the "Secure Shell (SSH) Protocol
Parameters" registry group. The existing Expert Review registration
policy is specified in [RFC9519].
+===============+===========+=====================+===========+
| Method Name | Reference | Note | OK to |
| | | | Implement |
+===============+===========+=====================+===========+
| server-algs-c | This | Client negotiation | MAY |
| | document | indicator; not a | |
| | | key exchange method | |
+---------------+-----------+---------------------+-----------+
| server-algs-s | This | Server negotiation | MAY |
| | document | indicator; not a | |
| | | key exchange method | |
+---------------+-----------+---------------------+-----------+
Table 1: Server Algorithm Preference Indicators
IANA is also requested to update the "iana-ssh-key-exchange-algs"
YANG module to reflect these registrations, following Section 6.6 of
[RFC9644].
This document does not request entries in the "Extension Names"
registry and does not allocate an SSH message number.
12. Existing Implementations
This extension is being implemented in Bitvise SSH Server versions
9.67 and higher. The extension is initially intended for server-to-
server connections, where it is desirable for a central server to
govern algorithm preferences for other servers connecting as clients.
13. AI Disclosure
A recent, advanced Large Language Model was used at maximum effort
settings to generate the initial version of this draft, and to revise
it following review by the author.
14. References
Bider Expires 27 April 2027 [Page 10]
Internet-Draft SSH Server-Led Algorithm Preference October 2026
14.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC4251] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH)
Protocol Architecture", RFC 4251, DOI 10.17487/RFC4251,
January 2006, <https://www.rfc-editor.org/info/rfc4251>.
[RFC4253] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH)
Transport Layer Protocol", RFC 4253, DOI 10.17487/RFC4253,
January 2006, <https://www.rfc-editor.org/info/rfc4253>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8308] Bider, D., "Extension Negotiation in the Secure Shell
(SSH) Protocol", RFC 8308, DOI 10.17487/RFC8308, March
2018, <https://www.rfc-editor.org/info/rfc8308>.
14.2. Informative References
[RFC9519] Yee, P., "Update to the IANA SSH Protocol Parameters
Registry Requirements", RFC 9519, DOI 10.17487/RFC9519,
January 2024, <https://www.rfc-editor.org/info/rfc9519>.
[RFC9644] Watsen, K., "YANG Groupings for SSH Clients and SSH
Servers", RFC 9644, DOI 10.17487/RFC9644, October 2024,
<https://www.rfc-editor.org/info/rfc9644>.
Author's Address
Denis Bider
Bitvise Limited
4105 Lombardy Court
Colleyville, TX 76034
United States of America
Email: d-serveralgs00@bider.us
URI: https://bitvise.com/
Bider Expires 27 April 2027 [Page 11]