petak, 27 decembra, 2024
Kako da...?

Kako do sigurnijih šifara

Autor: Petar Simović

Kada pomislimo o privatnosti naših podataka, prvo što nam padne na pamet trebalo bi da je šifra. Zašto? Zato što se u suštini klasično simetrično šifrovanje svodi na šifru koju korisnik unese i podatak na koji se ta šifra primenjuje upotrebom određenog algoritma konačan broj puta. Pogledajmo gde se zapravo danas sve oslanjamo na šifre kako bismo se zaštitili od napadača i očuvali privatnost. Najpre, svi koristimo imejl, onda društvene mreže poput Fejsbuka i Tvitera, zatim, možda smo aktivni i na forumima ili koristimo neku od klaud usluga čuvanja podataka, tu je i pristup našem računaru ili telefonu, bežična (eng. Wi-fi) mreža na koju smo povezani, i tako dalje. Lista može biti opterećujuće dugačka, i morate voditi računa o svim tim šiframa za pristup određenom nalogu.

Situacija u kojoj prosečan korisnik ima više od desetak naloga za koje treba da pamti šifre svakako predstavlja problem i vodi ka korišćenju jedne šifre za sve naloge, ili upotrebi veoma kratkih i jednostavnih šifara. Štaviše, korisnici su često skloni zapisivanju šifara u jednoj nezaštićenoj tekstualnoj datoteci koju, da stvar bude gora, čuvaju na nekom USB-u koji dalje priključuju na druge neproverene računare. Čest je i slučaj da se šifre između korisnika razmenjuju putem nezaštićenih komunikacija kao što su imejlovi, sms poruke, tviter ili fejsbuk direktne poruke, pa i slanjem u obliku tekstualne, ljudski čitljive, datoteke. Neretke su i situacije u kojima administratori ili dizajneri nekog mrežnog servisa ili platforme pogrešno rukuju korisničkim šiframa iz neznanja, nedostatka novca ili vremena. Tako je čest slučaj da se šifre korisnika na nekom sajtu čuvaju u tekstualnoj i ljudski čitljivoj datoteci tzv. pleintekstu (eng. plain text) ili nezaštićenoj bazi podataka, ili se slanje šifre između korisnika i servera ne obavlja preko zaštićene veze tj. ne koristi se SSL.

Šta je sigurna šifra?

Kako bismo odgovorili na ovo pitanje, moramo prvo znati kako se meri sigurnost šifre, tj. moramo uvesti pojam entropije. Entropija je broj bitova koji izražava koliko je šifra jaka poredeći je sa odgovarajućim nizom nasumičnih bitova. Tačna formula je jednostavna i ako entropiju obeležimo sa E uključuje dužinu šifre D i skup/set mogućih karaktera iz koga je šifra odabrana S:

sifre i fraze

