27.05.
2008

Kakšno je vaše geslo?

Ime? Priimek? Morda znamka monitorja, avtomobila, mobitela? Je vaše geslo izjemno enostavno in se verjetno nahaja nekje v slovarju?

Zakaj je uporaba kompleksnih gesel tako pomembna? V slučaju, da izkoristi varnostno luknjo v sistemu, lahko napadalec pridobi dostop do datoteke ali baze kjer so shranjena uporabniška imena in gesla. Ta gesla so sicer kriptirana, a obstajajo metode za razbijanje zaščite.

Gesla v spletnih aplikacijah so velikokrat kriptirana z MD5 algoritmom. Ta algoritem ustvari šifrirano geslo, ki ga je ob upoštevanju varnostnih priporočil skoraj nemogoče razbiti. V praksi se žal izkaže, da v primeru uporabe “slabih” gesel lahko šifrirano geslo razbijemo že v nekaj urah, ali še prej. Gesla, ki so zelo pogosta, pa lahko prosto dobimo na spletu. Za kriptiranje mojih primerov bom uporabil spletno stran http://www.md5encryption.com/.

Vzemimo uporabnika “markol” z geslom “marko”. Predpostavimo, da je geslo v taki obliki dovoljeno za uporabo v sistemu. Napadalec, ki bi dobil dostop do datoteke z gesli, bi v tej datoteki videl sledeč zapis, ki predstavlja uporabniško ime in kriptirano geslo:

markol:c28aa76990994587b0e907683792297c

Na spletu je moč dobiti baze kriptiranih gesel, kjer so shranjena najpogosteje uporabljena gesla, tako da napadalcu ni treba razbijati gesla. Primer take strani je http://gdataonline.com/seekhash.php. Če v okence za iskanje vpišem hash c28aa76990994587b0e907683792297c, se na zaslonu pojavi rezultat:

Hash MD5 \

Podobno se zgodi, če geslu pripišem letnico rojstva. Geslo je v tem primeru sicer dovolj dolgo, a je žal tako pogosto uporabljano, da se ga brez težav dobi v bazah na spletu. Te baze predstavljajo prvi korak napadalca k razbijanju pridobljenega gesla. Rezultati so vidni takoj, napadalcu ni treba niti poseči po programu za razbijanje gesel.

Marko82 md5

Zgoraj omenjeni primer predstavlja le del možnosti, ki jih imajo napadalci. Največja pomanjkljivost gesla je predvsem dolžina (oz. kratkost). Napadalec lahko nad geslom izvede “brute force” metodo za razbijanje gesel. To je v bistvu ugibanje gesla s poizkušanjem naključnih kombinacij nizov znakov, katerih MD5 bi lahko ustrezal geslu. Poglejmo, koliko časa potrebuje napadalec z zelo hitrim računalnikom za razbitje gesla z ugibanjem kombinacij:

dolžina: 4 znaki, nabor znakov: a-z -> manj kot 1 sekunda
dolžina: 4 znaki, nabor znakov: a-z A-Z 0-9 + simboli -> 4.8 sekunde
dolžina: 5 znakov, nabor znakov: a-z A-Z -> 25 sekund
dolžina: 6 znakov, nabor znakov: a-z A-Z 0-9 -> 1 ura
dolžina: 6 znakov, nabor znakov: a-z A-Z 0-9 + simboli -> 11 ur
dolžina: 7 znakov, nabor znakov: a-z A-Z 0-9 + simboli -> 6 tednov
dolžina: 8 znakov, nabor znakov: a-z A-Z 0-9 -> 5 mesecev
dolžina: 8 znakov, nabor znakov: a-z A-Z 0-9 + simboli -> 10 let
dolžina: 9 znakov, nabor znakov: a-z A-Z 0-9 + simboli -> 1000 let
dolžina: 10 znakov, nabor znakov: a-z A-Z 0-9 -> 1700 let
dolžina: 10 znakov, nabor znakov: a-z A-Z 0-9 + simboli -> 91800 let

Podobne tabele so tudi na naslovu: http://www.lockdown.co.uk/?pg=combi&s=articles

Poleg ugibanja kombinacij “na slepo” se lahko napadalec posluži tudi slovarjev in s tem pohitri čas ugibanja.

Geslo naj zadosti naslednjim kriterijem:
– dolžina vsaj 8 znakov
– uporaba velikih in malih črk ter številk
– geslo ne vsebuje besed, ki se jih dobi v slovarjih, niti imen znamk

Še en dober namig za izbiro varnega gesla, ki si ga ni težko zapomniti:

vir: http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/security-guide/s1-wstation-pass.html

1. izberite si verz iz pesmi, ki vam je všeč, npr: The sun is sleeping quietly, Once upon a century

2. prepišite prve znake v besedi (lahko tudi ločila) in upoštevajte velike-male črke: Tsisq,Ouac

3. zamenjajte črke s številkami (o=0, i=1, a=4, s=5, b=8, …), in dobili smo odlično geslo, ki si ga lahko zapomnimo s pomočjo verza: T515q,0u4c.

komentarji 4

Dodaj komentar
  1. Sicer si podal kar dobre ideje za kreiranje novih gesel. Moj postopek je tak, da si spomnim čisto naključne številke in črke in tako sestavim geslo. Za vsako spletno mesto svoje seveda. S tem še kanček otežkočim vdore na drugih koncih, če eno geslo “ugotovijo”.

    Bi pa imel eno vprašanje: napisal si časovni razpon za ugotavljanje gesel. Vse lepo in prav. Zanima me, kaj je zate zelo hiter računalnik, ker si ne morem predstavljati kako se teli časovni razponi razpolovijo (ali več) če imaš na razpolago googlovo farmo serverjev :)

  2. Recimo, na enem izmed omenjenih linkov je podatek, da povprečen dual-core računalnik preveri okoli 10.000.000 gesel na sekundo. Ta številka sicer močno variira glede na vrsto gesla, ki se ga poizkuša dobiti, tako da je težko izbrat pravi podatek.
    Če pa te zanima, imaš na voljo podatke, koliko gesel lahko en dober grozd računalnikov izračuna na sekundo: http://stats.distributed.net,
    RSA Labs’ 72bit RC5 Encryption Challenge
    135,514,681,834 Keys/sec

    Impresivno =)

  3. Dobro vedet. Sem šel hitro popravit nekaj svojih gesel gesel.Ali pa to še drži, saj prihajajo novi programi in zmogljivejši računalniki?

  4. Čas, ki ga računalo potrebuje za razbitje gesla, se zaradi povečanja zmogljivosti računalnikov krajša. Na spletni strani enega izmed plačljivih programov za razbitje gesel iz MS Office je npr podatek:

    “How fast? A typical single-core PC of yesterday can unlock a document in less than 5 days, while a dual-core PC of today can do it twice as fast.”

    S Quad-core procesorjem ali pa s programom, ki zna izkoristiti računsko moč grafične kartice za matematične operacije, pa se ta čas še bistveno skrajša.