Blockchain (hrv. “lanac blokova”) tehnologija nalazi sve veću primjenu u svim granama društva. Riječ je o jednosmjernom lancu u kojem svaka karika tj. blok ovisi o vrijednosti prethodne karike. Korištenje kriptografije osigurava određenu razine sigurnosti i privatnosti. Iako nam ova tehnologija daje veliku razinu pouzdanosti u spremljene podatke, postoje određeni nedostaci u aplikacijskom sloju koji se mogu iskoristiti. Pametni ugovori su jedan od primjera aplikacijskog sloja u kojem se mogu pronaći greške (slučajne ili namjerne) čija zlouporaba postaje sve popularnija i opasnija
Ključne riječi: blockchain, lanac, kriptografija, sigurnost, pametni ugovori
Blockchain tehnologija predstavlja jednu od najznačajnijih i najperspektivnijih inovacija današnjice. Doslovan prijevod sa engleskog jezik a bio bi “lanac blokova”. Riječ je o podatkovnim blokovima povezanim u jednosmjerni lanac u kojem svaka karika tj. blok ovisi o vrijednosti prethodne karike. Na slici ispod grafički je prikazan lanac blokova.
Da bi se osigurale određene razine sigurnosti i privatnosti, povezivanje blokova u lanac temeljeno je na kriptografiji. Primjene blockchaina su široke, a nove se pojavljuju gotovo svakodnevno. Primjerice, blockchain se može koristiit u financijskom sustavu u vidu kriptovaluta, u zdravstvenom sustavu za spremanja medicinskih zapisa i za smanjenje i ubrzavanje administracije. Iako nam ova tehnologija daje veliku razinu pouzdanosti u spremljene podatke, postoje određeni nedostaci koji se mogu iskoristiti. Neki od ovih nedostataka bit će obrađeni u nastavku
Ideja o spremanju informacija kao niza podatkovnih zapisa javila se 1991. godine gdje je grupa istraživača željela spremiti digitalne dokumente s vremenskom oznakom (engl. timestamp) kako bi ih ne bi bilo moguće antidatirati (engl. backdate) ili ih izmijeniti.
Blockchain je distribuirani dnevnik (engl. distributed ledger) koji je dostupan svima u mreži. Blokovi u dnevniku imaju vrlo važno svojstvo. Jednom kada su podaci zapisani u blockchain teško ih je izmijeniti. Kao što je vidljivo na slici ispod, svaki blok sastoji se od tri dijela: podataka, sažetka podataka (eng. hash) te sažetka prethodnog bloka.
Primjerice podaci kod Bitcoina su detalji o transakciji (pošiljatelj, primatelj i iznos). Sažetak možemo usporediti s otiskom prsta. Jedinstven je za svaki blok te pomoću njega možemo razlikovati blokove. Sažetak svakog bloka izračunava se prilikom njegovog stvaranja na temelju podataka koji se nalaze u njemu. Promjena podataka unutar bloka zahtjeva promjenu sažetka. Iz ovog se jasno vidi kako su sažeci vrlo korisni ako želimo detektirati promjenu podataka unutar bloka. Ako se sažetak bloka promijeni to više nije isti blok. Treći element je sažetak prethodnog bloka. On omogućava stvaranje lanca blokova jer pomoću sažetka prethodnog bloka možemo jedinstveno odrediti blok koji prethodi u lancu. Prvi blok u lancu nema svog prethodnika te se on naziva genesis block. Opisana struktura lanca vidljiva je na slici ispod.
Ako dođe do promjene podataka unutar bloka, mijenja mu se i sažetak. Samim time sljedeći blok u lancu više ne pokazuje na ispravan blok te zbog toga on i svi sljedeći blokovi postaju neispravni. Ipak, sažeci nam ne predstavljaju savršeni mehanizam detekcije izmjene bloka jer su današnja računala vrlo brza te bi mogla izračunati i promijeniti sažetke svih blokova u lancu te se bi se izmjena mogla sakriti. Kako bi se smanjila mogućnost izmjena blockchain uvodi mehanizam zvan proof-of-work koji usporava stvaranje novih blokova. U slučaju bitcoina potrebno je oko 10 minuta da bi se dodao novi blok u lanac. Ovaj mehanizam znatno otežava izmjenu blokova jer bi se kod izmjene jednog bloka morali izmijeniti svi sljedeći blokovi u lancu što je zbog proof-of-work mehanizma zahtjeva puno vremena.
Uz sažetke i proof-of-work mehanizam, blockchain povećava sigurnost činjenicom da je distribuiran. Umjesto da se koristi središnji entitet koji upravlja lancem, blockchain koristi peer-to-peer mrežu kojoj se svatko može pridružiti. Prilikom pridruživanja svaki član dobiva cijelu kopiju lanca. Kod stvaranja novog bloka isti se šalje svim čvorovima u mreži. Svaki čvor ga zatim validira kako bi bio siguran da blok nije izmijenjen. Ako je provjera uspješna, svaki čvor dodaje blok u vlastitu kopiju lanca. Čvorovi u mreži postižu konsenzus o tome je li blok valjan te hoće li ga dodati u lanac.
Dakle, u teoriji se može izmijeniti blockchain tako da se izmjene svi blokovi u lancu, odradi proof-of-work za svaki blok i preuzme kontrola na više od 50% mreže. Samo tako bi se mogao izmijeniti lanac.
Jedna od novijih mogućnosti blockchaina jesu pametni ugovori (engl. smart contracts). Pametni ugovori su jednostavni programi koji su spremljeni na blockchainu te mogu na temelju određenih uvjeta automatski razmjenjivati kriptovalute i druga dobra poput nekretnina, osiguranja, vlasničkih udjela itd. Kada se ti uvjeti ispune, stavke navedene u ugovoru se ispunjavaju gotovo trenutačno i to bez potrebe za uključivanjem treće stranke.
U slučajevima istrage računalnog kriminala (engl. cyber crime) digitalni dokazi imaju vrlo važnu ulogu. Oni omogućuju da povežemo osobu s kriminalnim radnjama. Od velike važnosti je mogućnost garancije integriteta, autentičnosti i provjerljivost digitalnog dokaza tijekom cijele istrage. Blockchainovo svojstvo cjelovitog prikaza transakcija (zapisa) sve do izvora daje veliku razinu povjerenja. Korištenje blockchaina u forenzici ima višestruke prednosti. Poboljšava efikasnost transakcijama zbog povećanja povjerenja u ostale sudionike, uvelike smanjuje mogućnost prevare i manipulacije transakcijama te smanjuje trošak spremanja jer više nije potrebna treća strana koja validira transakcije.
Rješenja bazirana na blockchainu mogu se iskoristiti za održavanje i praćenje pohrane digitalnih dokaza. Blockchain je struktura podataka koja nam omogućuje stvaranje digitalnog dnevnika zapisa i pohranu transakcija (događaja, zapisa) koja je distribuirana među svim sudionicima u mreži. Kriptografijom se štiti proces zapisivanja i pohrane zapisa, odnosno kako bi se povećala sigurnost izračunava se sažetak digitalnog dokaza i sprema se na blockchain preko pametnog ugovora. Ostali detalji kao što su lokacija, vrijeme i datum o mjestu zločina također se zapisuju na blockchain. Tijekom istrage svaki prijenos dokaza automatski se zapisuje na blockchain pomoću pametnog ugovora, bilježeći podatke kao što su adresa i podaci tko preuzima dokaz, trenutno stanje dokaza, dozvole pristupa, vrijeme i datum i sl. Također, svaki pristup digitalnom dokazu također se zapisuje na blockchain pomoću pametnog ugovora potaknutog od strane forenzičara koji dokaz koristi.
Dizajn blockchaina je temeljen na pretpostavci da „pošteni“ čvorovi sa većinskom računalnom snagom upravljaju mrežom. Iako je sama ideja blockchaina decentralizirana i ova tehnologija je podložna Napadu 51% (eng. 51% attack). Ovaj napad ima za cilj da napadačevi čvorovi postignu preko 50% ukupne računalne snage u mreži te time dobe i kontrolu nad mrežom. Primjerice, istraživanja na kriptovaluti bitcoin (2011.-2014.) pokazala su da zbog stvaranja sve većih udruženja rudara (eng. Mining pools) raste faktor centralizacije, a time i mogućnost napada 51%. Također, DDoS (Distributed Denial of Service) napadi često ciljaju rudarska udruženja i mjenjačnice kriptovaluta. Brine činjenica da većina njih udruženja nema zaštitu od ovakvog tipa napada.
Da bi se spojilo i dobio pristup blockchainu, korisnik mora proći proces autentifikacije korištenjem kombinacije svojeg privatnog ključa (eng. Private key) i javnog ključa (eng. Public key). Ovi ključevi rade na principu korisničkog imena i zaporke, ali se razlikuju u strukturi. Sastavljeni su od kriptičkih nizova brojeva i znakova dovoljne duljine da bi se vjerojatnost njihovog pogađanja od strane ljudi, a i računala, svela na vrijednosti približne nuli. Kombinacija privatnog i javnog ključa je snaga blockchaina zato što bez valjane kombinacije ta 2 ključa haker ne može pristupiti podacima, no ujedno to je i njegova mana jer su hakeru potrebne samo te 2 informacije.
Krajnja točka blockchaina je točka u kojoj se sastaju ljudi i blockchain. Odnosno, krajnja točka je računalo ili pametni telefon korišten od strane pojedinca (ili organizacije) prilikom pristupanja blockchain servisima. Činjenica da se na tom mjestu predstavljaju akreditacije korisnika, ovu točku označava kao najranjiviju i samim time najzanimljiviju kada se govori o sigurnosti blockchaina. Kako bi došli do ključeva, hakeri koriste mnoge malware programe, Trojan viruse, keyloggere i ostale maliciozne programe. Nekolicina autentifikacijskih incidenata prijavljeno je tijekom zadnjih nekoliko godina. Jedan od poznatijih slučajeva je onaj mjenjačnice Mt. Gox gdje su hakeri ukrali podatke o privatnim ključevima i napravili štetu od preko 450 milijuna dolara.
Sama blockchain tehnologija predstavlja relativno visoku razinu sigurnosti uz određene limitacije i slabosti, ali slabosti pametnih ugovora koji se nalaze na blockchainu su mnogo više izražene. Do ranjivosti pametnih ugovora dolazi uglavnom zbog propusta u kodovima kojima su pisani, a ponekad i sami kreatori pametnih ugovora neke dijelovi koda namjerno ostavljaju ranjivima kako bih ih kasnije iskoristili za vlastitu dobit. Zbog sve veće raširenosti kriptovaluta i blockchaina općenito, hakerima se sve više isplati ulagati vrijeme i resurse u traženje propusta i ranjivosti pametnih ugovora. Primjerice, u lipnju 2016. godine zbog pronađene greške u kodu pametnog ugovora, anonimni hakeri ukrali su gotovo 48 milijuna eura.
Velik razlog za zabrinutost pametnim ugovorima je i činjenica da običan korisnik teško može analizirati i provjeriti nalaze li se u kodu ugovora sakriveni dijelovi koda koji bi mu mogli nanijeti štetu. Također, problem predstavlja i činjenica da se pametni ugovor ne može mijenjati nakon njegove implementacije na blockchainu što je veoma nezgodno ako implementirana verzija ugovora sadrži greške u kodu. Nadalje, ako adresa na koju se žele prebaciti sredstva ne postoji ili nije potpuna, ona se naziva „siroče“ (eng. Orphan address) i sva sredstva koja se šalju na nju trajno se gube. Ne postoje mehanizmi kojim bi se provjerilo je li adresa siroče ili ne.
Provedena statička analiza koda pametnih ugovora jednog istraživanja pokazala je da je čak 3.5% ugovora imalo neku vrstu greške u kodu. Takvi ugovori mogu se podijeliti u tri kategorije:
Da bi se smanjili rizici prilikom pisanja i korištenja pametnih ugovora potrebno je pratiti standarde koje je propisao Etherium Foundation, koristiti provjerene programske jezike za pisanje pametnih ugovora kao što je solidity i pratiti najnovija saznanja o napadima, ranjivostima i greškama u kodovima pametnih ugovora.
Blockchain je još uvijek relativno nova tehnologija. Donosi mnogo prednosti i potencijalno može unaprijediti mnoge aspekte naših života. Međutim, trebat će još mnogo vremena da bi blockchain u potpunosti zaživio i da bi sve njegove aplikacije postale pouzdne. Pametni ugovori predstavljaju se kao izuzetno siguran način jednostavnog i brzog prijenosa sredstava između 2 korisnika, no istina je da velik broj pametnih ugovora sadrži određene propuste (slučajne ili namjerne) u kodu koji bi se mogli iskoristiti na štetu korisnika. Pozitivna stvar je ta da se blockchain konstantno unaprjeđuje, a pametni ugovori i ostale aplikacije postaju sve standardiziranije, a time i sigurnije.