Primera radi, ako koristimo samo slova iz azbuke (S=30) za sastavljanje naše šifre, i ako nam je šifra dužine 8 slova/karaktera (D=8), entropija će biti 39,25 (log2(30^8) https://goo.gl/vcAvOM) ili oko 4.9 bita entropije po slovu (ako se koriste samo mala ili samo velika slova). Naravno entropija od 39,25 bita nije dovoljna da zaštiti važne tajne. Preporuka je da u zavisnosti od vrste napada koju napadač izvodi, entropija bude veća (80+ bitova) za oflajn napade i (40+ bitova) za mrežne napade. Razlika je u tome što ukoliko napadač ne može da dođe u posed šifrovanim datotekama ili heširanoj šifri, moraće da pokušava da pogodi vašu šifru direkno na mreži servisa što je sporije i što se lakše uočava i sprečava. Međutim, entropija nije najbolja mera, jer kompleksnost šifre nije uračunata. Tako, na primer, naša šifra od 8 karaktera mogla je biti „lubenica” koja nije kompleksna iako ima sva različita slova. Stvar je u tome da je „lubenica” reč iz rečnika i to je čini neotpornom na napade rečnicima (eng. dictionary attack). Tu dolazimo do još jednog važnog aspekta kada je u pitanju način na koji korisnici sastavljaju svoje šifre, a to je nasumičnost. Šifra „lubenica” nije spoj nasumično odabranih slova azbuke, već ciljano birana reč. Razna istraživanja pokazuju da su ljudi veoma loši u sastavljanju nasumičnih šifara jer sve rade po nekoj logici ili obrascu. Ni računari nisu savršeni izvor nasumičnosti, ali sa ovog aspekta su bolji od ljudi. Zato je važno napomenuti da je entropija dobar pokazatelj sigurnosti šifre ako se karakteri biraju nasumično, a ne ciljano. Ako koristite engleski alfabet prisutan na tastaturama, pored slova koristite i brojeve i specijalne karaktere „0123456789” (10 karaktera) „~`!@#$%^&*()_+-={}|[]\/;’:“/.,?><” (33 karaktera) tj. sve Aski (eng. ASCII) karaktere koji se mogu odštampati. To je ukupno 95 karaktera (26 malih slova, 26 velikih, 33 specijalna karaktera i 10 brojeva). Skup od 95 karaktera vam daje i veću entropiju po karakteru, tj. imate oko 6.5 bita entropije po karakteru iz ovog skupa.

Pored šifara postoje i fraze (eng. passphrase) koje u ovom kontekstu označavaju reči iz rečnika. Naime, umesto da koristimo skup slova iz abuke ili abecede, koristićemo rečnik kao skup poznatih reči. Sigurno se pitate „Reči iz rečnika? A šta je sa napadima rečnika”. Odgovor je zapravo jednostavan. Rečnik ima mnogo veći skup elemenata tj. reči nego što azbuka ima slova, pa je odabir par reči bolji od odabira nekoliko karaktera. Ovaj koncept se zasniva na tome da je lakše upamtiti 4 nepovezane i nasumično izabrane reči iz skupa od 7776 reči nego 8 nasumičnih karaktera iz skupa od 95 (log2(7776^4) = 51; log2(95^8) = 52) za istu entropiju sigurne šifre.

Istaknimo još jednom da je nasumičnost važno svojstvo procesa generisanja sigurnih šifara ili fraza. Entropija kao mera sigurnosti šifre ili fraze je tačnija ako se šifra sastavlja od nasumično biranih karaktera, odnosno fraza od nasumično biranih reči iz određenog skupa. Međutim, nasumičnost je još važnija za odbranu od napada socijalnim inženjerigom (eng. Social Engineering) o kome ste mogli da pročitate u 39. broju. Kako biste izbegli da napadač poznajući vas, vaše navike i interesovanja može lako da pogodi vašu šifru, najbolji način je da izbor šifre ili fraze prepustite nasumičnosti. Sastavljanje sigurne fraze može biti i zanimljivo ili čak ličiti na dečju igru jednostavnom dajsver (eng. Diceware https://goo.gl/oukz5n) metodom. Uzmite listu reči ili rečnik (možete naći i preuzeti sa https://goo.gl/pXBYJL ili https://goo.gl/AABLJE) i jednu kockicu. Zatim bacite pet puta kockicu i zapišite brojeve koje dobitete (na primer ako dobijete 32512 taj broj će odgovarati reči „heat” u listi https://goo.gl/ZUOLQW na strani 14.) Znači pet bacanja kockice vam daje jednu reč, a treba vam najmanje 4 reči za sigurnost fraze od preko 50 bitova entropije.

password_strength Važna napomena je i da zamenjivanje slova „A” sa brojem „4” ili karakterom „@”, ili slovo „O” sa brojem „0” ili karakterom „*” neće unaprediti sigurnost šifre, već će vam samo dati lažan osećaj sigurnosti. Kada napadač pokuša da probije neku šifru, on naravno zna za zamene ove vrste i napraviće program koji će reči iz rečnika probati i zamenom određenih karaktera za brojeve. Na primer šifra „MyPassword123” sa zamenama može da izgleda „MyP@SSw0rd123”. Da stvari budu gore, po neiskusne korisnike, kada ovakvu šifru za zamenjenim karakterima isprobate u nekim od poznatih onlajn merača sigurnih šifara, dobićete zadovoljavajuće ili čak odlične ocene jačine vaše šifre (rezultate možete videti na: http://imgur.com/a/mjV4I). Dok za istu šifru, drugi merači sigurnosti šifara daju realnije rezultate (rezulate možete videti na: http://imgur.com/a/Yla5t). Nisu svi merači sigurnosti šifara isti.

dropboxKada smo već kod onlajn merača sigurnosti šifre, budite veoma oprezni. Iako većina tvrdi da ne prikupljaju vaše šifre koje proveravate na tim sajtovima, takvu tvrdnju je teško proveriti. Zato savetujemo da sami nasumično generišete i proverite sigurnost vaše šifre bez korišćenja onlajn sajtova i programa. Ukoliko vas mrzi da ručno računate entropiju vaše šifre, možete posetiti https://goo.gl/9OyNMY sajt koji vam neće tražiti da unesete vašu šifru, već podatke o njoj (da li koristite slova, brojeve specijalne karaktere i koje je dužine šifra).

passwordstrengthcalculator

Osim mrežnih merača sigurnosti i jačine šifara, na netu se mogu lako naći i gomile pravih korisničkih šifara koje su pribavljene u raznim neovlašćenim pristupima sajtovima i njihovim bazama podataka. Jedna takva baza podataka sa šiframa je javno dostupna na githabu https://goo.gl/VCbGj9. A za više o najkorišćenijim šifrma posetite http://wpengine.com/unmasked/.

Kada pravite šifre ili fraze, trudite se da imaju 80 ili više bitova entropije, da koristite i mala i velika slova, brojeve i specijalne karaktere nasumično odabrane. Fraze birajte isto nasumično iz nekog rečnika, odaberite da fraza ima najmanje četiri nasumične reči. Za svaki nalog pravite novu šifru/frazu, nikako nemojte upotrebljavati jednu istu šifru/frazu za više naloga, novi nalog totalno nova nezavisna šifra/fraza. Koristite neki menadžer šifara (eng. password manager) otvorenog koda. Nikako nemojte zapisivati šifre/fraze na papir, ili ih čuvati u ljudski čitljivoj tekstualnoj datoteci.

Kako sigurno čuvati šifre?

Menadžeri šifara

Prosečan internet korisnik ima više od 10 različitih naloga (zavisno od istraživanja prosečan broj se kreće od 17 do 27 https://goo.gl/oZ4B14, https://goo.gl/tzFzUQ). Taj broj tačnih šifara nije lako pamtiti, a pogotovo može biti teško zapamtiti koja šifra je za koji nalog. Da bi se običnom korisniku olakšao svakodnevni život, u sajber svetu postoje menadžeri šifara (eng. password manager). Ono što je još važnije, među njima postoje i oni koji su otvorenog koda. Menadžeri šifara će za vaš nalog generisati nasumičnu šifru/frazu željene dužine i sigurnosti, čuvati je u šifrovanoj bazi sa ostalim nalozima. Baza svih vaših naloga se šifruje jednom šifrom koju morate zapamtiti. Prednost menadžera šifara je u tome što pamtite jednu šifru umesto za svaki nalog posebno. Preporučujemo Kipasiks (eng. KeePassX, https://www.keepassx.org/) ili Kipas (eng. KeePass, http://keepass.info/) koji postoji za Mek o.s. (eng. Mac OS), Vindouz (eng. Windows) i linuks, a postoji i Kipasdroid (eng. KeePassDroid, http://www.keepassdroid.com/) fork Kipas-a za android. Za ostale menadžere šifara možete posetiti stranice: https://goo.gl/XwKkJR ili našu skromnu listu manje poznati menadžera: https://goo.gl/pPUcjj). Postoje i grupni menadžeri šifara kao što su Timpas (eng. TeamPass, http://teampass.net/) i Pasbolt (eng. Passbolt, https://www.passbolt.com/) Kada koristite bilo koji menadžer šifara, napravite bekap šifrovane baze na nekom spoljnom sigurnom medijumu koji nećete davati svima.

keepassx_logos

Postoje i mrežni menadžeri šifara koji šifrovanu bazu šifara sinhronizuju sa nekim mrežnim serverom. Na taj način ukoliko izgubite svoj uređaj na kome ste držali šifre, i dalje možete pristupiti vašim šiframa skladištenim na serveru. Redundansa svih vaših šifara je zaista neophodna, pogotovo ako niste dobri u pamćenju šifara. Ovo ipak može predstavljati rizik po sigurnost vaših šifara jer pored sigurnosti vašeg uređaja, od velike važnosti je i način komunikacije sa serverom, sama bezbednost servera, kao i jačina šifre kojom ste šifrovali bazu šifara pre slanja na server. Takav je recimo Enkripter (eng. Encryptr, https://goo.gl/HdaeQR).

Mane menadžera šifara

Eventualne mane korišćenja menadžera šifara predstavlja centralizovano mesto koje sadrži sve vaše šifre, pa time predstavlja metu eventualnih napadača/hakera. Zatim pravljenje rezervne kopije i čuvanje iste na dovoljno bezbednom mestu, kao i eventualni propust u samom programu, može imati negativan efekat na sigurnost korisnikovih šifara. Napomenimo i to da je od velikog značaja koji kriptografski algoritmi se koriste za šifrovanje baze šifara unutar menadžera, kao i koja se heš (eng. hash) funkcija koristi za čuvanje glavne šifre. Jer nisu svi kriptografski algoritmi sigurni (RC4 i DES, https://goo.gl/V8qD3h), kao što ni sve heš funkcije nisu sigurne (MD2 i MD4 i MD5, RIPEMD, https://goo.gl/LKzsDI).

Alternative menadžerima šifara

Da li morate da čuvate šifre uopšte? Da li postoji način da pamtite samo jednu sigurnu šifru i da na osnovu nje kreirate ostale, bez skladištenja bilo koje šifre na bilo kom računaru ili uređaju? Ovako nešto je zapravo moguće, štaviše veoma prosto. I ako ste pomislili da na jednu šifru samo nadovezujete po neki dodatni karakter (primer: tajna_šifra123, tajna_šifra1234), niste pogodili, ali bili ste blizu.

Koncept je sledeći:

  1. Sastavite veoma dobru šifru ili frazu sa najmanje 80 bitova entropije (primer šifre: p:<(ZAS2O#PM ili fraze: dim livada mačka sir crveno prozor )
  2. Odredite ime aplikacije ili sajta za koji sastavljate šifru (primer za sajt libre.lugons.org).
  3. Odredite heš algoritme koje koristite za sastavljanje i eventualno dužinu šifre (primer koristićemo base64, sha1>, i sha256)

Sada možete generisati šifru iz terminala po principu:

echo “šifra/fraza:ime_aplikacije/sajta” | base64 | sha1sum | sha256sum

echo “ZAS2O#PM:libre.lugons.org” | base64 | sha1sum | sha256sum

ili

echo “dim livada mačka sir crveno prozor:libre.lugons.org” | base64 | sha1sum | sha256sum

Što će vam u prvom slučaju dati 29a6eac9c1a6800a886fdbdb7f8a2a36b4fc55994728ab9b37bdb01a7f1da107, a u drugom 29a6eac9c1a6800a886fdbdb7f8a2a36b4fc55994728ab9b37bdb01a7f1da107. Ovaj niz od 64 heksadekadna karaktera možete jednostavno smanjiti na željenu dužinu dodajući na kraj prethodnih komandi tail -c 14 ili head -c 10 (što će prikazati poslednjih 10 ili prvih 10 hedksadekadnih karaktera).

echo “ZAS2O#PM:libre.lugons.org” | base64 | sha1sum | sha256sum | head -c 10

Programi koji ovo rade postoje i to su Master pasvord (eng. Master Password, https://goo.gl/R6t2BIGPLv3), pvdheš (eng. PwdHash, https://goo.gl/jagYyt) i SuperGenPas (eng. SuperGenPass, https://goo.gl/4PtFO0GPLv2). Svi su otvorenog koda, a Master pasvord i SuperGenPas su dostupni i kao android i Ajos (eng. IOS), veb-aplikacije, C program, i druge platforme (https://goo.gl/rQTCPX).

zerostoragepassword-managers

Ovaj sistem generisanja i čuvanja šifara ima prednosti kada je reč o skladištenju šifara, jer ono ne postoji. Ako vam neko ukrade računar, na njemu se ne nalaze vaše šifre uopšte. Ukoliko neko sazna šifru za jedan nalog, pomoću nje ne može saznati ostale šifre, ovako generisane, kao ni glavnu šifru od koje se sve ostale prave sve dok koristite sigurne heš algoritme. Napomena je da pogledate koji su heš algoritmi sigurni (https://goo.gl/LKzsDI), kao i da ne koristite samo base64 kodiranje, navedeno u prethodnom primeru, (ako ne znate šta radite) jer base64 nije heš funkcija i lako se može dekodirati . U navedenom primeru base64 se ipak koristi, ali posle njega se primenjuju dve dovoljno sigurne i ireverzibilne heš funkcije. Savet je da za heš funkcije koristite SHA256, SHA512, prihvatljive su i SHA1, RIPEMD160 i Virpul (eng. Whirpool) dostupni unutar OpenSSL-a, a ako ste pravi paranoik koristite BLAKE2 (https://blake2.net/), ali po cenu udobnosti i prenosivosti. Vrlo je važno odabrati dobru glavnu šifru, kao i sigurne heš algoritme, jer od njih zavisi sigurnost svih vaših šifara generisanih na ovaj način. Naravno, postoje određene mane uglavnom vezane za menjanje već postojećih šifara, jer zahteva pamćenje još jedanog podatka (da korisnik pamti i broj koliko puta je promenio šifru za određeni sajt) što može biti veoma nezgodno sa porastom broja naloga koji aktivno koristite. U tom slučaju bi algoritam izgledao otprilike ovako: šifra/fraza:redni_broj:ime_aplikacije/sajta” | base64 | sha1sum | sha256sum. Druga mana je što ćete morati brzo promeniti sve šifre ukoliko napadač sazna vašu glavnu šifru. Primetite da način na koji generišete šifre nije tajna, i napadaču neće značiti mnogo informacija koje heš algoritme koristite dok god su oni sigurni, i dok god je vaša glavna šifra dovoljno komplikovana.

Generatori šifara i fraza

Pomenućemo da za linuks postoje veoma korisni CLI programi poput pvgen-a (eng. pwgen) koji vam pomaže da generišete nasumične šifre (koga kada instalirate možete koristiti recimo ovako: pwgen -sy 20 15 i koji će vam ponuditi 15 različitih, nezavisnih i nasumičnih šifara, gde je svaka šifra dužine 20 iz skupa od 95 karaktera). Tu je i pasvord generator (eng. password-generator, https://goo.gl/Suigwo) koji može generisati šifre koje se lako pamte password-generator -l 20 ili jednostavnije, bez instaliranja dodatnih programa openssl rand -base64 20 ili


Za generisanje fraza možete koristiti Iks-kej-Si-di-pas (eng. xkcdpass, https://goo.gl/d8TJrB) i dobiti lako pamtljive fraze poput ove:

Yeti permutes kilobyte visa string

Zaključak

Kako ćete generisati i gde ćete čuvati šifre je svakako na vama. Upotreba sigurnih šifara nije teška, i programi poput Kipas-a i SuperGenPas-a to olakšavaju maksimalno. Svakako se isplati malo se potruditi oko svojih šifara, ne zato što nešto krijemo, već da nas ne bi bolela glava kada neki haker provali tajnu šifru password1234.

Security Blanket, machine quilted, digitally printed cotton fabric, 63.5"x39"
Password Security Blanket – Lorrie Faith Cranor – https://goo.gl/JoVyCd