TTY / Tietoturvallisuuden jatkokurssi / Harjoitustyö 2011 / Luonnosvaihe

Otto Huhta

Tietoturvallisuus Bitcoin-verkossa

Johdanto

Millainen olisi täydellinen maksujärjestelmä? Järjestelmä, jossa käyttäjät voisivat siirtää turvallisesti haluamansa määrän kelle tahansa, missä tahansa ja milloin tahansa ilman ylimääräisiä kuluja, olisi ainakin sen suuntainen. Bitcoin-verkko yrittää toteuttaa tällaista järjestelmää hyödyntämällä muun muassa digitaalisia allekirjoituksia, maksutapahtumien lohkosalausta (CBC) ja jaettua tietokantaa.

Bitcoin-verkko on toiminnassa, mutta onko se tietoturvallinen? Jutun lopussa on sivuttu myös kysymystä, voiko käyttäjä lyödä Bitcoin-verkolla rahoiksi.

Mikä on Bitcoin-verkko?

Bitcoin-verkko on pienen joukon kehittämä samannimisten virtuaalirahojen siirtelyyn suunniteltu verkko. Verkossa jokaisella käyttäjällä on yksi tai useampi virtuaalilompakko, joissa Bitcoin-kolikot säilötään ja joiden välillä kolikot liikkuvat. Perinteisesti esimerkiksi pankit hoitavat rahansiirrot kun vaikkapa henkilö A haluaa lähettää rahaa henkilölle B, mutta Bitcoin-verkossa A voi lähettää rahat suoraan B:n virtuaalilompakkoon.

Käyttäjien väliset siirrot lisätään lohkoketjuun, joka sisältää kyseisten kolikoiden aiemman siirtohistorian ja joka salataan. Nämä tiedot jaetaan verkon muille käyttäjille, jotka voivat vakuuttua, että kyseinen tapahtuma on tapahtunut ja kolikot ovat vaihtaneet omistajaa. Maksutapahtumien peruuttaminen tai väärentäminen jälkikäteen on näin pyritty estämään, sillä kaikilla muilla verkon käyttäjillä on tieto tapahtumasta. Bitcoin-rahojen määrä on rajattu 21 miljoonaan kappaleeseen, joiden liikkeellelaskua varten järjestelmän kehittäjät ovat kehittäneet oman menetelmänsä.[1]

Verkon rakenne ja siihen liittyminen

Bitcoin-verkko on hajautettu vertaisverkko ilman mitään keskusorganisaatiota, joka hallinnoisi maksutapahtumia tai varmistaisi niiden autenttisuuden. Ainoana poikkeuksena voidaan ajatella tapaa, jolla rahoja lasketaan liikkeelle. Tästä on myöhemmin kerrottu tarkemmin, mutta yksinkertaisesti sanottuna rahojen liikkeellelasku on suunniteltu verkon toimintaan mukaan. Liikkeellelaskusta ei siis päätä mikään keskuspankkien tapainen organisaatio, mutteivät toisaalta käyttäjätkään pysty itse vaikuttamaan siihen.[1]

Liittyessään Bitcoin-verkkoon käyttäjän asiakasohjelma lataa aluksi koko siirtohistorian (eli lohkoketjun). Tietokanta on kirjoittamishetkellä jo yli 750MB kokoinen (Kesäkuu 2011 ~150MB), joten sen lataaminen voi viedä huomattavan pitkään. Bitcoin-verkossa tähän lohkoketjun paisumiseen on varauduttu niin, että vanhimpia siirtotapahtumia voidaan myöhemmin tarvittaessa karsia ketjusta - tästäkin myöhemmin lisää. Siirtoja voi kuitenkin suorittaa ennen kuin koko tietokanta on käytössä, kunhan käyttäjällä on tarpeeksi suuri osa lohkoketjua - lähinnä siis tiedot kaikista niistä kolikoista, joita hän itse aikoo lähettää, vastaanottaa ja varmentaa muiden puolesta. Bitcoin-asiakasohjelma joutuu sitten vain odottamaan lohkoketjun osien lataantumista, mikäli kaikkia tarvittavia siirtotietoja ei ole saatavilla.

Lompakot, Bitcoin-kolikot ja siirtotapahtumat

