IETF-SSH archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: SSH key algorithm updates



On Sat, 31 Oct 2015, Mark D. Baushke wrote:

> > That's an unfinished, -00 version internet draft from CFRG.  It's
> > probably too soon to use it as the basis for an SSH public key algorithm
> > at all, let alone make such an algorithm mandatory to implement.  Once
> > the document is ready, we can start with OPTIONAL, and consider
> > upgrading when the algorithm has proven itself and is reasonably widely
> > implemented in SSH.
> 
> Hmmm.... OpenSSH has implemented an ssh-ed25519 and B. Harris has
> written:
> 
>   https://tools.ietf.org/html/draft-bjh21-ssh-ed25519-02
> 
> I am not sure how closely the IRTF Ed25519 an ssh-ed25519
> implementations match, but I suspect it may be relevant to discuss
> both drafts and the SSH protocol sooner rather than later.

AFAIK ssh-ed25519 is compatible with CFRG consensus on new
signature schemes, but it's not yet become an I-D.

> OpenSSH has implemented chacha20-poly1305%openssh.com@localhost

Since we did that there has been an RFC on using this combination
https://tools.ietf.org/html/rfc7539 which is incompatible with ours.

The OpenSSH one, among other less-notable differences, maintains a
second chacha20 instance to encrypt packet lengths.

AFAIK a couple of other implementation support the openssh version.

> The way that RFC5647 was written seems to not have been widely adopted
> although OpenSSH did implement aes128-gcm%openssh.com@localhost and
> aes256-gcm%openssh.com@localhost which are very similar. It might be nice to
> actually come up with a 'standards' track document dealing with AEAD
> ciphers and SSH and see if there is a better way to negotiate it within
> the existing framework of SSH's separation of MAC and Cipher. For
> example, maybe MAC=AEAD and Cipher=aes-gcm,chacha20-poly1305 would make
> more sense in the negotiation?

The situation wrt aes-gcm is frustrating. A draft was posted by a NSA
employee here a few years ago, and there was quite a bit of feedback
that the negotiation method that it proposed effectively broke
negotiation of non-AEAD ciphers. The NSA/IETF standardised it anyway.

The only difference between the NSA/IETF RFC and the openssh
implementation is that we fixed the negotiation in kex.

> It would be useful to see what other protocols various SSH implementers
> have been adding and see if there is a desire to move any of them into a
> recommended or optional standard.
> 
> There is also the possibility of a encrypt-then-mac kinds of MAC choices
> to try to avoid attacks against block ciphers which are either
> mac-then-encrypt or AEAD.

OpenSSH has had encrypt-then-MAC modes as the default for some time. 

One other thing worth mentioning is the curve25519-sha256%libssh.org@localhost
key exchange method. It's supported by a few implementations and is
AFAIK compatible with the CFRG curves draft.

We'll probably do curve448 KEX and public key schemes in the near future,
with the NSA's recent de-recommendation of 256 bit EC.

With regard to recommended options, my take is something like:

kex: curve25519-sha256, with ecdh-sha2-nistp* as a second choice
pubkey: ed25519, with ecdsa-sha2-nistp* as a second choice
cipher: chacha20-poly1305, with aes*-gcm%openssh.com@localhost as second choice

(second choices for people who suffer under the yoke of FIPS compliance)

-d




Home | Main Index | Thread Index | Old Index