Tegnap egy discord szerveren jött a kérdés, hogy mi a különbség az ECDSA és az EdDSA között. Bár ez egy összetett dolog, megpróbáltam érthetően, de hitelesen leírni a választ. Úgy gondolom itt is megosztom, mert hasznos lehet.
Az ECDSA és az EdDSA közötti a legnagyobb különbség, hogy szinte teljesen mások, egy dologban egyeznek, mind a kettő elliptikus görbéken alapul a mögötte lévő logika. Az EdDSA-nak elvileg vannak előnyei az ECDSA-val szemben.
Gyorsabb vele az aláírás és az ellenőrzés, de ez igazából inkább csak egy sale point, nem számottevő a különbség.
Az aláíráshoz nincs szükség véletlen szám generáláshoz, ez csak a kulcshoz kell. Így jobban ellen tud állni a programozók hibájából eredő sérülékenységnek. Ilyen hibát használtak ki pl. amikor PS3-akat széttörték, mert nekik a random szám annyi volt, hogy 5.
A hash collosionnak is ellenáll valamennyire, így itt nagyobb ellenállást tanúsít a hibáknak és csökkenti a támadás lehetőségét.
Ahol nagyon kell vigyázni vele, hogy a kulcs generálásakor biztonságos véletlen számot (kriptográfiailag megfelelő) generáljunk. Amennyiben ez nem sikerül, a privát kulcsokat vissza lehet szépen fejteni egy egyszerű matematikai módszerrel. Ilyen módszerrel meg a Nano android walletjét törték szét, ugyanis figyeltek rá, hogy a java alapból nem generál kriptográfiailag megbízható random számot. Aztán amire figyelni kell még, hogy az alárírás ugye két komponensből áll: R és S. Mind a kettő részhez használunk egy tényezőt, az r-t.
R = rB
S = (r+H(R,A,M)a) mod l
Na most, ha az r-nek mind a kettő esetben ugyanazt a számot választjuk (rosszabb esetben a privát kulcs egy részét), akkor vissza lehet fejteni a privát kulcsot.
ECDSA esetén ez a serülékenység nem áll fenn ebben a formában, de ott is meg van rá az esély, hogy visszafejtsék a privát kulcsot, ha hasonló apró hibát ejtünk. Ezeknél nagyon könnyű apróságokon elcsúszni és szabad utat adni a rablóknak.
A bitcoin többek között azért nem használ EdDSA-t, mert akkoriban még nem létezett. Az RSA és az ECDSA közül lehetett választani, azonban az RSA sokkal több helyet igényel, mint az ECDSA, bár olykor kicsit talán gyorsabb.
Persze RSA-t is lehetne használni, de ezek asszimetrikus algoritmusok, így a nagyobb kulcs nem feltétlen erősebb. Több dolog függvénye. Egy 2048 bites RSA kulcsot 2^110 próbálkozással lehet törni, míg egy 256 bites EdDSA kulcsot 2^128-on próbálkozással. Így nem csak kisebb, erősebb is. Azért van, mert az RSA nagy prímekkel dolgozik, aminek a számítása egyre jobban fejlődik, így egyre nagyobb kulcsok kellenek.
A MicroCoin ECDSA-t használ.