Käyttäjät siis käyttävät Bitcoin-verkkoa virtuaalisten lompakkojensa kautta. Jokainen lompakko on yksilöity noin 33-merkkiä pitkällä numero- ja kirjainsarjalla, joka on tiiviste käyttäjän julkisesta avaimesta. Aina kun käyttäjä luo uuden lompakon luodaan myös uusi julkisen ja yksityisen avaimen avainpari. Itse asiassa avainpareja luodaan kerralla 100 kappaletta, sillä yksityisyyden suojaamiseksi jokaista varainsiirtoa varten käytetään eri avainparia. Kun lompakosta käytetään yksi avainpari, sinne luodaan tilalle uusi, jotta parien määrä pysyy sadassa kappaleessa[10][7].

Se, että lompakoita ja avaimia ei sidota millään tavalla niiden omistajaan, tekee järjestelmästä hyvin anonyymin, mutta tämä tarkoittaa samalla sitä, ettei omistajalla ole mitään keinoa palauttaa hukattua tai varastettua lompakkoa. Bitcoin-asiakasohjelmaan onkin nykyisin lisätty toiminnallisuus itse lompakoiden salaamiseen. Kuitenkaan esimerkiksi varmuuskopiointia ei ole vielä toteutettu ohjelmassa automaattiseksi toiminnoksi vaan sitä varten on käsin kopioitava wallet.dat-niminen tiedosto. Mikäli tiedosto esimerkiksi ohjelman uudelleenasennuksen yhteydessä katoaa, ei omistaja voi yksityisten avaintensa avulla osoittaa omistavansa tiettyjä kolikoita. Asiakasohjelmalla ei lompakon salaamisen lisäksi voi juuri vaikuttaa Bitcoinien turvallisuuteen, sillä ohjelmalla ei pysty mitenkään säätämään verkon turvaparametreja.

Yksityisiä avaimia käytetään todistamaan jonkin kolikon omistajuus, sillä Bitcoin-kolikot ovat itse asiassa ketju digitaalisia allekirjoituksia. Kolikon omistaja lähettää kolikon toiselle allekirjoittamalla omalla yksityisellä avaimellaan tiivisteen edellisestä maksutapahtumasta sekä seuraavan omistajan julkisen avaimen. Jälkimmäisestä muodostuu nyt varmenne, jonka tarkistamalla uusi omistaja voi varmistua siitä, että kolikko kuuluu hänelle. Tämä varmenne ja edellisen maksutapahtuman tiiviste muodostavat Bitcoin verkossa maksutapahtuman, jonka käyttäjät lisäävät viimeisimpään lohkoon ja salaavat.[1]

Maksutapahtumaketju

Bitcoin verkossa kolikon omistaminen tarkoittaa itse asiassa siis sitä, että käyttäjän asiakasohjelma lukee lataamastaan lohkoketjusta maksutapahtuman, joka osoittaa sen maksutapahtumaketjun (eli kolikon) kuuluvan käyttäjälle. Ohjelma siis käy lohkoketjua läpi ja huomaa "haa, tämän maksutapahtuman vastaanottajan avain on sama X, joka yksilöi listallani olevan lompakon" ja listaa kolikon käytettäväksi valuutaksi.

Kolikoilla maksetaan siis siirtämällä maksutapahtumaketjun omistajuus uudelle käyttäjälle luomalla uusi maksutapahtuma, julkaisemalla se
verkon muille käyttäjille ja odottamalla että tapahtuma lisätään lohkoketjuun, josta vastaanottajan huomaa kolikon kuuluvan hänelle.

Lohkosalaus

Bitcoinin ytimessä on lohkosalaus, jossa siirtotapahtumatietoja sisältäviä lohkoja ketjutetaan toisiinsa, siten että seuraava lohko ketjussa nimeää aina edeltäjänsä ja sen tiivisteen. Niinpä ketjun viimeisin lohko riippuu aina kaikista edeltävistä lohkoista.

Lohkoketju

