IETF-SSH archive

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

Re: ECC in SSH draft version -01



Ben Harris wrote:
> 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.

I thought there was a ceiling on the length of the name-list
strings during key exchange (something like 256), but I can't
find it now.

If I'm blind and not dreaming, then the string above is probably
a bit on the long side...

If I dreaming and not blind on the other hand, than I think
I agree... the 'meta-names' will just make implementation
more difficult.

Thanks,

Joseph



Home | Main Index | Thread Index | Old Index