32

Elliptic Curve Digital Signature Algorithm használata a

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Elliptic Curve Digital Signature Algorithm használata a

Elliptic Curve Digital Signature Algorithm

használata a Bitcoin világában

Dunai Alexandra

Matematika BSc

Szakdolgozat

Témavezet®

Villányi Viktória

Adjunktus

Operációkutatási Tanszék

Eötvös Loránd TudományegyetemTermészettudományi Kar

Budapest, 2017

Page 2: Elliptic Curve Digital Signature Algorithm használata a

Köszönetnyilvánítás

Ezúton szeretnék köszönetet mondani témavezet®mnek, Villányi Viktóriának, a sok segítségért és

türelemért, illetve a sok konzultációért, a témáért és a hasznos tanácsokért. Hálával tartozom még

családomnak, akik egyetemi éveim alatt mindvégig mellettem álltak.

Page 3: Elliptic Curve Digital Signature Algorithm használata a

Tartalomjegyzék

1. Bevezetés 2

2. Bitcoin 3

2.1. Mértékegysége . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2. Bányászata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.3. Wallet (Pénztárca) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.4. Bitcoin gazdasága . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.5. Bitcoin biztonsága . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.6. Bitcoin el®nyei és hátrányai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3. Blokkok és blokkláncok 6

3.1. Blokkok struktúrája . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.2. A blokk fejléce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.3. Tranzakciók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.4. A blokkok beazonosítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4. Elliptikus görbék és az ECC 10

4.1. M¶veletek geometriai és algebrai megközelítése . . . . . . . . . . . . . . . . . . . . . 12

4.1.1. Ellentett . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.1.2. Két különböz® pont összeadása . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.1.3. Egy pont kétszerese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.2. Elliptikus görbék véges test felett . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4.2.1. Diszkrét logaritmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

5. A digitális aláírás 15

5.1. A digitális aláírás felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5.2. Az Elgamal Digitális aláírás algoritmusa . . . . . . . . . . . . . . . . . . . . . . . . . 16

5.2.1. A kulcs generálása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5.2.2. Az aláírás és a veri�káció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5.2.3. Egy példa egyszer¶ számokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.2.4. A rövid életciklusú kulcs többszöri használata . . . . . . . . . . . . . . . . . . 18

III

Page 4: Elliptic Curve Digital Signature Algorithm használata a

TARTALOMJEGYZÉK 1

