Stvaranje web mehanizma za provjeru autentičnosti na Blockchainu

Živimo u eri praktičnosti i sve što može smanjiti vrijeme potrebno za obavljanje jednostavnih zadataka prihvaća se raširenih ruku.

Jedan od najrelevantnijih primjera u internetskom svijetu dolazi iz područja autentifikacije korisnika. Prije smo morali čuvati zbirku svojih korisničkih ID-ova i lozinki, sada se možemo brzo i jednostavno prijaviti putem Facebooka, Googlea i čitavog niza drugih usluga.

No je li to pametno i postoje li bolje alternative?

U ovom ćemo postu pogledati trenutno stanje provjere autentičnosti korisnika kao i neke zanimljive alternative koje su sada dostupne zahvaljujući blockchain tehnologiji.

Problemi sa statusom quo

Ako želite razviti ograničeno područje za korisnike na svojoj web stranici, morate odabrati želite li razviti vlastiti jedinstveni sustav identifikacije, autentifikacije i autorizacije korisnika ili upotrijebiti gotovo rješenje.

To gotovo rješenje pretpostavlja da korisnik već ima račun na nekoj platformi (Facebook, Yahoo, Google, Outlook ili čak samo e-poštu). U tom slučaju jednostavno koristite odgovarajući mehanizam (najčešće OAuth 2.0 protokol) kako bismo provjerili je li netko tko se pokušava prijaviti na vaše mjesto pomoću vanjskog korisničkog ID-a taj isti korisnik.

Mogućnosti društvene prijave

Brojne mogućnosti prijave na društveni račun. Izvor: NPM

Ovu je opciju lakše implementirati, ali postoji rizik za korisnika. Ako se nešto dogodi s njegovim glavnim računom (na primjer, Facebook ga blokira bez razloga), također će izgubiti pristup svojim podacima na vašoj web lokaciji.

Štoviše, ako se kao korisnik želim prijaviti na web mjesto u koje još nemam povjerenja, suočen sam s potrebom da ovom mjestu dam pristup svojim osobnim podacima. To uključuje privatne podatke kao što su moje ime, e-mail ili dob. Ako web lokacija podržava samo prijavu s vanjskim računom, zaista sam suočena s prilično teškim izborom.

Ili odbijam koristiti web mjesto ili žrtvujem svoju privatnost.

Većina korisnika na kraju žrtvuje svoju privatnost i anonimnost misleći “Ništa se loše ne može dogoditi, nemam što skrivati.” Nažalost, većina napada usmjerenih na nepripremljenog korisnika koji završavaju novčanim gubicima započinju riječima poput:

“Što se može dogoditi ako ovaj SMS kôd pošaljem zaposleniku banke?” ili “Je li stvarno toliko loše slati ova zaglavlja zahtjeva zaposleniku tehničke podrške?”


Odgovor na takva pitanja obično se nauči kad je prekasno.

Kako Ethereum može pomoći

Već smo shvatili da postoje tri glavna problema:

  • Korisnik nije dužan vjerovati web mjestu koje posjećuje i želi izbjeći curenje svojih osobnih podataka
  • Web stranica želi koristiti vanjski sustav provjere autentičnosti kako bi izbjegla pohranu korisničkih podataka i povezane sigurnosne troškove
  • Postojeći vanjski sustavi koji web mjestima omogućuju autentifikaciju korisnika nose opasnost od cenzure. Bilo koji račun može se blokirati u bilo kojem trenutku bez objašnjavanja razloga za to, a često i bez mogućnosti oporavka

Međutim, bismo li mogli koristiti sigurnu i decentraliziranu mrežu kao što je Ethereum kako bismo pomogli ovoj vrsti provjere autentičnosti.

Ipak je to kriptografski siguran ključ u kojem javni ključ predstavlja adresu novčanika, a privatni se ključ nikada ne prenosi mrežom. Štoviše, poznat je samo njegovom vlasniku i moguće je koristiti asimetričnu enkripciju za autentifikaciju korisnika.

U najjednostavnijem slučaju adresu Ethereum novčanika možemo koristiti kao korisnički ID. Međutim, ako korisnik izgubi pristup svom ključu, tada će i zauvijek izgubiti pristup sustavu.

Slično tome, ako je vaš ključ na neki način ugrožen i haker ga se može dokopati, tada više ne možete koristiti isti ključ za provjeru vlasništva. Haker bi se mogao samo maskirati kao sebe na svim web mjestima za koja ste se prijavili.

Implementacija EtherAuth-a

Bio je zanimljiv prijedlog koji je predstavio MixBytes tim na jednom od najnovijih Ethereum hackathona. Ovo je bilo njihovo EtherAuth pametni ugovor motor.

EtherAuth je pokušaj izrade decentraliziranog protokola za prijavu i provjeru autentičnosti web mjesta. Analogno je gumbu “Prijavi se putem Facebooka” na koji ste se vjerojatno navikli. Riječ je o pametnom ugovoru koji će pohraniti korisničke ID-ove i pripadajuće adrese novčanika

Moskovski Hackathon Mixbytes

Članovi Mixbytes tima na moskovskom Hackathonu. Izvor slike: Bankex

Korisnički ID je jednostavno UTF-8 niz veličine od 2 do 32 bajta. Korisnik ga sam stvara na početku novčanika i kasnije će ga koristiti za ulazak na bilo koju web stranicu koja podržava EtherAuth.

