[openssl-users] X25519 - why openssl shows server temp key as 253 bits?

Robert Moskowitz rgm at htt-consult.com
Tue Sep 4 14:24:51 UTC 2018


My source is Dr. Lange at the IETF meeting in Toronto when the IETF 
selected EC25519.

A curve point needs an x and a y.  But do you need the y for the 
computation.  Do you only need its sign?  I don't know.  I am not a 
mathematician.

I may have misunderstood her at the time.

On 09/04/2018 10:19 AM, Jakob Bohm wrote:
> On 04/09/2018 15:43, Robert Moskowitz wrote:
>> And I seem to recall that one bit is for compact representation. That 
>> is, is y positive or negative. With p256, you have to transmit x and 
>> y or deal with the compact representation patent.
>>
> Not sure if this applies do X25519 and Ed255 which use different
> techniques than the traditional curves.
>
> Those two are also intended to avoid data-dependent if() statements
> (because of side channel attacks), but remain vulnerable on CPUs
> where division or multiplication instructions have data-dependent
> time and/or power consumption (which is unfortunately most of the
> common ones).
>
>> On 09/04/2018 08:00 AM, Kyle Hamilton wrote:
>>> Probably because the definition of X25519 requires that bits 0, 1, 
>>> and 2 of the first byte of the private key are set to 0 before being 
>>> used, and OpenSSL counts the number of bits including the 
>>> highest-order set bit. (Really, there's an additional 2 bits that 
>>> are also set to known values: bit 6 of the last byte is set, and bit 
>>> 7 of the last byte is cleared.  In my view, this actually reduces 
>>> the necessary brute-force search space from 256 bits to 251 bits. 
>>> However, literally any 32-byte string can be used as a public key.  
>>> Apparently, djb views this as sufficient to call it a 256-bit 
>>> strength function.)
>>>
>>> For the specification, please see the subsection entitled 
>>> "Responsibilities of the User" in section 3 of 
>>> https://cr.yp.to/ecdh/curve25519-20060209.pdf .
>>>
>>> -Kyle H
>>>
>>>
>>>
>>>
>>>
>>> On Mon, Sep 3, 2018, 22:29 M K Saravanan <mksarav at gmail.com 
>>> <mailto:mksarav at gmail.com>> wrote:
>>>
>>>     Hi,
>>>
>>>     When using openssl with X25519, why it shows the server temp key
>>>     as 253 bits?
>>>
>>>     Example:
>>>
>>>     ---
>>>     No client certificate CA names sent
>>>     Peer signing digest: SHA256
>>>     Peer signature type: RSA
>>>     Server Temp Key: X25519, 253 bits
>>>     ---
>>>
>>>     I thought Curve25519 is using 256 bit keys.
>>>
>>>     Why 253 instead of 256?
>>>
>>>     with regards,
>>>     Saravanan
>>>
>
> Enjoy
>
> Jakob



More information about the openssl-users mailing list