Lozinke su već godinama na lošem glasu kao nešto što je teško pravilno izabrati i kasnije zapamtiti. Korisnici često biraju trivijalne password e, koriste iste ili slične nizove znakova na raznim sistemima, teško pamte složene kombinacije slova i brojeva koje neki sistemi nameću, a posebno su neradi da povremeno menjaju teško zapamćenu šifru. Mnoge "provale" na sisteme desile su se zbog loše izabranih ili loše čuvanih lozinki, čak i od strane navodno iskusnih administratora. Zato IT svet već dvadesetak godina traga za alternativom password ima, za sada bez pravog uspeha. Multi factor authentication je široko prihvaćeno rešenje koje, u nedostatku boljeg, vredi primeniti, barem na najvažnijim korisničkim nalozima.
Nešto što znate, nešto što imate
Lozinka je nešto što znate, dakle nešto što se u optimalnom slučaju nalazi samo u vašoj memoriji. Pošto je memorija sve samo ne savršena, ljudi ipak zapisuju svoje lozinke, na papiriće ili u sveske (što je jako loša ideja) odnosno u fajl (poželjno zaštićen nekom drugom lozinkom) ili koriste usluge programa koji u šifrovanoj arhivi čuva sve lozinke, recimo 1Password. Ako se bilo šta od toga nađu nadomak ruke (ili oka) nekog hakera, možete samo da kažete zbogom bezbednosti. Čak i ako dobro birate i pažljivo čuvate svoje lozinke, može se desiti da ih neko pročita gledajući vam preko ramena dok se prijavljujete na sistem, da ih ulovi u nekom keylogger programu koji je tajno instaliran na računar koji koristite, ili čak da lozinku izvuče iz Internet komunikacije vašeg računara, prisluškujući Wi Fi saobraćaj ili pakete koji prolaze kroz kablove lokalne mreže.
Zato je prirodna ideja da se lozinka, dakle nešto što znate, dopuni još nečim, što neće biti tako lako zloupotrebiti. Recimo, nečim što imate i što stalno nosite sa sobom. Neke banke osiguravaju pristup računu malim uređajem ("token") koji generiše jednokratne lozinke, ali je teško očekivati da nosite sa sobom deset takvih uređaja pa da jedan koristite za banku, drugi za Gmail, treći za Facebook... Ostaje da se koristi neki univerzalni uređaj koji svako već ima, a to je pametni telefon.
U opštem slučaju, dvostepena autentikacija funkcioniše tako što, kada se ulogujete na neki sistem unoseći korisničko ime i lozinku, sistem zamrzava proces prijavljivanja i šalje jedinstveni kod koji primate na mobilnom telefonu. Tek kada unesete taj kod u masku koja se ispisuje na ekranu računara, proces prijavljivanja se uspešno završava i dobijate pristup sistemu. Dakle, ako neko zna vašu lozinku, ne može da se prijavi bez vašeg mobilnog telefona. Ako na neki način dođe do telefona (nađe ga ili ukrade), ne može se prijaviti bez lozinke. Zvuči jednostavno i efektno, ali krije mnoge finese i potencijalne probleme.
Kanal komunikacije
Kako će sistem na koji se prijavljujete poslati kod vašem smartfonu? Kao prirodan način nameće se SMS, ili eventualno telefonski poziv tokom koga će vam robot pročitati broj. I zaista, takav se metod najčešće koristi, pošto je dovoljno da udaljenom sistemu saopštite svoj broj telefona, koji on verovatno i tako "zna" pošto ste morali da ga navedete pri prvom predstavljanju. Odmah se postavlja pitanje troškova - ko će da plati taj SMS? Google, Microsoft, Facebook i ostali su za sada velikodušni - oni snose troškove slanja sigurnosnih SMS ova, pa i voice poziva širom sveta. Za korisnika je, dakle, primena besplatna, mada se može desiti da se nađe u roaming u pa da ipak ima neke troškove, zavisno od tarife njegovog mobilnog operatora.
Multi factor authentication je široko prihvaćeno rešenje koje, u nedostatku boljeg, vredi primeniti, barem na najvažnijim korisničkim nalozima
Ljudi koji se ozbiljnije bave sigurnošću su sumnjičavi prema ovakvoj organizaciji stvari. SMS putuje kroz mobilne mreže u nekriptovanom obliku i u krajnjem slučaju može da bude "ulovljen", hakovanjem bazne stanice, kloniranjem korisnikove SIM kartice ili čak aktivnom saradnjom nekoga ko radi za mobilnog operatora. Kod izvesnih slučajeva hakovanja raznih naloga (stranih ali i domaćih) javila se sumnja da je "neko u centrali" saopštavao sadržaj sigurnosnih SMS ova hakerima. Da li se to stvarno događalo možda i nije toliko bitno - moglo je da se desi, što je dovoljan razlog da se potraži sigurniji kanal. Recimo, Internet.
Zamislimo da je na smartfonu instaliran namenski softver koji je (jednokratno, unošenjem nekih kodova), uparen s odgovarajućim nalogom na koji se prijavljujete. Telefon neprekidno održava komunikaciju sa serverom, ili mu povremeno javi svoju IP adresu. Kada korisnik započne proces prijavljivanja i unese ispravnu lozinku, server šalje telefonu preko Interneta odgovarajući kod, koji korisnik onda vidi na ekranu. Komunikacija servera i telefona je sve vreme šifrovana nekim snažnim algoritmom (npr. koristi se https konekcija) tako da je prisluškivanje bespredmetno. Stvar je posebno zgodna ako je vlasnik servisa ujedno i autor operativnog sistema za telefon, recimo ako koristite Android uređaj da pristupite Gmail nalogu ili koristite iPhone da pristupite iCloud nalogu. Tada u sam operativni sistem može da bude ugrađen odgovarajući softver pa su kodovi nepotrebni - na ekranu telefona se samo pojavi poruka da neko upravo pokušava da pristupi vašem nalogu, vi izaberete opciju "da, to sam ja" i pristup je odobren.
A cena komunikacije? Da bi ovo funkcionisalo smartfon mora da bude stalno na Internetu, što je možda problem dok se nalazite u roaming u. Obično se kaže da očito imate pristup Internetu kad se već iz browser a logujete na sajt, ali može se desiti da pristupate iz nekog kafića, ili dok putujete avionom, a tada na mobilnom možda nema Interneta. Ne zvuči kao preterano ozbiljno ograničenje, ali ipak... ima li alternative?
Bez veze?
Da li bi se dvostepena autentikacija mogla obaviti s telefona (ili nekog drugog uređaja) koji uopšte nije ni na Internetu niti na mobilnoj mreži? Zvuči nemoguće, ali postoji duhovito rešenje zasnovano (naravno) na vešto osmišljenoj matematici - treba samo da na telefonu instalirate Google Authenticator, Microsoft Authenticator ili Apple Authenticator. Što je najlepše, ovi programi se oslanjaju na otvorene standarde, pa svaki funkcioniše i s tuđim sistemima - možete da koristite Google Authenticator da se prijavite na Outlook.com, ili Microsoft Authenticator da se prijavite na iCloud. Potreban je samo jedan ovakav program.
Da li bi se dvostepena autentikacija mogla obaviti s uređaja koji nije ni na Internetu niti na mobilnoj mreži? Zvuči nemoguće, ali postoji duhovito rešenje zasnovano na vešto osmišljenoj matematici - autentikator
Autentikator zahteva da ga inicijalno uparite s nalogom na koji se logujete, pri čemu se isti autentikator može koristiti za pristup većem broju sistema; sa svakim od njih će razmeniti po jedan kod. Uparivanje se obično obavlja tako što sistem iscrta QR kod koji skenirate telefonom ili ispiše niz znakova koje morate da prekucate. Taj tajni kod ubuduće znaju samo sistem i vaš telefon.
Najčešće se koristi algoritam zasnovan na tekućem vremenu, TOTP (time based one time password algorithm). Kada treba da se prijavite na sistem i otkucate lozinku, očekuje se da pogledate telefon i prekucate kod koji on ispisuje. Taj kod je formiran na osnovu tajne šifre i tekućeg vremena, i mogu ga znati samo servis i telefon. Naravno, postoji izvesna (mala!) tolerancija što se vremena tiče, pošto časovnici ne moraju biti baš savršeno sinhronizovani, a i vama je potrebno neko vreme da prekucate kod. Sistem funkcioniše veoma pouzdano i siguran je. Opis matematike na kojoj je zasnovan prevazilazi ambicije ovoga teksta, ali ako vas zanima, lako ćete potražiti TOTP na Google u.
Alternativno rešenje je HOTP, hash based one time password algorithm. I tu server i telefon razmene tajni ključ, ali osim njega oni nezavisno vode i brojač, koji inkrementuju posle svake autentikacije. Može se javiti problem ako, recimo, neko uspe da vam pogodi lozinku pa sistem očekuje i drugi korak, a napadač taj korak ne može da napravi jer nema vaš telefon - tada je sistem generisao jednu lozinku a telefon nije. Zato se u većini implementacija brojač uvećava samo ako je kod ispravno unesen, a postoje i metode za naknadnu sinhronizaciju.
TOTP i HOTP su javno publikovani algoritmi, pa postoji niz implementacija otvorenog koda. Oslanjajući se na njih možete da unapredite sigurnost servisa koji sami pravite uvođenjem autentikacije u dva koraka.
Zatureni telefon
Dvostepena autentikacija dobro funkcioniše dok je vaš telefon u vašem vlasništvu, ali šta ako vam ga neko ukrade? Odmah uočavamo dve klase problema - kako da vi pristupite svom nalogu, i postoji li mogućnost da kradljivac, uz telefon, ukrade i vaš digitalni identitet.
Ako neko zna vašu lozinku, ne može da se prijavi bez vašeg mobilnog telefona. Ako na neki način dođe do telefona, ne može se prijaviti bez lozinke
Da biste se bez telefona ulogovali na svoj nalog, potrebno je da na vreme pripremite alternativu. Jedna od mogućnosti je da autorizujete i drugi telefon, koji ćete držati kod kuće; ako i njega nosite sa sobom, lako mogu biti istovremeno ukradena oba. Autor ovog teksta koristi Android telefon za dvostepenu autentikaciju, dok je na iPad u koji retko napušta kuću instaliran Google Authenticator, kao alternativni metod kontrole pristupa; šteta je što se može definisati samo jedan uređaj na kome je Authenticator. Zvuči kao dobro rešenje, ali nedavno mi se desilo da sam zaboravio telefon kod kuće, došao na posao i zapitao se da li je telefon bezbedno kod kuće, da li je možda ostao u kolima ili mi je negde ispao. Da bih to proverio pokrenuo sam Android Device Manager (sada se zove Find My Device), pitao gde je moj telefon, ulogovao se... i sistem je zahtevao dvostepenu autentikaciju preko uređaja koji zapravo tražim. Nisam bio oduševljen, najblaže rečeno.
Zato je veoma važno da, pošto aktivirate dvostepenu autentikaciju, generišete 10 jednokratnih kodova za pristup. To su dugi nizovi brojeva od kojih svaki može da "otključa" vaš nalog, ali samo jednom. Da sam imao kod sebe tih 10 brojeva, mogao sam da potrošim jedan od njih i proverim gde mi je uređaj a potom i, ako je neophodno, deautorizujem taj uređaj, autorizujem neki drugi, ili čak da isključim dvostepenu autentikaciju. Ostaje još pitanje gde čuvati te magične kodove. Sam Gmail predlaže da ih odštampate na papir koji ćete nositi sa sobom, ali to možda i nije tako dobra ideja - šta ako, uz telefon, bude ukraden i novčanik u kome su kodovi? Zato je najbolje da kodove upišete u tekst fajl, šifrujete ga snažnim lozinkama (možda jednom šifrujete Word dokument u kome su kodovi, pa onda .docx fajl šifrujete WinZip om) i stavite ga u svoj Dropbox ili OneDrive. Na taj način ste, doduše, opet degradirali dvostepenu autentikaciju na lozinke, makar i više njih, ali su vam kodovi dostupni gde god na svetu da se nalazite.
Ukradeni telefon
Stvari se dalje komplikuju ako je telefon ukraden s ciljem da se hakuju vaši nalozi. Tada je od ekstremnog značaja da je telefon zaključan. Znamo, dosadno je kucati PIN ili "povlačiti linije" kad god uključite telefon, ali zaključavanje telefona je neophodnost, baš kao i kriptografisanje podataka u njegovoj memoriji. Napominjemo da su moderni Android i iOS uređaji veoma dobro zaključani i da nema načina da se otključa uređaj bez znanja PIN a. Sećamo se da je pre dve godine FBI zvanično tražio od Apple a da otključa zaplenjeni telefon teroriste koji je pucao na prolaznike u San Bernardinu, a Apple je tvrdio da je to nemoguće. Najzad je FBI platio (navodno) milionsku sumu ekspertima iz Izraela koji su uspeli da otključaju telefon, što znači da je to ipak moguće, ali teško da će kradljivac vašeg telefona biti spreman na takve troškove; osim toga, u međuvremenu je bezbednost povećana.
Telefon je, dakle, ukraden ali kradljivac ne može da pristupi vašem nalogu jer ne zna vašu osnovnu lozinku; to je uostalom i smisao dvostepene autentikacije. No, morate početi od pretpostavke da je on nekako ukrao i lozinku, možda prisluškujući mrežni saobraćaj i simulirajući https protokol (man in the middle attack). Ukoliko je telefon zaključan osećate se i dalje bezbedno, ali šta ako se kradljivac uloguje, sistem mu pošalje kod SMS om, a taj kod se vidi na lock ekranu? Još jedan razlog da odustanete od SMS ova, a ako baš insistirate na njihovom korišćenju, da zabranite njihov prikaz na zaključanom uređaju.
Sada dolazimo do možda i najozbiljnijeg problema, koji pomera hakovanje u zonu socijalnog inženjeringa. Kradljivac ima vaš telefon, telefon je zaključan, i on ne zna vašu lozinku. Prijaviće se na sistem i reći da je lozinka zaboravljena, ali da ima telefon i da hoće da lozinka bude promenjena. Tu mnogo zavisi od procedura samog sistema, ali se može lako doći u situaciju da oni pozovu korisnika na njegov telefon (a pozivi mogu da se primaju i na zaključanom uređaju) ili da mu pošalju neki kod SMS om, što se opet možda može pročitati. Eto ozbiljne neprijatnosti koja nema neko opšte rešenje - jedino se savetuje da ne koristite isti telefonski broj za dvostepenu autentikaciju i za resetovanje lozinke, kao i da u slučaju gubitka telefona što pre deautorizujete taj uređaj koristeći jednokratne kodove.
Izuzeci
Dvostepena autentikacija funkcioniše dobro dok pristupate vašem nalogu iz Web browser a, pošto je tada sve pod kontrolom matičnog sajta. Korišćenje Gmail a ili Outlook.com a su školski primeri upotrebe ove tehnike. No, ne pristupamo svemu samo kroz browser - elektronsku poštu, recimo, mnogi čitaju iz klijentskog programa, najčešće Microsoft Outlook a. "Nevolja" je u tome što se ovakvi programi oslanjaju na stare protokole kao što su SMTP, POP3 ili IMAP, a takvi protokoli i dalje ne podržavaju "novotarije" kao što je autentikacija u više koraka. Pošto je teško očekivati od miliona korisnika da napuste alate koje godinama (možda i decenijama) koriste, autori Gmail a i sličnih sistema morali su da prave prilično trule kompromise.
Glavni kompromis se zove "lozinka specifična za neku aplikaciju" (Application Specific Password). Nakon što ste aktivirali Two Step Verification, kreiraćete posebnu lozinku specifičnu za, recimo, Microsoft Outlook. Ta lozinka zaobilazi sistem dvostepene autentikacije i daje direktan pristup vašim porukama na serveru. Reklo bi se da je time čitav sistem bačen u vodu, ali ipak ima nekih specifičnosti. Pre svega, tu lozinku ne birate (i ne možete izabrati, čak i da želite) sami, već je generiše sistem - biće to niz od 16 slučajno nabacanih slova, koje treba preneti u Outlook, Apple Mail ili bilo koji program koji ne podržava dvostepenu autentikaciju. Činjenica da su slova slučajno generisana eliminiše mogućnost da je lozinka "loše smišljena" i da će je neko pogoditi, a očekuje se i da je ne zapisujete nigde, pošto je jednom upišete u odgovarajuću masku e mail klijenta; ako šifra nije nigde zapisana, ne može vam je niko ukrasti. Ukoliko koristite nekoliko programa, recimo Outlook na kućnom računaru, Outlook na poslovnom računaru, Aqua Mail na Android telefonu i slično, za svaki od njih ćete generisati poseban password, a ukoliko otuđite neki od ovih uređaja, lako ćete ga deautorizovati brisanjem odgovarajuće lozinke.
Iako vas Application Specific Password štiti od klasičnih krađa lozinke "gledanjem preko ramena", on neće pomoći kod sofisticiranog praćenje mrežnog saobraćaja (zato je jako bitno da se koriste sigurni protokoli odnosno enkripcija) niti u slučaju krađe računara, koji recimo nije bio dovoljno obezbeđen. Utešno je jedino da, sve da neko i pogodi vaš Application Specific Password, on neće moći pomoću nje da se uloguje na Gmail i tamo promeni vaše podatke ili čak ugasi nalog i sve pobriše; moći će "samo" da čita vašu poštu. Možda će se uskoro pojaviti novi protokoli za preuzimanje pošte koji obezbeđuju dvostepenu autentikaciju, mada nije jasno kako bi uz njih funkcionisalo neprekidno automatsko skupljanje pošte ili razne push tehnologije koje same "guraju" poruke na vaš telefon.
Potraga se nastavlja...
Dvostepena autentikacija svakako nije savršen metod, ni s aspekta lakoće upotrebe a ni s aspekta bezbednosti. Ipak, njeno korišćenje bitno povećava sigurnost vašeg korisničkog naloga, odnosno umanjuje mogućnost da se vašim podacima neovlašćeno pristupa ili da oni budu obrisani. Primena te tehnike zahteva da uvek nosite smartfon (zar to svi ne radimo?) a u najvećem broju slučajeva i da taj telefon ima pristup Internetu. Primena pomalo usporava rad, ali je to usporenje prihvatljivo kada se uzme u obzir povećanje bezbednosti.
Stručnjacima za bezbednost ostaje da dalje tragaju za nekim jednako sigurnim, ali komfornijim metodom. Nažalost, uz sve priče o biometriji i prepoznavanju lica, takav metod još nije ni blizu realizacije. Zato preporučujemo Two Step Authentication (ili Verification kako mnogi kažu), ali uz pun oprez da ne biste s jedne strane realno umanjili bezbednost želeći da je povećate, a s druge izgubili mogućnost da se ulogujete na sopstveni nalog jer ste nešto pogrešno podesili. Korak po korak do sigurnijeg Interneta!
Za detaljan opis aktiviranja 2-step verifikacije u 14 koraka, praćen slikama i primerima, pogledajte PC#252.
|