Dvo faktorska autentifikacija

Izvor: SIS Wiki
Skoči na: orijentacija, traži
Temu rezervirali


Sadržaj

Što je autentifikacija?

Autentifikacija je proces kojim se određuje identitet nekog subjekta, najčešće fizičke osobe. U praksi se to svodi na to da osoba daje određene podatke po kojima bi druga strana trebala moći utvrditi da je ta osoba upravo ona za koju se predstavlja. Najčešći primjeri s kojima se svi susrećemo su korištenje bankomata te prijava na neku stranicu. Naime, da bismo koristili bankomat moramo imati vlastitu karticu i pripadajući pin, a za prijavu na neku stranicu koristimo korisničko ime i pripadajuću zaporku. Da bi proces autentifikacije bio upotrebljiv treba zadovoljavati nekoliko zahtjeva: visoka razina sigurnosti, praktičnost, financijska isplativost i jednostavnost upravljanja. (Srnec Marko)

Podjela

Što je dvo faktorska autentifikacija?

Dvo-faktorska autentifikacija (eng. 2FA) je nadogradnja osnovne autentifikacije, gdje koristimo samo jednu razinu autentifikacije kao što je unos korisničkog imena i lozinka. Dodavanjem još jedne razine autentifikacije dolazimo do dvo-faktorske autentifikacije. Naime, ona zahtjeva da koristimo barem dva od tri načina identifikacije čime se postiže veći stupanj sigurnosti podataka i manja mogućnost hakiranja istih.

Ta tri načina možemo podijeliti na

Sigurnost se temelji na tome što napadač ukoliko želi uspješno izvršiti napad mora posjedovati sve uključene faktore (faktor znanja, faktor posjedovanja i faktor pripadanja). Naime, ukoliko se napadač pokuša autentificirati samo s jednim način, dvo faktorska autentifikacija mu onemogućava daljnji prolazak u sustav i samim time su mu podaci nedostupni. (Srnec Marko)

Faktor znanja

Faktor znanja je najčešće korišten način autentifikacije, čime se podrazumijeva da korisnik treba iskazati znanje o nečemu tajnom kako bi se autentificirao. Lozinka je tajna riječ ili niz znakova koji se koriste za autentifikaciju te se smatra najčešćim mehanizmom autentifikacije. Mnoge se više-faktorske tehnike autentificiranja oslanjaju na lozinkama kao jedan od faktora autentifikacije. Tako postoje kraće lozinke, fraze, pinovi itd. koje je najbolje zapamtiti. Uz lozinke se često javljaju i tajna pitanja za izgubljenu lozinku tipa „Gdje ste rođeni?“ ili „Djevojačko prezime Vaše majke?“ . Takva pitanja i nisu baš najsigurniji način za dobivanje novih lozinka jer se lagano dolazi do odgovora na ista s malo truda i pretraživanja. (Srnec Marko)

Faktor posjedovanja

Faktor posjedovanja se oslanja na tome da korisnik nešto posjeduje kako bi se autentificirao. Sličan način se koristi već stoljećima s ključem i bravom gdje ključ se utjelovljuje kao tajna između jedne brave i tog ključa što se može prikazati kao i faktor posjedovanja kod današnjih načina autentifikacije. Jedan od današnjih primjera je sigurnosni token. Postoje dvije vrste takvih tokena. Jedna je isključeni token gdje se on fizički ne spaja s uređajem nego se na njegovom zaslonu prikazuje ključ. Druga vrsta je uključeni token gdje se on fizički povezuje s uređajem i automatski šalje podatke i dopušta autentifikaciju. (Srnec Marko)

Faktor pripadanja

Faktor pripadanja je faktor autentifikacije gdje se korisnik autentificira tako da se mu provjeri otisak prsta,skeniranje rožnice ili prepoznavanje glasa. (Srnec Marko)

Faktor lokacije

Kao četvrti mogući faktor korisniku se nudi faktor lokacije. Sveprisutnošću pametnih telefona možemo si olakšati autentifikaciju. Korisnici često nose svoje mobilne uređaje svuda sa sobom, pa se tako može omogućiti potvrda o lokaciji za prijavu. (Srnec Marko)

Faktor vremena

Ovaj faktor se koristi u velikim poduzećima gdje se neki zaposlenik može prijaviti u sustav u određenom vremenu. Još jedna primjena jest ta da neke kreditne kartice ne dozvoljavaju korištenje iste na nekom mjestu i na nekom jako udaljenom mjestu u kratkom vremenskom periodu. (Srnec Marko)

