
Sigurne šifre su osnova bezbednosti i ujedno i najslabija karika u gotovo svakom sistemu, nažalost veliki ljudi koristi slabe šifre, često i ne shvatajući koliko lako ta šifra može da se razbije. Ako vas interesuje samo kako kreirati bezbedne šifre, a mrzi vas da čitate sve ovo skrolujte odmah naniže na pasus “Bezbedne šifre“.
Tehnikalije: da bi se korisnik prijavio na neki server ili otvorio šifrovani fajl, on očigledno mora da unese šifru, sistem onda mora tu šifru da uporedi sa onom iz svoje baze da bi na taj način identifikovao korisnika. Bilo bi jako nebezbedno ako bi ta šifra bila negde zapisana, pa zbog toga (bar oni ozbiljniji) sistemi koriste tzv. hash funkcije, tj. jednosmernu enkripciju (primeri:ntlm, md5, sha1, whirlpool…). Izlazna veličina neke hash funkcije je niz karaktera koji ima uvek istu dužinu bez obzira na ulaznu veličinu. Ako se promeni makar jedan bajt ulazne velicine, izlazna će biti skroz drugačija. Iz izlazne veličine ne može direktno da se dobije ulazna. Kada kreirate šifru sistem je propušta kroz svoju hash funkciju i zapisuje izlaz. Kada sledići put otkucate šifru, sistem je provlači kroz istu funkciju i upoređuje izlaz. Izlazna veličine može da bude ista samo ako je otkucana odgovarajuća šifra.
Šifra i dalje može da se provali, jednostavno treba hash-ovati sve kombinacije dok se ne dobije prava. Md5 recimo (jedna od najbržih hash funkcija, sporije su bezbednije) može da obradi oko 5 miliona kombinacija u sekundi na procesoru od 2.4GHz (Jednojezgarni Celeron). Postoje još i kolekcije svih mogućih hash vrednosti za odredjeni skup karaktera (rainbow tables) kojima se sifre provaljuju gotovo trenutno, brzina je dobijena na račun prostora na hard disku, tablice za md5 za šifre dužine do deset karaktera zauzimaju 80GB.
Matematika: broj kombinacija šifre se računa na sledeći način: broj karaktera (26 malih slova, 26 velikih, 10 brojeva, 30 specijalnih karaktera + razmak) stepenovan dužinom. Šifra dužine 6 karaktera koju čine samo brojevi ima milion kombinacija, šifra iste dužine ali sa svim mogućim karakterima ima 93 na 6 = 647 milijardi kombinacija. Iz ovoga se jasno vidi žašto je važno koristi velika, mala slova, brojeve i spec. karaktere. Pošto ne znate uvek koji algoritam se koristi i koliko je on brz bezbedno je pretpostaviti da napadač moče da isproba 2 miliona kombinacija po gigahercu jednojezgarnog Intelovog procesora u sekundi, tj. da prosečan kompjuter može da isproba 10 miliona kombinacija u sekundi (gruba procena), tj. oko 900 milijardi dnevno. Sve ovo su jako grube procene pod pretpostavkom da napadač nema rainbow tablice na raspolaganju.
Nesigurne šifre:
Windows: Windows sistemi koriste NT hash (osim ako nije uključena opcija “Store passwords using reversible encryption” što je jako nebezbedno). Napadi mogu u principu da se podele na dva tipa. Prvi nema veze sa šiframa, i sastoji se u bootovanju nekog drugog sistema i resetovanju (brisanju) šifre i/ili neovlašćenom pristupu fajlovima, jedina zaštita od ovakvih napada je fizičko obezbedjivanje kompjutera. Fajlovi kriptovani EFS-om (zeleni fajlovi) će i dalje biti (relativno) bezbedni, kao i šifre snimljene u Internet Exploreru. Drugi tip je razbijanje, tj. otkrivanje same šifre. Potencijalni napadač ima izbor od nekoliko desetina, ako ne i stotina programa ove namene (Cain&Abel, fgdump, ophrack…) i nekoliko internet sajtova koji besplatno nude pretragu rainbow tablica. Šifre kraće od 7-8 karaktera padaju gotovo trenutno, a sve kraće od 10 karaktera je nebezbedno. Bezbedna šifra bi morala da ima preko 12 karaktera.
Internet: Većina web sajtova koristi md5, bezbedniji sha1 i dalje nije u širokoj upotrebi. Glavna opasnot preti od hakovanja baze podataka, kada napadač dolazi do hash vrednosti šifara. Ovde važi isto pravilo kao i kod windowsa, manje od 8 karaktera je smešno, manje od 10 nebezbedno, više od 12 solidno. Ostali metodi napada, kao što je recimo pokušavanje logovanja na sajt sa svim mogućim šiframa uglavnom ne rade, jer gotovo svi sistemi su napravljeni tako da blokiraju naloge na određeno vreme ako je uneta pogrešna šifra nekoliko puta, mada ima i onih koji nemaju ovakvu zaštitu (da li se neko seća hakovanja Obaminog naloga na Twitteru?).
Uopšteno, dužina nije jedini bitan parametar, mnoge šifre padaju zahvaljujući napadu po rečniku (trapav prevod izraza Dictionary attack). Ljudi koriste reči iz rečnika kao šifre, datume, imena i sl. Sve ove stvari imaju previše mali broj kombinacija.
Bezbedne šifre:
Pravilo 1) Šifra mora da sadrži sve kategorije karaktera, mala i velika slova, brojeve i specijalne znakove. Mora da ima bar po jedan karakter iz svake kategorije.
Pravilo 2) Šifra ne sme da se poklapa sa rečima u rečniku (bez obzira na jezik), imenima i stvarima koje mogu da upućuju na vas (“vatrogasniKamion” bi bila jako loša šifra ako ste vatrogasac).
Pravilo 3) Ako želite da se zaštitite od familije, prijatelja i ostalih “kompjuterskih laika” dužina šifre treba da bude 10-12 karaktera, moćnih kompanija ili pojedinaca 15-20, državnih službi 25+
Pravilo 4) Smislite šifru koju možete lako da zapamtite, nemojte da je zapisujete. Ceduljice su nesigurne, kao i tekstualni i sl. fajlovi u kompjuteru. Ako vam je potreban način za čuvanje velikog broja šifara instalirajte Password Safe.
Pravilo 5) Nemojte jednu istu sifru da koristite na nekoliko mesta.
Pravilo 6) Bezbednost sifre opada kako vreme prolazi, zato je neophodno periodicno menjati sifre.
Sva pravila su podjednako važna i nijedno ne sme da se ignoriše.
Primeri: lustracija – šifra je u rečniku koji sadrži nekoliko stotina hiljada reči, biće provaljena za manje od minuta. lusTrac1ja!! – 12 karaktera, 3.677e23 kombinacija, solidna jačina.
01.I.1970. – naizgled dobra, ima dužinu i sve grupe karaktera, ali pošto je u pitanju datum napadač ima da isproba opseg od recimo 50 godina (50*365=18250) i recimo 50 formata datuma, što čini manje od milion kombinacija, ako je u pitanju md5 za provaljivanje je potrebno manje od sekunde.
Wartburg limuzina ima pet brzina – 33 karaktera, naizgled super jaka šifra, ali u stvari ima samo osrednju jačinu jer su ovo reči pesme. Bezbedni ste od običnih ljudi i malo naprednijih napadača, ali šifra i dalje može da se razbije. wartburg l1muzina_ima p3T brz!!na – ako bi imao nešto da krijem od CIE koristio bih ovakvu šifru za TrueCrypt sef.
Dobre šifre se najlakše dobijaju kombinacijom nekoliko reči i zamenom nekog slova brojem i/ili specijalnim znakom, ili dodavanjem brojeva i znakova na spojene reči, zavisi šta vam više odgovara. Još jače šifre se dobijaju smišljanjem fraza (passphrase), ali treba povesti računa da to nije fraza iz rečnika, pesme, knjige… tj. da nema nikakav smisao (Zeleno n3bo sa giban!com).
Nekoliko dobrih primera: bio5kopPl4tno#, sivioBlaci%87, zasto^sUgUskesv1nJe!!??
Možda ste primetili da nisam koristio srpska slova ni u jednoj šifri, možete da ih koristite, ali je ipak dobra praksa izbegavati ih jer nisu podržana na svim sistemima.
Zaobilazne metode: Jake šifre ne mogu da se razbiju direktno, ali postoji mnogo zaobilaznih načina: pendrek metoda, keyloggeri, špijunske kamerice… ali to izlazi iz okvira ovoh posta.