Connect with us

Pozdrav, koji sadržaj vas zanima?

Web & IT

Radite li “login” za svoju web-stranicu? Razmislite i o alternativama!

Uvod
Funkcionalnost koja će se tražiti u gotovo svakoj internetskoj aplikaciji, prije ili kasnije, bit će ona provjere pristupa. Problem neovlaštenog pristupa nekom računalnom sustavu se rješava kroz postupak identifikacije i autentifikacije korisnika, tzv. postupak prijavljivanja /login/. I koliko god je predmetom kritika, identifikacija korisničkom oznakom /username/ i autentifikacija zaporkom /password/ i dalje je tipičan izbor za samoizvedbu. U ovom ću članku predstaviti nekoliko drugačijih izvedbi autentifikacije koje su moguće i bez dodatne ili složenije infrastrukture.
Autentifikacija je postupak u kojem korisnik dokazuje da je stvarno onaj za kojeg se izdaje (korisnik se izdaje kao netko u postupku identifikacije, tj. upisom svoje korisničke oznake). Korisnik može svoj identitet dokazati na tri načina: znanjem /proof by knowledge/, posjedovanjem /proof by possesion/ ili osobinom /proof by property/. Primjer dokaza posjedovanjem je predočavanje osobne iskaznice na šalteru banke ili mahanje beskontaktnom RF-karticom ispred čitača na vratima, pa i otključavanje automobila pomoću ključa. Primjer dokazivanja osobinom je skeniranje otiska prsta ili mrežnice oka, vlastoručno potpisivanje, uočavanje nekakvog madeža neobičnog oblika na zlikovcu u špijunskom trileru ili jednostavna činjenica da osoba izgledom prilično dobro odgovara svojoj fotografiji na osobnoj iskaznici. U ovim člankom opisanim izvedbama autentifikacije se koristi pristup dokazivanja znanjem. Dokazivanje znanjem se može realizirati izravnom metodom /direct demonstration/ ili metodom izazova i odgovora /challenge-response/.
Izravna metoda autentifikacije jednokratnom zaporkom
Autentifikacija izravnom metodom dokazivanja znanjem je svaka autentifikacija u kojoj korisnik neposredno upisuje neku tajnu informaciju – koja se u tom slučaju naziva zaporkom /password/.
Autentifikacija jednokratnom zaporkom /OTP – one-time password/, kako iz naziva i proizlazi, izvedba je izravne metode autentifikacije u kojoj se prilikom svake prijave koristi druga zaporka. Prednost je ove izvedbe što se onemogućuje korisniku da dugo vremena koristi istu zaporku. Daljnja je prednost što u slučaju da komunikacija bude presretnuta od strane uljeza, uljez se neće moći nastaviti po svojoj volji služiti stečenom zaporkom.
Temeljni problem izvođenja autentifikacije jednokranom zaporkom je problem saopćavanja zaporke korisniku, pošto je posve nemoguće da bi korisnik pamtio toliko podataka. Kako god taj problem bio naslovljen, korisnik mora u svoj posjed zaporku dobiti na posve pouzdan način, dakle na način koji uljez neće moći presresti i tako iskoristiti zaporku prije korisnika.
Autentifikacija izazovom i odgovorom
Autentifikacija izazovom i odgovorm svaka je izvedba autentifikacije u kojoj korisnik i sustav kojem korisnik pristupa dijele nekakav skup tajni. Sustav izaziva korisnika da se autentificira točno određenom tajnom, a korisnik mora tom izazovu odgovoriti sapoćavanjem tražene tajne sustavu, čime dokazuje da je on uistinu taj za kojeg se izdaje.
Dobro poznati primjer ove metode su pitanja i odgovori koji se mogu upisati na nekim web-mjestima i služe za pristup računu u slučaju da korisnik zaboravi zaporku – sustav će slučajno izabrati neko od upisanih pitanja i postaviti ga korisniku, a ovaj mora odgovoriti s uz to pitanje vezanim odgovorom. Ova se metoda također koristi u crtanim filmovima, komedijama ili filmovima o superherojima kada se glavni junak sukobi sa svojim zlim dvojnikom, pa se na vrhuncu radnje mora utvrditi tko je tko, što se redovito postigne postavljanjem pitanja na koje odgovore može znati samo glavni junak (nešto slično, ali suprotno se koristi kada junak mora upozoriti drugu osobu da laže pod prisilom, bez da zlikovac to primjeti, pa namjerno saopćava pogrešnu dijeljenu tajnu). Iako ne služi za autentifikaciju korisnika, poznata CAPTCHA bi se također mogla smatrati svojevrsnim primjerom autentifikacije kroz izazov i odgovor, jer sustav saopćava korisniku informaciju na način koji njen sadržaj ostavlja utajenim od robota – kao sliku čiji sadržaj robot ne može prepoznati – i onda korisnika izaziva da odgovori što mu je saopćeno, čime će korisnik dokazati da nije robot (a sustav pretpostaviti da je onda čovjek).
PasswordCard.org
Obećani prikaz nekoliko zanimljivh izvedbi autentifikacije ću započeti izvedbom jednog pomagala za kreiranje i pamćenje sigurnih zaporki. Pomagalo je namijenjno korisniku koji nema drugog izbora nego autentificirati se uobičajenom višekratno korištenom zaporkom.
Posjetite li web-stranicu ovog nizozemskog programera, passwordcard.org, naći ćete zanimljivi generator matrice koje su elementi slučajno izabrana slova i brojke. Omogućen je lijep ispis matrice u veličini pogodnoj za laminiranje i držanje u novčaniku. Zamisao iza kartice je jednostavna: zaporka se određuje retkom i stupcem na čijem se presjeku nalazi prvi njen znak; odatle se zaporka očitava u proizvoljnoj duljini nekim proizvoljnim smjerom. Retci su označeni brojevima i bojama, a stupci piktogramima, što bi trebalo pojednostavniti pamćenje koordinate zaporke, kao i asociranje različitih zaporki s različitim programima ili web-mjestima. U slučaju krađe kartice, kradljivac neće saznati baš ništa (osim ako niste habanjem nastalim povlačenjem prsta ili kakvog predmeta ostavili tragove na kartici).
Još zanimljivije je uočiti da ako držite da je redosljed (smjer ili obrazac) kojim očitavate zaporku dovoljno tajanstven, onda na poleđinu kartice možete zapisati često posjećivane web-stranice i koordinate njihovih zaporki. U slučaju krađe, kradljivac će znati prvi znak zaporke, ali neće imati nikakvu drugu informaciju, dokle god je vaš izabrani redosljed očitavanja nepredvidljiv. To je slično kao da za zaporku koristite neki crtež – crtež je u ovom slučaju obrazac očitavanja kartice.
Ne možete li upamtiti slučajno izabrane koordinate, bolje nego zapisivanje je da izaberete one simbole i boje koje vas iz nekog razloga podsjećaju na mjesto njihove primjene, dokle god niste previše očigledni.
Uočite da prilikom povremene promjene zaporki (koje se svakako preporučaju) ne trebate mijenjati njihove koordinate, duljinu ili obrazac očitavanja – dovoljno je generirati drugi PasswordCard! Iz tog razloga trud da ipak upamtite koordinate pojedinih zaporki nije bio bačeni trud.
Kao dodatnu mjeru predostrožnosti, zaporku očitanu s PasswordCarda možete kombinirati s nekom uvijek istom osobnom zaporkom koju nećete zaboraviti, a koju ste možda stvorili od početnih slova fraze koja vam nešto znači i još znakove tog fiksnog dijela ili čak cijele očitane zaporke transponirali u maniri leetspeaka, kako biste osigurali i interpunkcijske znakove ako ih sustav zahtijeva.
PasswordCard je vrlo dobro rješenje kojem ne znam pronaći neku zamjerku. Dolazi i u obliku aplikacije za pametne telefone.
Vremenski sinkronizirane jednokratne zaporke
Ponešto očigledna izvedba jednokratnih zaporki bila bi ona u kojoj se koristi vremensko vođenje – svaka zaporka vrijedi neko kratko vrijeme (npr. pola minute ili minutu), nakon čega se generira slijedeća. Po uspješnoj prijavi, sustav prestaje dopuštati novu prijavu dok zaporka s kojom je posljednja prijava obavljena ne istekne. Problem sigurnog saopćavanja zaporke korisniku se obično rješava korištenjem elektroničkog uređaja u posjedu korisnika koji na pritisak gumba generira i prikazuje tekuću zaporku. Uređaj sadrži tajni ključ koji se koristi zajedno s trenutnim vremenom da se generira zaporka koju neće biti moguće predvidjeti poznavanjem prethodno generiranih zaporki. Takav se uređaj zove sigurnosni token /security token/ i posjeduje ga većina korisnika online-bankarstva (kod domaćih je banaka, čini se, uvriježen naziv „identifikacijski token“). Token mora, naravno, biti predan iz ruke u ruku, na siguran način, kako ne bi prošao kroz ruke uljeza. Vrlo veliki problem bi nastupio kada bi se uljezi domogli nekakve baze podataka koja povezuje serijske brojeve tokena s tajnim ključevima kojima su inicijalizirani – stoga nije loša ideja i serijski broj svog tokena štititi kao tajnu.
Koliko je možda izvedba vremenskim vođenjem očigledna, toliko je i problematična. Zahtjeva, naime, da korisnikov token i sustav kojem se pristupa budu vrlo precizno vremenski sinkronizirani, zbog čega se zaporke u ovoj izvedbi nazivaju vremenski sinkroniziranim jednokratnim zaporkama /TOTP – time-synchronized one-time passwords/. Razlika od već par sekundi može biti frustrirajuća za korisnika, jer će mu povremeno posve valjane prijave biti odbijene od sustava. Povremeno odbijanje prijave zbog nesinkroniziranosti satova ima posljedice i na sigurnost – korisnik neće moći razlikovati neuspješnu prijavu uzrokovanu vremenskom nesinkroniziranošću od nesupješne prijave uzrokovane iskorištavanjem tekuće zaporke od strane uljeza. Ovome se svakako može u manjoj mjeri doskočiti algoritamski, ali najispravnije rješenje je ono koje koristi točne kristalne oscilatore koji su skuplji od običnih satnih. Dok obični ručni satovi mogu kasniti i do 10-tak sekundi dnevno, precizniji oscilatori koštaju od 10 USD na više.
U slučaju da ste elektroničarski hobist, da imate web-stranicu na računalu do kojeg imate fizički pristup i manji broj korisnika, možda možete razmisliti o samogradnji tokena i komplementarnog eksternog sata za poslužitelj korištenjem nekog preciznijeg kristala.
S druge strane, ukoliko vam povremena nesinkroniziranost neće smetati, satovi koji se već nalaze u računalima, odn. pametnim mobitelima mogu poslužiti. Takvo će rješenje možda biti i privlačnije ukoliko možete satove na poslužitelju i mobitelima sinkronizirati s istim izvorom točnog vremena, poput nekog bliskog NTP-poslužitelja1 . Ukoliko ne, morat ćete povremeno sinkroniziranje riješiti na način koji će biti korisniku lagan, a opet siguran, moguće tako da korisnik mora osobno donijeti mobitel na sinkronizaciju. Kod ovakog softverskog tokena korisnik mora biti posebno oprezan da tajni ključ (pohranjen u mobitelu) ne dopadne u ruke uljeza (npr. kroz trojanski program).
Da bi se od trenutnog vremena došlo do jednokratne zaporke, potreban je neki kriptografski dobar algoritam. Možete proučiti otvoreni standard RFC 6238, poznatiji kao OATH-TOTP /Initiative for Open Authentication – Time-Based One Time Password/. Za ovaj standard iz 2008. godine već postoje klijentske i poslužiteljske implementacije otvorenog koda, jedna od kojih je i možda vam poznati Google Authenticator.
1 Što ako napadač uspije preko NTP protokola vratiti vrijeme na sustavu? Kako spriječiti da se ponovo „aktiviraju“ već istekle zaporke? Kako izbjeći probleme s promjenom ljetnog i zimskog vremena?
Algoritamski generirane jednokratne zaporke
Uočite li da vrijeme nije ništa drugo nego neprekidno uvećavajući brojač (ako vam je to teško, zamislite vrijeme izraženo kao broj sekundi od nekog trenutka u prošlosti), onda možete uočiti i da se umjesto vođenja vremenom, pri generiranju jednokratnih zaporki može koristiti i vođenje nekim stalno uvećavajućim cjelobrojnim brojačem.
Kao i u izvedbi s vremenskim vođenjem, i u ovoj izvedbi moraju token i sustav kojem se pristupa biti sinkronizirani, tj. brojači koji vode generiranje zaporki moraju imati istu vrijednost prije nego korisnik zatraži od tokena tekuću zaporku i njome se autentificira.
Za razliku od vremenski sinkronizirane izvedbe, kod ove je izvedbe slijedeća, još neupotrebljena zaporka važeća sve dok se ne upotrijebi, ma koliko dugo vremena do tada proteklo. Razlog tome je što se brojač u ovakvom tokenu uvećava tek kada se zatraži ta slijedeća zaporka, dok kod izvedbe vremenski sinkroniziranih zaporki možemo zamišljati da se brojač uvećava svaki puta kada interni sat odbroji onoliko sekundi koliko pojedina zaporka traje.
Pod pretpostavkom da je algoritam za generiranje jednokratne zaporke kriptografski dobar, tj. da napadač koji bi poznavao veliki broj ranije korištenih zaporki ne bi bio u značajnijoj prednosti pred napadačem koji pokušava slijedeću zaporku otkriti metodom uzastopnih pokušaja /brute force attack/, prednost se jednokratne zaporke u odnosu na uobičajene višekratne ogleda u tome što je u trenutku njenog isteka propao sav posao koji je napadač uložio da je otkrije. Vremenski sinkronizirane zaporke su onda u toj značajci bolje od algoritamski generiranih, jer one ističu svaki unaprijed određeni vremenski period (pola do najviše jedne minute), dok algoritamski generirane ističu tek kada korisnik zatraži generiranje iduće zaporke i tako uzrokuje uvećanje brojača. Možemo zaključiti da su vremenski sinkronizirane zaporke prikladnije kada se autentifikacija odvija rijetko, što je očekivani slučaj u interakciji čovjeka sa strojem, dok algoritamski generirane zaporke mogu biti dovoljno dobre u slučajevima gdje će se neizostavno često generirati (recimo barem svakih pola minute, moguće u nekoj interakciji između strojeva).
Pošto će generiranjem zaporki od strane korisnika, a bez da stvarno budu upotrebljene, korisnik i sustav izaći iz sinkornizacije brojača, sustav kojem se pristupa morat će dopustiti istodobnu upotrebu većeg broja slijedećih zaporki i potom po slijedećoj uspješnoj prijavi sinkronizirati svoj brojač s korisnikom na način da skoči na onu vrijednost brojača koja odgovara zaporki koju je upisao korisnik. Očigledno, ovaj sinkronizacijski prozor ne smije biti prevelik, a u slučaju da korisnik generira previše zaporki bez da ih iskoristi, morat će mu biti omogućen neki jednostavan, ali siguran način sinkronizacije, tipično kroz telefonsku pomoć – helpdesk.
Planirate li koristiti ovu izvedbu jednokratnih zaporki, proučite otvoreni standard RFC 4226, poznatiji kao OATH-HOTP /Initiative for Open Authentication – Hashed Message Authentication Code (HMAC)-Based One Time Password/. I za ovaj standard iz 2005. godine postoje klijentske i poslužiteljske implementacije otvorenog koda.
Drugi načini dostave jednokratnih zaporki
Upravo opisani hardverski i softverski token su zapravo načini za dostavu jednokratnih zaporki. Kako god bila dostavljena, svaka zaporka mora biti dostavljena na siguran način, na način da informacija ne može biti presretnuta ili izmijenjena od strane uljeza. Zdrav razum nalaže i da bi bilo dobro da je u njeno kreiranje i dostavu uključeno što manje strana uz one dvije koje komuniciraju. U slučaju hardverskog tokena se uređaj, nakon inicijalizacije od strane odgovorne osobe sustava kojem korisnik pristupa (administrator operacijskog sustava, odgovarajuća služba banke i sl.), predaje korisniku iz ruke u ruku, tj. korisnik ga osobno podiže. U slučaju softverskog tokena bi korisnik mogao donijeti svoj mobitel na inicijalizaciju programa, tj. na upis tajnog ključa koji se koristi pri kreiranju zaporki. Tajni bi ključ za softverski token mogao biti dostavljen nekim drugim putem koji se smatra dovoljno sigurnim, primjerice poštanski (slično kako banke dostavljaju PIN-ove), telefaksom ili možda SMS-porukom.
Svojstveno nesigurne kanale komunikacije se ne bi smjelo koristiti za dostavu informacija koje upravo služe uspostavi sigurnosti, jer takav način dostave kompromitira samu svrhu onoga što se dostavlja. Da bi se nesigurni kanali, poput slanja elektroničkom poštom ili preuzimanja s web-stranice mogli koristiti, oni se prvo moraju zaštititi od prisluškivanja, što u načelu uključuje korištenje kriptozaštite. Elektronička se pošta može zaštititi kriptografski po PGP /Pretty Good Privacy/ ili S/MIME /Secure/Multipurpose Internet Mail Extensions/ standardima, a preuzimanje s web-stranica spajanjem po SSL /Secure Socket Layer/ protokolu, no oboje tematski izlazi iz okvira ovog članka. Bitno je za temu ipak napomenuti da zaštita komunikacijskog kanala ne uključuje samo spriječavanje prisluškivanja, već sigurno i utvrđivanje identiteta obiju strana koje komuniciraju, jer vrlo vjerojatno da kao štediša ne želimo svoje podatke za pristup bankovnom računu saznati posredstvom uljeza, niti da kao banka želimo klijentove podatke za pristup računu dostaviti uljezu. Kako se u ovom poglavlju upravo radi o dostavi tajnih informacija čijim se poznavanjem dokazuje identitet, onda je ponešto paradoskalno dostavljati ih na način koji implicira da dvije strane jedna drugoj već mogu dokazati identitet – no, neka je čitatelju prepušteno u konkretnim problemima vidjeti gdje je takav način dostave upravo prikladan, a gdje u stvarnom proturječju s traženim rješenjem.
Dobro je prihvaćen način dostave tajnih informacija korisniku sasvim drugim /out-of-band/ dostavnim putem od onoga kojim će korisnik te informacije dostavljati u trenutku kada dokazuje svoj identitet. U slučaju da korisnik sustavu pristupa preko Interneta (npr. slučaj pristupanja u sustav online-bankarstva), njegove mu zaporke mogu biti dostavljene poštanski ili kroz SMS-poruke. Ovi putevi nisu sigurni sami po sebi, ali kako se radi o posve drugim putevima, za njihovo bi presretanje uljez morao organizirati još jednu i posve drugačiju vrstu operacije, sinkronizirati napore u obje operacije i uspjeti dva puta. Ipak, mogu se iskoristiti specifičnosti puteva da se podigne i njihova razina sigurnosti. Tajnost je pošte zakonska kategorija, a pošiljke se mogu slati u takvim neprozirnim kuvertama čije otvaranje povlači i njihovo nepovratno oštećivanje, čime se uljezu posao dodatno komplicira, odn. poskupljuje. Slično je i s presretanjem telefaksa, jer uljez mora negdje i nekako osigurati fizički pristup do žice.
Perfect Paper Passwords
Perfect Paper Passwords (PPP) otvorena je izvedba autentifikacije jednokratnom zaporkom pomoću papira, bez hardverskog ili softverskog tokena – umjesto da se zaporke generiraju po potrebi, one se jednostavno generiraju unaprijed i zapišu na list papira. U ovoj izvedbi zaporki na papiru korisnik u novčaniku nosi ukupno 210 4-znakovnih zaporki raspoređenih u 10 redaka i 7 stupaca na tri papira veličine kreditne kartice. Zaporke se koriste jedna po jedna, slijedom kojim su otisnute na papiru, a da bi korisnik znao koju mora koristiti pri slijedećem pristupu, sustav indicira zaporku rednim brojem kartice, te retkom i stupcem na kartici. Korisnik je ovdje slobodan olovkom prekrižiti iskorištene zaporke. U slučaju da su kartice kompromitirane (izgubljene ili bile van posjeda korisnika dovoljno dugo da ih neko preslika), korisnik mora bez oklijevanja izraditi nove s drugačijim skupom zaporki. Potrebno je uočiti da je danas kamerom mobitela moguće učiniti presliku takve kartice u trenutku i kriomice.
Autor ove izvedbe, Steve Gibson, osigurao je na svojim web-stranicama mogućnost generiranja kartica i njihovog preuzimanja kroz SSL-om zaštićenu vezu. Osim generatora kartica, na stranicama se može pronaći detaljan opis dizajna i preuzeti besplatnu programsku biblioteku ili izvršni program za Windowse. Osim njegove, može se pronaći i druge programske implementacije Gibsonovog PPP-a.
SECUREMATRIX
SECUREMATRIX je patentirana izvedba autentifikacije jednokratnom zaporkom (registrirana u SAD-u pod nazivom Matrixauthentication®) u kojoj zaporku čini od korisnika izabrani vizualni obrazac ili redoslijed kojim se očitava matrica sa znamenkama. Princip je u tom dijelu vrlo sličan principu očitavanja PasswordCarda. Za razliku od PasswordCarda, ovdje se matrica mijenja prilikom svake prijave, čime se postiže jednokratnost zaporke.
Zanimljivost ove izvedbe je u načinu na koji je matrica prezentirana – na zaslonu se za prijavu korisniku prikazuju četiri matrice dimenzija 4 x 4 znamenke, a korisnik mentalno superponira svoj obrazac za očitavanje na svaku od matrica. Time mu se omogućuje da pamti do četiri jednostavnija crteža, umjesto jednog kompleksnijeg.
Ovu izvedbu uključujem u članak zbog poučka. SECUREMATRIX je zapravo token realiziran bez elektroničkog uređaja u džepu korisnika (dakle, bez potrebe dostavljanja hardverskog tokena korisniku ili inicijaliziranja softverskog tokena u mobitelu nekim tajnim ključem kojeg treba sigurno saopćiti korisniku). Međutim, valja uočiti da ako uljez presretne komunikaciju između korisnika i sustava, obrazac očitavanja može postati očigledan iz zaporke. Da bi se ovo spriječilo, ključan je algoritam kojim se znamenke generiraju. Ilustracije radi, pronađite na stranicama ovog proizvoda bilo koji primjer zaslona prijave i pokušajte iz 4-znamenkastog broja očitanog s jedne od matrica odrediti broj mogućih obrazaca očitavanja koji bi na toj matrici dali taj isti broj. Potom pokušajte odrediti koliko se različitih brojeva može sveukupno očitati s iste matrice. Zbog toga se u samoizvedbi vjerojatno ne biste trebali odlučiti za bilo koji princip kojeg biste se mogli dosjetiti, a svodio bi se na token bez tokena – osim ako niste uistinu izvrstan matematičar.
Literatura

Specifikacije

Wikipedia

Resursi

Ostavi komentar

Leave a Reply

Vaša adresa e-pošte neće biti objavljena. Obavezna polja su označena sa *

Oglašavanje

Možda će vas zanimati

Oglašavanje