[curves] Climbing the elliptic learning curve (was: Re: Finalizing XEdDSA)
Antonio Sanso
asanso at adobe.com
Wed Jun 7 01:28:44 PDT 2017
Hi
On Jan 31, 2017, at 11:32 AM, Antonio Sanso <asanso at adobe.com> wrote:
> Thanks a lot guys,
>
> I have tried the sage formula from Mike and worked like a charm.
> I got less luck with the approach from Trevor (but hey, is for sure my fault).
> Of course even if I was able to calculate an equivalent public key there is no chance I can retrieve the associate
> private key (of course this would be like breaking DH, right?).
>
> Said that, last silly question on the topic is:
>
> in which situation not checking for the “right” public key can be a problem?
Well it seems that “time" gave the answer :) https://nickler.ninja/blog/2017/05/23/exploiting-low-order-generators-in-one-time-ring-signatures/
regards
antonio
> Trevor mentioned already one situation, but I fail to see without the knowledge
> of the associated private key, where this could be an harm….
>
> Thanks a lot and regards
>
> antonio
>
> On Jan 30, 2017, at 11:02 PM, Trevor Perrin <trevp at trevp.net> wrote:
>
>> On Mon, Jan 30, 2017 at 1:48 PM, Mike Hamburg <mike at shiftleft.org> wrote:
>>>
>>> On Jan 30, 2017, at 12:41 PM, Antonio Sanso <asanso at adobe.com> wrote:
>>>
>>> On Nov 7, 2016, at 12:51 AM, Trevor Perrin <trevp at trevp.net> wrote:
>>>
>>> However, cofactor>1 can still have subtle and unexpected effects, e.g.
>>> see security considerations about "equivalent" public keys in RFC
>>> 7748, which is relevant to the cofactor multiplication "cV" in
>>> VXEdDSA, or including DH public keys into "AD" in Signal's (recently
>>> published) X3DH [3].
>>>
>>>
>>> may you shed some more light about this?
>>> What is the algorithm to find and “equivalent” public key?
>> [...]
>>>
>>> Second, two x’s are equivalent if they differ by a c-torsion point. This is
>>> because the X25519 Diffie-Hellman key exchange algorithm is computing
>>> c*secret*P, which is the same as c*secret*(P+T) for points T such that c*T
>>> is the identity. Another way to describe these equivalent keys is that
>>> they’re the x-coordinates of points Q such that c*Q = c*P.
>>
>> I'll describe the same thing, but maybe this is simpler wording:
>>
>> For X25519, just add a point of low order (i.e. order=2, 4, or 8) onto
>> an X25519 public key. Because X25519 private keys are multiples of
>> the cofactor (8), the added point won't change DH results.
>>
>> I.e. for public key A, some private key b, and low-order point L:
>>
>> b(A+L) = bA + bL = bA
>>
>>
>> Trevor
>
More information about the Curves
mailing list