Plokiahel, Bitcoin, makselahendused
Plokiahel ja selle rakendused
Plokiahel (blockchain) on andmestruktuur, mis koosneb omavahel seotud järjestikustest andmeplokkidest. Andmeplokkide sisu koosneb kirjetest ja sõltub konkreetse plokiahela rakendusest. Kõige populaarsem plokiahela rakendus on krüptoraha (cryptocurrency), kus andmeplokid sisaldavad kõikide süsteemi kuuluvate osapoolte kontoseise ja/või allkirjastatud tehinguid. Selliselt esitatud plokiahel kujutab endast (tavaliselt hajusat) kirjete arvestusraamatut (ledger).
Plokiahela tervikluse tagamiseks sisaldab iga plokk ka eelmise ploki räsi, mis teeb plokiahela seisu tagantjärele muutmise (plokkide lisamise või eemaldamise) keeruliseks. Nende räside enda kaitseks kasutatakse üht järgnevatest võimalustest:
- räsitud ajatembeldus: räside perioodiline publitseerimine (näiteks ajalehes)
- andmeplokkide digitaalallkirjastamine usaldatud osapoolte poolt
- andmeplokkide struktuurile rakendatud reeglid, mille täitmist on lihtne kontrollida, aga mis teevad andmeplokkide koostamise arvutuslikult keeruliseks ja seega ka raskelt muudetavaks.
Plokiahela süsteemis on põhilisteks osapoolteks kasutajad, kes lisavad arvestusraamatusse kirjeid ja halduritest, kes nende kirjete põhjal uusi plokke moodustavad (üks andmeplokk võib sisaldada mitut kirjet) ja plokkide vastavust reeglitele kontrollivad. Vastavalt haldurite struktuurile on plokiahelasüsteemid kas:
- tsentraalsed teenused, kus arvestusraamatut haldab üks konkreetne osapool,
- loalised hajusraamatud (permissioned ledgers), kus halduriteks on kindlaks määratud hulk osapooli või
- loatud hajusraamatud (permissionless ledgers), kus halduriks võib hakata igaüks.
Bitcoin
Bitcoin on 2009. aastal Satoshi Nakamoto poolt algatatud detsentraliseeritud krüptoraha ja maksesüsteem, kus kõik tehingud on avalikud. Tehingud pannakse kirja avalikku hajusalt loodud arvestusraamatusse (ledger). See sisaldab kõiki tehinguid ning seega määrab kindlaks kui palju bitcoine kuulub erinevatele osapooltele. See info on avalik, mistõttu võib igaüks tehingute ajalugu uurida ning otsida üles nn. kontoseisud.
Samas pole ainult arvestusraamatus oleva info põhjal võimalik bitcoinide omanikke tuvastada, sest kasutusel on krüptograafiliselt määratud pseudonüümid (kasutajate avalikud võtmed). Samuti on oluline mõista, et bitcoinide omanikud ei oma füüsilisi münte ega ka digitaalseid münte, vaid omavad krüptograafilist tõestusmaterjali selle kohta, et arvestusraamatusse kirjutatud bitcoinid kuuluvad tõesti neile. Tõendusmaterjali loomiseks kasutatakse räsimist ja digiallkirjastamist.
Nüüd üritame üldistatud kujul kirjeldada kuidas toimuvad Bitcoin ülekanded. Igal Bitcoini süsteemis osaleval kasutajal on olemas vähemalt üks võtmepaar, mis koosneb avalikust võtmest ja salajasest võtmest. Avalikust võtmest tuletatakse osapoole pseudonüüm ehk aadress ja salajase võtme abil saab sooritada tehinguid ehk bitcoine teistele aadressidele saata. Tehingut sooritades kasutab saatja enda salajast võtit, et digiallkirjastada sõnum, mis ütleb, et vastava aadressiga osapool saab õiguse tehingu käigus saadetud bitcoine kasutada. Kui tehing läheb läbi, siis saab nn. ülekande vastuvõtja omakorda kasutada enda salajast võtit, et neid bitcoine kulutada ehk edasi saata.
Kasutajad saadavad oma allkirjastatud tehingud kinnitamiseks plokiahela halduritele. Bitcoini tehingute kinnitamine ehk uue ploki lisamine on arvutuslikult keerukaks operatsioon, mille käigus otsitakse nõutud omadustega räsifunktsiooni väljundit -- haldur peab andmeploki osaks olevat juhuslikku arvu muutma nii, et ploki SHA-256 räsi esimesed n bitti oleks nullid. Kuna sobiva väärtuse leidmiseks pole efektiivset algoritmi, siis üritatakse sobivaid väärtuseid suure arvutusjõudluse kulu hinnaga üles leida, proovides erinevaid juhuslikke arve. Seda protsessi nimetatakse kaevandamiseks, sest sobiva väärtuse leidja saab tasuks kindla hulga bitcoine. Lisaks saab sobiva väärtuse leidja endale ka ülekandetasu(d). Kusjuures, Bitcoini plokiahel on üles ehitatud nii, et kaevandamisest saadav auhind muutub iga 4 aasta järel poole väiksemaks (2020 aasta maikuus langes auhind 6.25 bitcoinini). Kui Bitcoini algusaegadel oli kaevandamine võimalik ka tavaarvuti ja graafikakaardi abil, siis tänapäeval on see muutunud nii keerukaks, et selleks tuleks osta spetsiifilist kaevandamise riistvara. Seetõttu tehakse kaevandamisel koostööd (mining pools) ning auhind jagatakse osalenud osapoolte vahel.
Bitcoini süsteemi on sisse ehitatud deflatsioon, kuna disaini kohaselt saab eksisteerida maksimaalseks 21 miljonit bitcoini. Samuti muutub kaevandamine järjest keerukamaks, sest mida rohkem on kaevandajaid, seda keerukamaks muudetakse sobiva väärtuse leidmine. Seetõttu ei ole Bitcoini abil enam võimalik kiiresti ja odavalt tehinguid sooritada. Tehingu kinnitamisele kulub keskmiselt üks tund ja tehingukulu oli näiteks 2017 aasta detsembris üle kümne dollari. Lisaks on probleemiks kaevandusvõimsuse koondumine Hiinasse, sest Bitcoini protokoll on turvaline senikaua kuniks ükski osapool ei kontrolli üle 50% arvutusvõimsusest. Kui seda tingimust rikutakse, siis on ründajal võimalik Bitcoini arvestusraamatusse tagantjärele muudatusi teha (küll väga suure arvutusvõimsuse hinnaga).
Eelnev ülevaade on esitatud lihtsustatud kujul. Süsteemi täpsemaks mõistmiseks tuleks lugeda Bitcoini protokolli kirjeldust.
Bitcoin ja rahapesu
Kuna Bitcoin ei ole disainitud anonüümsete tehingute sooritamiseks, siis peavad kurjategijad Bitcoine kasutades nendelt kuritegelikud jäljed eemaldama ehk siis raha puhtaks pesema. Selleks kasutatakse bitcoinide miksimise teenuseid. Vastavad teenusepakkujad võtavad vastu bitcoine, segavad need ära ning saadavad samas vääringus juhuslikke bitcoine soovitud kontodele. Teenusepakkujad võtavad vahendamise eest enamasti paar protsenti teenustasu. Tegelikult võivad tehingute jälgi peita ka enda privaatsust kaitsvad inimesed ning seega ei saa automaatselt eeldada, et vastavat teenust kasutavad ainult kurjategijad.
Kurjategijatele on varasemalt Bitcoin meeldinud, sest süsteem võimaldas automatiseerida uute kontode loomist ning rahapesu. Seega said küberkurjategijad luua dünaamiliselt uusi Bitcoini kontosid, kuhu lunavara ohvrid pidid lunavara kandma. Ajutised kontod sai automaatselt tühjendada ning bitcoinid miksimisteenuste abil puhtaks pesta.
Bitcoini süsteemis on ülekandetasu väga kõikuv ning ka julgeolekuorganite poolne tähelepanu on tõusnud (näiteks rünnates miksimisteenust saab kurjategijad deanonümiseerida). Seetõttu on osad küberkurjategijad hakanud kasutama alternatiivseid krüptorahasid, kuhu on anonüümsus algusest peale sisse ehitatud.
Ethereum
Ethereum on 2015. aastal alustanud plokiahel, mille autoriks on Vitalik Buterin. Ethereum plokiahelas kasutatavaks valuutaks on ether. Algselt oli Ethereum oma olemuseltväga sarnane Bitcoinile, kuid sisaldas ka märkimisväärseid erinevusi. Näiteks põhines uute plokkide kaevandamine ethash räsifunktsiooni murdmisel, mis omakorda sisemiselt kasutab Keccak (SHA-3) räsifunktsiooni. Ethash oli üles ehitatud nii, et seda oleks spetsiaalse riistvaraga raske kiirendada (nõuab palju kiiret mälu) -- probleem, mida Bitcoinile on ette heidetud.
Kui uute plokkide lisamisel on kasutusel arvutusmahukas süsteem, näiteks mingi räsifunktsiooni murdmine, siis nimetatakse seda töötõenduseks (proof of work). Töötõenduse suureks puuduseks on asjaolu, et see raiskab väga palju energiat. Seetõttu on osad plokiahelad kasutusele võtnud alternatiivse plokkide lisamise süsteemi: panusetõendus (proof of stake). Panusetõenduse puhul teevad arvestusraamatu haldurid uue ploki lisamise õiguse saamiseks panuse oma olemasoleva krüptorahaga. Et vältida kõige rikkama halduri monopoli, antakse uue ploki lisamise õigus näiteks loterii käigus, kus iga halduri võiduvõimalus on proportsionaalne tema panusega. Haldur, kes saab õiguse plokk lisada, allkirjastab selle oma salajase võtmega ning saab endale uue ploki lisamise auhinna ning ülekandetasud, nagu ka kaevandamise puhul.
Peale mitmeaastast ettevalmistust läks Ethereum 15.09.2022 üle töötõendusele (vt the Merge). Kahjuks tekitati Ethereumist samal hetkel mitu paralleelset haru (plokiaheta terminoloogias fork), mis jätkasid töötõenduse kasutamist.
Lepingumonitorid
Mõned plokiahelad võimaldavad koostada lepingumonitore (nutileping, smart contract), st plokiahelasse automatiseeritud tegevusi programmeerida. Kõige lihtsamal kujul on lepingumonitorid tingimus -> tegevus tüüpi eeskirjad, kus tingimus on midagi, mida arvestusraamatu haldurid saavad plokki lisades kontrollida (näiteks makse laekumine mingile kontole) ning tegevus on midagi, mida haldurid saavad plokiahelas teha (näiteks ülekanne mingile kontole). Sellisel kujul lepingumonitorid on üheselt mõistetavad eeskirjad (lepingud), mille täitmine on hajusalt tagatud. Ethereumi plokiahelas on lepingumonitoride programmeerimiseks keel Solidity.
Lepingumonitoride programmeerimisel tuleb olla eriti hoolikas, sest kord kehtestatud lepingumonitori hiljem enam muuta ei saa (kui selle muutmise võimekus pole just lepingumonitori sisse programmeeritud). Vigase lepingumonitori muutmine või kustutamine tähendaks plokiahela "tagasi kerimist", mis nõuab aga haldurite konsensust. Tuntumad vigased lepingumonitorid on The DAO ja Parity tarkvaras tuvastatud viga.
Pankade poolt kasutatud maksesüsteemid
Deebetkaart
Wikipediast pärinev deebetkaardi näide:
- Kaardi väljastanud panga logo
- Kiip (vaid osadel kaartidel)
- hologramm (võib olla tagumisel küljel)
- kaardinumber
- kaardi tüüp / bränd
- aegumise tähtaeg
- kaardiomaniku nimi
Deebetkaart (ehk tavaline pangakaart) võimaldab kaardiomanikul kasutada enda pangakontol olevat raha. Paljudes riikides on deebetkaartidele lisatud kiibid, mis tõstavad oluliselt kaartide turvataset. Kiibi sees on krüptovõti, mida saab kasutada vaid koos õige PIN koodiga. Ainult magnetribaga kaardid on siiani levinud USA-s ning mõnedes Lõuna-Ameerikas ja Aasias asuvates riikides.
Varasemalt tuli deebetkaartidega maksmiseks kasutada kaardi tagaküljel olevat magnetriba ning isiku tuvastamiseks andis maksja tšekile allkirja. Nüüd tuvastatakse Euroopas kaardiomanikku PIN koodi abil. Pangad eeldavad, et ainult kaardiomanik teab PIN koodi ning seega teised kaarti kasutada ei saa (vähemalt nendes makseterminalides, mis on ehitatud kiibiga kaartide jaoks).
Lisaks oli magnetribaga kaartide puhul suureks probleemiks kaartide kopeerimine. Kuna magnetribal oleva info kopeerimine on lihtne, siis ei tohiks magnetribaga kaarte maksmisel silmist lasta. Isegi kui kaardil on olemas kiip, siis on endiselt võimalik kopeerida magnetribal olevat infot. Nüüd võib tekkida küsimus, et miks on kiipi omavatel kaartidel vaja ka magnetriba. Üheks põhjuseks on ühilduvuse tagamine makseterminalidega ja pangaautomaatidega, mis ei ole loodud kiipi kasutama. Lisaks sellele nõuavad ka osad uuemad pangaautomaadid, et kaardil oleks loetav magnetiriba. Teine argument võib olla seotud käideldavusega - juhul kui kiip enam ei toimi, siis on võimalik, et makseterminalides saab magnetriba kasutada.
Selleks, et kopeeritud kaardi abil saaks raha välja võtta tuleb kopeerida ka PIN kood. Kaartide kopeerimiseks mõeldud seadmeid nimetatakse skimmeriteks ning need lisatakse enamasti pangaautomaatide külge. Hea ründe korral on skimmerit raske märgata, sest see on ilusti sulandatud pangaautomaadi külge. Tihti on lisaks kaardi kopeerijale lisatud pangaautomaadi külge ka väike kaamera, mis salvestab sisestatud PIN koodi. Kui teid antud teema huvitab, siis soovitame jälgida Brian Krebs'i blogi, kus ta antud teemat üpris sageli käsitleb.
Piltidel kuvatakse skimmeriga varustatud pangaautomaati. Allikas: Brian Krebs'i blogipostitus
Deebet pluss
Deebet pluss kaart on deebetkaart, millel on piiratud krediitkaardi võimekus. Niisuguse kaardiga saab teha internetis makseid. Protsess on analoogne krediitkaardi kasutamisele: sisestada tuleb enda nimi (mõnikord ka aadress), kaardinumber, aegumise tähtaeg ning kaardi tagumisel küljel olev turvakood.
Erinevalt krediitkaardist tehakse deebet pluss kaardi abil sooritatud tehingud kaardiomaniku rahaga (krediitkaardi korral tehakse tehingud krediiti kasutades ehk siis panga rahaga).
See kes kaardi kopeerimise või kaardiandmete varastamise puhul vastutab, sõltub kehtivast seadusandlusest. Võib tekkida küsimus, et kas ründe toimumist peab tõestama pank, teenusepakkuja või kasutaja? Kui seadusandlus pole piisavalt üheseltmõistetav, võib osutuda, et turvalisem on kasutada krediitkaarti, sest:
- krediitkaarte haldavad firmad võivad kiiremini raha tagasi maksta;
- mõnes riigis (näiteks USA) on krediitkaardipettused seaduses eraldi käsitletud;
- krediitkaardi puhul on pretensioonide esitamise tähtaeg üldjuhul pikem;
- ründe tõestamise koorem lasub üldjuhul kaardi väljastajal.
Kaardiandmete lekked on pigem tavalised, sest paljud veebipoed ei oska krediitkaardiandmeid hallata või siis turvalisusesse piisavalt investeerida. Juhul kui satute niisuguse ründe ohvriks ja teie kaardiandmeid kasutatakse ilma teie loata, siis tuleb tehingud pangas kiiresti vaidlustada. Juhul kui tagasinõue kiidetakse heaks, siis saab raha paari kuu jooksul tagasi.
Euroopa Liidus järgib kohalik seadusandlus Euroopa Parlamendi ja Nõukogu direktiivi (EL) 2015/2366 (25. november 2015) makseteenuste kohta siseturul, direktiivide 2002/65/EÜ, 2009/110/EÜ ning 2013/36/EL ja määruse (EL) nr 1093/2010 muutmise ning direktiivi 2007/64/EÜ kehtetuks tunnistamise kohta.
Krediitkaart
Krediitkaart võimaldab kliendil kasutada talle panga poolt antud krediiti. Tänapäeval on krediitkaart või sarnase funktsionaalsusega kaart vajalik näiteks selleks, et teha internetis tehinguid, broneerida hotelle ning rentida reisil olles autot.
Krediitkaarti kasutades tuleb varjata kaardinumbrit ning tagumisel poolel olevat turvakoodi. Juhul kui vastav info lekib, siis on võimalik vastavat krediitkaarti kasutada internetis maksete sooritamiseks. Eriti oluline on kaardinumbri varjamine internetti kasutades, sest piisab ühest halva turvatasemega veebilehest, et teie krediitkaardi info lekiks. Kaardinumbreid kopeerivad küberkurjategijad neid pigem ise ei kasuta, kuna vahelejäämise vältimiseks tuleks kõigepealt tegeleda rahapesuga. Seetõttu müüvad küberkurjategijad kogutud info edasi nendele osapooltele, kes on vastavast infost huvitatud.
Soovitused
- Ärge sisestage krediitkaardinumbrit HTTP-d kasutavale lehele, sest sellisel juhul pole ühendus teie brauseri ja veebilehe vahel krüpteeritud. HTTPS on vajalik ühenduse turvamiseks, aga see ei anna mingit garantiid selle kohta kuidas veebileht teie andmeid haldab (või kas veebileht ise on pahatahtlik).
- Ärge sisestage kaardiandmeid lehele, mida te ei usalda.
- Võimaluse korral vältige krediitkaardi kasutamist väikestes veebipoodides. Küsige endalt kas vastav teenusepakkuja suudab turvalisusest aru saada ning krediitkaartide kohta käivaid andmeid turvaliselt töödelda.
- Kui te ei usalda teenusepakkujat, siis kasutage võimaluse korral alternatiivset makseteenust. Kui alternatiivi ei leidu, siis kasutage võimaluse korral virtuaalset krediitkaarti.
- Ärge tehke enda krediitkaardist pilti ning ärge postitage seda sotsiaalmeediasse :)
Viipekaart ehk NFC kaart
Lähiväljasidet ehk NFC (near field communication) toetavad kaardid ning makseterminalid võimaldavad sooritada tehinguid ilma, et kaart füüsiliselt makseterminali puutuks. NFC terminalid on aktiivsed osapooled, kes võimaldavad NFC kaardis oleva antenniga juhtmevabalt sõnumeid vahetada.
Kuna NFC kaarte saab kasutada ilma PIN koodi sisestamata, siis on pangad seadnud limiidid vastava tehnoloogia abil maksete sooritamiseks. Suuremate tehingute korral on endiselt vaja sisestada PIN kood. Samas kui keegi varastab teie (aktiveeritud) NFC kaardi, siis saab ta seda kasutada väikeste maksete sooritamiseks ilma teie PIN koodi teadmata. Teoorias on võimalik ka see, et keegi võtab tipptunnil bussi kaasa kaasaskantava makseterminali ning üritab teie taskus olevalt kaardilt raha kätte saada.
NFC abil maksete tegemine ei piirdu ainult füüsiliste pangakaartidega. NFC tugi on olemas paljudes nutiseadmetes, näiteks nutitelefonides ja nutikellades. Selleks, et vastavat seadet maksmiseks kasutada tuleb siduda pangakaart vastava seadmega, seda saab teha juhul kui pangakaardi väljastanud pank seda võimaldab. Erinevalt viipekaardiga maksmisest tuleb nutitelefoniga NFC makset tehes ennast kõigepealt autentida (näiteks sõrmejäljega), kuigi see nõue ei pruugi alati kehtida. Seetõttu võiks öelda, et autentimist nõudvad nutiseadmed on maksmiseks veidi turvalisemad kui tavalised viipekaardid, kuna tavalisi viipekaarte saavad ilma lisapiiranguteta kasutada ka teised inimesed lisaks kaardi omanikule.
Lisamaterjalid
- Payment solutions
- Krüptorahad
- Once hailed as unhackable, blockchains are now getting hacked (2019)
- ISIS 'funded Sri Lanka Easter bombings with Bitcoin donations' (2019)
- Facebook's Libra cryptocurrency
- The Libra Blockchain (2019)
- Libra White Paper v2.0 (2020)
- US lawmakers troubled by Facebook's Libra due to 'pattern of failing to keep consumer data private' (2019)
- Payment firms back out in painful blow to Facebook’s cryptocurrency Libra (2019)
- How the wheels came off Facebook's Libra project (2019)
- Bitcoin consumes 'more electricity than Argentina' (2021)
- Eestikeelne terminoloogia