Proizvodi za kontrolu pristupa – autentifikatori

Prema tome postoje i određeni proizvodi za kontrolu pristupa računalima, datotekama, korisničkih računa itd. Takvi uređaji nazivaju se autentifikatori i podijeljeni su u nekoliko skupina. (Srnec Marko)

OTP (One Time Password)

Uređaji ili aplikacije koje generiraju dinamičku jednokratnu lozinku za identifikaciju korisnika pri pristupanju aplikacijama i podacima, bilo na tokenu, mobilnom uređaju.(Srnec Marko)

USB tokeni bazirani na certifikatima

Takvi usb-ovi nam pružaju siguran udaljen pristup

Smart kartice bazirane na certifikatima

To je snažna multi faktorska autentifikacija u formi veličine kreditne kartice koja omogućava organizacijama da pokriju sve potrebe za njihovom PKI sigurnošću i kontrolom pristupa

Hibridni tokeni

To su autentifikatori s kombinacijom OTP-a, enkriptiranu flash memoriju ili tehnologiju baziranu na certifikatima na jednom snažnom uređaju za kontrolu pristupa

Mobilna dvo-faktorska autentifikacija

Glavni nedostatak faktora posjedovanja je to što token, kartica, usb uređaj mora biti kod svojeg vlasnika čitavo vrijeme čime se povećava mogućnost krađe i gubitka istih. Mobilno dvo faktorska autentifikacija, gdje mobilni uređaji predstavljaju nešto što imamo, nudi nam drugačiji način za izbjegavanje takvih problema. Naime, za autentifikaciju korisnici mogu koristiti nešto što znaju(lozinka,pin itd.) i dodatnu jednokratnu brojčanu poruku. Ta poruka se šalje korisniku putem SMS-a ili prikazuje putem specijalne aplikacije (npr. Google Authenticator). Prednost ove metode jest u tome da ne moramo nositi još jedan dodatni uređaj za autentifikaciju jer svoj mobilni uređaj već ionako nosimo svugdje sa sobom. Takve specijalne brojčane poruke su jedinstvene za svakog korisnika, ukoliko se ona iskoristi ona postaje nevažeća te se za drugu prijavu šalje nova poruka. Također se može specificirati koliko se krivih poruka može probati iskoristiti prije negoli sustav blokira pristup. (Srnec Marko)

Prednosti
Nedostaci

Google authenticator

Google authenticator je aplikacija koja implementira dvo-faktorsku autentifikaciju pomoću Time-based One-time Password algoritma (TOTP) i HMAC-based One-time Password algoritma(HOTP) za autentifikaciju korisnika mobilnih aplikacija od strane Googla. Ovaj servis implementira algoritme specificirane u RFC 6238 i RFC 4226.

Vlasnik Google
Datum izlaska 20.09.2010.
Operacijski sustavi Android, iOS, BlackBerry OS

Ova aplikacija nam zapravo zamjenjuje potrebu autentificiranja putem teksta, poziva ili emaila. Kako bismo pristupili web stranici ili servisu koji podržava Google Authenticator, korisnik upisuje svoje korisničko ime i lozinku(faktor znanja). Nakon toga od korisnika se zahtjeva da unese 6-8 brojčanih znakova. Umjesto da korisnik mora čekati nekoliko sekundi,minuta kako bi primio sms poruku, aplikacija generira tu zaporku istovremeno. Taj zapis se mijenja svakih 30 sekundi i različit je za svaku prijavu. Ispravnim unosom brojeva korisnik je uspješno prijavljen u sustav i završeno je njegovo dvo faktorsko autentificiranje. (Srnec Marko)

Postavljanje 2FA na Google-ovim servisima preko aplikacije Google authenticator

Ukoliko želimo koristiti dvo-faktorsku autentifikaciju na Google-ovim servisima tipa (Gmail,Google Drive...), potrebno je preuzeti aplikaciju, postaviti sms/glasovni poziv postavke i postaviti postavke aplikacije. Nakon što je sve navedeno učinjeno, možemo koristiti 2FA na njihovim servisima. Najjednostavniji način kako se to radi nudi nam sam Google na svojoj web stranici pomoći Google Authenticator suport

Pocetni skrin.png

Kako bi smo uključili 2FA na našim računima, potrebno je provesti instalaciju Google autentifikatora. Na ovoj slici je prikazan početni zaslon priručnika gdje odabiremo za koji mobilni uređaj ćemo preuzeti aplikaciju.

