Skip to main content

Shepherd writeup

As required by RFC 4858, this is the current template for the Document
Shepherd Write-Up.

Changes are expected over time. This version is dated 24 February 2012.

(1) What type of RFC is being requested (BCP, Proposed Standard,
Internet Standard, Informational, Experimental, or Historic)?  Why
is this the proper type of RFC?  Is this type of RFC indicated in the
title page header?

The intended status is Standards Track . This is the appropriated status as
the current document defines new protocol extensions.

(2) The IESG approval announcement includes a Document Announcement
Write-Up. Please provide such a Document Announcement Write-Up. Recent
examples can be found in the "Action" announcements for approved
documents. The approval announcement contains the following sections:

Technical Summary

  Relevant content can frequently be found in the abstract
  and/or introduction of the document. If not, this may be
  an indication that there are deficiencies in the abstract
  or introduction.

This memo updates RFC 4252, RFC 4253, and RFC 4254 to define a
mechanism for SSH clients and servers to exchange information about
supported protocol extensions confidentially after SSH key exchange.

Working Group Summary

  Was there anything in WG process that is worth noting? For
  example, s there controversy about particular points or
  were there decisions where the consensus was particularly

The only discussion of this draft concerned some incompatibilities with the
current implementations of OpenSSH 7.3/7.4 and  the "server-sig-algs" extension
described in the document. The issue is that 7.3 and 7.4 does not provide the
full list of supported algorithms, so client that assume the full list is
provided in order to narrow down the identities/keys (adaptive public key
algorithm selection) to use for the authentication may not be able to find the
appropriated identity. The consensus was that work around should be found when
adaptive public key algorithm selection is needed and when interacting with
these two implementations.  Romen announced "21 May 2017 : Version x509-10.2"
[1] that PKIX-SSH implemented such work around. He is the only one that raised
this issue.

Further explanation can be found in "work with broken "server-sig-algs"
extension" [1] as well as Denis email [2]. I am copying the text from [2], as I
believe it provides a complete description of the issue:

*Server-side situation:*

OpenSSH versions before 7.5 (such as 7.3) send the "server-sig-algs"
extension, but they only use it to indicate support for "rsa-sha2-512" and
"rsa-sha2-256". They do not include other public key algorithms that the
server supports, even though the server will accept those algorithms if
they are attempted.

It is intended that the server should send a complete set of accepted
public key algorithms. My understanding is that OpenSSH versions 7.5 and
later do this. Bitvise SSH Server has always sent a complete list.

*Client-side situation:*

There exist clients which have problems with OpenSSH 7.3 behavior, and
clients that don't.

*Clients with explicit public key configuration.* Bitvise SSH Client does
not have a problem with this behavior, because it does not use public keys
opportunistically. Our SSH Client will use a public key to authenticate
only if the key is explicitly configured by the user. It will use only the
requested key, and not other keys that it may find in various places of