5.3. Digitális Aláírás séma (DSA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.3.1. A kulcs generálása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.3.2. Az aláírás és a veri�káció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.3.3. Egy példa egyszer¶ számokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6. Az elliptikus görbéken alapuló digitális aláírási algoritmus és használata a bitcoin

világában 22

6.1. Az Elliptic Curve Digital Signature Algorithm . . . . . . . . . . . . . . . . . . . . . . 22

6.1.1. Kulcsgenerálás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

6.1.2. Az aláírás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6.1.3. A veri�káció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6.1.4. Egy példa egyszer¶ számokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

6.2. Az ECDSA és a bitcoin találkozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

6.2.1. A DSA és ECDSA elleni támadások . . . . . . . . . . . . . . . . . . . . . . . 26

7. Összefoglalás 28

Irodalomjegyzék 28

Page 5: Elliptic Curve Digital Signature Algorithm használata a

1. fejezet

Bevezetés

A digitális �zet®eszköz, egy olyan internet alapú �zet®eszköz, amely hasonló tulajdonságokkal ren-

delkezik mint a �zikai �zet®eszközök, például a papír valuta vagy érme, viszont azonnali tranzakciós

és limit nélküli átruházási lehet®séget biztosít. A kriptovaluta egy olyan valuta fajta amely krip-

tográ�át használ a tranzakciók biztosítására és az új valuta egységek létrehozására.

2

Page 6: Elliptic Curve Digital Signature Algorithm használata a

2. fejezet

Bitcoin

A Bitcoin lényegében egy, most már nyílt forráskódú digitális �zet®eszköz. Ez az els® olyan decent-

ralizált peer-to-peer rendszer amely m¶ködését nem felügyeli semmilyen pénzügyi szervezet.

A Bitcoin az els® implementációja Wei Dei kriptovaluta ötletének, amelynek lényege, hogy a

kriptográ�a irányítsa a létrehozását és tranzakcióit egy központi felügyelet helyett. Feltalálója

egy ismeretlen programozó vagy programozói csoport akik Satoshi Nakamoto név alatt futnak. A

Bitcoint 2008. október 30-án mutatták be el®ször egy zárt kriptográ�ai email listának, viszont csak

2009-ben lett nyílt forráskódú rendszer.

A rendszer lényege, hogy a Bitcoin hálózat egy nyilvános lajstromot oszt meg, amelyet blokk

láncnak hívnak. Ez tartalmazza az összes valaha végbement tranzakciót úgy, hogy a felhasználók

számítógépeit használja fel a tranzakciók validációjához.

2.1. Mértékegysége

A bitcoin rendszer mértékegysége a bitcoin, jelei: BTC, XBT vagy �Kicsi bitcoin bet¶�. Milibitcoin

(mBTC), microbitcon (µBTC) illetve satoshi ami a legkisebb mértékegysége ennek a pénznemnek

: 0.00000001 bitcoin.

2.2. Bányászata

A bitcoin bányászat alapja, a számítási kapacitás felhasználása a bitcoin tranzakciók feldolgozására.

A bányászok a bitcoinban használt Block chain konzisztenciájáról és teljességér®l gondoskodnak.

A bitcoin bányászathoz egy softwaret kell futtatni specializált hardwaren. A bányászatra használt

számítógépeknek nagyon er®s videokártyával kell rendelkezniük, legalább 1000 watt teljesítmény¶

táppal, illetve olyan alaplappal, amelynek legalább három videokártya foglalata van. A program

várja a beérkez® tranzakciókat a peer-to-peer hálózaton keresztül, és megcsinálja az elvárt mate-

matikai feladatokat (Hash-cash proof-of-work feladatokat1), hogy feldolgozza és meger®sítse ezeket

1https://en.bitcoin.it/wiki/Hashcash

3

Page 7: Elliptic Curve Digital Signature Algorithm használata a

2. FEJEZET. BITCOIN 4

a megkapott tranzakciókat. Ezen feladatok elvégzéséért a bányászok pénzt kapnak, amelyeket a

felhasználó �zet a tranzakciók gyorsabb feldolgozásáért. Ahhoz, hogy az új tranzakció biztosítva le-

gyen, egy blokkban kell legyenek a matematikai proof-of-work-kel. Ezek a proof-ok nagyon nehezen

generálhatóak, mert kézzel megoldhatatlanok, mivel több milliárd kalkuláció elvégzése szükséges

hozzá másodpercenként. A bányászok ezeket a számításokat elvégzik, miel®tt a blokkjaikat elfo-

gadja a hálózat és miel®tt bármilyen �zetést kapnának érte. Minél több bányász lesz a hálózatban,

automatikusan állítódik a feladatok nehézsége a hálózat által, azért hogy egy blokk megszerzési

ideje átlagosan 10 perc maradjon. Ezek a feladatok, habár nehezen megoldhatóak, könnyen leel-

len®rizhet®ek. A proof-of-work rendszer úgy lett megtervezve, hogy kötelezze a blokkokat hogy

kronológikus sorrendben álljanak a blokk listában. Ez az oka annak, hogy szinte lehetetlen vissza-

fordítani egy már megtörtént tranzakciót, mivel ez az összes, a módosítást követ® blokkokban lev®

proof-of-work újrakiszámítását követeli meg.

2.3. Wallet (Pénztárca)

A bitcoin wallet, vagy magyarul pénztárca a tranzakciókhoz szükséges információkat tartalmazza.

Neve megtéveszt®, mert nem a tényleges bitcoinokat tárolja - azok a blokk láncban lev® tranzakciós

lajstromból nem elválaszthatóak - hanem inkább egy digitális személyi igazolványként funkcionál. A

bitcoin egy nyílt kulcsú titkosítást használ, amelyben két titkosítási kulcs van, egy titkos és egy nyílt

kulcs. Ezeket mind a bitcoin pénztárcánk tárolja. Többfajta pénztárca létezik. �Sotfware wallets�

amelyek hozzákapcsolódnak a hálózathoz ahol megengedik bitcoinjaink elköltését, és tartalmazzák

a digitális adatainkat amelyek ezen tranzakciók létrejöttéhez szükségek.

2.4. Bitcoin gazdasága

Pénzt a bitcoin bányászok a tranzakciók feldolgozásáért szerezhetnek, illetve a hálózat biztonságossá

tételéért speciális hardware használatával. A Bitcoin protocol úgy lett megtervezve, hogy egy új

bitcoint a hálózat csak �x id®közönként tudjon létrehozni. Ett®l válik ez egy nagyon versenyszer¶

üzletté, mivel minél több bányász van a hálózatban, annál nehezebb új bitcoint szerezni, azaz sokkal

kevesebb lesz az egy f®re jutó haszon. Az új bitcoinok létrehozása egy csökken® és el®relátható ráta

szerint történik. A létrehozható bitcoinok száma minden évben megfelez®dik, addig a pillanatig

amíg pontosan 21 millió bitcoin lesz a piacon.

A bitcoinnak meg van minden tulajdonsága, amely ®t egy pénznemé teszi, viszont inkább ma-

tematikai alapokon nyugszik, mint természeti alapokon, mint például az arany és az ezüst. A

bitcoinok árát, mint minden más piacon, a kereslet és a kínálat határozza meg. Amikor a bitcoinok

iránti kereslet megn®, akkor az áruk megemelkedik, amikor a kereslet csökken, akkor az áruk is.

Page 8: Elliptic Curve Digital Signature Algorithm használata a

2. FEJEZET. BITCOIN 5

2.5. Bitcoin biztonsága

A Bitcoin által használt protocol és kriptográ�a nagyon megbízható. A legnagyobb kockázatot a

felhasználói hiba okozza. A bitcoin pénztárcákat tároló �leok amelyek a szükséges privát kulcsot

tartalmazzák könnyen kitörölhet®ek, elveszíthet®ek illetve ellophatóak.

2.6. Bitcoin el®nyei és hátrányai

A bitcoinnak nagyon sok el®nye van. Az év akármelyik napján lehet bitcoint küldeni és fogadni a

világ bármelyik pontján. A tulajdonosnak teljes irányítása van a pénze felett, nincsen sem banki,

sem bármilyen bürokráciai szerv, amely a pénzét felügyeli. Ezen kívül a bitcoin fogadásnál nin-

csen semmiféle díj, ilyen díjakat csak akkor kell �zetni, ha gyorsabban szeretnénk meger®sítést a

tranzakció végbemenésér®l.

Ahogy el®nye, úgy hátránya is van a Bitcoinnak. Nagyon sok ember még nem is tud a Bitcoin

létezésér®l, és sok helyen nem fogadják el ezt a fajta �zetési módot. Egy másik nagy hátránya,

hogy a bitcoin még fejl®dés alatt áll, azaz nagyon sok új alkalmazást és szolgáltatást még csak most

fejlesztenek ki.

Page 9: Elliptic Curve Digital Signature Algorithm használata a

3. fejezet

Blokkok és blokkláncok

A blocklánc adat struktúra egy olyan rendezett lista, amelyben a tranzakció blokkok visszafele

vannak linkelve. Ezek az adatok egy fájl-ban vagy akár adatbázisban is tárolhatóak. Például a

Bitcoin Core kliens a Google LevelDB adatbázisát használja a blockchainek meta-adatjai tárolá-

sára. Minden block �visszafele� van linkelve, azaz a láncban a közvetlenül el®tte létrejött blockra

mutat, amelyet �szül®� vagy parent blokknak hívnak. Ezek az adatok a blokkok fejlécében kerülnek

tárolásra. Ha szeretnénk megváltoztatni a listában egy el®z® elemet, emiatt a linkelés miatt, az

összes többi utána lev® blokk is megváltozik. Ez hatalmas számítási kapacitást igényel minél régebbi

blokkot szeretnénk megváltoztatni, amely nagyon fontos biztonsági szempont. Ha vizualizálni sze-

retnénk ezeket a blokkokat, akkor függ®leges, egység méret¶ kockákat képzelhetnénk el, amelyben

minden kocka egy blokk. Ekkor értelmezhet®vé válik a lista �magassága� amely az legels® létrejött

blokk és az aktuális blokk távolsága. A blokkok beazonosítása egy SHA256 hash-el történik, amely

a blokk fejlécében található.

3.1. Blokkok struktúrája

A bitcoinban használt blokkok egy fejléccel kezd®dnek, melyet egy tranzakciós lista követ. Minden

blokk tartalmazza az el®tte végbement tranzakciók listáját. Egy nehezen megoldható számtani

feladat is van benne, amely minden blokkban különbözik és új blokk nem vihet® fel a listába a

megfelel® válasz nélkül. Jelen pillanatban 433615 blokk van a rendszerben, és nincs megkötés a

maximális blokkok számáról, még ha az összes bitcoin létre is jönne, a tranzakciók miatt a blokkok

száma egészen addig n®ni fog, amíg bitcoinnal kereskedik valaki.

3.2. A blokk fejléce

A fejléc mindig 80 byte hosszú, amely három f® metadata halmazból áll. Az els® rész tartalmazza a

szül® blokkra mutató értéket, amely biztosítja, hogy ® a soron következ® blokk a listában. A második

rész olyan adatokat tartalmaz, amely leginkább a bányászati versenyben fontosak. A harmadik

6

Page 10: Elliptic Curve Digital Signature Algorithm használata a

3. FEJEZET. BLOKKOK ÉS BLOKKLÁNCOK 7

halmaz a merkle gyökér, amely egy olyan adat struktúra, amely a blokkban tárolt tranzakciókat

tartalmazza. Ezekb®l az információkból a következ®képpen épül fel maga a fejléc:

• A blokk verzió száma, amely megmutatja hogy melyik validációs szabályokat kell használni,

ez összesen 4 byte hosszú.

• Az el®z® blokk fejlécének hash-e, amely azért fontos, hogy ne lehessen visszamen®leg változ-

tatni a blokkokon. Ha a lista valamely korábbi elemét szeretnék változtatni, akkor emiatt a

32 byte-os tárolt hash függvény miatt az összes utána következ® blokkot is meg kell változ-

tatni, ezzel kizárva a visszaéléseket.

• A Merkle gyökér hash-t, amely szintén 32 byte-nyi helyet foglal el. Ez az összes blokkban

lev® tranzakciók hash-éb®l számolódik ki, így biztosítva azt, hogy ne lehessen a tartalmat úgy

megváltoztatni, hogy ne változzon meg a hash kód a fejlécben.

• Unix Epoch id® (4 byte), amely megadja hogy a bányász mikor kezdte el hash-elni a fejlécet.

Ennek nagyobbnak kell lennie, mint az el®z® 11 blokk mediánja.

• nBits(4 byte) , az az enkódolt szám, amelynél a hash nagyobb vagy egyenl®nek kell legyen.

• nonce (4 byte), egy tetsz®leges szám, amelyet a bányászok változtatnak meg a fejléc hash-

ében, hogy az nBits dekódolt számánál kisebb legyen.

A blokk legnagyobb része a tranzakciós lista, általában 250 byte nagyságú, és több mint 500

tranzakciót tárol. Egy teljes blokk 1000-szer nagyobb, mint maga a blokk fejléce.

3.3. Tranzakciók

Egy tranzakció alatt egy Bitcoin mennyiség átvitelét értjük, ami ki van közvetítve a hálózatba,

amelyet utána blokkokba foglalnak. Egy tranzakció tipikusan az el®z® tranzakciós kimeneteket

összef¶zi az új tranzakciós bemenetekkel, és minden bemen® Bitcoin értéket dedikálja az új kime-

netekhez. Ezek a tranzakciók nem titkosítottak, tehát egészen az els® tranzakciókig végig nézhet®k

egy hex editor segítségével.

A tranzakciók a következ® struktúrát követik:

• Version no. (4 byte) � Ez a verziószám.

• In-counter 1-9 byte - a bemenetek száma

• List-of-inputs � a bemenetek összessége

• Out-counter 1-9 byte � a kimenetek száma

• List-of-outputs � A kimenetek összessége

• Lock time 4 byte � Azt az id®pontot jelöli amikor a tranzakció véglegessé válik.

Page 11: Elliptic Curve Digital Signature Algorithm használata a

3. FEJEZET. BLOKKOK ÉS BLOKKLÁNCOK 8

A következ® példában láthatjuk, hogy hogy is néz ki egy bitcoin tranzakció:

1

Az input ebben a tranzakcióban 50 BTCt importál az fd58ee tranzakcióból. Az output ezután,

ezt az 50 BTC-t egy adott Bitcoin címre fogja áthelyezni.

Mint láthatjuk, a tranzakció két f® részböl áll: Az Input az el®z® tranzakcióhoz egy referencia.

Egy tranzakció több inputot is tartalmazhat. Ilyenkor az input értékek összeadódnak, és az új

tranzakció outputja fogja ®ket felhasználni. A previoustx a el®z® tranzakció hash-e. Az Index

a hivatkozott tranzakció egy bizonyos outputja. A scriptSig a script els® része, ami összesen két

részb®l áll: az aláírásból és a publikus kulcsból. A publikus kulcsnak meg kell egyeznie az outputban

lev® script hashe-vel. A publikus kulcs az aláírás veri�kációjához szükséges. A második része az

ECDSA aláírás hash értéke. Ez, a publikus kulccsal együtt bebizonyítja, hogy a kérdéses Bitcoin

cím tulajdonosa hozta létre a tranzakciót. Az Output lényegében a bitcoin küldéséhez szükséges

információkat tartalmazza. A Value az átküldött pénz értékét jelenti. A ScriptPubkey a script

második része.

3.4. A blokkok beazonosítása

A blokk els®dleges azonosítója a blokk hash, ami egy kriptográ�a hash, amelyet a blokk fejlécéb®l

kapunk, miután kétszer lefutattuk rajta az SHA256 algoritmust. A blokk hash ténylegesen nem

tartozik a blokk adat struktúrájába, tehát nincsen elküldve a hálózaton, illetve nincs eltárolva a

blokk lánc más részén sem. A blokk hash minden csomóponton ki van számítva, viszont eltárolható

bizonyos adatbázisokban, mert ez megkönnyíti az indexelést, ezzel könnyebbé és gyorsabbá teszi a

blokk el®keresését az adattároló lemezr®l.

A blokk beazonosításának egy másik módja a blokk magassága. Ez azt jelzi, hogy az adott

blokk éppen melyik eleme a láncnak. A láncolt lista els® elemének, a genesis blokknak a magassága

0. A blokk lánc, amely 2009-ben került megalkotásra, 2014-re már 278000 blokk magassággal

rendelkezett.

A genesis blokk egy reprezentációja:2

GetHash() = 0x000000000019d6689c085ae165831e934�763ae46a2a6c172b3f1b60a8ce26f

hashMerkleRoot = 0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b

txNew.vin[0].scriptSig = 486604799 4 0x736B6E616220726F662074756F6C69616220646E6F636

57320666F206B6E697262206E6F20726F6C6C65636E61684320393030322F6E614A2F33302073656D

695420656854

txNew.vout[0].nValue = 5000000000

1https://en.bitcoin.it/wiki/Transaction2https://en.bitcoin.it/wiki/Genesis_block

Page 12: Elliptic Curve Digital Signature Algorithm használata a

3. FEJEZET. BLOKKOK ÉS BLOKKLÁNCOK 9

txNew.vout[0].scriptPubKey = 0x5F1DF16B2B704C8A578D0BBAF74D385CDE12C11EE5045

5F3C438EF4C3FBCF649B6DE611FEAE06279A60939E028A8D65C10B73071A6F1671927485

5FEB0FD8A6704 OP_CHECKSIG

block.nVersion = 1

block.nTime = 1231006505

block.nBits = 0x1d00��

block.nNonce = 2083236893

CBlock (hash=000000000019d6, ver=1, hashPrevBlock=00000000000000,

hashMerkleRoot=4a5e1e, nTime=1231006505, nBits=1d00��, nNonce=2083236893, vtx=1)

CTransaction(hash=4a5e1e, ver=1, vin.size=1, vout.size=1, nLockTime=0)

CTxIn(COutPoint(000000, -1), coinbase

04��001d0104455468652054696d65732030332f4a616e2f323030392043686

16e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f7

22062616e6b73)

CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B)