Glavnestavke instalacije.png

Nakon što se odabire uređaj, otvara nam se dodatni zadaci koji se moraju izvršiti kako bi smo uspješno proveli instalaciju. Prva stvar koju trebamo učiniti jest preuzimanje aplikacije sa Google Play-a.

Potvrda2FA.png

Nakon preuzimanja aplikacije, potrebno je dovršiti postavljanje sms/glasovnog poziva te registrirati svoj račun za potvrdu o 2FA pomoću svojeg telefonskog broja. Da bismo to uradili, potrebno je otvoriti stranicu potvrde u 2 koraka kao što nam je prikazano u prvom koraku.

Pocetakzapotvrdu.png

Ovo je slika koja nam prikazuje tu stranicu, kako bi smo započeli sa instalacijom potrebno je pritisnuti na gumb Započnite.

Prvikorak.png

Sljedeći korak je upis vašeg telefonskog broja i odabir načina primanja koda.

Drugikorak.png 15935566 10208235797468310 1914115369 o.png

Nakon toga je potrebno unijeti kod koji smo primili kao SMS i pritisnuti sljedeća.

Treecikorak.png

Nakon što uspješno unesemo u mogućnosti smo uključiti 2FA.

Gotovoskrin.png

Ovo je prikaz stranice s uključenim dodatnim slojem autentifikacije (2FA). Na njoj možemo uređivati postavke, uključiti/isključiti 2FA, postaviti alternativni drugi korak što je u našem slučaju aplikacije Google autentifikator te postaviti uređaje za koje smo sigurno da ne trebaju dodatnu zaštitu.

Odabiraplikacije.png

Nakon što smo pritisnuli na Postavi Google autentifikator moramo odabrati za koju vrstu telefona ćemo instalirati 2FA.


Drugikorakapk.png

15943215 10208235610183628 647957866 o.png 15909372 10208235610063625 608010985 o.png 15943158 10208235927871570 1605070123 o.png

Nakon što smo odabrali vrstu telefona, potrebno je pokrenuti aplikaciju na svojem uređaju i postaviti račun. Druga slika nam prikazuje početni zaslon aplikacije gdje pritišćemo na započni. Zatim nas se pita na koji ćemo način dodati račun pa pritišćemo na skeniraj barkod. Zatim se pokreće kamera i potrebno je sa svojim mobilnim uređajem skenirati bar kod koji se prikazuje na web stranici. Nakon što smo to učinili pritišćemo na Sljedeća gumb na web stranici.

Trecikorakapk.png

15933966 10208235925791518 706920163 o.png Cetvrti korak.png

Nakon skeniranja bar koda na aplikaciji nam se prikazuje kod koji moramo unijeti na stranici. Nakon što uspješno unesemo kod gotova je instalacija i možemo isprobati 2FA pomoću Google autentifikatora.

Primjer

15942654 10208235609703616 2101354022 o.pngUnoskoda2FAgmail.png

Za primjer smo uzeli prijavu na Gmail. Nakon što unesemo svoju email adresu i lozinku moramo unijeti još dodatni kod koji dobivamo preko Google authenticator aplikacije. Ukoliko uspješno unesemo kod prijavljujemo se u Gmail. (Srnec Marko)

Demo aplikacija

Naš zadatak je bio napraviti demo web aplikaciju u kojoj ćemo prikazati na koji način prijavu na stranicu učiniti dvo-faktorskom uz pomoć aplikacije Google Authenticator. Razvojni okvir koji smo koristili pri implementaciji našeg rješenja je ASP.NET a kako bismo logiku stranice razdvojili od prikaza stranice koristili smo uzorak dizajna MVC. Kako je ovo demo aplikacija i kako je naš zadatak bio proširiti postojeću prijavu na sustav tako da bude dvo-faktorska, prijava u sustav koja se obavlja je pomoću Korisničkog imena i Lozinke. Ta prijava u ovoj demo aplikaciji nije implementirana na dobar način kako se to radi u praksi uz pomoć baze podataka ali samo iz jednog razloga, a to je da se što više možemo pozabaviti drugom autentifikacijom u sustav što je bila i tema našeg projekta. (Sabolić Matija)

asp.net

ASP.NET je razvojni okvir otvorenog koda dizajniran za izradu dinamičkih web stranica i aplikacija. Razvijen je od strane Microsofta kako bi se omogućilo programerima lakšu izgradnju dinamičkih web stranica, web aplikacija i web usluga. (Sabolić Matija)

