Re: Feedback on draft-ssh-ext-info-00

denis bider <[email protected]>
Newsgroups gmane.ietf.secsh
Message-ID <[email protected]>
> I'll repeat my opinion: an extension mechanism is not
> the place to fundamentally retcon parts of the protocol.

It's not intended as a retcon. It's a negotiated replacement of an existing (inflexible, inefficient, almost pointless) mechanism with a new (flexible, efficient, worthwhile) mechanism.

Compare this to SMTP HELO replaced by EHLO. This did not require bumping the SMTP protocol version.

The change is only a retcon if it removes functionality that SERVICE_REQUEST + ACCEPT have. So basically, you're saying that while the negotiation provided by SERVICE_REQUEST is pointless in the vast majority of cases, it is being relied upon by a small percentage of implementations, and this should be respected.

If that's what you're saying, you have a point. In order to be a proper replacement, and not a retcon, it has to preserve existing functionality.

I have posted a new draft to address this:

https://tools.ietf.org/html/draft-ssh-ext-info-03

The difference is that there is now a "services" field in EXT_INFO:

    byte       SSH_MSG_EXT_INFO (value 7)
    name-list  services
    uint32     nr-extensions
    repeat "nr-extensions" times:
      string   extension-name
      string   extension-value
And a section to describe it:

3.5.  Service Negotiation  The client and server each include a name-list of supported services
  in EXT_INFO. The name-lists are matched to negotiate a service in the
  same way as name-lists are matched in KEXINIT. Clients and servers
  that support only "ssh-userauth" MUST send this service name only.
  Implementations supporting only one service MAY assume it will be
  negotiated, and MAY send messages on that premise without waiting.
Would you agree this makes EXT_INFO a proper superset of SERVICE_REQUEST + ACCEPT?


denis bider <[email protected]> , 12/3/2015 4:14 AM:
> I'm suggesting you specify what is sent, not how
> implementations test for it. 

It is important to specify what to test for. Just weeks ago, we had a conversation about how RFC 4253 should have spelled out that the "reserved" field must be sent as zero, but must not be checked that it is zero.

It is important to specify what things implementations should not check for, when incorrect implementation may cause compatibility issues.


> The benefit is that ~ a paragraph of fairly
> useless verbiage in your spec disappears. 
 
You are losing my respect as we continue.


Damien Miller <[email protected]> , 12/3/2015 4:06 AM:
On Thu, 3 Dec 2015, denis bider wrote: 
 
> > If there's a functioning extension mechanism, 
> > then why would there be competition? 
>  
> To extend other aspects of SSH that EXT_INFO cannot. This could be to change 
> some aspect of algorithm negotiation, for example. 
>  
> For instance, there has been a problem in how AEAD is negotiated. Besides 
> what OpenSSH did - implementing a private algorithm for AES-GCM - another 
> possible solution could be an extension where both client and server put 
> something in their key exchange algorithms field. If both client and server 
> do this, then the result of MAC negotiation is ignored if an AEAD encryption 
> algorithm is negotiated. 
>  
> But why do you even feel the need to call this out? Is it any harder to 
> call: 
>  
>     is_in_namelist(name, namelist) 
>  
> instead of: 
>  
>     is_at_end_of_namelist(name, namelist) 
 
I'm suggesting you specify what is sent, not how implementations test 
for it. The benefit is that ~ a paragraph of fairly useless verbiage 
in your spec disappears. 
 
> > IIRC I've heard of at least one server that doesn't 
> > implement ssh-userauth. 
>  
> This is possible with EXT_INFO also. Send an extension name and value 
> informing the client of what you implement. No need to waste a round-trip 
> for 99.999% of other users. 
 
I'll repeat my opinion: an extension mechanism is not the place to 
fundamentally retcon parts of the protocol. It breaks orthagonality 
and turns implementations into spaghetti. 
 
Perhaps you want a "no-service-requests" extension instead? 
 
-d
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.