Re: PLEASE HELP - Question about elliptic curve cryptography
From: Tom St Denis (tomstdenis_at_gmail.com)
Date: 01/03/05
- Next message: Anne & Lynn Wheeler: "Re: [Lit.] Buffer overruns"
- Previous message: BRG: "Re: C vs. fortran"
- In reply to: Gregory G Rose: "Re: PLEASE HELP - Question about elliptic curve cryptography"
- Next in thread: Tom St Denis: "Re: PLEASE HELP - Question about elliptic curve cryptography"
- Reply: Tom St Denis: "Re: PLEASE HELP - Question about elliptic curve cryptography"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Date: Sun, 02 Jan 2005 19:09:35 -0500
Gregory G Rose wrote:
> In article <1104633777.443786.182220@c13g2000cwb.googlegroups.com>,
> <cpptutor2000@yahoo.com> wrote:
>
>>As the domain parameters corresponding to a curve and its associated
>>finite field are system-wide values, could one say that a single curve
>>can supply the cryptographic keys to a number of users? As I am new to
>>ECC, I am a bit confused.
>
>
> Yes, basically everyone could use the same curves,
> without too much danger. NIST FIPS 186-2 has
> recommended curves, for example.
>
> The little caveat to that is that most attacks on
> Discrete-log based systems will end up with the
> attacker having the ability to calculate arbitrary
> discrete logarithms in the group with
> comparitively little effort. So basically they'll
> break "the curve" and not "a particular key". But
> the hypothetical attack that breaks a NIST curve
> will probably apply to other curves too, just with
> a bit of extra effort. All of this is, of course,
> speculation.
The attack does apply to all sorts of "discrete log" problems. The jist
of the sqrt attack is [I've mirror'ed a hard to find paper at
http://iahu.ca:8080/ecc_attack.pdf]
if F(g,x) is your group operator, e.g.
F(g,x) == g^x for DH
F(g,x) == xG for ECC
you're given a generator P and an output Q = F(P, k) for some unknown k.
You compute a list of points
Zi = F(P, Ci) + F(Q, Di)
Since Q = F(P, K) we get Zi = F(P, Ci) + F(F(P, k), Di)
... now turning this into say ECC math [makes it a bit easier]
Zi = Ci*P + Di*Q = Ci*P + Di*k*P = (Ci + Di*k)P
now if for some (Ci, Di) != (Cj, Dj) we have Zi == Zj it follows that
Ci*P + Di*Q = Cj*P + Dj*Q
and
(Ci - Cj)P = (Dj - Di)Q
and finally
(Ci - Cj)/(Dj - Di)P = Q
The quotient on the left is equal to k. With DH you can write
Zi = g^Ci * y^Di
= g^Ci * g^k^Di
= g^Ci * g^{k*Di}
So for Zi == Zj we have
g^Cj * g^{k*Dj} = g^Ci * g^{k*Di}
g^{Cj - Ci} = y^{Di - Dj}
g^{{Cj-Ci}/{Di-Dj}} = y
Recall that you know (Ci,Di) as they're the "distinguished points" you
collect. Actually that's what makes the attack practical. You don't
store all the pairs (Ci,Di) just specific ones [that you rate limit
based on storage]. Because if you start at (C,D) and someone else
starts at (C',D') and you collide somewhere between your next DP you
will both have the same DP [obviously].
Tom
- Next message: Anne & Lynn Wheeler: "Re: [Lit.] Buffer overruns"
- Previous message: BRG: "Re: C vs. fortran"
- In reply to: Gregory G Rose: "Re: PLEASE HELP - Question about elliptic curve cryptography"
- Next in thread: Tom St Denis: "Re: PLEASE HELP - Question about elliptic curve cryptography"
- Reply: Tom St Denis: "Re: PLEASE HELP - Question about elliptic curve cryptography"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Relevant Pages
|