MVC

Model–View–Controller (MVC) je obrazac softverske arhitekture. Koristi se u softverskom inženjeringu za odvajanje pojedinih dijelova aplikacije u komponente ovisno o njihovoj namjeni. Model se sastoji od podataka, poslovnih pravila, logike, i funkcija ugrađenih u programsku logiku (business logic). View odnosno pogled je bilo kakav prikaz podataka kao što je obrazac, tablica ili dijagram. Moguć je prikaz podataka kroz više različitih pogleda. Controller ili upravitelj prihvaća ulazne naputke (input) i pretvara ih u naloge modelu ili pogledu. Ovakva arhitektura olakšava nezavisan razvoj, testiranje i održavanje određene aplikacije. (Sabolić Matija)

Opis aplikacije

Naša demo aplikacija je jednostavan prikaz dvo-faktorske autentifikacije. Ona radi tako da korisnik prvo unosi korisničko ime i lozinku te ukoliko prođe prvu autentifikaciju prikazuje mu se QRkod kojega mora skenirati pomoću mobilne aplikacije Google Authenticator te na stranici unijeti kod kojega je dobio putem mobilne aplikacije. Ukoliko unese pogrešan kod preusmjerava ga se nazad na prvu prijavu putem korisničkog imena i lozinke. U slučaju da korisnik unese odgovarajući kod on je prošao dvo-faktorsku autentifikaciju i preusmjerava ga se na profilnu stranicu. Na profilnoj stranici postoji gumb logout koji radi odjavu iz sustava te korisnika preusmjerava nazad na prijavu.

GitHub projekta: https://github.com/MatijaSabo/2FA-GoogleAuthenticator (Sabolić Matija)

Model

App model.png

Naš model koje ga koristimo u aplikaciji je jako jednostavan i on sadrži samo korisničko ime i lozinku koji su potrebni kod prijave. (Sabolić Matija)

View

Naša aplikacija se sastoji od dva pogleda i to jedan koji predstavlja login, a drugi koji predstavlja profilnu stranicu. U nastavku će oni biti detaljno opisani. (Sabolić Matija)

Login View

Screenshot 4.png Screenshot 5.png Screenshot 1.png

Na prvoj slici je vidljivo kako je dizajnirana login forma. Kako je vidljivo iz priloženog koda na ta forma se prikazuje ukoliko nije postavljen status ili ako je taj status postavljen na false. Taj status nam služi kako bi mogli kontrolirati kada je korisnik prošao prvu prijavu putem korisničkog imena i lozinke. Na drugoj slici je vidljiva poruka o neuspješnoj prijavi u sustav. Kako je iz priloženog koda vidljivo ukoliko se na view pošalje FailLogin varijabla to je znak da prijava nije uspjela te se korisniku prikazuje poruka greške. (Sabolić Matija)

Screenshot 6.png LoginView2.png

Ukoliko status nije postavljen ili je postavljen na true, to je znak da je korisnik uspješno prošao prvu prijavu te mu se prikazuje QRkod koji mora poslikati sa svojom mobilnom aplikacijom kako bi dobio kod koji tada upisuje u formu koja se nalazi ispod QRkod-a i taj kod on šalje post metodom u controller funkciju Verify2FA() na provjeru ispravnosti. (Sabolić Matija)

ProfilePage View

Screenshot 7.png Screenshot 8.png ViewProfile.png

Nakon što se uspješno prođe dvo-faktorska autentifikacija korisniku se prikazuje stranica koja je vidljiva na prve dvije slike. Vidljivo je da se dobiva pozdravna poruka, te stranica sadrži dva poglavlja teksta o dvo-faktorskoj autentifikaciji. Nakon tog teksta postoji i gumb logout koji radi odjavu iz sustava. Kako je vidljivo iz priloženog koda nakon pritiska gumba post metodom se poziva Logout funkcija u controlleru. (Sabolić Matija)

Controler

HomeController.png

Na prethodnoj slici je vidljiva struktura našeg controllera kojega smo koristili u aplikaciji. Vidljivo je da postoje dvije funkcije login, jedna se pri pozivanju stranice login, a druga se koristi prilikom primanja podataka koje smo unijeli u login formu. Također postoje i funkcije Verify2FA koja nam služi za verifikaciju unesenog koda iz mobilne aplikacije, funkcija ProfilePage koja služi za prikazivanje profilne stranice te funkcija Logout koja radi logout korisnika iz sustava. (Sabolić Matija)

