Ethereum omrežje je v ekosistem tehnologij veriženja blokov vneslo izvršljive programske kode. Z možnostjo uporabe izvršljivih pametnih pogodb so decentralizirane aplikacije (DAPPs) dosegle končne uporabnike. Kot pri vsakem pisanju izvršljive programske kode, je tudi pri pametnih pogodbah pomembna informacijska varnost. Področje je še relativno mlado; Ethereum omrežje in pametne pogodbe so v javno uporabo prišli leta 2015. Od takrat sta se Ethereum omrežje in programski jezik za pisanje pametnih pogodb, Solidity, hitro razvijala, vendar ekstenzivne smernice za varen razvoj pametnih pogodb ne obstajajo. To je razlog za raziskovanje področja varnosti pametnih pogodb v tem delu.
V delu je vključen pregled tehnologije blokovnih verig kot osnova za izpeljavo sklepov o varnosti pametnih pogodb, ki jih je treba upoštevati pri programiranju pametnih pogodb. Tipi omrežij veriženja blokov, elementi teh omrežij in njihove interakcije so analizirani tako, da podajo dodatno ozadje v delovanje tehnologije veriženja blokov. Razumevanje postopka izvedbe transakcij, prezentacije računov, izvršljive logike vključene v blokih in kako se izvaja komunikacija med različnimi omrežji veriženja blokov, so nujne za razumevanje delovanja pametnih pogodb.
Varnost decentraliziranih aplikacij je razdeljena na varnost omrežij veriženja blokov, varnosti nadzora nad omrežjem veriženja blokov, varnosti pametnih pogodb in varnosti interakcije z decentraliziranimi aplikacijami. Varnost omrežja veriženja blokov je analizirana s pomočjo primerjave razmerja med integriteto podatkov shranjenih v blokih in hitrostjo transakcij ter z analizo tega, kako lahko konsenzni algoritem omrežja veriženja blokov vpliva na varnost podatkov, ki se pretakajo po njem. Kritična varna masa vozlišč je razložena skupaj z razlago njenega vpliva na varnost omrežja.
Varnost pametnih pogodb je večslojen termin. Postopek izvedbe pametnih pogodb je podrobno razložen skupaj s postopki standardizacije razvijanja pametnih pogodb, ki se pojavljajo. Napadi ničte ure in uporaba tujih delčkov programske kode so razloženi v povezavi z varnostjo pametnih pogodb. Klasifikacija šibkosti pametnih pogodb (SWC) je razložena. Varno uvajanje pametnih pogodb, revizija kode in verifikacija kode so podrobno razloženi. Na koncu poglavja je razložen tudi način, kako razvijalci in uporabniki interaktirajo s pametnimi pogodbami prek decentraliziranih aplikacij.
Dobre prakse decentraliziranih aplikacij so orisane s pomočjo CIA triade infomacijske varnosti ter pasivne in aktivne varnosti pametnih pogodb. Rešitve iz več pametnih pogodb, hibridne, blokovne verige – strežniki, arhitekture, atomske menjave ter predvidevanja obremenitve omrežji blokovnih verig in njihovo testiranje so podrobno razloženi v tem poglavju.
Praktični del teze uporabi predhodno analizirane dobre prakse varnosti pametnih pogodb. Te so uporabljene na pametni pogodbi zaledja decentralizirane aplikacije Swether. Swether je električna polnilna rešitev, ki uporablja Ethereum omrežje za svoje zaledje. Stanje rešitve pred tezo je predstavljeno in potrebne varnostne nadgranje so predstavljene. Rešitev je bila zgrajena kot monolitna aplikacija, kar pomeni, da je ena pametna pogodba zagotavljala vso poslovno logiko kot tudi shranjevanje podatkov in nadzor dostopa. Monolitna pametna pogodba je razdeljena v sedem samostojnih modulov, ki so natačno analizirani in načrtovani. Ti moduli so klasificirani v tri skupine: Skupina modulov neodvisnih od platforme, skupina modulov specifičnih za platforme in skupina dodatnih modulov. Moduli neodvisni od platforme so moduli, ki so lahko uporabljeni v kakršnikoli platformi in zagotavljajo nujne storitve za celotno platformo. Ti moduli zagotavljajo nadzor dostopa in storitev razločanja naslovov. V platformi Swether sta to modula Administracija (angl. Administration) in Direktorij pametnih pogodb (angl. Smart contract directory). Administracija vsem pametnim pogodbam v platformi zagotavlja nadzor dostopa in podpira štiri različne nivoje dostopnih pravic. Direktorij pametnih pogodb predstavlja imena naslovov vseh aktivnih pametnih pogodb, povezanih z moduli, ki jim pripadajo. Specifični moduli za platforme zagotavljajo poslovno logiko specifično za platformo, v primeru Swethra je to logika za storitev električnega polnjenja (angl. Charging station directory). Med module specifične za platformo spada tudi Jedrni modul (angl. Core). Ta modul se povezuje z vsemi ostalimi moduli in je edini modul, s katem interaktira končni uporabnik. Za posredovanje klicev ostalim modulom uporablja Direktorij pametnih pogodb, da razreši naslov pametne pogodbe iz imena modula, v katerega posreduje klic. Dodatni moduli zagotavljajo dodano vrednost platformi. Moduli, ki se nahajajo v tej skupini niso nujni za delovanje platforme in so lahko uporabljeni v katerikoli platformi. Dodatni moduli platforme Swether so moduli, ki zagotavljajo nagrajevanje zvestobe (angl. Loyalty), plačevanje storitve s posrednikom (angl. Escrow) in zbiranje zasluženih sredstev (angl. Accumulator). Modul nagrajevanja zvestobe uporablja standardizirane kovance ERC 20 za nagrajevanje uporabnikov za uporabo platforme. Plačevanje storitve s posrednikom omogoča, da uporabnik nakaže plačilo za polnjenje, ki je nakazano ponudniku polnjenja šele, ko je polnjenje opravljeno. Na ta način lahko dvignemo nivo zaupanja uporabnikov storitve polnjenja in ponudnikov polnjenja, saj zagotovimo, da nihče ne izgubi sredstev, le ena izmed strani odstopi od dogovora o polnjenju oziroma plačila. Modul za zbiranje zasluženih sredstev omogoča lastnikom električnih polnilnic, da izberejo, kdaj in kam želijo nakazati sredstva, ki so jih prejeli s ponujanjem polnjenja.
Prehod z ene pametne pogodbe na več pametnih pogodb potrebuje varen način komunikacije med moduli. Tuneliranje med pametnimi pogodbami (angl. Smart Contract Tunnelling -- SCT) je bilo razvito, da zagotavlja varno avtentikacijo in kontrolo dostopa. SCT uporablja module neodvisne od platforme, da verificira pot transakcije kot tudi nadzor dostopa do klicev za izvornega klicatelja transakcije. Jedrni modul uporablja SCT za vzpostavitev tunela z modulom tako, da posreduje klic metode pametni pogodbi ciljnega modula, kjer pridobi njen naslov prek Direktorija pametnih pogodb. Pred izvršitvijo metode ciljni modul preveri, če je izvornemu računu transakcije dovoljen klic metode s pomočjo Administracije. Hkrati ciljni modul izvede preverbo, če je klic posredoval modul, ki mu je dovoljeno posredovanje klica te metode, kar naredi s pomočjo Direktorija pametnih pogodb. Le če obe preverbi vrneta dovoljen klic, potem je metoda izvršena.
Vsak modul je bil zgrajen z upoštevanjem možnosti nadgrajevanja in prenosa informacij. To pomeni, da se, v primeru nadgraditve modula, lahko prenese pravice dostopa iz predhodne verzije in da so vsi ostali moduli obveščeni o nadgradnji. Tako je nadgradnja brezprekinitvena in delovanje platforme nemoteno.
Po uspešni implementaciji varnostne nadgradnje platforme Swether so bile vse pametne pogodbe analizirane z orodjem MythX, ki je orodje za varnostno analizo pametnih pogodb. Orodje je zaznalo 179 kršitev, ki so bile vse namerno vključene. MythX zazna kršitve SWC, ki so sprejemljive v primerih, ko so bile vključene z razumevanjem ranljivosti, ki jih prinašajo.
Na koncu je začrtana pot mogoča za nadaljne nadgradnje platforme Swether, ki predstavi prehod na konzorcijsko omrežje. Slednje vsebuje tudi vključitev atomske zamenjave, dodajanje novih modulov in standardizacijo SCT mehanizma.
|