vMerkleTree: 4a5e1e

Page 13: Elliptic Curve Digital Signature Algorithm használata a

4. fejezet

Elliptikus görbék és az ECC

Ahhoz, hogy megértsük az Elliptic Curve Digital Signature Algoritmust (ECDSA) elengedhetetlen

hogy megismerkedjünk az elliptikus görbe fogalmával. Az ECC (angolul Elliptic Curve Cryptosys-

tem) egy nyilvános kulcsú kriptográ�ai rendszer, amelyet manapság egyre gyakrabban használnak

egyre több helyen. Az elliptikus görbéket csak kb 15 éve kezdték el kriptográ�ai szempontból vizs-

gálni. Ez az elliptikus görbéken alapuló rendszer a gyors m¶ködésének, kis tárigényének, kisebb

tanúsítvány méretének és kisebb kulcsméretének köszönheti népszer¶ségét.

ECC modulus AES RSA modulus RSA:ECC

112 56 512 5 : 1

161 80 1024 6 : 1

256 128 3072 12 : 1

384 192 7680 20 : 1

512 256 15630 30 : 1

A táblázatban1 látható a két legismertebb nyílt kulcsú titkosítási algoritmus, illetve az ECC.

Közelebbi vizsgálat során észrevehet®, hogy az ECC kulcsmérete, amely ugyanakkora biztonságot

nyújt, mint a másik két algoritmus, lényegesen kisebb, mint a többi. Az elliptikus görbékre a

17. század végén �gyeltek fel a tudósok, amikor olyan �zikai problémát szerettek volna megolda-

ni/modellezni, amelyek komoly geometriai tudást igényeltek.

4.0.1. De�níció. Legyen K egy olyan test, melynek a karakterisztikája nem kett®, és nem három,

és legyen

y2 = x3 + ax+ b

olyan harmadfokú polinom, melynek nincsenek többszörös gyökei. Egy K test feletti elliptikus

görbe egy olyan P (x, y) pontok halmaza ahol x, y ∈ K koordináták kielégítik az el®bbi egyenletet,

1Virasztó, Tamás: Titkosítás és adatrejtés, NetAcademia Kft., 2004

10

Page 14: Elliptic Curve Digital Signature Algorithm használata a

4. FEJEZET. ELLIPTIKUS GÖRBÉK ÉS AZ ECC 11

Y2 = X3+X+1

-10 -8 -6 -4 -2 0 2 4 6 8 10-10

-8

-6

-4

-2

0

2

4

6

8

10

4.1. ábra. Elliptikus görbe D = −496

Y2 = X3-10*X+1

-10 -8 -6 -4 -2 0 2 4 6 8 10-10

-8

-6

-4

-2

0

2

4

6

8

10

4.2. ábra. Elliptikus görbe D = 208

Y2 = X3

-10 -8 -6 -4 -2 0 2 4 6 8 10-10

-8

-6

-4

-2

0

2

4

6

8

10

4.3. ábra. Elliptikus görbe D = 0 és a = 0

Y2 = X3-3X+2

-10 -8 -6 -4 -2 0 2 4 6 8 10-10

-8

-6

-4

-2

0

2

4

6

8

10

4.4. ábra. Elliptikus görbe D = 0 és a 6= 0

és a görbéhez hozzá tartozik egy úgynevezett O-val jelölt "végtelen távoli pont". Az elliptikus

görbék ezen formáját Weierstrass formulának hívják.2

4.0.2. De�níció. Az fenti elliptikus görbe diszkriminánsán aD = −16(4a3+27b2) kifejezést értjük.