Lohkot koostuvat otsikkokentästä ja hyötykuormasta, johon kootaan aina viimeisen lohkon laskemisen jälkeen tapahtuneet siirtotapahtumat ja edellisen lohkon tiiviste. Näin ollen lohkoketju sisältää tiedon kaikista verkossa tapahtuneista siirtotapahtumista ja mikäli käyttäjä hyväksyy viimeisimmän lohkon autenttiseksi hän samalla vahvistaa nämä kaikki siirtotapahtumat autenttisiksi.[1]

Koska käyttäjän on jossain vaiheessa ladattava koko lohkoketju itselleen, voi ketjun koon paisuminen muodostua jatkossa ongelmaksi. Tätä ongelmaa on pyritty ratkaisemaan tiivistämällä siirtotapahtumat Merklen puu -mallin [6] mukaan. Tämä mahdollistaa tarpeen vaatiessa siirtotapahtumien karsimisen vanhimmasta päästä rikkomatta ketjua.[1]

Salaukseen käytetään SHA-256 salausta, mikä on (tällä hetkellä) tarpeeksi vahva estämään lohkoketjussa jo olevien lohkojen muokkaamisen tai huijauslohkojen lisäämisen ketjun väleihin.[1][7] Mutta mikä estää ketä tahansa käyttäjää laskemasta lohkoa, johon hän on tallentanut esimerkiksi tapahtuman "10 000BTC käyttäjältä X minulle"? Tämä ratkeaa Bitcoinin proof-of-work (vaivannäyttö) menetelmällä, jota käsitellään seuraavaksi. [1]

Vaivannäyttö ja autenttisuus

Lohkoketjujen peukaloinnin estämiseksi Bitcoinin kehittäjät tarvitsivat menetelmän, jolla lohkoketjun muodostamisesta saataisiin niin vaikeaa, että kerralla olisi olemassa vain yksi aito ketju. Tällöin kukaan ei pääsisi ilman valtavia määriä laskentatehoa peukaloimaan ketjussa olevia lohkoja, eikä siis voisi muokata jo toteutuneita siirtoja. Toisaalta lohkojen aitouden varmistuksen piti olla helppo varmistaa, sillä Bitcoin verkko perustuu siihen, että muut käyttäjät varmistavat toisten tekemät siirtotapahtumat. Jos yksittäisen siirtotapahtuman varmistamiseen kuluisi valtavasti aikaa, ei siirtoja voitaisi suorittaa kuin kourallinen tunnissa.[1]

Ratkaisu ongelmaan löytyi lisäämällä jokaiseen lohkoon yksilöllinen arvo, suola (nonce), joka muuntaa lopullista lohkosta laskettua tiivistefunktiota. Tämä yksilöllinen arvo ei ole satunnainen vaan, tiivistefunktiolle hieman poikkeuksellisesti, se on luku, joka pakottaa tiivistefunktion johonkin tiettyyn arvoon. Tämä arvo on jokin ketjun edellisessä lohkossa määritettyä tavoitearvoa pienempi arvo.[1]

Suolaa ei voida etukäteen päätellä mitenkään, vaan se on etsittävä kokeilemalla. Tämä johtuu siitä, että jokainen lohkoon laitettu yksilöllinen arvo antaa hyvin erilaisen tiivisteen arvon. Kun löydetään ensimmäinen arvo, jolla tiivistefunktion arvoksi saadaan kohdearvoa alempi arvo, se lisätään lohkoon ja koko lohko salataan. Nyt kenen tahansa muun käyttäjän on helppo varmentaa lohko: tarvitsee vain laskea tiiviste ja tarkistaa, että se on pienempi kuin kohdearvo. Kun lohko vielä nimeää edeltäväksi lohkokseen sellaisen, joka käyttäjällä on jo tiedossa, voi käyttäjä hyvillä mielin luottaa sen autenttisuuteen ja lisätä sen lohkoketjuunsa.[1]

Kaava 1:

*Suola-arvon löytämiseen tarvitaan kirjoittamishetkellä (keskimäärin):

vaikeusaste* 2^32 = 1 090 716 * 2^32 = 4,68 * 10^15 arvon kokeilemista [11]

Jatkoa autenttisuudelle

Miten lohkojen tavoitearvot määritellään? Voisiko hyökkääjä itse asettaa tavoitearvot sopivan korkeiksi, jotta hän pystyisi nopeasti laskemaan sopivat suola-arvot ja väittämään omaa lohkoketjuaan aidoksi? Tässä kuvioon astuu verkon menetelmä tavoitearvojen määräytymiseen - ja paljon kiinnostusta herättänyt Bitcoinien louhiminen (Bitcon mining).[1]