Također bi bilo moguće dodati ograničenje na moguće znakove uključene u niz. Mogli bismo ga ograničiti na latinične znakove i arapske brojeve (podskupovi 7-bitnog ASCII kodiranja) kako bismo ograničili mogućnost stvaranja vizualno sličnih ID-ova.

Prilikom stvaranja računa s EtherAuth stvara se par ključeva. Stvorit ćete autorizacijski ključ (authAddr) i ključ za vraćanje pristupa (recoveryKey). Naziv “recoveryKey” možda nije najbolji jer se ova adresa koristi za upravljanje računom, a ne samo za oporavak.

Kad se kreiraju, obje su adrese jednake adresi novčanika koji je prvi izvršio transakciju. Korisnici koji brinu o svojoj sigurnosti trebali bi stvoriti zasebni glavni ključ i pohraniti ga na mjestu na kojem nije moguće pristupiti mreži.

To je možda najsigurnije pohraniti na papir u hladnjači. Pohrana papira oslanja se na ono što se naziva sjemenkom za oporabu. Sjeme za oporavak skup je 12 mnemoničkih riječi koje kad se koriste mogu ponovno stvoriti parove ključeva za vaš novčanik.

Ako ćete za provjeru autentičnosti koristiti novčanik, preporučuje se i da koristite zasebnu adresu od one koja čuva sav vaš Ether. To vam omogućuje da izbjegnete hakerima da pronađu vaš Authkey u novčaniku sa svojom imovinom. Za sada ne možete stvoriti zasebni authKey i recoveryKey prilikom izrade računa. To je nešto što bi se moglo ažurirati u kasnijim inačicama pametnog ugovora. Ako ste se željeli dodatno zaštititi, razmislite VPN usluge.

Korištenje EtherAuth-a

Postoji namjenska web stranica namijenjena interakciji korisnika s pametnim ugovorom. Tamo možete stvoriti račun, promijeniti ključeve ili ga izbrisati. Da bi radio s njim, korisnik će morati instalirati poznati dodatak za preglednik nazvan MetaMask.

Naravno, ako ste već prilično zagriženi korisnik mreže Ethereum, tada ćete već koristiti MetaMask i vjerojatno ćete imati ideju o tome kako on komunicira s mrežom.

Cjelokupni postupak provjere autentičnosti korisnika pomoću EtherAuth-a izgleda ovako:

  • Web stranica (pozadina) kontaktira pametni ugovor i prima korisnikovu Ethereum adresu
  • Web stranica (pozadina) generira i snima poruku i traži od korisnika da je potpiše pomoću adrese authKey
  • Korisnik koji je na web mjestu (frontend) potpisuje poruku pomoću dodatka MetaMask i šalje je na pozadinu
  • Web lokacija (pozadina) provjerava potpis i ako je sve u redu, aktivira sesiju korisnika

Važno je da se provjere provjere autentičnosti odvijaju u nekontroliranom okruženju. Drugim riječima, sve provjere trebale bi se izvršiti na poslužitelju, umjesto na korisnikovom pregledniku.

Među problemima s kojima se možete susresti je provjera potpisa u prednjem dijelu. Ne podržavaju svi preglednici eliptične krivulje. To se može riješiti dodavanjem funkcije pametnom ugovoru koja vraća “Ecrecover” rezultat poruke.

Jedinstveni mrežni identitet

Slika putem Fotolia

Kao rezultat toga, imate održiv koncept decentraliziranog sustava provjere autentičnosti koji se temelji na Ethereumu i koristi se na dodatku MetaMask. Ovaj sustav još uvijek treba nekoliko izmjena kako bi mogao pružiti anonimnost korisnika. Korisnik ima priliku vratiti pristup u slučaju gubitka primarnog ključa (ali ne u slučaju gubitka ključa za oporavak).

Decentralizirani sustav nije podložan cenzuri velikih entiteta, poput Googlea ili Facebooka. Ako je potrebno nešto cenzurirati, svaka web stranica to bi trebala implementirati neovisno. Ipak, to bi utjecalo samo na interakciju korisnika s tom web lokacijom, a ne i na bilo koju drugu.

Mreža Ethereum trenutno ima prilično male brzine transakcija (prilikom izrade računa korisnik će možda morati pričekati nekoliko minuta), ali web stranice mogu prilično brzo dobiti podatke i provjeriti korisnike.

Ovo rješenje dobro se skalira, jer postoji mnogo podatkovnih čvorova, a svatko može dodati novi u bilo kojem trenutku. Složenost primjene takvog rješenja za vlasnike web mjesta nije veća od složenosti primjene OAuth 2.0.

Zaključak

Važno je napomenuti da je ovo još uvijek u ranoj fazi projekta i da je tek nedavno predložen na hackathonu.

Štoviše, stope usvajanja za Ethereum i kriptovalute općenito i dalje su samo dio onih koji koriste Facebook i Google. Proći će neko vrijeme prije nego što će se ljudi osjećati ugodnije koristeći Ether adresu od svog Facebook računa.

Međutim, stope usvajanja kriptografije doista rastu, a nedavni skandali s podacima na Facebooku pomogli su otuđiti velik broj ljudi. Bit će zanimljivo vidjeti može li decentralizirana provjera autentičnosti biti održiva alternativa.

Istaknuta slika putem Fotolia

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me