Az egyszer¶ség és ábrázolhatóság kedvéért, tegyük fel hogy K valós számtest. A diszkrimináns

értéke az alábbi módon változtatja a görbe alakját:

• D 6= 0 akkor az elliptikus görbe nem szinguláris. Ilyenkor lehet D < 0 illetve D > 0.

• D = 0 és a = 0 a szinguláris pontban egy érint® van, a görbe csúcsként végz®dik.

• D = 0 és a 6= 0 egy szinguláris pont van, más néven csomópont, amelybe 2 különböz® érint®t

lehet húzni, és a görbe elmetszi saját magát.

Kriptográ�ai szempontból csak és kizárólag olyan görbékkel foglalkozunk melyek nem rendelkeznek

szingularitással, azaz D 6= 0.

2Liptai, Kálmán: Kriptográ�a, Eszterházi Károly F®iskola, 2011

Page 15: Elliptic Curve Digital Signature Algorithm használata a

4. FEJEZET. ELLIPTIKUS GÖRBÉK ÉS AZ ECC 12

4.1. M¶veletek geometriai és algebrai megközelítése

4.1.1. Ellentett

Egy P (x, y) pont ellentettje az az R pont, amely a P (x, y) pont x tengelyre tükrözött képe, ami

szintén rajta van a görbén. Algebrailag kifejezve :

xR = xP és yR = −yP .

4.1.2. Két különböz® pont összeadása

Legyen P és Q két különböz® pont a görbén, és R = P +Q. A két pont összeadásának geometriai

módja a következ®:

• Kössük össze egy egyenessel a P és Q pontokat.

• hosszabbítsuk meg ezt az egyenest, amíg nem metszi a görbét egy harmadik ponton. Ezt a

pontot nevezzük el R′-nek.

• Tükrözzük R′-t az x tengelyre. Ez a pont is rajta lesz az elliptikus görbénken. Ez lesz R,

amely P és Q pontok összege.

Az összeget az alábbi módon írhatjuk fel: Legyen P = (xP , yP ) és Q = (xQ, yQ). Ekkor R a

következ® módon áll el®:

s = (yP − yQ)/(xP − xQ)

xR = s2 − xP − xQ és yR = s · xP − s · xQ − yP

4.1.3. Egy pont kétszerese

Legyen a pontunk P . A 2P meghatározása hasonló módon történik mint a két különböz® pont

összeadása, annyi különbséggel, hogy nem két pontot kötünk össze, hanem a P pont érint®jét

húzzuk be. Ez az érint® metszeni fogja valahol a görbét, és ennek a metszéspontnak az x-tengelyre

tükrözött képe lesz a 2P pont. Algebrai módon a következ®képpen írható fel:

xR = s2 − 2xP mod p és yR = s(xP − xR)− yP mod p.

4.1.1. Megjegyzés. Ha a kiválasztott pont az x-tengelyen helyezkedik el, akkor de�níció szerint a

pont kétszerese a végtelenben van. Ennek jelölése: 0. 3

• 2E = O

• 3E = E + 2E = E

• 4E = E + 3E = E + E = O

3Virasztó, Tamás: Titkosítás és adatrejtés, NetAcademia Kft., 2004

Page 16: Elliptic Curve Digital Signature Algorithm használata a

4. FEJEZET. ELLIPTIKUS GÖRBÉK ÉS AZ ECC 13

4.2. Elliptikus görbék véges test felett

Legyen Fq egy véges test. Ezentúl vizsgáljuk az E elliptikus görbéket ezen test felett. Láthatjuk,

hogy az ilyen elliptikus görbének maximum 2q + 1 pontja lehet: 2q darab (x, y) pont és a végtelen

pont. Továbbá tudjuk azt is, hogy minden lehetséges x értékhez maximum kett® x érték tartoz-

hat. Fq felett bizonyos algoritmusok segítenek megállapítani, hogy pontosan hány pontja van a

görbénknek, mint például a schoof algoritmus, illetve, Hasse tétele nagyon jó alsó, és fels® becslést

ad rá.

4.2.1. Tétel. Legyen N az Fq pontok száma az Fq véges test feletti E elliptikus görbén. Ekkor

| (N − (q + 1)) |≤ 2√q.

Innent®l a már megismert görbénkkel a Zq véges test felett fogunk számolni a moduláris aritme-

tika szabályai szerint: y2 ≡ x3 + ax+ b(modp) ahol p prím szám. A pontokra legyenek a következ®

feltételek érvényesek:

• 0 ≤ x ≤ p− 1 és 0 ≤ y ≤ p− 1

• (4a3 + 27b2) 6= 0(modp)

Az test közötti áttérés mellett nagyon fontos érvek szólnak. A moduláris aritmetika csak egész

számokkal dolgozik, sokkal gyorsabb és pontosabb így a számítás mint a valós számok halmazával.

A moduláris görbének véges számú pontja van, a pontok száma biztosan 0 és p− 1 közé esik.

Vegyük a p = 9, a = 1, b = 0 görbét. Ábrázoljuk az xy síkon:

Mint látjuk, nem kapunk ugyanolyan "folytonos" görbét mint amikor valós számok teste felett

ábrázoltuk a görbénket. Az elliptikus görbe pontjainak halmaza a következ®:

(0, 0),(0, 3),(0, 6),(2, 1),(2, 8),(5, 2),(5, 7),(8, 4),(8, 5)

A görbének 9 pontja van, ebb®l egy az origóban helyezkedik el. A pontok ránézésre véletlensze-

r¶en helyezkednek el a síkon, de ha közelebbr®l megnézzük, az y = 4.5 egyenesre szimmetrikusak

Page 17: Elliptic Curve Digital Signature Algorithm használata a

4. FEJEZET. ELLIPTIKUS GÖRBÉK ÉS AZ ECC 14

(kivéve a (0, 0) pontot) és minden x értékhez 2 darab y érték tartozik.

4.2.2. Megjegyzés. Az olyan görbéket, amelyeknek a pontjainak száma megegyezik a modulusként

használt prím számmal (mint a példánkban) tilos használni kriptográ�ai szempontból, mivel haté-

konyan támadható.

4.2.3. Megjegyzés. A m¶veletek algebrai módon ugyanúgy végezhet®ek el, mint véges test felett,

csak mod p-vel számolunk.

4.2.1. Diszkrét logaritmus

A nyilvános kulcsú kriptorendszerek alapja mindig egy olyan probléma, amelynél a megfejtéshez

szükséges id® nagyon hosszú. Az elliptikus görbén alapuló kriptorendszereknek is egy ilyen probléma

adja meg az alapját: A Elliptic Curve Discrete Logarithm Problem (ECDLP).

4.2.4. De�níció. Legyen E egy Zp véges test feletti elliptikus görbe és R egy pont a görbén.

Ekkor az E-n értelmezett diszkrét logaritmusos problémáról beszélünk, ha adott egy Q ∈ E pont

és keressük azt az n természetes számot, melyre nR = Q egyenl®ség teljesül. Ebben az esetben n

diszkrét logaritmusa Q-nak.4

Azon rendszerek, amelyek az ECDLP-n alapulnak, leginkább kulcscserél® vagy aláíró rendszerek,

mert ez a módszer alkalmatlan a gyors titkosításra.

4Liptai, Kálmán: Kriptográ�a, Eszterházi Károly F®iskola, 2011

Page 18: Elliptic Curve Digital Signature Algorithm használata a

5. fejezet

A digitális aláírás

A digitális aláírás feladata az aláíró személyazonosságának tanúsítása, és annak biztosítása, hogy

az általa aláírt üzenetet nem változtatták meg az aláírás megtörténte után. Míg egy hagyomá-

nyos aláírás kis gyakorlással másolható és máshova átvihet®, addig a digitális aláírást nem lehet

áthelyezni másik dokumentumra. Ennek oka, hogy a digitális aláírás függ a dokumentum akkori

tartalmától, amikor a feladó hitelesítette a dokumentumot aláírásával. Fontos különbség még, hogy

a digitális aláírás nem �zikailag, hanem logikailag kapcsolódik, az aláírt dokumentumhoz. Nagyon