Kuten kaavasta 1 nähdään, sopivien suola-arvojen löytäminen vaatii paljon laskentatehoa. Bitcoin-verkossa on siis oltava käyttäjiä, jotka käyttävät konetehoaan arvojen etsintään. Kun koneteho kasvaa, myös suola-arvojen etsintä nopeutuu. Jotta vältetään tilanne, jossa mahdollinen hyökkääjä voisi isolla määrällä laskentatehoa löytää suola-arvon ensimmäisenä, laskennan vaikeutta lisätään (kaavassa 1 muuttuja vaikeusaste). Tämä tapahtuu pienentämällä lohkojen tavoitearvoa.[1]

Tavoitearvoa säädetään tarkastelemalla viimeisimmän 2016 lohkon laskemiseen kulunutta aikaa. Arvoa säädetään niin, että noiden lohkojen laskemiseen olisi tämänhetkisellä verkon laskentakapasiteetilla mennyt kaksi viikkoa - tästä saadaan keskimäärin 10 minuuttia lohkoa kohti. Tavoitearvo voi siis laskentakapasiteetin pienentyessä myös kasvaa, mutta pääsääntöisesti tavoitearvo on Bitcoinin olemassaolon aikana laskenut.[1]

Tällaisia keskiarvoja käytetään siksi, että tietyn suola-arvon laskemiseen käytettyä aikaa on mahdoton määritellä tarkasti. Tämä johtuu siitä, että suola-arvo on ensimmäinen vastaantuleva arvo, jolla lohkon tiiviste saadaan tavoitearvoa pienemmäksi. Näin ollen arvo voi löytyä jo vaikka ensimmäisellä yrittämällä tai sen etsimiseen voi mennä viikkoja (laskentatehosta riippuen).

Oletus siitä, että hyökkääjä ei ehdi laskea suola-arvoa omalle väärennetylle lohkolleen ensin perustuu siihen, että koko verkon laskentakapasiteetti ylittää kenenkään yksittäisen käyttäjän käytettävissä olevan kapasiteetin. Tämä oletus näyttää pitävän hyvin paikkansa sillä kirjoitushetkellä koko Bitcoin-verkon laskentakapasiteetti oli 99,45 PetaFLOPs?? /s (10^15 floating-point operations per second) [8]. Vertailun vuoksi voidaan mainita, että esimerkiksi (maailman nopeimman) 705 000 ytimisen Japanin K -supertietokoneen vastaava luku on 10,51PetaFLOP/s.

Kahteen kertaan maksaminen

Käyttäjä ei siis voi väärentää vanhoja maksutapahtumia omaksi edukseen, mutta mikä estää häntä maksamasta samoilla kolikoilla kahdessa eri paikassa samaan aikaan? Toisaalta mikä estää häntä muokkaamasta viimeisimpään lohkoon tulevia maksutapahtumia omaksi edukseen? Bitcoin-kolikothan olivat digitaalisten allekirjoitusten ketjuja, joita voi helposti kopioida ja esittää esimerkiksi kahdelle eri henkilölle. Molemmat henkilöt näkevät ketjusta, että käyttäjä todella omistaa kolikot ja hyväksyvät ne. Kummasta tulee kolikoiden uusi omistaja? Ratkaisun tähän ongelmaan tarjoaa lohkoketju.[1]

Kun käyttäjä lähettää rahaa, hän muodostaa maksutapahtuman. Tämän tapahtuman hän lähettää kaikille verkon käyttäjille, ja lopulta se yltää rahojen vastaanottajalle. Tieto tapahtumasta on kulkenut verkon läpi arviolta kymmenessä sekunnissa. [12] Vastaanottaja näkee tapahtuman, mutta jää odottamaan sen lisäystä lohkoon, mikä vie keskimäärin kymmenen minuuttia. Kun tapahtuma on lisätty viimeisimmäksi salattuun lohkoon, asiakasohjelma lisää kolikot vastaanottajan saldoon.[1]

Rahojen lähettäjä voi yrittää samaan aikaan lähettää osalle käyttäjistä toista tapahtumaa: sellaista, jossa hän on siirtänyt rahat jollekin muulle käyttäjälle. Kun viesti tapahtumasta etenee verkossa, ne käyttäjät jotka ovat jo vastaanottaneet ensimmäisen viestin hylkäävät tämän myöhemmin tulleen. Kaikki eivät kuitenkaan ole vielä vastaanottaneet ensimmäistä viestiä ja näin ollen heidän mielestään tämä toinen maksutapahtuma on se aito tapahtuma.

Ongelmaa ei synny, jos lähetysten välillä on edes muutaman sekunnin viive, sillä silloin huomattavasti suurempi osa verkosta ehtii vastaanottaa ensimmäisen viestin ensin. Mutta jos lähetykset tapahtuvat samaan aikaan, seuraa kilpailutilanne, kun eri käyttäjät yrittävät kilpaa lisätä samojen kolikoiden kahta eri maksutapahtumaa lohkoketjun uusimpaan lohkoon.[1]

Kummat käyttäjät ovat oikeassa? Ne, jotka saavat löydettyä suola-arvon ensin, eli se kumman lohkon salaus on ensin valmis. Entä mitä jos kaksi eri käyttäjää saakin lohkon valmiiksi lähes samaan aikaan? Tällöinhän verkossa olisi liikkeellä kaksi eri lohkoketjua, sillä molemmat käyttäjät lähtisivät totta kai mainostamaan valmiiksi saamaansa lohkoa verkossa ympärillään oleville käyttäjille.[1]

Oikea lohkoketju olisi tässä tilanteessa se, kumpaan saadaan ensimmäisenä lisättyä uusi lohko. Jos peli menisi vieläkin suurin piirtein tasan, jatkuisi kilpailutilanne niin kauan, että jossain vaiheessa toinen lohkoketju jäisi tarpeeksi jälkeen ja tarpeeksi suuri osa verkosta ehtisi hyväksyä toisen ketjun oikeaksi.[1]

Lohkoketjun haarautumista tapahtuu melko usein, mutta pääsääntöisesti toista haaraa vie eteenpäin vain pieni joukko käyttäjiä ja toinen haara selviää viimeistään muutaman seuraavan lohkon aikana voittajaksi. On siis mahdollista, että hyökkääjä saisi lisättyä valheellisen tapahtuman tilapäisesti lohkoketjun viimeisimpään lohkoon. Pysyvästi tämä ei kuitenkaan onnistu ilman, että hyökkääjällä olisi käytössään yli puolia verkon laskentakapasiteetista, koska muuten muu verkko hylkäisi muutaman lohkon päästä hyökkääjän haaran. Tällainen laskentateho taas vaatisi valtavia rahallisia panostuksia, mikä sulkee ainakin Bitcoin-verkon pienet rahasiirrot hyökkäyksien ulkopuolelle. Itse asiassa Bitcoin-asiakasohjelma katsoo siirron kuin siirron varmistuneen kun maksutapahtuman lisäämisen jälkeen lohkoketjuun on lisätty kuusi uutta lohkoa. [1] [13]

Lohkoketjun pysyvän haarautumisen mahdottomuuden voi päätellä jo siitä, että yhden lohkon ratkaiseminen vie keskimäärin 10 minuuttia ja että tiedon välittyminen koko verkon läpi kestää noin 10 sekuntia. Haarautumisen alkamiseksi kahden eri tahon pitää siis ratkaista lohko muutaman sekunnin
sisällä toisistaan, jotta tiedot jakaantuisivat edes suurin piirtein tasan verkon käyttäjien kesken. Jotta ketju pysyisi erillään, tulisi myös seuraavan lohkon ratketa kahdessa eri paikassa lähes samaan aikaan. Eli haarautuneen lohkoketjun haarojen erillään pysymisen todennäköisyys putoaa hyvin nopeasti.[1]

Bitcoin-mining

