IETF-SSH archive

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

Re: New version: draft-green-secsh-ecc-06



I have to say that I really dislike the Base64(MD5(DER(OID))) encoding of curve names into the kex method names. Why not just use the SEC names?

Oh, so it wasn't just me :-). My reaction to seeing this was "did someone
lose a bet or something...".

As I mentioned, this was a change that my IETF document shepherd asked me to make in going from -02 to -03. I agree it's ugly.

Actually, why bake the names into the kex names at all? (as opposed to
sending a curve spec as a parameter).

This is another case where SSH really needs an extension mechanism like TLS. In TLS the curve parameters and point formats are negotiated via extensions.

I'm afraid that's outside the scope of my lowly draft.  :)

Having said that, in practice everyone (well, among TLS implementors) has settled on a small number of popular curves and that's it (which is quite convenient, you don't even have to worry about extensions, just go with P256
and everything'll support it).  I'd define a few fixed names for the
well-known curves that everyone ends up using (the NIST ones, basically) and leave the strange stuff to the usual name@vendor-name mechanism, which is
exactly what it was meant for.

If the consensus on this mailing list is that using a few fixed names is fine, then I am willing to make that change.

My preference would be the following:

Method names are ecdh-sha2-[identifier] and ecdsa-sha2-[identifier], where [identifier] is
	nistp256 -- REQUIRED (Suite B)
	nistp384 -- REQUIRED (Suite B)
	Base64(MD5(DER(OID))) -- OPTIONAL
with the additional proviso that, if the curve in question is in fact nistp256 (== secp256r1) or nistp384 (== secp384r1), then implementations MUST use the nistp256/nistp384 naming convention and MUST NOT use the Base64(MD5(DER(OID))) naming convention.

The rationale for this compromise is as follows. It seems as if we expect the vast majority of implementations to be aiming for Suite B which is nistp256 and nistp384. Those implementations need never worry about the ugly names. For implementations that want to go beyond Suite B, they can use the ugly (but universal and extensible) names.

Points for debate:

1) Should the list of named curves be longer, for example, including all the NIST curves or all the SEC curves?

2) Should the named curves be named by their NIST name or their SEC name? (nistp256 versus secp256r1)

3) Should we entirely remove the Base64(MD5(DER(OID))) optional encoding and entirely leave it to name@vendor-name? My opinion is no: Although name@vendor-name is the common mechanism for naming additional SSH mechanisms, elliptic curves in other standards are often named with OIDs which are universal.

Regards,

Douglas



Home | Main Index | Thread Index | Old Index