fontos kiemelni, hogy mivel a digitális aláírás a dokumentum egészéhez kapcsolódik, így ha azon

változás megy végbe az aláírás után, az ellen®rzésnél rögtön kiderül, hogy hamisítva lett a do-

kumentumunk. A digitális aláírásunk akkor és csak akkor hamisítható, ha a titkos kulcsunkat a

hamisító valamilyen módon megszerzi. A digitális aláírásoknak technológia függetlennek kell lennie,

azaz akármilyen platformon kreáljuk meg az aláírást, azt bármilyen másik eszköz használatával le

kell tudjuk ellen®rizni. Nagyon fontos hogy könnyen létrehozható és könnyen ellen®rizhet® legyen,

viszont ne lehessen hamisítani, sem letagadni az aláírást. Az aláírásnak valamilyen módon hitelesí-

tenie kell az aláíró személyét és a dokumentum tartalmát is. Ezen okok miatt lett nagyon elterjedt

a digitális aláírás a hitelesítést igényl® informatikai területek világában.

5.1. A digitális aláírás felépítése

A digitális aláírásnak két elengedhetetlen része van, az aláírás és az ellen®rzés. Az aláírás funkciója

el®állítani az adott üzenethez tartozó aláírást, amely általában tartalmazza a dátumot, az aláírás

id®pontját, és egyéb fontos, az aláíróra vonatkozó adatokat. Az ellen®rzés az üzenet és az aláírás

kapcsolatát vizsgálja az aláíróra nézve. Ez az ellen®rzés általában logikai: igaz, ha az üzenet és az

aláírás összetartozik, és hamis, ha nem.

A digitális aláírás egyszer¶en összefoglalva a következ®képpen néz ki. Legyen m (message) az

üzenet és s (signature) az aláírás.

Ha az aláíró szeretné eljuttatni az m üzenetet az 's' aláírással a célszemélynek, akkor a követ-

kez®képpen jár el:

15

Page 19: Elliptic Curve Digital Signature Algorithm használata a

5. FEJEZET. A DIGITÁLIS ALÁÍRÁS 16

1. Az aláíró kiszámolja valamilyen módon az 's' értékét

2. Az 'm' és az 's' értékpárt továbbítja a célszemélynek. A két érték külön-külön nem hordoz

értékes információt, csak ha a célszemélynek mindkét érték rendelkezésre áll.

A célszemély a következ®képpen tudja ellen®rizni az aláírás validitását:

1. A dokumentumot aláíró személyhez tartozó ellen®rz® függvénnyel megvizsgálja az 'm' és az

's' értékpárt.

2. Ha az ellen®rzés kimenete igaz, azaz az 's' és az 'm' összetartozik, akkor elfogadja az aláírást.

A digitális aláírás nyílt kulcsos kriptorendszert használ, azaz az aláíró és az ellen®rz® algorit-

musok nyilvánosak, az ellen®rzéshez publikus kulcs tartozik, az aláírónak pedig titkos kulcsa van.

A következ® alfejezetekben megismerkedünk az Elgamal digitális aláírás sémával, a Digital Sig-

nature Algorithmmel (DSA), amely az Elgamal egy olyan továbbfejlesztése amely sokkal jobban

elterjedt mint el®dje, illetve az Elliptic Curve Digital Signature Algorithmmel az utána lev® feje-

zetben, amely a DSA egy olyan verziója, amely elliptikus görbéken alapul. Ahhoz hogy megértsük

hogyan m¶ködik az ECDSA, elengedhetetlen hogy megismerjük, hogy melyik algoritmusokból ered.

5.2. Az Elgamal Digitális aláírás algoritmusa

Az Elgamal digitális aláírás sémának az alapja a diszkrét logaritmus problémán alapul.

5.2.1. A kulcs generálása

Az Elgamal digitális aláírás kulcsgenerálása a következ® módon történik:

1. Válasszunk egy nagy p prím számot.

2. Válasszunk egy α ∈ Z∗p számot.

3. Válasszunk egy random számot d ∈ 2, 3, ..., p− 2.

4. Számítsuk ki β = αp mod p.

Ekkor a publikus kulcsunk a kpub = (p, α, β) lesz, a titkos kulcsunk pedig kpr = d

5.2.2. Az aláírás és a veri�káció

Az aláírás a következ® képpen néz ki: sigkpr (m, kE) = (r, s) ahol az m az üzenetünk. Az r és s

egész számokat a következ®képpen számítjuk ki:

1. Választunk egy random rövid életciklusú kulcsot (kE), hogy kE ∈ 0, 1, 2, ..., p− 2 és

(kE , p− 1) = 1.

Page 20: Elliptic Curve Digital Signature Algorithm használata a

5. FEJEZET. A DIGITÁLIS ALÁÍRÁS 17

2. Kiszámoljuk az aláírás paramétereit:

r ≡ αkE mod p,

s ≡ (m− d · r)k−1E mod p− 1

A veri�káció a verkpub(m(r, s))-el történik, amely a publikus kulcsot, az aláírást és az üzenetet

használja a következ® módon: Legyen t ≡ βr · rs mod p. Abban az esetben, ha t ≡ αm mod p,

akkor az aláírás érvényes, tehát elfogadjuk, viszont ha t 6≡ αm mod p, akkor az aláírás érvénytelen,

tehát elutasítjuk.

Tehát a fogadó akkor fogadja el az aláírást, ha a βr · rs ≡ αm mod p feltétel teljesül.

Bizonyítás. A bizonyításban megmutatjuk, hogy a veri�kációs folyamat hogyan jut el az igaz ágba,

hogy ha a veri�kátor a megfelel® nyílt kulcsot és üzenetet használja a hozzá tartozó r és s paramé-

terekkel.

Tudjuk, hogy

β = αd és r = αkE .

Ekkor

t ≡ βr · rs ≡ (αd)r(αkE )s mod p ≡ αdr+kEs mod p.

Ha az aláírásunk valid, akkor a következ®nek kell teljesülnie:

t ≡ αm ≡ αdr+kEs mod p.

A kis-Fermat tétel alapján tudjuk hogy ez ekvivalens azzal, hogy ha a kitev®k egyenl®k modulo

p− 1-re

m ≡ dr + kEs mod p− 1.

Amelyb®l következik:

s ≡ (x− d · r)k−1E mod p− 1.

5.2.3. Egy példa egyszer¶ számokkal

Végezzük el a lépéseket a bemutatott Elgamal digitális aláírás sémánál!

1. p = 41

2. α = 2

3. d = 7

4. β = αd ≡ 5

Ekkor a publikus kulcsunk a következ® lesz:

(p, α, β) = (41, 2, 5).

Page 21: Elliptic Curve Digital Signature Algorithm használata a

5. FEJEZET. A DIGITÁLIS ALÁÍRÁS 18

Legyen az üzenetünk m = 42, és kE = 9. Ne felejtsük el, hogy ezeket a számokat ugy választjuk,

hogy (40, 9) = 1. Ekkor

r = αkE ≡ 29 ≡ 20 mod 41,

s = (42− 7 · 20) · 9 ≡ 38 mod 40.

A veri�kációnál használt üzenet, aláírás és publikus kulcs : (x(r, s)) = (42(20, 38)) A veri�káció a

következ®képpen néz ki:

t = 520 · 2038 ≡ 4 mod 41,

αm ≡ 224 ≡ 4 mod 41,

t ≡ αm.

Azaz az aláírás valid, elfogadjuk.

5.2.4. A rövid életciklusú kulcs többszöri használata

A digitális aláírás biztonságossága nagyban függ a diszkrét logaritmus problémától. Ha a támadónk

tud diszkrét logaritmusokat számolni, meg tudja szerezni a privát kulcsunkat és a rövid életciklusú

kulcsunkat is. Egy nagyon fontos kikötése a kulcsoknak, hogy a prím szám, amit felhasználunk

legalább 1024; bit hosszú legyenek. Ha egy rövid életciklusú kulcsot többször használunk, akkor

a támadó nagyon könnyen ki tudja számítani a privát kulcsunkat. Tegyük fel, hogy két üzenetet