Vielä on mainittava yksi Bitcoin-verkon ominaisuus, joka ei suoraan ole turvamekanismi, mutta joka mahdollistaa koko verkon toiminnan: Bitcoin-mining. Itse kiinnostuin Bitcoin-verkosta juuri tämän takia. Verkon tietoturvallisuus perustuu pitkälti siihen, että verkon yhteinen laskentakapasiteetti ylittää monin verroin kenenkään yksittäisen tahon käytettävissä olevan laskentatehon. Yksittäisen käyttäjän ei kuitenkaan tarvitse tarjota tietokoneensa laskentatehoa verkon käyttöön lähettääkseen tai vastaanottaakseen Bitcoineja. Mikä siis kannustaa käyttäjiä antamaan laskentakapasiteettiaan verkon käyttöön?

Laskentatehon käyttämiseen kannustaa lohkojen ratkaisemiseen liittyvä ominaisuus. Lohkon ratkaiseva käyttäjä saa nimittäin oikeuden kirjoittaa seuraavaan lohkoon sen ensimmäisen maksutapahtuman. Tämä ensimmäinen maksutapahtuma on siitä erikoislaatuinen, että siinä käyttäjä siirtää itselleen 50 Bitcoinia - ei keneltäkään. Hän siis luo rahaa tyhjästä.[1]

Tämä on tarkalleen ottaen se menetelmä, jolla Bitcoin-verkossa lasketaan rahaa liikenteeseen. Lohkojen ratkaiseminenhan oli säädelty niin, että keskimäärin joka kymmenes minuutti ratkeaa uusi lohko. Liikenteeseen lasketaan siis tällä hetkellä kymmenen minuutin välein 50 uutta Bitcoinia. Tämä määrä on asetettu puolittumaan aina neljän vuoden välein niin, että joskus vuoden 2030 jälkeen kierrossa on yli 99% kaikista 21 miljoonasta Bitcoinista. Useat käyttäjät ovat tienanneet mukavia summia antamalla laskentatehoaan verkon käyttöön, mutta verkon käyttäjämäärän kasvu ja sitä myötä lohkojen ratkaisuvaikeuden huima nousu ovat tehneet huonosti kannattavaa. Vielä varsinkin kun Bitcoinien arvo esimerkiksi dollareissa on pudonnut 30$ huippuarvosta alle kolmeen dollariin. Omien laskelmieni mukaan tienatut Bitcoinit kattavat tällä hetkellä omalla kokoonpanollani hädin tuskin edes kulutetun sähkön, kun vielä viime kesäkuussa tienestiä tuli joitakin kymmeniä dollareita päivässä. [1][8][14]

Kun lohkojen ratkaisemisesta saatu palkkio hiljalleen pienenee, tarvitaan myös jokin muu kannustin suola-arvojen etsimiseen. Tämä toinen kannustin, jonka on tarkoitus hiljalleen korvata kolikoiden liikkeellelaskeminen, on siirtotapahtumien palkkiokertymä. Bitcoin-verkossa on käytössä vapaaehtoinen siirtopalkkio, jonka rahojen lähettäjä voi lisätä siirtotapahtumaan. Lohkon ratkaisija saa kaikki kyseiseen lohkoon tulevien siirtotapahtumien siirtopalkkiot itselleen. Siirtopalkkio ei ole siis (vielä) pakollinen, mutta se nopeuttaa siirtotapahtuman varmistumista: käyttäjät lisäävät totta kai lohkoihin nopeimmin ne tapahtumat, joista he saavat palkkion ja mitä nopeammin tapahtuma lisätään lohkoon, sitä nopeammin sen "läpimeno" varmistuu.[1]

Verkon ulkopuoliset tietoturvauhat

Bitcoin-verkon suurimmat tietoturvauhat eivät välttämättä riipu itse verkon toiminnasta vaan esimerkiksi siitä, miten käyttäjät ovat yhteydessä siihen ja digitaalisiin lompakoihinsa. Toisaalta juuri tarjoamansa anonymiteetin vuoksi sitä on helppo hyödyntää esimerkiksi tietoturvarikoksissa.

