« Vaša lozinka mora da sadrži 8 karaktera, veliko slovo, malo slovo, broj i specijalni karakter. »
Svi znamo ovo pravilo. Pa ipak, u sajber bezbednosti to nazivamo “pozorištem bezbednosti”. Lozinka kao što je P@ssw0rd1! poštuje sva ova pravila. Ali to je uobičajena reč sa predvidljivim zamenama, a upravo to alati za probijanje lozinki prvo probaju.
Prava bezbednost se ne zasniva na proizvoljnim vizuelnim pravilima, već na neumoljivoj matematičkoj stvarnosti: entropiji.
Entropija prema Klodu Šenonu
Da bismo razumeli snagu lozinke, moramo se obratiti Klodu Šenonu, ocu teorije informacija. Entropija meri stepen neizvesnosti ili nepredvidljivosti informacija.
Primenjena na lozinke, entropija se izračunava u bitovima. Što je veći broj bitova, lozinka je nepredvidljivija za računar. Pojednostavljena formula za entropiju (E) nasumično generisane lozinke je:
E = L × log2(R)
- L je dužina lozinke.
- R je veličina skupa (26 za mala slova, 62 sa velikim slovima i brojevima, 94 sa svim simbolima koji se mogu odštampati). Četiri skupa karaktera našeg generatora daju 91, jer njegov skup simbola ima 29 karaktera.
Povećanje veličine skupa (dodavanje simbola) povećava entropiju, ali povećanje dužine (dodavanje karaktera) povećava je mnogo drastičnije. Međutim, dužina pobeđuje složenost samo pod jednim uslovom: da je lozinka generisana potpuno nasumično.
Brute Force vs. Rečnički napad
Ako koristite reči ili predvidljive strukture, pravilo čiste dužine se ruši.
Softveri za hakovanje ne isprobavaju sve kombinacije slova jednu po jednu (to se zove Brute Force). Oni koriste ogromne spiskove stvarnih lozinki iz ranijih curenja podataka, zajedno sa uobičajenim rečima i frazama. To je Rečnički napad (Dictionary Attack).
Ako je vaša lozinka duga, ali se sastoji od reči iz rečnika ili predvidljivih zamena, njena stvarna entropija je dramatično niža od njene teorijske matematičke entropije.
Tabela ispod koristi jedno pravilo: 100 milijardi pokušaja u sekundi, brzinu koju stranica našeg generatora pretpostavlja za offline napad na brz heš. Vremena su prosečna (polovina svih mogućnosti), zaokružena na niže istom formulom kao na toj stranici. Najbrži put za svaku lozinku je podebljan:
| Lozinka | Entropija kada bi svaki karakter bio nasumičan | Brute force (prosečno) | Rečnički napad (naša procena) |
|---|---|---|---|
password123 | 56 bitova (11 karaktera, mala slova i brojevi) | 7 dana | Manje od sekunde |
S3cr3t!99 | 58 bitova (9 karaktera, sva četiri skupa) | 24 dana | Manje od sekunde |
correct horse battery staple | 133 bita (28 karaktera, mala slova i razmak) | Više od 1 bilion godina | 1 minut |
gL7!pQ9z#vX2 | 78 bitova (12 karaktera, sva četiri skupa) | 51 hiljada godina | Nema prečice |
Kolona rečnika je procena. Ona pretpostavlja da pokušaji napadača prate strukturu svake lozinke i da je svaka osnovna reč među 1.000 najčešćih:
password123: jedna uobičajena reč i tri cifre. To je 1.000 × 1.000, oko milion pokušaja.S3cr3t!99: jedna uobičajena reč, sa velikim slovom ili bez njega, svako “e” zamenjeno sa “3” ili ne, pa bilo koji sufiks od tri karaktera. To je oko 7 milijardi pokušaja.correct horse battery staple: četiri uobičajene reči. Strip xkcd koji ju je proslavio računa 44 bita za četiri reči sa liste od 2.048 reči. Istom brzinom to je u proseku 88 sekundi, zaokruženo na niže na 1 minut.gL7!pQ9z#vX2: nema reči i nema obrasca, pa je brute force najbrži put.
Ove procene tretiraju svaku lozinku kao da je napadač ne zna. Svaka lozinka u ovom članku sada je javna, pa svaka spada u rečnik. Objavljena lozinka je spaljena lozinka.
Iluzija Leetspeak-a i pravila mutacije
Uzmimo primer S3cr3t!99. Vizuelno izgleda složeno i robusno. Pa ipak, to je jednostavno reč iz rečnika “secret”, gde su slova ’e’ zamenjena brojem ‘3’, kojoj je dodat veoma uobičajen sufiks (!99). To se zove leetspeak.
Protiv rečničkog napada, ova lozinka izdrži manje od sekunde, a ne 24 dana koliko bi sugerisala njena dužina. Moderni softveri za krakovanje (poput Hashcat-a) se ne zadovoljavaju testiranjem statičkih lista reči; oni automatski primenjuju pravila mutacije. Oni će uzeti svaku reč u svom rečniku, testirati sve moguće leetspeak kombinacije, zameniti velika i mala slova i dodati godine ili simbole. Leetspeak pruža lažni osećaj bezbednosti.
Trik promene tastature (Keyboard Shift)
Da bi zakomplikovali frazu koju je lako zapamtiti, neki koriste trik promene rasporeda tastature. Na primer, zapamtite frazu kao što je my-cat. Ali u trenutku kucanja, stavite prste na fizičku QWERTY tastaturu dok je vaš operativni sistem konfigurisan na AZERTY (francuski).
- Zamišljena reč:
my-cat - Otkucani rezultat:
,y)cqt(Taster ’m’ postaje ‘,’; ‘-’ postaje ‘)’; ‘a’ postaje ‘q’).
Da li je to dobra ideja u OPSEC-u? Ne, ovaj metod nije dovoljan ako se koristi sam. Baš kao leetspeak, promena rasporeda tastature je fiksna zamena: napadač koji je naslućuje primenjuje isto preslikavanje na svaki pokušaj. U OPSEC-u to je bezbednost kroz nejasnoću (security by obscurity): to odlaže napadača amatera, ali neće zaustaviti ciljani i opremljeni napad.
Uparena sa lozinkom koja je već jaka (kao što je duga nasumična fraza lozinke), ona dodaje malo. Čak i ako napadač isproba hiljadu parova rasporeda, to dodaje manje od 10 bitova, jer je log2(1.000) ≈ 9,97. Snaga i dalje dolazi od fraze lozinke ispod.
Pravljenje master lozinke (~250 bitova)
Ako liste reči, leetspeak i trikovi sa kucanjem imaju svoja ograničenja, kako da napravimo master lozinku koja traje? Naš generator već ocenjuje 80 bitova kao “Snažna”, a 100 bitova kao “Veoma Snažna”. Za master lozinku koja treba da traje decenijama, ovaj članak cilja mnogo više: oko 250 bitova entropije. Kvantni odeljak u nastavku objašnjava zašto, i šta ta rezerva ne obezbeđuje.
Postoje dva načina da se to postigne u zavisnosti od vaših potreba:
1. Nasumični karakteri (za menadžer lozinki)
Niz karaktera generisan potpuno nasumično, bez obrasca koji bi mašina mogla da iskoristi:
8}8,_$-p)M&n,XvUCT0o+.5hDE6P^w6b@U-evS0
39 karaktera nasumično izvučenih iz 91 karaktera našeg generatora: generator prikazuje “Broj bita: ≈ 253”. Ova lozinka je izvučena za ovaj članak, pa je sada javna. Nikada je ne koristite.
2. Nasumična fraza lozinke (za lozinku koju pamtite)
Nasumične reči se lakše pamte od nasumičnih karaktera. Svaka reč izvučena sa EFF liste od 7.776 reči dodaje oko 12,9 bita, pa broj reči daje entropiju. Dvanaest reči daje “Broj bita: ≈ 155”, daleko iznad praga “Veoma Snažna” našeg generatora. Same reči prelaze 250 bitova tek sa 20 reči.
Naš generator se zaustavlja na 12 reči. Da biste prešli 250 bitova sa manje reči, označite “Nasumičan broj posle svake reči” i izaberite “Broj + Simbol” kao razdvajač. 11 reči tada daje “Broj bita: ≈ 260”:
depletion78$sporting14~overlap11>macaw86>paced95,paramedic41}blot41$flagstone07;uncanny92/broadways77#say2
Nasumično izvučeno za ovaj članak, sa tačno tim podešavanjima. Objavljena lozinka je spaljena lozinka: nikada ne koristite ovu, niti bilo koji primer koji pročitate. Računa se samo ono što je nasumično izvučeno. Veliko početno slovo svake reči ne dodaje ništa, a reči koje sami izaberete mnogo su slabije od nasumičnih.
Kvantna pretnja: Groverov algoritam
Zašto ciljati na 250 bitova kada 128 bitova već blokira današnje superračunare? Odgovor leži u izgledima za velike kvantne računare.
U kriptografiji, Groverov algoritam omogućava kvantnom računaru da pretražuje nesortiranu bazu podataka mnogo brže od klasičnog računara. Konkretno, Grover efektivno prepolovljuje nivo bezbednosti simetričnog ključa ili lozinke.
Protiv kvantnog računara koji pokreće Groverov algoritam, lozinka sa entropijom od 128 bitova bi u teoriji nudila otpor jednak samo 64 bita. To je mnogo tanja rezerva.
Udvostručavanje entropije čuva rezervu: oko 256 bitova i dalje bi ostavilo oko 128 bitova protiv Groverovog algoritma. Odatle potiče cilj od 250 bitova u ovom članku. To je mera opreza koju bira ovaj članak, a ne broj preuzet iz nekog standarda.
Rezerva ima granice. Groverovo ubrzanje je kvadratno, a ne neograničeno. Svaki njegov korak i dalje mora da izračuna heš lozinke sajta, i to na kvantnom računaru dovoljno velikom da ga izvrši. Poređenja radi, pri 100 milijardi pokušaja u sekundi koje pretpostavlja stranica našeg generatora, prosečna pretraga od 100 bitova već traje najmanje 200 milijardi godina.
Logika podseća na Harvest Now, Decrypt Later (HNDL): ukradena baza heševa lozinki može se danas sačuvati i kasnije napasti, boljim mašinama. Veća rezerva podiže lestvicu protiv toga. To nije trajna garancija.
Arpokrat Password Generator: Napravite svoju
Ne prepuštajte bezbednost svojih pristupa slučaju. Naš besplatni generator pravi nasumične lozinke i fraze-lozinke. Za svaku prikazuje entropiju u bitovima i prosečno vreme koje bi pretraga trajala.
On samo generiše: ne ocenjuje lozinku koju već koristite. Za gornji cilj od 250 bitova izaberite lozinku od 39 karaktera sa sva četiri skupa karaktera. Generator je prikazuje kao “Broj bita: ≈ 253”.
Radi u vašem pretraživaču. Ono što generiše nikada se ne šalje niti čuva.
Poslednja slaba karika: Reciklaža i upravljanje pristupom
Matematička entropija ne štiti od ljudske greške. Lozinka od 250 bitova gubi svoju vrednost čim procuri, ako se ponovo koristi na više sajtova (napad koji se zove Credential Stuffing) ili ako nije zaštićena drugim faktorom autentifikacije (2FA).
Zlatno pravilo digitalne higijene je da morate zapamtiti samo jednu lozinku: vašu master lozinku od 250 bitova (nasumična fraza lozinke, kao gore). Svi ostali vaši pristupi (banka, društvene mreže, serveri) moraju koristiti jedinstvene nasumične lozinke, generisane posebno za njih.
Za čuvanje svih ovih lozinki koje ne možete da zapamtite koristite menadžer lozinki. Izaberite onaj koji šifruje vaš trezor na vašem uređaju pre sinhronizacije (često se naziva zero-knowledge), po mogućstvu takav koji je otvorenog koda i nezavisno proveravan.