küldünk (x, (r, s)) alakban. Ha a két üzenet aláírásánál ugyanazt a kE kulcsot használjuk, akkor

látszódni fog hogy a két r érték megegyezik, mert ugyanaz a felépítésük: r1 = r2 = αkE . Ezután a

következ® két egyenletet fel tudjuk írni:

s1 ≡ (m1 − d · r)k−1E mod p− 1,

s2 ≡ (m2 − d · r)k−1E mod p− 1.

Ez egy két ismeretlenes egyenletrendszer, ahol az egyik ismeretlen a rövid életciklusú kulcs, a

másik viszont a privát kulcsunk. Ha mindkét egyenletet megszorozzuk kE-vel, akkor egy könnyen

megoldható lineáris egyenletrendszerré válik:

s1 − s2 ≡ (x1 − x2) · k−1E mod p− 1,

kE ≡ x1−x2

s1−s2 mod p− 1.

Ebb®l már behelyettesítéssel ki is számolható a kulcsunk.

5.3. Digitális Aláírás séma (DSA)

Az Elgamal aláírási sémát alig használják a gyakorlatban, helyette inkább a sokkal népszer¶bb

variánsát a Digital Signature Algorithm-t (DSA). A f® el®nyei közé tartozik, hogy az aláírás csak

320 bit hosszú, és azok a támadások amik hamisítani tudják az Elgamal sémával generált aláírást,

azok itt hatástalanok.

Page 22: Elliptic Curve Digital Signature Algorithm használata a

5. FEJEZET. A DIGITÁLIS ALÁÍRÁS 19

5.3.1. A kulcs generálása

Ahhoz hogy megértsük a DSA algoritmust, de�niálnunk kell a ciklikus csoportokat.

5.3.1. De�níció. Egy G csoportot ciklikusnak nevezünk, ha egy alkalmas g elemének az egész

kitev®j¶ hatványaiból áll. 1

5.3.2. De�níció. Legyen G csoport és g ∈ G. A g elem rendje a g különböz® hatványainak a

száma. A g elem rendjének jele o(g). 2

A DSA alapja az, hogy van két ciklikus csoportunk. Az egyik a Z∗p ciklikus csoport, amelynek

rendjének hossza 1024 bit hosszú. A másik csoport egy 160 bites alcsoportja Z∗p -nek. Ez egy sokkalrövidebb aláírást eredményez mint a másik algoritmus.

1. Generáljunk egy p prímet, úgy hogy 21023 < p < 21024

2. Keressünk p− 1-nek egy prím osztóját, legyen ez q, úgy hogy 2159 < q < 2160.

3. Ha nincs megfelel® q, akkor generálunk egy másik p prímet.

4. Keressünk egy α-t, amelyre teljesül hogy ord(α) = q

5. Válasszunk egy d random egészet 0 < d < q

6. Számoljuk ki : β ≡ αd mod p.

Ekkor a kulcsaink a következ®ek:

kpub = (p, q, α, β),

kpr = (d).

5.3.2. Az aláírás és a veri�káció

Úgyanúgy mint az Elgamal aláírás sémánál, a DSA aláírás és két egész számból áll; r és s-b®l.

Mivel mindkét paraméter 160 bit hosszú, ezért az aláírás teljes hossza 320 bit.

1. Válasszunk egy random egész számot, ez lesz a rövid életciklusú kulcs (kE) és legyen

0 < kE < q.

2. Számítsuk ki az r ≡ (αkE mod p) mod q.

3. Számítsuk ki az s ≡ (SHA(m) + d · r)k−1E mod q.

Egyb®l látszik, hogy ez az aláírási mód sokkal összetettebb mint az Elgamalban megismert aláírás.

Az aláíráshoz szükséges az, hogy az m üzenetünket hasheljük az SHA családból származó hash

függvénnyel.

1Kiss Emil - Bevezetés az algebrába2Kiss Emil - Bevezetés az algebrába

Page 23: Elliptic Curve Digital Signature Algorithm használata a

5. FEJEZET. A DIGITÁLIS ALÁÍRÁS 20

1. Számítsuk ki az w ≡ s−1 mod q segédváltozót.

2. Számísuk ki az u1 ≡ w · SHA(x) mod q segédváltozót.

3. Számítsuk ki az u2 ≡ w · r mod q segédváltozót.

4. Legyen v ≡ (αu1 · βu2) mod q.

A veri�káció a verkpub(x, (r, s)) használatával a következ®képpen történik:

• Ha v ≡ r mod q, akkor az aláírás valid, és elfogadjuk.

• Ha v 6≡ r mod q, akkor az aláírás invalid, azaz elutasítjuk az aláírást.

Az aláírás valódiságának veri�kációjának bizonyítása sokat segíthet abban hogy megértsük job-

ban ezen folyamat m¶ködését.

Bizonyítás. Ebben a bizonyításban, megmutatjuk, hogy az (r, s) aláírás kielégíti a v ≡ r mod q

feltételt. Az s egyenletéb®l indulunk ki:

s ≡ (SHA(x) + d · r)k−1E mod q.

Az egyenletet beszorozva k−1E -vel és s−1-el, a következ® egyenletet kapjuk:

k−1E ≡ s−1SHA(x) + d · s−1r mod q.

Felhasználva az u1 ≡ q · SHA(x) mod q és az u2 ≡ w · r mod q segédváltozókat:

k−1E ≡ u1 + d · u2 mod q.

Ekkor, ha modulo p-vel egyszer¶sítünk, és α-adik hatványra emelünk:

αk−1E mod p ≡ αu1+du2 mod p.

Mivel β ≡ αd, ezért:

αk−1E mod p ≡ αu1βu2 mod p.

Ezt modulo q-ra egyszer¶sítve:

(αk−1E mod p) mod q ≡ (αu1βu2 mod p) mod q.

Tudjuk, hogy

r ≡ (αk−1E 0 mod p) mod q és v ≡ (αu1 · βu2) mod q.

Ezt behelyettesítve kapjuk, hogy:

r ≡ v mod q.

Page 24: Elliptic Curve Digital Signature Algorithm használata a

5. FEJEZET. A DIGITÁLIS ALÁÍRÁS 21

5.3.3. Egy példa egyszer¶ számokkal

Végezzük el a lépéseket a bemutatott DSA sémánál!

1. p = 41

2. q = 5

3. α = 3

4. d = 4

5. β = αd ≡ 40 mod 41

A publikus kulcsunk a következ® lesz:

(p, q, α, β) = (41, 5, 3, 40),

és a titkos kulcsunk

kpr = (4).

Legyen az üzenetünk hashelt értéke SHA(m) = 22, és kE = 2.

Ekkor

r = αkE ≡ (32 mod 41) mod 5 ≡ 4 mod 5,

s = (22 + 16) · 3 mod 5,

s ≡ 4 mod 5.

A veri�káció a következ®képpen néz ki:

w ≡ 4 mod 5,

u1 ≡ 3 mod 5,

u2 ≡ 1 mod 5,

v ≡ (33 · 401 mod 41) mod 5,

v ≡ r mod 5,

4 ≡ 4 mod 5.

Page 25: Elliptic Curve Digital Signature Algorithm használata a

6. fejezet

Az elliptikus görbéken alapuló

digitális aláírási algoritmus és

használata a bitcoin világában

Az el®z® fejezetben láthattuk, hogy az elliptikus görbék alapú kriptográ�ai rendszereknek nagyon

sok pozitívuma van a nem elliptikus görbéken alapuló rendszerekkel szemben, mint például az

Elliptic Curve Cryptosystem elleni támadások hiánya. Mint láthattuk, az ECC 160-256 bit hosszú-

ságban nyújt olyan biztonságot mint az RSA 1024-3072 biten. Ez ugye rövidebb számítási id®ket és

kisebb méreteket eredményez. Az ECDSA lépései nagyon hasonlóak az el®z®ekben megismert DSA

algoritmusához, viszont az alapul szolgáló diszkrét logaritmus probléma egy elliptikus görbék cso-