Yksi esimerkki tästä on Devil Robber -haittaohjelma, joka valjastaa kohdekoneen näytönohjaimen Bitcoinien tuotantoon ja yrittää varastaa suojaamattomien Bitcoin-lompakoiden sisältöä. Normaalisti viranomaiset voisivat helposti jäljittää tekijän rahojen vastaanottajan perusteella, mutta koska Bitcoin-tilit ovat anonyymejä, ei tämä onnistukaan. On myös löydetty joitakin botnet-verkkoja, joiden kohdekoneet on valjastettu tuottamaan Bitcoineja. Uhka on kuitenkin toistaiseksi ilmeisen pieni huonon kannattavuuden takia. Suurempi uhka muodostuu mielestäni siitä, että botnet-verkkoihin voitaisiin saada kerättyä niin paljon laskentakapasiteettia, että hyökkääjät saisivat lisättyä omia lohkojaan lohkoketjuun. Tätä uhkaa rajoittaa vielä tällä hetkellä kuitenkin se, että tavallinen suoritin on erittäin hidas laskemaan tiivisteitä verrattuna tietyntyyppisiin näytönohjaimiin, joita taas löytyy vain pienestä osasta kaikista tietokoneista. [3][4]

Valtavan tietoturvauhan muodostavat suojaamattomat Bitcoin-lompakot. Koska lompakko on vain yksi (oletuksena suojaamaton) tiedosto, voi kuka tahansa siirtää/kopioida sen itselleen ja väittää sen kuuluvan hänelle. Tilien anonymiteetin takia on mahdotonta osoittaa tili varastetuksi. Vaikka tämä onnistuisikin, on varas jo hyvin todennäköisesti ehtinyt siirtää rahat toiselle tilille, joka on - aivan - anonyymi.

Oman tietoturvaongelman muodostavat myös Bitcoinien vaihtopalvelut, joissa käyttäjät vaihtavat esimerkiksi euronsa ja dollarinsa Bitcoineiksi. Lyhyessä ajassa pystyyn kyhätyt rahanvaihtosivustot eivät millään tavalla vastaa tietoturvaltaan pankkien verkkosivustoja, vaikka niillä siirrellään isojakin rahasummia. Palvelut ovatkin joutuneet helppoa tienestiä hamuavien hyökkääjien kohteeksi. Vaihtojärjestelmien kehittymättömyys on myös yksi Bitcoin-verkon ulkopuolinen iso haavoittuvuus.[5]

Yhteenveto

Yhteenvetona voidaan todeta, että itse Bitcoin-verkko on päällisin puolin tarkasteltuna tietoturvaltaan vankka. Verkon hajautettu luonne tarkoittaa, että palvelu on aina saatavilla ja jopa niin tehokkaasti, että kaikki tieto maksutapahtumista on kaikkien käyttäjien saatavilla. Ainoan rajoitteen tähän aiheuttaa nähdäkseni lohkoketjun koko, mikä karkottaa esimerkiksi mahdollisia mobiilikäyttäjiä.

Kaikkien maksutapahtumien levittäminen kaikille käyttäjille ei tee maksutiedoista itsestään kovin luottamuksellisia, mutta koska käyttäjiä ei yhdistetä heidän käyttämiinsä avainpareihin, pysyvät itse käyttäjien maksutapahtumat salassa. Autenttisuus taataan digitaalisten allekirjoitusten avulla (Bitcoin kolikot) ja toisaalta eheyden takaamiseen on muodostettu koko lohkoketjujärjestelmä SHA-256 tiivisteineen.

Bitcoin-verkon suurimmat heikkoudet liittyvätkin itse asiassa verkon ulkopuolisiin toimintoihin, kuten valuuttojen vaihtamiseen ja verkon käyttöön rikollisessa toiminnassa. On mielenkiintoista nähdä mihin Bitcoin kehittyy, sillä verkossa on tekniikkansa puolesta potentiaalia.

Lähteet

SivuTiedotLaajennettu edit

Vaativuus Jatko
Valmius Valmis
Tyyppi Arviointi
Luokitus Uhkat
Mitä Useita
Miltä Useita
Missä Järjestelmä
Kuka Titu-ammattilainen
Milloin Päivittäin
Miksi Hyvä tapa
Topic attachments
I Attachment Action Size Date Who Comment
kuva1.pngpng kuva1.png manage 10.3 K 22 Apr 2012 - 15:56 UnknownUser  
Print version |  PDF  | History: r7 < r6 < r5 < r4 | 
Topic revision: r7 - 22 Apr 2012 - 16:18:02 - OttoHuhta?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback