Poglavje 2 Ključi
“nasprotnik” pozna kriptosistem oziroma algoritme,
ki jih uporabljamo, ne pa tudi ključe.

Slika 1.1: V kriptografskem žargonu rečemo, da skušamo kriptosistem razbiti
Predno se poglobimo v kriptosisteme, pomislimo na vsakdanje življenje. Najbolj pogosto uporabljamo posebne vrste ključev, ki jih imenujemo gesla in PINi (kratica pomeni Personal Identification Number, tj. osebno identifikacijsko število). Pri prvih uporabljamo čim širši nabor znakov, pri slednjih pa samo števke od 0 do 9 (saj običajno v tem primeru na tipkovnici ni drugih znakov).
V starih časih (tudi PNŠ) so imele mestne utrdbe stražarje, ki so varovali mestna vrata. Opremljeni so bili z orožjem in v nemirnih časih niso spustili noter nikogar, ki ni poznal pravilnega gesla.

Slika 1.2: Kaj se je zgodilo s tistimi, ki so povedali napačno geslo? Pravilo je bilo: Poskrbite zanje!
2.1 Gesla in napadi nanje
Kako vemo, če lahko zaupamo
tistemu, ki želi od nas geslo?
Morda nas kdo posluša ali snema.
Kako preprečiti takšne napade?
Nekdo je patentiral grafično tipkovnico, ki naključno premeša številke na tipkah za vnos, hkrati pa omogoča, da lahko številke preberemo le pod določenim kotom.

Slika 1.3: Vohunova dilema. Bilo je temno kot v rogu, ko se je vohun vračal v grad po opravljeni diverziji v sovražnem taboru. Blizu obzidja je iz teme zaslišal glas. Kako vohun prepriča stražarja, da pozna geslo, ne da bi ga izdal morebitnemu vsiljivcu ali prisluškovalcu, ki se je skril v bližini?
Dobro geslo
1. si je enostavno zapomniti
2. ga je težko uganiti.
Ta dva kriterija si seveda pogosto nasprotujeta.

Slika 1.4: Geslo je kot zobna ščetka.
Če si je geslo težko zapomniti, potem si jih ljudje običajno zapišejo ali pa jih pozabijo in si morajo pridobiti ponoven dostop na poseben in ranljiv način.
Ko nastavljamo geslo na računalniku, znamo naleteti na veliko omejitev, kot npr.:
1. imel naj bi vsaj 8 znakov,
2. vseboval naj bi vsaj eno črko in
3. vseboval naj bi vsaj eno številko itd.
Razlogi zanje so očitni iz tabele 1.
Primer | Število znakov | Zahtevnost | Dolžina gesla | Čas za razbijanje |
---|---|---|---|---|
mucka | 5 | 25 (majhne črke) | 24 bitov | manj kot 2 sekundi |
br1a9Az | 7 | 62 (črke in številke) | 42 bitov | 5 dni |
TH,X1lbV+ | 10 | 95 (znaki na tipkov.) | 66 bitov | 233977 let |
Tabela 1. Ugibanje gesel, pri čemer smo upoštevali, da naš računalnik
(npr. naš pametni telefon) preveri 10 milijonov gesel na sekundo.
Napadalec utegne imeti na voljo tudi večjo moč, kot je naš telefon ali računalnik, zato kaže malo premisliti o možnostih (glej tabeli 2 in 3).
Napadalec | Hitrost dekripcije |
---|---|
Posameznik, 1 PC | (\(2^{17}\) - \(2^{24}\) ključev/sek) |
Majhna skupina, 16 PC | (\(2^{21}\) - \(2^{28}\) ključev/sek) |
Akademska omrežja, 256 PC | (\(2^{25}\) - \(2^{32}\) ključev/sek) |
Veliko podjetje z 1.000.000 USD za strojno opremo | (\(2^{43}\) ključev/sek), |
Vojaška obveščevalna organizacija z 1.000.000.000 USD za strojno opremo in napredno tehnologijo | (\(2^{55}\) ključev/sek). |
Tabela 2. Napadi z grobo silo - koliko ključev lahko pregledamo v eni sekundi.
Dolžina ključa (v bitih) | Posamični napadalec | Majhne skupine | Raziskovalna omrežja | Velika podjetja | Vojaške obveščevalne službe |
---|---|---|---|---|---|
40 | dnevi | ure | minute | milisekunde | mikrosekunde |
56 | stoletja | desetletja | leta | ure | sekunde |
64 | tisočletja | stoletja | desetletja | dnevi | minute |
80 | \(\infty\) | \(\infty\) | \(\infty\) | 100 tisočletij | stoletja |
128 | \(\infty\) | \(\infty\) | \(\infty\) | \(\infty\) | \(\infty\) |
Tabela 3. Napadi z grobo silo - koliko časa potrebujemo za različne dolžine ključev.
Ena od možnih obramb je, da po treh napačnih vnosih gesla sistem zamrzne za npr. 20 sekund.
2.2 Statistika gesel
Zgoraj omenjene zahteve sistemov so bile precej pogoste, vendar bomo spoznali, da niso bistveno prispevale k varnosti (posebej, če si je uporabnik geslo res zapisal na listič in ga pozabil ob računalniku). Vseeno si poglejmo, kaj se dogaja, kadar ni niti takšnih omejitev (takšnih naj bi bilo skoraj 80% oblačnih storitev, glej npr. McAfee). Pogosto se namreč zgodi, da je kompromitirana kakšna večja baza gesel, ki nam omogoči vpogled v človeške navade.
Pri Linkin je imelo npr. preko 80% uporabnikov dolžino gesel 6-10 znakov, od tega več kot 30% dolžino 8. Statistika gesel pri Rockyou, kjer smo preučili 32 mio nezaščitenih gesel, je odkrila, da je bilo eno najpogostejših gesel 123456 (0,11%). Sledila sta 12345 (0,04%), 123456789 (0,04%) in nato še 1234567 (0,02%), 12345678 (0,02%). Med prvimi desetimi so bili še password (0,03%), iloveyou (0,03%), princess (0,02%), rockyou (0,02%), abc123 (0,02%). 40% gesel je vsebovalo samo male črke, 15% samo številke, 35% samo male črke in številke, medtem ko jih je le 4% vsebovalo tudi posebne znake. Znana je tudi uporaba variacij na temo enostavnih gesel, npr. razne kombinacije besede “geslo”, števila 123 in trojice “abc”. Pogosta so tudi imena mesecev in dni v tednu. Na koncu gesla znamo najti ločila - npr. pike, številke ali celo letnice.
Geslo za izstrelitev nuklearne rakete je bilo 20 let “0000000”.
Facebook je za glavno geslo dostopa do vseh profilov uporabljal
“Chuck Norris”.
Da bo stanje še slabše, skoraj 30% uporabnikov uporablja ista gesla na številnih napravah in računih. Slednje ni nič čudnega, saj 70% uporabnikov vsaj 10 računov ščiti le z gesli. To število bo samo še rastlo, zato prihaja do uporabe aplikacij za upravljanje gesel. Vendar, če v ta namen uporabljate kar vaš priljubljeni brskalnih, morate imeti obvezno nastavljeno tudi glavno geslo (angl. master password). Če pa govorimo o podobnih geslih na različnih napravah, se delež poveča na 50%. 66% ljudi pa uporablja 1 ali 2 gesli za vse svoje račune: Oseba običajno zamenja geslo na vsake 2,5-3 leta.
2.3 Kako si zapomnimo varnejša gesla?
Geslom, ki vsebujejo več kot eno pomenljivo besedo, pravimo skrivna fraza (angl. passphrase). Ni treba, da ta fraza nekaj pomeni, besede so lahko vzete iz konteksta.

Slika 1.5: Prek 20 let smo se trudili, da bi natrenirali uporabnike k uporabi gesel, ki si jih ljudje težko zapomnimo, računalniki pa jih kljub temu hitro uganejo.
2.4 Predstavljanje in overjanje
Če poenostavimo, je identifikacija razkritje uporabnikove identitete, overjanje pa je postopek (za nas bo pogosto kriptografski protokol), pri katerem uporabnik želi potrditi, da je res tisti, za kogar se predstavlja.
Anita in Bojan si delita tajni (skrivni) ključ K, ki ga uporabljata za šifriranje.
1. Bojan izbere 64-bitni izziv X in ga pošlje Aniti.
2. Anita izračuna Y = K XOR X in ga pošlje Bojanu.
3. Bojan izračuna Y’ = K XOR X in preveri, če je Y = Y’.
Identifikacijski protokol z izzivom in odgovorom. Operacijo XOR bi lahko zamenjali s kakšno drugo funkcijo, tj. \(y = e_k(x)\) ter \(y' = e_k(x)\) in še vedno preverjali \(y = Y'\). Skoraj vse sheme uporabljajo protokole z izzivom in odgovorom, vendar pa najbolj koristne ne uporabljajo skupnih ključev (ker presegajo ta sestavek in jih pustimo za kdaj drugič).

Slika 1.6: Primer konkretne uporabe protokola izziv in odgovor. Kako naša zdravstvena kartica nekega uporabnika in terminal sistema preverita pristnost drug drugega? Najprej morata imeti tako terminal, kot kartica možnost generiranja naključnih števil. Kako pa je s ključi? Terminali imajo glavni ključ \(M\) in skupinski ključ \(K_S\), nimajo pa prostora, da bi hranili ključe vseh uporabnikov. Zato je vsakemu uporabniku \(U\) s serijsko številko \(SN\) dodeljen ključ \(K_U := e_M (SN)\) z uporabo glavnega ključa in njegove serijske številke \(SN\), ter vsi skupinski ključi za prepoznavanje različnih skupin (poleg skupine terminalov so tu še zdravniške kartice, pa kartice različnih lekarn itd.)
Za potrjevanje uporabnikove identitete se uporablja podmnožico naslednjih treh lastnosti:
a) nekaj, kar uporabnik ve - npr. gesla, številke (PIN),
b) nekaj, kar uporabnik je - to so biometrični podatki, ki temeljijo na fizičnih lastnostih uporabnika, kot so prstni odtis, šarenice, obraz, način hoje.
c) nekaj, kar uporabnik ima - t.i. varnostni žetoni, kot so fizični ključi, osebna izkaznica, vozniško dovoljenje, bančna kartica itd.

Slika 1.7: Biometrični testi. Velja poudariti, da ni idealnega testa. Prstne odtise npr. puščamo na raznih predmetih, ki se jih dotaknemo. Če smo dolgo v vodi ali na mrazu, se prstni odtis malce spremeni. Problem nastane tudi, če si prst poškodujemo. Si predstavljate, da bi morali oddati ugriz na bankomatu? Se kdo spomni dejanskega preverjanja podpisa, le-to bi moral itak opraviti le izurjen grafolog.
V primeru plačila z bančno kartico se npr. običajno uporabljata dve lastnosti: bančna kartica (nekaj, kar uporabnik ima) ter PIN številka (nekaj, kar uporabnik ve).
2.5 Upravljanje s ključi
Postavimo nekaj osnovnih vprašanj:
1. Od kje dobimo ključe?
2. Zakaj zaupamo ključem?
3. Kako vemo, čigav ključ imamo?
4. Kako omejiti uporabo ključev?
5. Kaj se zgodi, če je kompromitiran (izgubljen) zasebni ali tajni ključ?
6. Kdo je odgovoren?
7. Kako preklicati ključ?
8. Kako omogočimo servis preprečitve zanikanja?
Ta vprašanja veljajo tako za simetrične (tajne) kakor tudi za javne in zasebne ključe.
Osnovni cilj je vzdrževanje zasebnosti in celovitosti ključev, ki mora biti zagotovljeno ves čas. Za vsak ključ to pomeni s pričetkom generiranja ključa, pa vse do takrat, ko ključ ni več v uporabi in je bil uničen, glej sliko 1.8.
Takorekoč vedno je bil ključ zamenjan z novim ključem, kar pomeni, da gre za cikličen proces, v katerem uničenju sledi namestitev/vključitev novega ključa. Vendar pa je ta novi ključ zgeneriran, distribuiran in shranjen še predno je stari uničen. V nekaterih sistemih imamo še vedno dodatno zahtevo, da ključe arhiviramo.

Slika 1.8: Glavne stopnje življenjskega kroga ključev.
Vzvodi za nadzor so potrebni skozi celoten življenjski cikel ključa. To vsebuje od neke vrste revizijskih postopkov (angl. audit trail) do dnevnikov uporabe ključev, ki seveda niso smiselni brez nadzora ter pooblastil za ustrezen odgovor/ukrep v primeru, da je bil ključ kompromitiran. Zato je pogosto (posebno v večjih sistemih) zaželjeno, da imajo ključi ustrezne lastnike, ki so odgovorni za njihovo hranjenje/zaščito.
Pri algoritmih za simetrične kriptosisteme lahko uporabimo poljubno zaporedje bitov (občasno tudi drugih znakov), kar pomeni, da lahko večina uporabnikov sama generira svoje ključe. Biti morajo nepredvidljivi: pogosto uporabimo
- ročne metode, npr. metanje kovanca/kocke,
- izpeljavo iz osebnih podatkov, npr. PIN ali
- (psevdo) generatorje naključnih števil (RNG).
Asimetrični sistemi: generiranje velikih praštevil zahteva “sofisticirano” matematično obdelavo in lahko zahteva precejšnjo moč/prostor/čas. Uporabniki so včasih prisiljeni zaupati zunaj generiranim ključem oziroma programski opremi. Za ilustracijo: v primeru kriptosistema RSA se njegova varnost reducira na napadalčevo zmožnost faktorizacije modula n. Če bi proces generiranja ključev dal le omejeno število praštevil, bi napadalec lahko generiral ista praštevila in nato za vsakega izmed njih preveril, ali deli n.
Razdeljevanje/distribucija ključev in varno hranjenje sta osrednjega pomena. Problemi, na katere naletimo in njihove rešitve so večinoma podobni, zato jih obravnavamo skupaj. Razlog za uporabo močnih kriptografskih sistemov je preprečiti napadalcu, da izračuna ključ. Seveda vse to nima smisla, če jih napadalec lahko najde nezaščitene nekje na sistemu.
Popravi 5 slabih navad, ki vplivajo na varnost gesel oz. bolj splošno ključev
1. Ne izbiraj pogostih (generičnih) gesel ali ključev posebne oblike.
2. Ne hrani gesel ali ključev na manj varnih (preveč očitnih/izpostavljenih) mestih.
3. Ne uporabljaj istih gesel in ključev v različnih programih (ne recikliraj gesel ali ključev)
4. Ne pošiljaj ali deli z nikomur gesel in ključev (zobna ščetka).
5. Ne kopiraj gesel in ključev (kopiraj/prilepi prek odložišča - angl. clipboard).
5 dobrih navad za varnost gesel oz. bolj splošno ključev
1. Gesla in ključi naj bodo dovolj dolgi.
2. Pogosto posodabljaj/obnavljaj/zamenjaj svoja gesla in ključe (in to stori takoj, če/ko izveš, da je bil tvoj račun kompromitiran).
3. Skrivne fraze so dobra strategija za pomnenje gesel (vsaj tistih glavnih).
4. Uporabljaj večstopenjsko (faktorska/dejavniška) avtentikacijo za pomembne/kritične račune (če je le možno).
5. Uporabljaj dober program za upravljanje s ključi in gesli.
Naloge
- Kako veliko je VELIKO (in računska moč)? Živimo le 2-3 milijarde sekund. Za kilo K (\(10^3\)), mega M (\(10^6\)), giga G (\(10^9\)), in tera T (\(10^{12}\)), ki smo se jih že kar navadili, sledijo enote peta P (\(10^{15}\)), exa E (\(10^{18}\)), zeta Z (\(10^{21}\)), in jota Y (\(10^{24}\)). Slednja je v rangu števila \(2^{80}\) (zakaj?), kar je velikost prostora, iz katerega radi v kriptografiji javnih ključev naključno izberemo varen ključ (morda ravno zato, ker je danes še ne uporabljamo kaj dosti).
- Koliko je različnih znakov na tvoji tipkovnici (ne pozabi na male in velike črke)? Bi znal vse našteti?
- Koliko zrn riža je povprečno v enem kilogramu riža (gotovo ga imate kaj doma)? Zakaj je v vprašanju beseda povprečno? Ali to pomeni, da boš moral šteti večkrat?
- Koliko bi bilo možnih gesel, če bi izbirali za geslo besedo v slovenskem jeziku? Kaj pa, če bi si izbral dve ali tri besede? Kaj pa, če se ne bi omejili s slovenščino? Koliko je različnih jezikov na tem svetu?
- Koliko exa riža je obljubil kralj (iz zgodbe o kralju, šahu in rižu)?
- recimo, da se vprašamo o številu naših prednikov in računamo, da so imeli otroke povprečno pri 25 letih, potem bi jih imeli pred 2 tisoč leti lahko največ \(2^{80}\) (zakaj?), kar pa seveda ni možno (zakaj?). Koliko prednikov pa bi odkrila v povprečju ena oseba, če bi imela možnost raziskovati 2K let nazaj?
- Računske zmogljivosti za razbijanje gesel: (a) tvoje, (b) tvoje okolice, (c) če bi imel na voljo več sredstev \(\dots\)
- Ali imaš načrt B za primer, ko pozabiš geslo/ključ? Npr. gesla shranjena v zvezku, za katerega veš le ti, kje je shranjen.
- Koliko različnih računov in gesel uporabljaš (oz. ocenjuješ, da jih boš v naslednjih 10 letih)?
- Naštej dobre in slabe lastnosti obnavljanja gesel preko e-pošte. Dobra: hitra rešitev, če pozabiš prejšnje geslo. Slaba: če nekdo vdre v tvojo e-pošto, lahko dostopa do linka za obnovo gesla ter ga spremeni.
- Predlagaj kakšno rešitev za vohunovo dilemo (glek sliko 3). Vpeljava dodatnega gesla, npr. vojaki bi se morali dogovoriti, da se poleg gesla morebiti pozdravijo s posebno besedo, nato povejo geslo.
- Kako točno poteka preverjanje gesla? Ali se lahko izognemo, da bi gesla nekje hranili (kajti, kot smo omenili, zna takšna baza uiti izpod nadzora, pa če se še tako trudimo)? Nekatera podjetja imajo sezname gesel za svoje zaposlene. Kje naj jih hranijo? Temu se lahko izognemo tako, da nimamo preveč računov ter uporabljamo gesla, ki si jih z lahkoto zapomnemo ter so logična za nas, ne pa tudi za ostale.
- Predlagaj kakšno funkcijo \(e_k(x)\) (glej Identifikacijski protokol z izzivom in odgovorom) in premisli, kaj so njene dobre in slabe lastnosti.
- Poišči kakšen odgovor na osnovna vprašanja glede upravljanja ključev, ki smo jih zastavili na začetku 5. razdelka.
- Naštej dobre in slabe lastnosti posameznih biometričnih testov. Prednost vseh je ta, da so unikatni pri vsakem posamezniku. Slabost prstnega odtisa je, da se lahko pri vsakemu posamezniku spremeni, vzem ugriza zob je skrajno nehigieničen postopek, glas je med preverjanjem lahko popačen ali pa se uporabi posnetek našega glasu.
- Kako bi izpeljal ključ iz osebnih podatkov, da si s tem ne bi mogel pomagati napadalec (ne pozabi na Kerchoffsov princip). Za sestavo ključi bi uporabili osebne podatke, do katerih napadalec zagotovo ne more dostopati, npr. ura rojstva.
- Naštej dobre in slabe lastnosti zgornjih dobrih navad za izbiro gesel/ključev (tabeli 3 in 4). Bi znal dopolniti oba seznama še s tremi priporočili?
- Poišči kakšen dober program za razbijanje gesel in preuči, kako deluje.
- Na koga bi se obrnil, če bi moral implementirati varno preverjanje gesel v svoji aplikaciji? Kako bi se temu izognili?
- Oceni potrebno računsko moč za razbijanje skrivne fraze v enem letu.
2.6 Stara različica tega poglavja
2.6.1 Gesla
Gesla uporabljamo vsak dan in povsod. Za odklepanje telefona, za odklepanje prenosnika, prijavo v e-pošto, račun za družbena omrežja, do našega delovnega prostora, za dostop do shranjevanja itd. Ko nastavljamo geslo, imamo veliko omejitev, kot npr.: 1. imeti mora vsaj 8 znakov, 2. vsebovati mora vsaj eno črko in 3. vsebovati mora vsaj eno številko itd. Takšne so pogosto sistemske zahteve, vendar bomo spoznali, da ne prispevajo bistveno k varnosti.
Časovni stroj gesel
Gesla so res stari zaščitni oraklji. V starih časih (pred začetkom štetja) so lahko napadalci videli stražarje zunaj mestne utrdbe, ki so varovali mestna vrata. Opremljeni so bili z orožjem in nikogar niso spustili noter brez pravilnega gesla (kodne besede).
Kaj se je zgodilo s tistimi, ki so povedali napačno geslo? Pravilo je bilo: “Poskrbite zanje!”
Kljub imenu geslo – password
, ni potrebno, da je geslo dejanska, smiselna beseda. Lahko je alfa-numerično in vsebuje kup posebnih znakov in presledkov. Več jih je, boljša je varnost gesla. To nam omogoča, da razširimo geslo v cele stavke. Geslom, ki vsebujejo več kot eno pomenljivo besedo, pravimo skrivna fraza (angl. passphrase).
Ni treba, da ta fraza pomeni nekaj, besede so lahko vzete iz konteksta.
Če izberete t.i. enobesedno geslo, in napadalec ugane jezik, ki ga uporabljate, ga lahko napadalec odkrije v približno 5 urah z uporabo napada s slovarjem. To naredi tako, da preizkusi vse besede določenega jezika (skupaj s sklanjatvami), seveda če ni omejitve, kolikokrat lahko ugiba.
V angleškem jeziku je nekaj več kot milijon besed in obstaja 308.915.776 možnih kombinacij 6 črk. Večina napadalcev bo računala na to, ko poskušajo vdreti v vaš sistem in bo uporabila sezname besed v kombinaciji s seznami gesel.
Hackplaining
Kaj se zgodi, če napadalec ne more uganiti strukture vendar še vedno želi uporabiti napad s slovarji? Potem mora poiskati par proti veliko večjemu slovarju, ki vsebuje vsa mogoča gesla.
Izračunajmo približno velikost slovarja. Za namen tega primera najprej opazujemo le gesla, ki vsebujejo 8 znakov. Vsak znak je črka ([a-z, A-Z]), številka ([0-9]) ali en od naslednjih posebnih znakov {,}, (,), [,], #,!,?, _, @, /, $,%, ^, &, *, ~, |, +, - ali prosto mesto. Omogoča nam \(26 * 2 + 10 + 23 = 85 \) možnih znakov. Če geslo vsebuje natanko 8 znakov, potem ima napadalec \(85 ^ 4 = 52200625 \) elementov v slovarju in gesla ne more razbiti v manj kot desetletju. To nam da priložnost, da ostanemo varni tudi pri uporabi kratkih gesel, če jih pogosto spreminjamo, tj. vsako leto. To bo napadalcu preprečilo napad! :)
Primer gesla | Dolžina gesla | Potreben čas za razbijanje gesla |
---|---|---|
‘abcdefg’ | 7 | 0.29 milisekund |
‘abcdefgh’ | 8 | 5 ur |
‘abcdefghi’ | 9 | 5 dni |
‘abcdefghij’ | 10 | 4 mesce |
‘abcdefghijk’ | 11 | 1 desetletje |
‘abcdefghijkl’ | 12 | 2 stoletji |
2.6.1.1 Izbira
Združevanje dveh ali več nepovezanih besed (najbolj 8) in spreminjanje nekaterih črk v posebne znake ali številke je dober način izbire gesla. Še en dober način je imeti osebno zasnovan algoritem za ustvarjanje nejasnih gesel. Na voljo imaš 2 različni implementaciji sestavljanja gesel. Prva (levo) ti poleg standardnih načinov generiranja gesel omogoča tudi ročni vnos besed, ki se bodo naključno uporabile v procesu sestavljanja priporočenih gesel. Druga implementacija (desno) pa je bolj specifična pri izbiri znakov, dolžine ali entropije za generiranje gesel. Preizkusi obe. Za testiranje lahko generirana gesla skopiraš in preveriš v aplikaciji za preverjanje moči gesel.Za večjo varnost torej uporabite daljša gesla. Vendar bodite previdni, dandanašnja varnost in varnost čez deset let ne bosta enaki. Na primer: če vzamemo geslo in izračunamo, da napadalec potrebuje cca. 4 leta, da ga razbije s slovarskim napadom, potem čez 10 let lahko pričakujemo, da bo potreboval le 4 mesece. Pri vsem tem smo opazovali napadalčevo moč glede na strukturo gesla.
Primer
Čas za pridobitev gesla “security1”:
let | mesecev | tednov | dni | ur | minut | sekund | milisekund | ||
---|---|---|---|---|---|---|---|---|---|
2000 | 3 | 10 | 1 | 5 | 14 | 54 | 19 | 21 | 1.37 |
2001 | 2 | 9 | 0 | 5 | 11 | 28 | 35 | 4 | 10 |
2002 | 2 | 1 | 3 | 0 | 22 | 20 | 41 | 9 | 4 |
2003 | 1 | 9 | 1 | 6 | 18 | 22 | 50 | 32 | 6 |
2004 | 1 | 0 | 1 | 2 | 1 | 57 | 49 | 50 | 6 |
2005 | 0 | 7 | 1 | 5 | 6 | 6 | 52 | 12 | 5 |
2006 | 0 | 6 | 2 | 3 | 13 | 26 | 6 | 32 | 4 |
2007 | 0 | 4 | 0 | 5 | 15 | 26 | 39 | 85 | 8 |
2008 | 0 | 4 | 3 | 4 | 1 | 26 | 2 | 13 | 5 |
2009 | 0 | 4 | 3 | 2 | 8 | 9 | 8 | 56 | 5 |
2010 | 0 | 4 | 1 | 4 | 19 | 7 | 57 | 74 | 6 |
2011 | 0 | 4 | 1 | 2 | 12 | 25 | 23 | 33 | 6 |
2012 | 0 | 4 | 0 | 0 | 21 | 11 | 42 | 77 | 0.9 |
2013 | 0 | 3 | 3 | 5 | 23 | 36 | 29 | 81 | 10 |
2014 | 0 | 3 | 3 | 1 | 0 | 39 | 45 | 23 | 9 |
2015 | 0 | 3 | 1 | 6 | 14 | 44 | 19 | 66 | 5 |
2016 | 0 | 2 | 4 | 1 | 10 | 12 | 11 | 31 | 3 |
Kaj se zgodi, če napadalec ne ve strukture gesla? Ali se potem res poveča varnost?
Samo v primeru, da struktura ni ravno pogosta. Napadalci bodo vedno najprej preizkusili vse najmočnejše napade, proti večini skupnih struktur gesel. Čeprav razplet strukture ne pomaga veliko. Le če je res edinstvena. Iskreno povedano, to je zelo redko in ne predlagamo da se zanašate na varnost le-tega.
Kakorkoli, daljše in bolj naključno je geslo, močnejše je. Ker si nismo vsi sposobni zapomniti “% S’HJS6793jio777. & @ # $$ (???)% (%” tako enostavno kot “Herego, wehereareyou!”, mnogi predlagajo da uporabljena gesla, negujete, pišete in shranjujete varno. Za začetek uporabite naslednjo besedno zvezo, ki jo lahko nato spremenite bolj varno s saniranjem, ali naslednjim postopkom:
- Izberi zaporedje besed, stavka ali citata, npr. “To je dober citat!”
- Prenesite ga v nekaj podobnega: “T_j%%agutQot”, vendar ga ne črkujte.
In to je to! Samo ne užali nikogar s svojimi gesli! :)
Zdaj, ko poznate postopek, poskusite sanirati eno geslo in potem ocenite splošno moč končnega gesla.
Zahteva uporabnikom, da uporabijo “črke in številke”, bo pogosto vodila do enostavnih zamenjav, kot so “E” → “3” in “I” → “1”, to so zamenjave, ki jih napadalci dobro poznajo. Podobno vnašanje gesla z eno vrstico tipkovnice je navaden trik, ki ga napadalci poznajo.
Ocenjevalnik moči
“Zxcvbn” je ocenjevalnik moči gesla, ki ga navdihujejo krekerji. S primerjanjem vzorcev in konzervativno oceno prepozna in oceni 30.000 popularnih gesel, imen in priimkov po podatkih iz popisa v ZDA, priljubljenih angleških besed iz Wikipedije in ameriške televizije in filmov, ter drugih običajnih vzorcev, kot so datumi, ponavljanja (aaa), zaporedja (abcd), itd. Uporabniku hitro in enostavno poda informacije o vpisanem geslu.
Podano imaš tabelo, v kateri so izračunane moči gesel po algoritmu knjižnice “Zxcvbn”. Oglej si gesla v tabeli in premisli, kateri bi bil najboljši in zakaj. Poleg grafičnega prikaza moči imaš tudi dodatne informacije o izbranem geslu, s katerimi lažje razumeš kriterij, po katerem se določa moč gesla.
Tu imaš možnost preverjanja poljubnih gesel. Brez skrbi, spletna stran ne beleži tvojega vnosa :)
Orodje uporabite kot orientacijo. Opredelitev širine gesla je pristranska in se spreminja vsako leto. Vsakič, ko se odkrije nov močan napad znatno povečane moči procesorja, je treba definicijo pregledati in jo ustrezno prilagoditi.
Če ne uporabljate sanacije, bodite dodatno previdni, da citatov ne uporabljate kot gesla. Namreč, isti citati se pojavljajo na internetu pogosteje kot druga gesla. Tako jih je enostavno zbirati in uporabljati v napadu na slovar. Na žalost je leta 2012 ta grožnja postala resničnost. Vsa gesla, povezana s citatom, so bila razbita. LinkedIn je na splošno poročal o 6,5 milijona ogroženih uporabniških računih.
2.6.1.2 Dejavniki varnosti sistema gesel
Varnost sistema, zaščitenega z geslom, je odvisna od večih dejavnikov. Celoten sistem mora biti zasnovan za zanesljivo varnost, zaščito pred računalniškimi virusi, napadi “človeka v sredini” in podobno. Vprašanja v zvezi s fizično varnostjo so prav tako zaskrbljujoča, od vohunjenja do bolj sofisticiranih fizičnih groženj, kot so video kamere in snifferji s tipkovnico. Gesla je treba izbrati tako, da jih napadalec težko ugiba in težko odkrije (uporaba sistemov samodejnih napadov).
Danes je običajna praksa, da računalniški sistemi skrijejo gesla, ko so vnesena. Namen tega ukrepa je preprečiti, da bi drugi opazovalci prebrali geslo; vendar pa nekateri trdijo, da lahko ta praksa privede do napak in stresa ter spodbudi uporabnike k izbiri šibkih gesel. Poleg tega morajo imeti uporabniki možnost, da prikažejo ali skrijejo gesla, ko jih vnašajo. Nekatera specifična vprašanja upravljanja z gesli, ki jih je treba upoštevati pri razmišljanju in izbiri gesla so:.
- Stopnja, pri kateri lahko napadalec poskusi uganiti gesla.
- Hitrost, s katero lahko napadalec predloži uganjena gesla sistemu, je ključni dejavnik pri določanju varnosti sistema. Nekateri sistemi nalagajo časovni presledek nekaj sekund po majhnem številu (npr. treh) neuspelih poskusih vnosa gesla. V odsotnosti drugih ranljivosti so lahko takšni sistemi učinkovito zavarovani s sorazmerno enostavnimi gesli. Gesla, ki se uporabljajo za ustvarjanje kriptografskih ključev (npr. za šifriranje diska ali za zaščito brezžičnega omrežja), so lahko prav tako izpostavljena visokim stopnjam ugibanja. Seznami skupnih gesel so dostopni in napadi so zelo učinkoviti. Varnost je v takih situacijah odvisna od uporabe gesel ali gesel z zadostno zahtevnostjo, zaradi česar je napad nemočen. Nekateri sistemi, kot sta npr. PGP in Wi-Fi WPA , uporabljajo geslo, ki zahteva intenzivno računanje, da upočasni takšne napade.
Shranjevanje gesel je prav tako pomembna lastnost moči gesla. Dobro geslo, shranjeno v navadnem tekstu, je praktično neuporabno. Zato se gesla kodira z zgoščevalnimi funkcijami (podrobneje opisane v 2. poglavju). Eno izmed zgoščevalnih kodiranj je MD5.
2.6.1.2.1 MD5
MD5 (Message-Digest algorithm 5) je znan kot pogosto uporabljena kodirna funkcija s 128-bitnim izhodom. Po internetnem standardu (RFC 1321) je bil MD5 priznan in uporabljen v velikem številu aplikacij za izboljšanje varnosti. Pogosto se uporablja tudi za preverjanje datotek.
MD5 si je zamislil Ronald Rivest leta 1991 z namenom, da bi zamenjal zgodnejšo funkcijo MD4. Leta 1996 so našli napako v zasnovi algoritma MD5. Kljub temu, da to ni bila velika napaka, so strokovnjaki za kodiranje začeli priporočati uporabo drugih varnostnih algoritmov kot na primer SHA-1. Leta 2004 so odkrili dodatne pomanjkljivosti v algoritmu, nadaljnje odkrivanje napak pa je sledilo do leta 2007. Urad US-CERT je izjavil, da je »MD5 algoritem zlomljen in neprimeren za nadaljnjo uporabo«.
Za prikaz delovanja tega kodiranja vstavi poljubno geslo, dolgo največ 5 znakov za hitrejšo rešitev. Izpisal se bo geslu izračunan MD5 hash zapis, za katerega bodo “delavci” (računalnik) skušali z “bruteforce” načinom vpisovanja gesel najti enak MD5 hash zapis. S številom delavcev lahko vplivaš na hitrost razbijanja gesla. Ta proces je računsko zahteven in bo tvoj računalnik zaposlil z veliko dela. Z bližnjico “Ctrl + Shift + Esc” lahko v Upravitelju opravil spremljaš uporabo procesorja. Kljub veliki zaposlitvi lahko vidiš, da je čas razbijanja zelo majhen, torej je kodiranje v MD5 algoritmu zelo neučinkovito.
2.6.1.3 Omejitve števila ugibanj gesla
Alternativa omejevanju hitrosti, s katero lahko napadalec ugiba geslo, je omejiti skupno število ugibanj, ki jih je mogoče narediti. Geslo je mogoče onemogočiti, kar zahteva ponastavitev, po majhnem številu zaporednih slabih ugibanj (recimo 5); in uporabnik bo morda moral spremeniti geslo po večjem kumulativnem številu slabih ugibanj (npr. 30). S tem prepreči, da bi napadalec naredil poljubno veliko slabih ugibanj. Napadalci lahko nasprotno uporabijo znanje o tem (ublažitev izvajanja DDoS) proti uporabniku z namernim zaklepanjem uporabnika iz lastne naprave; ta zavrnitev storitve lahko odpre napadalcu druge možnosti za manipulacijo situacije v njihovo korist preko socialnega inženiringa.
Viri: Password - Wikipedia
2.6.2 PIN
Posebna vrsta gesel, ki je vezana na posameznika. PIN (Personal Identification Number) ~ (osebna identifikacijska številka) - je numerično ali alfanumerično geslo, ki se uporablja v postopku avtentikacije uporabnika, ki dostopa do sistema.
Osebna identifikacijska številka je bila ključna pri izmenjavi zasebnih podatkov med različnimi centri za obdelavo podatkov v računalniških omrežjih za finančne institucije, vlade in podjetja. Bolj splošno znana uporaba številke PIN je predvsem pri preverjanju pristnosti imetnika bančne kartice.
2.6.2.1 Zgodovina
PIN številka se je začela uporabljati ob prihodu bankomatov leta 1967, ko so banke iznašle učinkovitejši način dviga denarja svojih strank. Prvi sistem bankomatov je bil sistem Barclays v Londonu leta 1967. Sprejemal je čeke s strojno berljivo enkripcijo, uporabnik pa je za odobritev transakcije moral vpisati številko PIN. Podjetje Lloyds Bank je leta 1972 izdalo prvo bančno kartico, ki je uporabljala PIN za varnost.
2.6.2.2 Uporaba
V okviru finančne transakcije sta po navadi tako zasebna koda PIN, kot tudi javni identifikator uporabnika, potrebna za overjanje uporabnika v sistemu. Po prejemu obeh, sistem pošlje kodo PIN na podlagi ID-ja uporabnika in ga primerja z vnešenim. Uporabniku je dovoljen dostop le, če se vneseno število ujema s številko shranjeno v sistemu. Zato, kljub imenu, PIN ne identificira uporabnika.
2.6.2.3 Dolžina PIN
Mednarodni standard za upravljanje s PIN-om za finančne storitve, ISO 9564-1, dovoljuje uporabo PIN-ov od štirih do dvanajstih številk, vendar priporoča, da izdajatelj kartice zaradi razlogov uporabnosti ne dodeli PIN-a, daljšega od šestih mest. Izumitelj bankomata, John Shepherd-Barron, si je sprva zamislil šestmestno številčno kodo, njegova žena pa si je lahko zapomnila le štirimestno številko, ki je postala najpogosteje uporabljena dolžina, čeprav banke v Švici in številnih drugih državah uporabljajo šestmestno kodo PIN.
2.6.2.4 Preverjanje PIN-a
Naravna koda PIN se ustvari s šifriranjem primarne številke računa (PAN) s pomočjo šifrirnega ključa, izdelanega posebej za ta namen. Ta tipka se včasih imenuje ključ generacije PIN (PGK). Ta koda PIN je neposredno povezana s primarno številko računa. Za potrditev PIN-a banka izdajatelju z zgornjo metodo regenerira PIN in to primerja z vnešeno PIN kodo. Naravni PIN-i se ne morejo izbrati, ker so izpeljani iz PAN-a. Če je kartica ponovno izdana z novo PAN, mora biti ustvarjena nova koda PIN. Naravni PIN-i omogočajo bankam, da ob izdaji PIN-a izdajajo opomnike PIN.
Naravni PIN + offset metoda
Za omogočanje uporabniško izbranih kod PIN je možno shraniti vrednost odmika PIN. Odmik se ugotovi z odštevanjem naravnega PIN-a od uporabniško izbranega PIN-a po modulu 10. Na primer, če je naravni PIN 1234 in uporabnik želi imeti PIN 2345, je odmik 1111. Odmik se lahko shrani bodisi na podatkih o poti, bodisi v podatkovni bazi pri izdajatelju kartice. Za potrditev kode PIN banka ali izdajatelj izračuna naravno PIN kot v zgornji metodi, nato pa doda odmik in dobljeno vrednost primerja z vnešeno PIN kodo.
2.6.2.5 Metoda VISA
Metoda VISA ustvari vrednost preverjanja PIN (PVV). Podobno kot vrednost odmika se lahko shrani na podatke o skladbi kartice ali v podatkovni bazi pri izdajatelju kartice. To se imenuje referenčni PVV.
Metoda VISA popelje najbolj desnih petnajst številk PAN, razen vrednosti kontrolne vsote, indeksa ključa za preverjanje PIN (PVKI, izbranega od enega do šestih) in zahtevane vrednosti PIN za 64-bitno številko, PVKI izbere ključ za preverjanje (PVK) , 128 bitov) za šifriranje te številke. Iz te šifrirane vrednosti se najde PVV.
Za potrditev kode PIN banka izdajatelj izračuna vrednost PVV iz vnešene PIN in PAN in primerja to vrednost z referenčnim PVV. Če se referenčni PVV in izračunani PVV ujemata, je bil vnešen pravilen PIN. Za razliko od IBM-ove metode, metoda VISA ne prinaša PIN-a. Vrednost PVV se uporablja za potrditev PIN-a, ki je bil vnesen na terminalu, prav tako je bil uporabljen za generiranje referenčnega PVV-ja. PIN, ki se uporablja za ustvarjanje PVV, se lahko naključno generira, izbere ga uporabnik ali celo izvede z uporabo metode IBM.
2.6.2.6 Varnost PIN-a
Štirimestna PIN gesla imajo razpon od 0000 do 9999, kar je skupno 10.000 različnih kombinacij. Navadno sistem dopušča spreminjanje PIN-a, a je priporočeno, da se ne uporablja rojstnih datumov, številk registrskih tablic, ponavljajočih števil (1111, 2222, 3333, ….), zaporedij (1234, 2345, …) ali števil, ki se začnejo z ničlami.
Številni sistemi za preverjanje PIN-a omogočajo tri poskuse, s čimer dajejo tatu kartice domnevno 0.3% verjetnost, da bo uganil pravilen PIN, preden je kartica blokirana.To velja le, če so vsi PIN-i enako verjetni in napadalec nima na voljo dodatnih informacij, kar pa ni bilo v primeru številnih algoritmov za generiranje in preverjanje PIN, ki so jih v preteklosti uporabljale finančne institucije in proizvajalci bankomatov.
Opravljene so bile raziskave o običajno uporabljenih kodah PIN. Posledica tega je, da brez previdnosti velik del uporabnikov meni, da je njihov PIN ranljiv. “Oboroženi s samo štirimi možnostmi lahko hekerji razbijejo 20% vseh PIN-ov. Dovolite jim ne več kot petnajst številk in lahko uporabijo račune več kot četrtine imetnikov kartic.”
Težava lahko ugibljivih PIN-ov se poveča, ko so stranke prisiljene uporabljati dodatne številke, ki povečajo možnost razbitja na okoli 25%, pri petnajstih številkah celo na več kot 30% (brez upoštevanja 7-mestnih števil telefonskih številk). Približno polovica vseh 9-mestnih PIN-ov ima dobre možnosti razbitja že po 35% uporabi zaporedja 123456789, za preostalih 64% pa je dobra možnost, da uporabljajo svoj EMŠO.
2.6.2.6.1 VISA PVV generator
Program najprej generira številko kartice, ki je sestavljena iz naslednjih delov:
- števka: Vedno 4, identificira VISA kartico
- – 6. števka: Predstavljajo identifikacijsko številko banke, ki je izdala kartico
- – 15. števka: Predstavlja identifikacijsko številko računa
- števka: Kontrolna vsota, izračunana po Luhnovem algoritmu
Nato izbere selektor kodirnega ključa, na kar uporabnik načeloma nima vpliva. Ko program prebere še izbrano PIN kodo, iz številke računa (uporabi 5. – 15. števko), selektorja ter PIN kode sestavi vrednost TSP (Transformed Security Parameter). Vrednost TSP nato kriptira z uporabo algoritma DES v ECB (Electronic Code Book) načinu. Iz izhoda (ki je v šestnajstiškem sestavu) nato prebere prve štiri števke, ki predstavljajo vrednost PVV. Če se slučajno zgodi, da ni na voljo zadosti števk, potem vrednost PVV dopolni s črkami, ki jih pretvori v števke po naslednjem ključu :
- A -> 0
- B -> 1
- C -> 2
- D -> 3
- E -> 4
- F -> 5
Ko želi imetnik kartice uporabiti kartico, mora na terminalu vnesti PIN kodo. Vnesena PIN koda se vstavi v zgoraj opisani algoritem, nakar se primerjata obe PVV vrednosti. Če sta vrednosti enaki, je bila vnesena pravilna PIN koda.
2.6.3 Viri:
- Personal identification number - Wikipedia
- Payment card number - Wikipedia
- Anatomy of a Credit Card - Credit Card Insider
- Breaking VISA PIN - L. Padilla