portjára lett konstruálva. Ebb®l kifolyólag a számítás, amelyet az ECDSA aláíráshoz használunk,

teljesen eltér a DSA során megismertekkel. Az ECDSA olyan elliptikus görbéket használ amelyek

Zp prím test felett vannak, illetve Galois testek (2m) felett. Gyakorlatban inkább a Zp prím test

felett de�niált görbéket használják.

6.1. Az Elliptic Curve Digital Signature Algorithm

Most ismerkedjünk meg az Elliptic Curve Digital Signature Algorithmmel általánosan, majd a

bitcoinban testre szabottan.

6.1.1. Kulcsgenerálás

Az ECDSA digitális aláírás kulcsgenerálása a következ® módon történik:

1. Használjunk egy E elliptikus görbét amelynek modulusa p, együtthatói a és b, illetve A olyan

pontja, amely olyan ciklikus csoportot generál, melynek rendje q.

2. Válasszunk egy d random egészet: 0 < d < q.

22

Page 26: Elliptic Curve Digital Signature Algorithm használata a

6. FEJEZET. AZ ECDSA ÉS HASZNÁLATA A BITCOIN VILÁGÁBAN 23

3. Számítsuk ki B = d ·A.

Ekkor a kulcsaink a következ®ek lesznek:

kpub = (p, a, b, q, A,B),

kpr = (d).

6.1.2. Az aláírás

Ugyanúgy mint a DSA, az ECDSA aláírása is az (r, s) egészekb®l áll. Az r és s-et felhasználva, az

m üzenethez tartozó aláírást a következ® módon számolhatjuk ki.

1. Válasszunk egy kE egész számot, hogy 0 < kE < q, amely a random rövid életkciklusú

kulcsunk lesz.

2. Számítsuk ki R = kE ·A

3. Legyen r = xR

4. Számítsuk ki az s ≡ (h(m) + d · r) · k−1E mod q.

A harmadik lépésben az R x-koordinátája hozzá lett rendelve az r változóhoz. Az m üzenet a

h(m) hash függvénnyel hashelve lett, hogy ki tudjuk s-t számolni. A lehashelt üzenet hosszának

legalább olyan nagyságúnak kell lennie, mint a választott q szám.

6.1.3. A veri�káció

1. Számítsuk ki a w ≡ s−1 mod q segádváltozót.

2. Számítsuk ki az u1 ≡ w · h(m) mod q segédváltozót.

3. Számítsuk ki az u2 ≡ w · r mod q segédváltozót.

4. Számítsuk ki P = u1A+ u2B.

5. A verpub(x, (r, s)) Veri�kációja a következ®képpen néz ki: Ha xP ≡ r mod q, az aláírás valid,

és elfogadjuk. Ha xP 6≡ r mod q, az aláírás invalid, azaz elutasítjuk.

Az mP itt a P pont x-koordinátájára vonatkozik. Tehát, aki veri�kálja, akkor és csak akkor fogadja

el az (r, s) aláírást, ha P pont x koordinátája ugyanannyi maradékot ad q-val osztva, mint r.

Ahhoz hogy jobban megértsük az algoritmus m¶ködését, nézzük meg a veri�káció bizonyítását

Ugyanúgy mint az el®z® két algoritmusnál, megmutatjuk, hogy (r, s) kielégíti az r ≡ mP mod q

veri�kációs feltételt.

Page 27: Elliptic Curve Digital Signature Algorithm használata a

6. FEJEZET. AZ ECDSA ÉS HASZNÁLATA A BITCOIN VILÁGÁBAN 24

Bizonyítás. Tudjuk, hogy:

s ≡ (h(m) + d · r) · k−E1 mod q.

Átszorozva s−1-el és kE-el, a következ®t kapjuk:

kE ≡ s−1h(m) + d · s−1 · r mod q.

Felhasználva, hogy

u1 ≡ w · h(m) mod q és u2 ≡ q · r mod q ≡ s−1 · r,

akkor kapjuk, hogy

kE ≡ u1 + d · u2 mod q.

Mivel A q rend¶ ciklikus csoportot generál, ezért mindkét oldalt megszorozhatjuk A-val:

kE ·A ≡ (u1 + du2)A.

Tudjuk, hogy a csoport m¶velet asszociatív, ezért:

kEA ≡ u1A+ du2A.

A B = dA egyenl®séget felhasználva:

kE = u1A+ u2B.

Ez pontosan az a feltétel, amelyet leellen®rzünk a veri�kációnál, azaz megnézzük, hogy a P =

u1A+ u2B és az R = kE ·A maradékosan megegyeznek modulo q.

6.1.4. Egy példa egyszer¶ számokkal

Végezzük el a lépéseket a bemutatott ECDSA sémánál! Legyen az E elliptikus görbénk a bitcoin

rendszerében használt y2 = x3 + 7.

1. p = 11

2. q = 11

3. a = 0

4. b = 7

5. A = (3, 1)

6. d = 2

7. B = d ·A = (6, 2)

Page 28: Elliptic Curve Digital Signature Algorithm használata a

6. FEJEZET. AZ ECDSA ÉS HASZNÁLATA A BITCOIN VILÁGÁBAN 25

A publikus kulcsunk a következ® lesz:

(p, q, a, b, A,B) = (11, 11, 0, 7, (3, 1), (6, 2)),

és a titkos kulcsunk kpr = (2). Legyen az üzenetünk hashelt értéke SHA(m) = 22, és kE = 3.

Az aláírásunk a következ®képpen néz ki:

R = 3 · (3, 1) = (9, 3),

r ≡ 9text,

s ≡ (22 + 18) · 4 mod 11text,

s ≡ 6 mod 11text.

A veri�káció a következ®képpen néz ki:

w ≡ 2 mod 11,

u12 · 22 ≡ 0 mod 11,

u2 ≡ 9 · 2 ≡ 7 mod 11,

P ≡ 0 + 7 · (6, 2) ≡ (42, 14) ≡ (9, 3) mod 11,

P ≡ r mod 11,

9 ≡ 9 mod 11.

6.2. Az ECDSA és a bitcoin találkozása

Egy adott protokoll, ahogy a bitcoin is, el®re meghatározza az elliptikus görbe és a véges test

paramétereit. Ezek �x értékek, melyet minden felhasználó használ. Ezekbe a paraméterekbe be-

letartoznak az elliptikus görbe egyenlete, a test prím modulusa, és az alappont, amit el®z®ekben

A-val jelöltünk, ami a görbére esik. Az alappont rangja nincs el®re meghatározva, de a többi para-

méter egy függvénye. Minden ECDSA-t használó rendszer hatalmas paramétereket használ, ezen

múlik a rendszer biztonságossága, mivel így nagyon nehéz ezeket feltörni.

A bitcoin a következ® el®re megadott paraméterekkel dolgozik:

• p = 11579208923731619542357098500868790785326998466564056403945758400790883

4671663 = 2256 − 232 − 29 − 28 − 27 − 26 − 24 − 1,

melynek hexadecimális értéke:

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

FFFFFFFEFFFFFC2F

• a = 0, b = 7

• A = (2, 5506626302227734366957871889516853432625060345377759417550018736038911672

9240), amely hexadecimális számrendszerben: 0279BE667EF9DCBBAC55A06295CE870

B07029BFCDB2DCE28D959F2815B16F81798 .

Page 29: Elliptic Curve Digital Signature Algorithm használata a

6. FEJEZET. AZ ECDSA ÉS HASZNÁLATA A BITCOIN VILÁGÁBAN 26

• q = 115792089237316195423570985008687907852837564279074904382605163141518161494

337, melynek hexadecimális értéke : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

FEBAAEDCE6AF48A03BBFD25E8CD0364141.

A tranzakció aláírása az ECDSA-val egy nagyon komplikált folyamat, amely két részre bont-

ható: az aláíratlan tranzakcióra és az aláírt tranzakcióra. A "nyers" tranzakció a már megismert

inputokat tartalmazza (mint például az el®z® tranzakció hashet és indexét). Az aláírás folyamata

az el®z®ekben megismert algoritmus alapján történik, a bemutatott paraméterekkel.