HomeController - Login.png

Na prethodnoj slici je vidljiv kod prve Login funkcije i on samo vraća LoginView te pošto nije postavljen status prikazuje se na pogledu prikazuje prva login forma. (Sabolić Matija)

HomeController - Login2.png

Na prethodnoj slici je vidljiv kod druge Login funkcije koja se izvršava nakon što korisnik unese korisničko ime i lozinka. U ovoj funkciji provjerava se da li su korisničko ime i lozinka dobri ili nisu. Pošto se radi o demo aplikaciji nismo radili bazu podataka korisnika nego smo o kodu samo provjerili korisničko ime i lozinku. U slučaju da korisnik prođe prvu autentifikaciju u status se stavlja na true kako bi se korisniku prikazala druga autentifikacija te se u sesiju sprema korisničko ime. Nakon toga se pomoću google-ove funkcije generira QRkod s parametrima. Prvi parametar je naslov koji će se prikazivati na mobilnoj aplikaciji kao ime aplikacije. Drugi parametar je podnaslov koji će se prikazivati na mobilnoj aplikaciji kako bi se znalo s kojim računom se korisnik prijavio. Treći parametar je tajni ključ za generiranje koda. Taj ključ mora biti jedinstven za svakog korisnika aplikacije, ali pošto smo mi radili demo aplikaciju taj ključ je isti uvijek. Četvrti i peti parametri su veličina QRkoda. Nakon što se generira QRkod sa zadanim parametrima on se je spreman za prikazivanje na stranici i on se šalje na LoginView. Ukoliko korisnik nije prošao prvu autentifikaciju status ostaje na false te se na pogled dodaje poruka greške i LoginFail varijabla se stavlja na true. Nakon svega poziva se LoginView sa zadanim varijablama. (Sabolić Matija)

HomeController - Verify2FA.png

Na prethodnoj slici je vidljiv kod funkcije Verify2FA koja se poziva kada korisnik unese kod kojega je dobio preko mobilne aplikacije. Taj kod koji smo dobili spremamo u varijablu. Nakon toga pozivamo funkciju koja radi provjeru koda a koja za parametre ima taj uneseni kod i ključ koji smo koristili i kod kreiranja QRkoda. Ukoliko je uneseni kod točan funkcija vraća true i tada se u sesiju sprema varijabla isValid2FA s vrijednosti true. Nakon toga korisnika se preusmjerava na funkciju ProfilePage. Ukoliko uneseni kod nije ispravan korisnika se preusmjerava na prvu Login funkciju. (Sabolić Matija)

HomeController - ProfilePage.png

Na prethodnoj slici je vidljiv kod funkcije ProfilePage. U njoj se na početku provjerava da li su postavljene u sesiju varijable username i isValid2FA, te da li varijabla isValid2FA postavljena na false. Ukoliko je jedan uvjet od ova tri istinit korisnika se preusmjerava na prvu Login funkciju. Ukoliko su sva tri uvjeta lažna u varijablu message se postavlja korisničko ime koje je zapisano u sesiji kako bi se moglo prikazati na profilnoj stranici. Nakon toga korisniku se prikazuje ProfilePageView sa svim zadanim varijablama. (Sabolić Matija)

HomeController - Logout.png

Na prethodnoj slici je vidljiv kod funkcije Logout koja se poziva kada korisnik na ProfilePage stranici klikne na gumb logout. U tom slučaju iz sesije se briše korisničko ime i varijabla isValid2FA se stavlja na false. Nakon toga se korisnika preusmjerava na prvu Login funkciju. (Sabolić Matija)

Literatura

  1. http://www.asys.rs/data/pages/pdf/KP/SafeNet_Authentication_Brosura.pdf dostupno 06.01.2017
  2. https://en.wikipedia.org/wiki/Multi-factor_authentication#Types_of_Two-factor_Authentication dostupno 06.01.2017
  3. http://searchsecurity.techtarget.com/definition/two-factor-authentication dostupno 06.01.2017
  4. https://support.google.com/accounts/answer/1066447?hl=hr dostupno 06.01.2017
  5. http://www.techrepublic.com/blog/google-in-the-enterprise/use-google-authenticator-to-securely-login-to-non-google-sites/ dostupno 06.01.2017
  6. https://en.wikipedia.org/wiki/ASP.NET dostupno 06.01.2017
  7. https://hr.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller dostupno 06.01.2017
Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima