Objavljeno:

Gesla in varna hramba gesel (mala šola informacijske varnosti, 1. del)

S tem prispevkom začenjamo serijo prispevkov na temo “mala šola informacijske varnosti”. V prispevkih bomo obravnavali različne praktične vidike varovanja informacij in informacijskih sistemov s pomočjo brezplačnih in odprtokodnih aplikacij. Obravnavali bomo teme kot so šifriranje podatkov in elektronske pošte, trajno brisanje podatkov, omejevanje dostopov do sistemov, uporaba VPN omrežij, uporaba anonimizacijskih sistemov, itd. Poudarek bo sicer na uporabi naštetih varnostnih elementov v operacijskem sistemu Ubuntu Linux, vendar je večino rešitev, ki jih bomo opisali mogoče uporabiti tudi v okoljih Windows in MacOS.

 

Geslo je osnovni in najpogosteje uporabljan zaščitni mehanizem, zato morajo biti gesla praviloma dovolj kompleksna in dovolj dolga, da zagotavljajo željeni nivo varnosti. Podobni zaščitn mehanizmi kot gesla so tudi šifrirni ključi, ki so v bistvu daljši nizi podatkov (pogosto gre za naključno generirane podatke), shranjeni v datoteki (npr. digitalnem potrdilu) ali posebnih napravah (tim. strojni žetoni).

Težava pri geslih je, da si je kompleksna gesla težko zapomniti, zato pri oblikovanju gesel trčimo ob dilemo ali si želimo večjo varnost ali pa enostavnejšo uporabo. V nadaljevanju si bomo najprej pogledali kako si lahko oblikujemo ustrezna (dovolj varna) gesla in katere so najpogostejše napake pri oblikovanju gesel, nato pa kako na enostaven a zanesljiv in varen način tako oblikovana gesla shraniti ter zavarovati.

Gesla

Pri oblikovanju gesel lahko uporabimo več metod, pomembno pa je, da je geslo čim daljše in čim bolj kompleksno (mešanica črk in številk, po možnosti tudi mešanica velikih in malih črk ter številk). Govorimo seveda o pomembnih geslih, npr. geslu za dostop do šifriranih podatkov, geslu za dostop do e-pošte, itd. Na tem mestu lahko omenimo še tim. enkratna gesla – gre za gesla, ki jih lahko uporabimo samo enkrat, nato pa potečejo in niso več veljavna.

Pri oblikovanju gesel je potrebno paziti na dejstvo, da pri vnašanju gesel lahko naletimo na različne lokalizacije sistemov oziroma na različne razporede tipkovnic. Angleške tipkovnice tako ne vsebujejo slovenskih znakov (“čšž”), nekatere črke so zamenjane (npr, “z” in “y”), itd. Ob zagonu sistema operacijski sistem še nima nastavljenega privzetega jezika, zato takrat praviloma velja angleška razporeditev tipkovnice; vnos gesla, ki vsebuje črko “z” bo tako drugačen ob zagonu sistema kot kasneje, ko je sistem že aktiven.

Pri uporabi gesel se je potrebno zavedati tudi nekaterih varnostnih omejitev gesel, npr. možnosti skrbnika sistema, da geslo resetira ali obnovi (poznamo posebne sheme obnavljanja (pozabljenih) gesel (ang. key escrow)), možnosti (forenzičnega) dostopa do podatkov brez gesla ali možnost uporabe oz. obstoja rezervnih gesel (ang. master key).

V nekaterih primerih se za dostop do sistema uporabljajo tim. “biometrična gesla”. A potrebno se je zavedati, da je uporaba biometričnih parametrov za geslo izredno problematična, saj biometričnih parametrov ni mogoče zamenjati oziroma preklicati, znani pa so tudi primeri ponarejanja biometričnih parametrov z razmeroma preprosto tehnologijo (npr. ponarejanje prstnih odtisov). Pomembno je namreč, da indentiteta (“Kdo si?”) in avtentikacija (“Kako lahko to dokažeš?”) uporabnika ostaneta ločeni, kar pa pri uporabi biometričnih gesel ne velja.

Znan primer uporabe neustreznega gesla so bila gesla za izstrelitev jedrskih konic Minuteman. Ameriški obrambni minister Robert McNamara je v 1960-tih letih, zaskrbljen zaradi jedrske varnosti pri izstrelitvah jedrskih konic uvedel uporabo posebnih ključavnic s tipkovnico. Strateško zračno poveljstvo v Omahi pa je geslo na ključavnicah nastavilo na “00000000”, saj so se bali morebitnih zamud pri iskanju pravega gesla v primeru vojne. Do zlorab na srečo ni prišlo, a primer jasno kaže kako nesmiselna je uporaba neustreznih gesel.

Oblikovanje varnega gesla

V nadaljevanju si bomo ogledali tri možne metode za oblikovanje gesla, pomembno pa je, da ne uporabljamo istih ali podobnih gesel za različne storitve. Za začetek pa se je tudi smiselno vprašati kako pomembno pravzaprav sploh je dano geslo. Če gre za neko geslo, ki ga zahteva spletna stran npr. za prenos neke datoteke in gesla oziroma storitve ne bomo nikoli več uporabili, je seveda nesmiselno ustvarjanje zelo varnega gesla. Povsem drugače je pri geslih za dostop do pomembnih internetnih storitev, šifriranih podatkov ali pri dostopnih geslih za naše uporabniške račune.

Pri prvi metodi geslo sestavimo iz stavka, oziroma je geslo enako stavku. Npr. “To je moje geslo”. Na ta način ni težko ustvariti dovolj dolgega gesla. Izmislimo si lahko tudi neko (nesmiselno) zaporedje besed, npr. “gore Morje hrib Dolina”. Smiselna je tudi uporaba številk in drugih znakov, kot rečeno pa se je potrebno vprašati ali bo geslo kdaj potrebno vnesti na tipkovnici z drugačno razporeditvijo znakov, kot jo uporabljamo pri ustvarjanju gesla.

Pri drugi metodi določene črke v besedah gesla zamenjamo s številkami. Npr, “O” zamenjamo z nič, “L” z ena, “E” z tri, itd. Primer: “t0j3m0j3g3s10”.

Pri tretji metodi pa geslo sestavimo iz prve (ali druge, ali zadnje,…) črke daljšega besedila. Tako iz “an ban pet podgan” nastane “abpp”. Seveda so možne še druge kombinacije (npr. kombinacija besed in števil), pomembno je le, da je geslo dovolj dolgo in dovolj kompleksno, da ga ni mogoče uganiti.

Velja si tudi zapomniti, da morajo biti gesla med seboj dovolj različna. Tako na primer ni smiselno za geslo uporabiti stavkov kot npr. “to je geslo za e-pošto”, “to je geslo za banko”, itd. Napadalec, ki mu uspe razkriti vsebino enega gesla (npr. na nekem forumu) namreč lahko hitro ugane sistem po katerem so gesla sestavljena in tako ugane še vsa ostala.

Znan je primer varnostnega raziskovalca Dana Kaminskya, ki so mu napadalci leta 2009 vdrli v računalnik in kasneje javno razkrili njegova gesla. Kaminsky je imel gesla sestavljena po sistemu “fuck.hackers”, “fuck.omg”, “fuck.vps”, “fuck.mysql”, itd. Ko so napadalci enkrat odkrili vzorec sestavljanja gesel, je bilo ugibanje preostalih gesel bistveno lažje.

Skratka, gesla za dostop do šifriranih podatkov (npr. šifriranih diskov,…) morajo biti bistveno drugačna od gesel za dostop do spletnih storitev ter drugih sistemov.

Dolžina gesla

Dolžina gesla je pomembna zato, ker prekratko geslo omogoča učinkovito izvedbo napada z metodo grobe sile (ang. brute force attack – gre za ugibanje vseh možnih kombinacij črk in številk) ali pa napada s slovarjem (ang. dicionary attack – gre za ugibanje gesel na podlagi besed iz slovarja). Na spletu je mogoče najti številne programe, ki omogočajo “obnavljanje” “pozabljenih” gesel, npr. Cain & Abel, L0pht crack (LC5), Advanced PDF Recovery, Password Recovery, itd. če omenimo le nekatere. In ti programi so pri ugibanju dovolj kratkih gesel na sodobnih računalnikih izredno učinkoviti.

Zlasti tudi zato, ker si je pri razbijanju gesel mogoče pomagati s sodobnimi grafičnimi karticami (tim. GPU  – Graphics Processing Unit). Grafične kartice namreč razbijanje gesel pospešijo za 50 do 100-krat v primerjavi z običajnimi računalniki, razbijanje gesel na GPU pa je mogoče tudi paralelizirati (uporabiti več grafičnih kartic, ki gesla razbijajo vzporedno). Sodobne grafične kartice tako zmorejo preveriti 2,8 milijarde gesel na sekundo! Kako večja dolžina in višja stopnja kompleksnosti gesla vpliva na čas njegovega razbijanja, si je mogoče ogledati na spletni strani Lockdown.co.uk – The Home Computer Security Centre, zavedati pa se je potrebno, da z razvojem računalnikov čas za uspešno razbitje nekega gesla samo pada.

Kot rečeno naj bi bilo geslo čim daljše. Vprašanje je, kakšna je minimalna smiselna dolžina? Odgovor je odvisen tudi od tega za kakšno geslo gre.

Če gre za geslo za dostop do nekega sistema, ki ima časovno omejitev za ponovne poskuse vnosa gesla (npr. po napačno vnesenem geslu je potrebno počakati nekaj časa, ta čas se lahko tudi povečuje za vsak naslednji napačen vnos), ali če je število poizkusov vnosa gesla omejeno (npr. PIN kodo pri mobilni telefoniji je mogoče poizkusiti vnesti samo trikrat, nato se SIM kartica zaklene), je geslo lahko krajše. Če pa gre za geslo za dostop do šifriranih podatkov, ki jih bo napadalec, ki jih fizično pridobi, lahko poizkušal dešifrirati neskončno mnogokrat, na hitrem računalniku, pa mora biti geslo seveda daljše.

Načeloma lahko rečemo, da v slednjem primeru potrebujemo vsaj 64 bitov entropije (entropija je mera za nedoločenost sistema sporočil). 64 bitov entropije zaenkrat (v letu 2012) načeloma onemogoča ugibanje z grobo silo (tim. brute force guessing). Še enkrat – 64-bitni ključi so v letu 2012 še varni pred napadi z grobo silo, a čez 5 ali 10 let temu skoraj zagotovo ne bo več tako. Če je geslo sestavljeno iz polnega ASCII nabora znakov, je torej geslo lahko dolgo (vsaj) 8 naključnih znakov. A pozor – govorimo o polnem ASCII naboru znakov.

Če za posamezne znake iz polnega ASCII nabora velja, da vsebujejo 8 bitov entropije, pa za znake iz “običajne” ASCII abecede (velike in male črke, številke, ločila, itd.) velja, da imajo le približno okrog 5 bitov entropije. Zato za dosego 64 bitov entropije potrebujemo vsaj 13 znakov dolgo geslo (64/5 = 12,8). Če pa za geslo uporabimo besedilo iz naravnega jezika, pa mora biti geslo še daljše, saj je entropija naravnega jezika zaradi slovničnih pravil in pravil besedotvorja še nižja.

Angleško besedilo ima po nekaterih ocenah v povprečju približno 1,2 bita entropije na znak (bolj konzervatvna ocena) iz česar sledi, da za visoko stopnjo varnosti potrebujemo vsaj 54 znakov dolgo geslo. Po Shannonovi oceni iz leta 1951, naj bi imel angleški jezik v povprečju sicer med 0,6 in 1,3 bita entropije na znak (C. Shannon. Prediction and entropy of printed English. Bell Systems Technical Journal, 30:50-64, 1951.), a so to oceno kasneje popravili. Po oceni Thomasa M. Coverja in Rogerja C. Kinga naj bi imel angleški jezik v povprečju 1,25 bita entropije na znak (Cover and R. King. A convergent gambling estimate of the entropy of English. IEEE Transactions on Information Theory, 24(4):413-421, 1978.). Druge ocene so pokazale vrednosti okrog 1,46 oziroma več (do 2,0). Glede na to bi torej moralo biti geslo v angleškem jeziku dolgo med 32 in54 znakov.

Stopnjo entropije slovenskih leposlovnih besedil je pri nas ocenil Primož Jakopin. V leta 2002 izdani knjigi Entropija v slovenskih leposlovnih besedilih je ocenil, da je povprečna entropija slovenskih leposlovnih besedil 2,2 bita na znak. Iz tega sledi, da mora biti geslo v slovenskem jeziku dolgo vsaj 30 znakov.

Kakšna je smiselna dolžina gesla za dano geslo se seveda odloči vsakdo sam, glede na svoje izkušnje pa za pomembnejša gesla vsekakor priporočam dolžino vsaj nad 20 znakov, še raje pa nad 40 znakov. V nekaterih okoljih zakoreninjena praksa, da mora biti geslo dolgo vsaj 8 znakov je popolnoma zgrešena, aplikacije, ki imajo celo omejitev največje dolžine gesla, pa so varnostno škodljive in bi jih bilo potrebno čim prej posodobiti.

Tipične napake pri uporabi gesel

Tipične napake pri uporabi dovolj dolgih in kompleksnih gesel je njihov neustrezna hramba (npr. na listkih na monitorju ali pod tipkovnico) ter uporaba istih gesel na različnih sistemih (če napadalec uspe vdreti v en sistem in ukrasti slabo zaščiteno geslo bo dobil dostop tudi do bolj zaščitenih sistemov). Kot poudarjeno, morajo biti gesla za dostop do šifriranih podatkov bistveno drugačna od gesel za dostop do spletnih storitev ter drugih sistemov.

Problematični so tudi nekateri sistemi obnavljanja gesel, npr. avtentikacija z znanim podatkom (tipičen primer so tim“varnostna vprašanja”, ki omogočajo obnovo gesla, npr. “ime vašega psa”).

Več raziskav je pokazalo, da je zelo učinkovito tudi ugibanje (neustreznih) gesel, zato ne moremo dovolj poudariti kako pomembno je uporabljati ustrezna gesla.

Analize odtujenih gesel (npr. raziskava iz leta 2006), ki so kasneje zaokrožila po spletu so pokazale, da so najbolj pogosta gesla (v svetovnem merilu) npr. password1, abc123, password, qwerty1, fuckyou, 123abc, iloveyou1, itd.. Raziskave so tudi pokazale, da 1000 korenov določenih besed (npr. “letmein”, “temp”, itd) v kombinaciji s 100 dodatki (“1”, “abc”,…) obnovi okrog 24% vseh gesel, z upoštevanjem osebnih podatkov, datumov rojstva, itd., pa je mogoče v mesecu dni uganiti kar dve tretjini vseh gesel.

Res je sicer, da se vzorci oblikovanja gesel s časom spreminjajo, vendar je iz zapisanega mogoče razbrati tipične napake pri oblikovanju gesel.

In seveda, pogosta napaka je tudi nespreminjanje gesla. Geslo, za katerega sumimo, da je bilo zlorabljeno je potrebno takoj spremeniti, priporočljivo pa je tudi periodično spreminjanje vseh gesel.

KeePassX in varna hramba gesel

Kot smo torej videli, je prvi korak do večje varnosti ustrezno oblikovanje gesel. Ko pa taka gesla imamo, trčimo na problem kako si taka gesla shraniti na način, da jih ne pozabimo oziroma, da se do njih zaradi neustrezne hrambe ne uspe dokopati napadalec.

Na srečo je problem rešljiv z nekaj samodiscipline ter uporabo ustrezne tehnologije – aplikacije, ki služi kot shramba vseh naših gesel, digitalnih potrdil in šifrirnih ključev. V nadaljevanju so bomo ogledali odprtokodno in brezplačno rešitev KeePassX.

KeePassX je program, ki omogoča varno hrambo vseh gesel in digitalnih potrdil uporabnika na enem mestu. Program nam omogoča, da svoja gesla vpišemo v posebno šifrirano datoteko, zraven pa lahko priložimo tudi datoteke (npr. datoteke z digitalnimi potrdili ali druge šifrirne ključe). Ta datoteka tako služi kot shramba naših gesel, zaščitena pa je z enotnim geslom.

Program je na voljo za okolja Linux, Windows in MacOS in je brezplačen. Za okolje Windows je na voljo za prenos na spletišču http://keepass.info, v Ubuntu Linuxu pa ga namestimo s pomočjo programskega paketa “keepassx”.

Po namestitvi v Ubuntu sistem program zaženemo preko zaganjalnika: pritisnemo tim. “Windows tipko” na tipkovnici in odpre se okno, kamor vpišemo “keepass”, v razdelku “Programi” pa se pojavi ikona programa KeePassX. Program zaženemo s klikom na to ikono.

Zaganjanje KeePassX v Ubuntu Linuxu.

Zaganjanje KeePassX v Ubuntu Linuxu.

V programu lahko ustvarimo nove shrambe gesel ali odpiramo obstoječe. Privzeto program ponudi odpiranje zadnje uporabljene shrambe gesel (razen seveda ob prvem zagonu) – čisto na vrhu okna je izpisano ime (in lokacija) datoteke, ki služi kot shramba naših gesel in ki jo program skuša odpreti.

Dostop do shrambe z gesli lahko zaščitimo z geslom, datoteko s ključem (gre za (poljubno) datoteko, ki je uporabljena kot šifrirni ključ za odklep shrambe gesel) oziroma kombinacijo obojega. Seveda ni odveč poudarjati, da mora biti geslo, s katerim zaklenemo shrambo naših gesel prav zares varno.

Odpiranje shrambe gesel s pomočjo gesla te shrambe.

Odpiranje shrambe gesel s pomočjo gesla te shrambe.

Če želimo odpreti drugo shrambo z gesli kot to, ki nam jo je program ponudil, namesto vnosa gesla pritisnemo “Cancel”, odpre se “prazen” program, nato pa s pomočjo menija (File – Open Database) ali tipkovnične bližnjice (Ctrl-O) oziroma klika na ustrezno ikono odpremo datoteko, ki nam služi kot shramba gesel. Datoteka ima (praviloma) končnico KDB.

Ko smo shrambo gesel s pomočjo pravilnega gesla oziroma datoteke s ključem uspešno odprli (ali ustvarili novo shrambo), se odpre glavno okno programa, kjer je izpisan seznam naših shranjenih gesel.

Gesla so lahko razporejena v različne skupine, vsako ima lahko tudi svojo ikono, opis in komentar. S pomočjo iskalnega okna na vrhu lahko hitro iščemo med različnimi gesli.

Pregled seznama vnešenih gesel.

Pregled seznama vnešenih gesel.

Nova gesla lahko dodajamo s klikom na ikonico Add New Entry oziroma preko menija Entries – Add New Entry oziroma s pritiskom na Ctrl-Y.

Pri vsakem geslu lahko vnesemo uporabniško ime, URL naslov, ikonico, komentar… Geslom lahko prilagamo (vrstica “Attachment”) tudi datoteke (npr. digitalno potrdilo, ali ZIP kompresirano datoteko). Seveda so priložene datoteke v shrambi gesel ravno tako zaščitene kot vsi ostali podatki.

Vsebina samega gesla je skrita v polju “Password”. Lahko si jo ogledamo s klikom na ikonico očesa na desni strani tega polja, če pa ustvarjamo novo geslo pa KeePassX omogoča tudi generiranje naključnega gesla.

Obstoječa gesla si lahko ogledamo tako, da dvakrat kliknemo nanje in odpre se okno z opisom in podrobnostmi gesla. Gesla je s pomočjo funkcije “kopiraj-prilepi” mogoče enostavno prekopirati in uporabiti brez prepisovanja. Podrobnosti ali sama gesla v shrambi je seveda mogoče tudi spreminjati .

Pregled podrobnosti gesla.

Pregled podrobnosti gesla.

Zaključek

Kot rečeno so gesla eden najpomembnejših zaščitnih mehanizmov, zato morajo biti ustrezna, njihova hramba pa varna. Upoštevanje pravil za oblikovanje ustreznih oziroma dovolj varnih gesel je zato prvi korak v večji varnosti naših informacij in informacijskih sistemov. Zanesljiva in varna hramba gesel nam omogoča enostavno uporabo dolgih in kompleksnih gesel, varuje pa nas tudi pred izgubo ali pozabo gesel, ki jih uporabljamo manj pogosto.

Seveda pa je ob tem potrebno poskrbeti za ustrezne varnostne kopije shramb z gesli (če je shramba gesel dovolj dobro zaščitena lahko razmislimo tudi o tem, da bi jo naložili v kakšen zaseben oblak), jasno pa je, da ne smemo pozabiti našega gesla za dostop do shrambe z gesli.

Kako svoja gesla zaščititi pred izgubo/pozabo oziroma omogočiti dostop do njih tudi v primeru nesreče ali smrti, pa bo tema naslednjega prispevka iz serije “mala šola informacijske varnosti”.

Kategorije: Informacijska tehnologija, Informacijska varnost, Odprta koda, Zasebnost
Ključne besede: gesla, kriptografija, mala šola informacijske varnosti