6.1. ábra. A digitális aláírás folyamata 1.

El®ször titkos és nyilvános kulcsot generálunk, majd az aláíratlan adatra kétszer lefuttatjuk a

SHA256-os hash függvényt. Ezek után legeneráljuk az aláírást, a már kétszer hashelt tranzakcióra.

A végleges scriptSig az aláírás hosszát, az aláírás egy byte hosszú típusát, és a titkos és publikus

kulcsok hosszát fogja tartalmazni. A veri�káció nagyon egyszer¶ az aláírás folyamatához képest,

lényegében az ECDSA algoritmusnál megismert veri�kációs folyamattal történik.

6.2.1. A DSA és ECDSA elleni támadások

Minden rendszer igyekszik a legbiztonságosabb módszereket illetve algoritmusokat használni, hogy

elkerülje az ®t érhet® támadásokat. Viszont nincs olyan rendszer amely támadhatatlan. Az ECDSA-

nál használt pont választásánál az A pont y koordinátáját nem használjuk fel. Ekkor létezik még

egy pont a görbén, amely ugyanazzal az x1 koordinátával rendelkezik, mint az eredetileg válasz-

tott pontunk. Ha kE-t kicseréljük −kE mod q -ra, ugyanazt az r értéket fogjuk kapni. Ekkor

−s mod q-t használva akármelyik (r, s) aláírás pár lecserélhet® egy (r,−s mod q) amely az el-

len®rzéskor szintén valid aláírás lesz. Tehát így egy véletlenszer¶ rövid életciklusú kulccsal, két

különböz® dokumentumot írhatunk alá. Szintén biztonsági problémát jelenthet a DSA algoritmus-

nál a pseudorandom generátor, amellyel a kE értéket generáljuk. Ebben a sémában ez a kE érték

egy egyszer¶ 160 bites pseudorandom számnak a q szerint vett modulusa. Meg�gyelések alapján,

az ilyen módon generált k kétszer olyan valószín¶séggel esik a [0, 2160 − q] halmazba, mint azon

kívül, így, az aláírásnál használt titkos kulcs elég jól approximálható. Másik gyengesége a DSA és

ECDSA rendszernek a p és q változók megválasztásánál fordulhat el®. Ha egy random q változót a

következ® alakban állítjuk el®:

1www.nicolascourtois.com/bitcoin/thesisDiW ang.pdf

Page 30: Elliptic Curve Digital Signature Algorithm használata a

6. FEJEZET. AZ ECDSA ÉS HASZNÁLATA A BITCOIN VILÁGÁBAN 27

q = SHA(m1)− SHA(m2)

úgy, hogy prím szám legyen, illetve, ha ehhez a q-hoz keresünk olyan

p = aq + 1

számot, amely szintén prím, akkor az m2 üzenet aláírását meg tudjuk hamisítani az m1-es

üzenetnél használt aláírással. A veri�kátori oldalon ért támadás lényege, hogy a veri�kátor számí-

tógépének a memóriájában megváltoztatjuk az α értékét. Ha ezt a változót sikerül átírni α = 1-ra,

akkor minden r = 0 paraméterrel rendelkez® aláírást validnak fog értékelni a rendszer. Ha ezt az α

értéket viszont 1re módosítjuk, akkor akármelyik dokumentumra tudunk aláírást hamisítani úgy,

hogy a β publikus kulcs paraméteréhez keresünk egy

r = (βz mod p) mod q

random számot, és hozzá egy

s =r

zmod q

számot. Ez szintén mindig valid aláírást fog eredményezni. Ezek a támadások csak akkor

eredményesek, ha az aláírási sémánkat nem megfelel®en használjuk, implementáljuk, illetve ha a

titkos paramétereinket olyan mód tároljuk, hogy azok könnyen elérhet®ek más emberek számára.

Page 31: Elliptic Curve Digital Signature Algorithm használata a

7. fejezet

Összefoglalás

A szakdolgozatom a bitcoint mutatja be. Ez egy decentralizált peer-to-peer kriptovaluta rendszer

amely Satoshi Nakamoto nevéhez köthet®. Mértékegysége a bitcoin, amelyet bányászattal lehet

keresni. Ez nagyon er®s hardwaret igényel amely arra szükséges hogy a program fel tudja dol-

gozni a tranzakciókat a peer-to-peer hálózaton keresztül illetve hogy minél gyorsabban meg tudja

oldani az elvárt matematikai feladatokat. Ezt a pénznemet digitális tárcában tárolhatjuk, amely

a számítógép merevlemezén helyezkedik el. A bitcoin biztonságos és megvan minden tulajdon-

sága, ami ®t egy pénznemmé teszi. A bitcoin blokkláncból áll amely blokkokból épül fel. Az

els® ilyen blokkot genesis blokknak nevezzük, és minden blokk egy fejléccel kezd®dik, amelyet egy

tranzakciós lista követ. A blokkok visszafele vannak linkelve, minden blokk fejlécében megtalálha-

tó az el®tte elhelyezked® blokkra mutató érték. A bitcoinban a tranzakció aláírásához elliptikus

görbén alapuló digitális aláírás sémát használnak. Ehhez szükséges volt megismerkednünk az el-

liptikus görbékkel és az elliptikus görbéken alapuló kriptográ�ai rendszerrel. Ezen rendszerek által

használt görbék nagyon speciális elliptikus görbék, csak és kizárólag olyan görbékkel foglalkozunk

kriptográ�ai szempontból, amelynek diszkriminánsa nem nulla. Az elliptikus görbéken de�niáltuk

az összeadást, pont duplázást, és a végtelen pontokat is, amely szükséges az elliptikus görbéken

alapuló digitális aláírás séma kulcsgenerálásához. Ezek után megismerkedtünk háromféle digitális

aláírási sémával, az ElGamal-al, amely a diszkrét logaritmus problémán alapul, és nagyon egyszer¶

a kulcs generálása, aláírása és veri�kációja. Ezek után bemutattam a Digitális Aláírás sémát, amely

az ElGamal egy sokkal gyakoribb variánsa, ahol szükségünk volt ciklikus csoportokra is a kulcs-

generáláshoz. Végezetül bemutattam az elliptikus görbéken alapuló digitális aláírás sémát, amely

már a kulcsgenerálásnál és aláírásnál is elliptikus görbéket használ, illetve a bitcoinban használt

egyedi paramétereket amellyel implementálták az aláíró algoritmust.

28

Page 32: Elliptic Curve Digital Signature Algorithm használata a

Irodalomjegyzék

[1] Liptai, Kálmán: Kriptográ�a, Eszterházy Károly F®iskola Matematikai és Informatikai Intézet,

2001.

[2] Antonopoulos, Andreas M.: Mastering Bitcoin, O'Reilley Media,Inc , 2015.

[3] Buttyán, Levente; Vajda, István : Kriptográ�a és alkalmazásai, Typotex, 2004.

[4] Paar,Christof; Pelzl, Jan : Understanding Cryptography - A Textbook for Students and Prac-

titioners, Springer, 2010.

[5] Pass, Rafael; Shelat,Abhi : A Course in Cryptography, Printed online, 2010.

[6] Smart, Nigel: Cryptography: An Introduction (Third Edition), Mcgraw-Hill College , 2004.

[7] Virasztó, Tamás: Titkosítás és adatrejtés, NetAcademia Kft., 2004

[8] Washington, Lawrence C.: Elliptic Curves Number Theory and Cryptography (second edition),

Taylor and Francis Group, 2008

[9] Wang, Di : Secure Implementation of ECDSA Signature in Bitcoin, Information Security at

University College of Longon, 2014

[10] De Rosa, Davide: Elliptic-curve digital signatures http://davidederosa.com/

basic-blockchain-programming/elliptic-curve-digital-signatures/, 2015

[11] Rylwaéder. Eric: The Math Behind Bitcoin http://www.coindesk.com/

math-behind-bitcoin/, 2014

[12] Sullivan. Nick: ECDSA: The digital signature algorithm of a better internet https://blog.

cloudflare.com/ecdsa-the-digital-signature-algorithm-of-a-better-internet/,

2014

29