Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
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
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.
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
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
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
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
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.
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.
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
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.
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
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
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
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
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
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
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
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
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.
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).
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.
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
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.
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.
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
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.
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)
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 .
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
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.
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
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