As a result, our SSH Client has no use for a hint from the server about
which key types are OK to use. It already knows the key it's going to use.
The question is what signature algorithm (now renamed "public key
algorithm") to use with that key. For this purpose, the information sent by
OpenSSH is sufficient, regardless of version. For RSA keys, the
"server-sig-algs" extension provides the info. For non-RSA keys, there's
only one algorithm possible anyway, so we use it.

*Clients with opportunistic key search.* Other SSH clients, including
OpenSSH and PKIXSSH (Roumen's work) do not require a public key to be
explicitly configured in order to be used. Such clients perform an
opportunistic search, and try to use any and all keys that might work that
can be found in various places of storage. This includes the user's .ssh
directory, keys available via the SSH agent protocol, and keys specified on
the command line.

These types of clients have a problem, because:

- In OpenSSH versions 7.5 and higher, the client can use the list of
algorithms sent in the server's "server-sig-algs" extension to narrow down
the public keys it's going to try. If the server doesn't list ECDSA or DSA,
for example, the client can take that as authoritative, and can exclude
those keys from authentication. This is nice because it may involve trying
fewer keys.

- In OpenSSH version 7.3, the server will only send "rsa-sha2-256" and
"rsa-sha2-512", even if the server also accepts ECDSA and other algorithms.
This means the client needs to have explicit treatment to detect the
OpenSSH protocol version. If the OpenSSH version is older than 7.5,
"server-sig-algs" can still be used to enable the use of "rsa-sha2-XXXX"
instead of "ssh-rsa", but it cannot be used to exclude non-RSA keys in


*(A) Rename extension.* Roumen has requested that we rename the
"server-sig-algs" extension and make it clear that the server must send all
algorithms it will accept.

I think this is not the best thing to do for the following reasons:

- There are multiple implementations of this extension which are not
impacted by the OpenSSH 7.3 issue. These implementations would suffer from
the rename.

- Implementations that are impacted by the OpenSSH 7.3 issue may still have
a requirement to interoperate with OpenSSH 7.5, as well as other servers
that currently send "server-sig-algs" with a complete list of algorithms.
For such implementations, renaming the extension is again not a fix, but a
further complication.

*(B) Workaround by clients that need it.* My suggestion is that clients
that use opportunistic key search, and wish to interoperate with OpenSSH
7.3, should implement a compatibility workaround for the way
"server-sig-algs" is sent by that version.

I think this is the better solution for the following reasons:

- There are multiple implementations which are already not affected by the
issue, whether communicating with OpenSSH or between themselves. In this
case, those implementations do not need to change anything.

- The work required for clients with opportunistic key search is similar to
the work required in above option A), *assuming *those clients want to
interoperate with OpenSSH 7.5+ and other existing servers that send
"server-sig-algs" with a complete list of algorithms.

On May 21 Romen has implemented the work around [1]:

work with broken "server-sig-algs" extension Server extension "server-sig-algs"
was not implemented properly in OpenSSH 7.3 and 7.4. New version detect broken
servers and replaces incorrect algorithm announcement with correct list. For
instance OpenSSH 7.3 list only algorithms rsa-sha2-256 and rsa-sha2-512. As
result PKIX-SSH functionality for "adaptive public key algorithm selection" in
connection to OpenSSH 7.3 skips all other identities except those with RSA key.


Document Quality

  Are there existing implementations of the protocol? Have a
  significant number of vendors indicated their plan to
  implement the specification? Are there any reviewers that
  merit special mention as having done a thorough review,
  e.g., one that resulted in important changes or a
  conclusion that the document had no substantive issues? If
  there was a MIB Doctor, Media Type or other expert review,
  what was its course (briefly)? In the case of a Media Type
  review, on what date was the request posted?

From the non up-to-date SSH implementation comparison [1], as well from the
author/implementer of the draft that the following SSH implementations
implement the draft: - Bitvise SSH Server and Client - OpenSSH - AsyncSSH -

In addition, Romen the implementer of PKIX-SSH provided significant
clarification of the document and the release note
 of "21 May 2017 : Version x509-10.2" suggests PKIX-SSH supports the
current draft.  This may be updated regarding the necessity of "adaptive public
key algorithm selection"



  Who is the Document Shepherd? Who is the Responsible Area

Daniel Migault is the Document Shepherd and Eric Rescola is the Responsible

(3) Briefly describe the review of this document that was performed by
the Document Shepherd.  If this version of the document is not ready
for publication, please explain why the document is being forwarded to
the IESG.

I reviewed the document.

(4) Does the document Shepherd have any concerns about the depth or
breadth of the reviews that have been performed?


(5) Do portions of the document need review from a particular or from
broader perspective, e.g., security, operational complexity, AAA, DNS,
DHCP, XML, or internationalization? If so, describe the review that
took place.

No needed here.

(6) Describe any specific concerns or issues that the Document Shepherd
has with this document that the Responsible Area Director and/or the
IESG should be aware of? For example, perhaps he or she is uncomfortable
with certain parts of the document, or has concerns whether there really
is a need for it. In any event, if the WG has discussed those issues and
has indicated that it still wishes to advance the document, detail those
concerns here.


(7) Has each author confirmed that any and all appropriate IPR
disclosures required for full conformance with the provisions of BCP 78
and BCP 79 have already been filed. If not, explain why.

Denis confirmed he is not aware of any IPR.

(8) Has an IPR disclosure been filed that references this document?
If so, summarize any WG discussion and conclusion regarding the IPR

(9) How solid is the WG consensus behind this document? Does it
represent the strong concurrence of a few individuals, with others
being silent, or does the WG as a whole understand and agree with it?

I believe the consensus is large and benefits from multiple implementations.

(10) Has anyone threatened an appeal or otherwise indicated extreme
discontent? If so, please summarise the areas of conflict in separate
email messages to the Responsible Area Director. (It should be in a
separate email because this questionnaire is publicly available.)


(11) Identify any ID nits the Document Shepherd has found in this
document. (See and the Internet-Drafts
Checklist). Boilerplate checks are not enough; this check needs to be

The nits has one comment regarding the copyright section and a comments
regarding the mention of an RFC in the abstract.

Regarding mention of the RFC in the abstract.
 -- The draft header indicates that this document updates RFC4254, but the
     abstract doesn't seem to directly say this.  It does mention RFC4254
     though, so this could be OK.

The current abstract mentions RFC4254, so the comment does not apply.

 This memo updates RFC 4252, RFC 4253, and RFC 4254 to define a
  mechanism for SSH clients and servers to exchange information about
  supported protocol extensions confidentially after SSH key exchange.

The copyright section mentions:
 -- The document seems to lack a disclaimer for pre-RFC5378 work, but may
     have content which was first submitted before 10 November 2008.  If you
     have contacted all the original authors and they are all willing to grant
     the BCP78 rights to the IETF Trust, then this is fine, and you can ignore
     this comment.  If not, you may need to add the pre-RFC5378 disclaimer.
     (See the Legal Provisions document at for more information.)

This section is necessary as the current draft provides clarifying material from
RFC 4253 published in January 2006. In case we have to remove this would not
cause an issue.

(12) Describe how the document meets any required formal review
criteria, such as the MIB Doctor, media type, and URI type reviews.


(13) Have all references within this document been identified as
either normative or informative?


(14) Are there normative references to documents that are not ready for
advancement or are otherwise in an unclear state? If such normative
references exist, what is the plan for their completion?


(15) Are there downward normative references references (see RFC 3967)?
If so, list these downward references to support the Area Director in
the Last Call procedure.


(16) Will publication of this document change the status of any
existing RFCs? Are those RFCs listed on the title page header, listed
in the abstract, and discussed in the introduction? If the RFCs are not
listed in the Abstract and Introduction, explain why, and point to the
part of the document where the relationship of this document to the
other RFCs is discussed. If this information is not in the document,
explain why the WG considers it unnecessary.

The document updates  RFC4252, RFC4253, RFC4254. It is mentioned
in the header, the abstract and introduction.

(17) Describe the Document Shepherd's review of the IANA considerations
section, especially with regard to its consistency with the body of the
document. Confirm that all protocol extensions that the document makes
are associated with the appropriate reservations in IANA registries.
Confirm that any referenced IANA registries have been clearly
identified. Confirm that newly created IANA registries include a
detailed specification of the initial contents for the registry, that
allocations procedures for future registrations are defined, and a
reasonable name for the new registry has been suggested (see RFC 5226).

The IANA section is clear. It is consistent with the current draft and
references have been clearly identified.

The IANA section details how to update the Message Numbers [1] as well as
Key Exchange Method Names [2] as well as a new table "Extension Names".
Registration requires the IETF consensus. There is no expert review.


(18) List any new IANA registries that require Expert Review for future
allocations. Provide any public guidance that the IESG would find
useful in selecting the IANA Experts for these new registries.

(19) Describe reviews and automated checks performed by the Document
Shepherd to validate sections of the document written in a formal
language, such as XML code, BNF rules, MIB definitions, etc.