IETF-SSH archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: ECC in SSH draft version -01
In article <1161018566.28037.13.camel%merlot.certicom.com@localhost> you write:
>Specifically I addressed the problems with double negotiation within the
>protocol and in doing so, made the ASN.1 in the document redundant, so I
>moved away from ASN.1 messages.
>
>I'm would appreciate any comments you have on the revised version of the
>draft.
The changes generally seem quite sensible, and in particular they
address a problem I hadn't even got around to articulating with the old
draft -- that a server's host key might use a curve not supported by the
client.
>4.2. Implementation
>
> This document is concerned with describing the implementation of ECDH
> in SSH, not the specification of the algorithm itself. The algorithm
> used for shared key generation is ECDH, the full specification of
> which can be found in Section 3.3.2 of SEC1 [6].
I feel that it might be worth referring to the primitive specified in
that section by name, especially since it's not the one that SEC1 calls
"elliptic curve Diffie-Hellman".
I note that the output of ECDH is a field element, so you should
probably specify how that gets transformed into the integer K required
by SSH. I'd guess that you use the FieldElement-to-Integer conversion
in section 2.3.9 of SEC1, but you don't seem to say so.
The same applies to ECMQV.
> The server's host keys are used in shared key generation; therefore,
> the named curve used to generate them is the curve that must be used
> by the ECMQV algorithm. Care should be taken that the server's host
> key is sufficiently strong to ensure that the ECMQV algorithm isn't
> the weakest point in the SSH encryption suite.
_Something_ has to be the weakest point. Why shouldn't it be ECMQV?
> "secg-ecc-standard" tells the server that the clients local security
> policy has not disabled any of the required curves specified in
> Appendix A and is analogous to sending "secg-ecc-1.3.132.0.37,secg-
> ecc-1.3.132.0.34,secg-ecc-1.3.132.0.16,secg-ecc-1.2.840.10045.3.1.7".
>
> "secg-ecc-extended" tells the server that the client supports all of
> the curves specified in Appendix A and is analogous to sending "secg-
> ecc-1.3.132.0.38,secg-ecc-1.3.132.0.35,secg-ecc-1.3.132.0.37,secg-
> ecc-1.3.132.0.36,secg-ecc-1.3.132.0.34,secg-ecc-1.3.132.0.16,secg-
> ecc-1.2.840.10045.3.1.7,secg-ecc-1.3.132.0.27,secg-ecc-
> 1.3.132.0.26,secg-ecc-1.3.132.0.33,secg-ecc-1.2.840.10045.3.1.1,secg-
> ecc-1.3.132.0.1".
I'm a little suspicious of these. They make it harder to use existing
code for processing algorithm lists for the sake aof a few bytes in each
KEXINIT, which I think is a poor trade-off.
> When the server forms its 'server_host_key_algorithms' name-list it
> MUST include only the algorithm from the "ecmqv-sha2-*" family that
> corresponds to the named curve used to produce its ECC host keys.
That seems to require that any used with an ECC host key MUST support
ECMQV. I doubt that is what you intended.
--
Ben Harris
Home |
Main Index |
Thread Index |
Old Index