O šiframa

7. September 2010. 4 komentara Autor:

kljuc u bravi   O šiframa

Šifra (password, lozinka ili zaporka) s nama je od antičkih vremena. U drevnim zapisima spominje se kako su još tada doskočili problemu međusobnog prepoznavanja osoba koje se prije toga nikada nisu srele – straže su propuštale samo osobe koje su znale riječi prolaza (doslovno – password), tj. odgovarajuću šifru. U nama nešto bližim vremenima, šifre su svoju inkarnaciju doživjele na ranim UNIX mašinama gdje se javila potreba identifikacije korisnika. Obzirom da većina kompjutera danas (a pogotovo ne prije četrdesetak i više godina) ne prepoznaje svoje korisnike na osnovu glasa, šare zjenice i slično, šifre su bile logična solucija problema. Došlo se na ideju da se povežu javno dostupna identifikaciona informacija – korisničko ime, i tajna identifikaciona informacija – šifra. Kombinacija korisničkog imena i šifre identificira isključivo jednog korisnika. Rješenje problema identifikacije pomoću šifri se i za informatičke potrebe pokazalo kao dobro, ustalilo se i s njim smo ‘zaglavili’ sve do danas. Iako se sve više koriste i alternativni (kompleksniji i sigurniji) načini provjere identiteta, kombinacija korisničkog imena i šifre i dalje je najraširenija i daleko najprihvaćenija metoda.

Glavna zadaća šifre je identifikacija korisnika, često u svrhu dodjele ovlasti u sistemu koji je koncipiran na način da samo odabrani korisnici mogu uživati određene ovlasti. Ovo zvuči prilično komplikovano, ali takav sistem je i običan forum na kojem je objavljivanje unosa (postova) omogućeno samo registriranim korisnicima, tj. onima koji imaju registrirano korisničko ime. Da bi korisnik potvrdio da je upravo on vlasnik dotičnog računa, identifikacija se obavlja pomoću šifre koju ‘znaju’ samo sistem i sam korisnik. Na žalost, izbor odgovarajuće šifre prilično je kompleksna operacija (koliko god to neobično zvučalo), a redovito korištenje rezultata pravilnog odabira korisnicima se vrlo često čini kao nepotrebna gnjavaža. U nastavku ovog teksta moći ćete pročitati zašto je važno odabrati dobru šifru.

Kombinacija korisničkog imena i šifre, javnog i tajnog podatka, predstavlja analogiju brave i ključa; brave za koju znaju svi i ključa koji posjeduje samo onaj kome je dozvoljeno da prođe kroz zaključana vrata. Kako to već obično biva, kad god imamo nešto zaključano postoje osobe koje to žele otključati pošto-poto. I baš kao što ‘klasičan’ lopov pokušava obiti bravu imitirajući ključ alatima svog zanata, tako i lopov u informatičkom smislu pokušava svojim alatima imitirati ključ i obiti bravu, u ovom slučaju kombinaciju korisničko ime – šifra.

Važnost šifri ogleda se u činjenici da su one i dalje primarni ključevi velike većine kompjuterskih sistema. Na žalost, ista činjenica čini ih čestom metom napada malicioznih korisnika koji se žele dočepati ovlasti koje ne bi trebali imati. Mada podaci o ovome znatno variraju ovisno o izvoru, neka istraživanja procjenjuju da se u 22% slučajeva napada na kompjuterske sisteme radilo se o pokušaju pogađanja ili probijanja korisničke šifre na ovaj ili onaj način.

Probijanje šifre – riječnik

Slaba šifra je ona koju je lako probiti. Jaku šifru je teško probiti. Razlike između ove dvije krajnosti su drastične: modernim procesorima potrebni su djelići sekunde da probiju slabu šifru i deseci miliona godina da probiju jaku. Prije nego mognemo razlučiti koja je šifra slaba, a koja jaka, moramo znati kako je, zapravo, uopće moguće ‘napasti’ šifru?

Kako bi pojednostavili ostatak teksta i fokusirali se na problem odabira jake šifre, za potrebe ovog članka napravit ćemo par aproksimacija. Pretpostavimo da su sistemi servera i klijenta sigurni i pravilno podešeni (nije uvijek slučaj, o ovome više u nekom drugom tekstu) kao i da je veza među njima sigurna – jedina slabost postupka identifikacije u tom slučaju je da neko treći pogodi ili probije šifru registriranog korisnika. Pretpostavimo i da se pokušava doći do šifre uzastupnim pokušajima prijavljivanja u neki sistem (mada je daleko češći slučaj pokušaja ‘napada’ na datoteke u kojima su korisničke šifre pohranjene).

Opće je poznato da je šifre teško pamtiti, pogotovo one koje se rjeđe koriste, stoga ni ne čude rezultati istraživanja sigurnosnih organizacija koji su pokazali da je trinaest najčešće korištenih šifri nešto od pobrojanog:

  1. Ime partnera, djeteta ili kućnog ljubimca, na šta je dodano 0 ili 1 (kad se traži da šifra sadrži i broj);
  2. Zadnje 4 cifre matičnog broja;
  3. 123 ili 1234 ili 123456;
  4. „password“;
  5. Ime grada ili fudbalskog kluba;
  6. Datumi rođenja, korisnika, njegovog partnera ili djeteta;
  7. „qwerty“;
  8. „abcd1234“;
  9. „admin“ ili „administrator“;
  10. „god“;
  11. „letmein“;
  12. „money“;
  13. „love“.

Iako se radi o istraživanjima koja pokrivaju englesko govorno područje, situacija i drugdje u svijetu je vrlo slična. Statistički gledano, trinaest pobrojanih šifri otključat će zabrinjavajućih cca 20% korisničkih računa. Primijetite da se tačke 1, 2, 5 i 6 zasnivaju na poznavanju osobnih podataka korisnika. U vrijeme kada svi imamo račune krcate osobnim podacima na facebooku, linkedInu, Googleu i sličnim mrežama, doći do imena kućnog ljubimca i nije toliko teško. Upravo je zato imperativ pažljivo postaviti postavke privatnosti na društvenim mrežama, ali i dobro paziti koga dodajemo u ‘prijatelje’. Bez obzira na sve, šifra nikad ne bi smjela sadržavati neki osobno podatak.

Fundamentalni nedostatak šifarskog sistema je sklonost korisnika da odabiru šifre koje su lako pamtljive. To znači da se kao šifra često odabiru imena i riječi, koji se ponekad modificiraju na predvidiv način (npr. dodavanje nule ili jedinice na kraju, ukoliko sistem zahtjeva da šifra sadrži i broj).

Osobni podaci ciljane žrtve do čije se šifre pokušava doći, zajedno sa kolekcijom riječi govornog jezika, njihovih formi i uobičajenih fraza čine riječnik – katalog mogućih šifri. Pogađanje šifre pomoću riječnika svodi se na probavanje logovanja u sistem pomoću mogućih šifri pobrojanih u takvom riječniku. Obzirom da postoji vjerovatnoća da je šifra upravo neka riječ (koja se, dakle, nalazi u riječniku) ili fraza (kombinacija riječi iz riječnika), lako je moguće da će ta šifra biti probijena ovom metodom. Ovdje je bitno naglasiti da su riječnici vrlo sofisticirani, tako da je i dalje nepreporučljivo koristiti uobičajene riječi i fraze u šiframa, makar umetnemo koji broj između dvije riječi – šifra poput riječ1##riječ2 i dalje se probija relativno brzo. Ovo je glavni razlog zašto se insistira da šifre sadrže (po mogućnosti nasumice usred riječi umetnute) brojeve i specijalne znakove, te nasumično korištena mala i velika slova – riječi govornog jezika ne sadrže brojeve i specijalne znakove, tako da je nemoguće da se takva šifra nađe u nekoj kolekciji riječi i fraza. Šifra poput „G62tK4g3wG“ efektno onemogućava svoje pogađanje metodom rječnika.

Dobra i jaka šifra nikad ne bi smjela biti pogođena metodom riječnika. Međutim, nije to jedini algoritam dolaska do šifre.

Malo matematike – brute force

Ukoliko korisnik koristi nasumičnu šifru (šifra ne predstavlja postojeću riječ ili frazu), nije ju moguće pogoditi metodom riječnika. Zato se pribjegava metodi brutalne sile (brute force) koja se svodi na probavanje svih mogućih kombinacija znakova koji mogu predstavljati šifru (a, b, c, d… x, y, z, aa, ab, ac… ay, az, ba, bb…).

Pretpostavimo da se šifra može sastojati od malih slova engleskog alfabeta. Ukoliko je šifra duga jedan znak (karakter), to znači da postoji ukupno 26 kombinacija od kojih je jedna SIGURNO šifra koju se pokušava probiti. Ako skup dozvoljenih znakova u šifri proširimo i na velika slova i brojeve (0-9), dobijemo skup od (26+26+10) 62 dozvoljena znaka. Dodajmo još dva posebna znaka (recimo + i -), da zaokružimo skup na informatički popularnijih 64 znaka. Drugim riječima, šifra od jednog karaktera sačinjena od ovakvog skupa znakova svodi se na 64 kombinacije. Današnji super brzi kompjuteri ovakvu šifru probijaju metodom brute force u tren oka. Kao ilustraciju koliko su kompjuteri brzi uzmimo činjenicu da je danas vremešni G5 procesor na 2,7 GHz u stanju testirati 900.000 kombinacija šifri u sekundi (imajte na umu da su sve vrijednosti kad je probijanje šifri u pitanju vrlo relativne i uvelike zavise od optimizacije procesa, hardvera koji pogoni softver za probijanje i još mnogo faktora).

Ako šifru produžimo na 2 znaka, tada imamo 64×64, tj. 642 = 4096 kombinacija. Ukoliko dužinu šifre povećamo na 10 znakova, dobijamo 6410 kombinacija, tj. 1.152.921.504.606.846.976 (nešto više od kvadriliona) mogućih kombinacija. Ovakva šifra se jako teško probija (praktično – nikako). Procjenjuje se da za probijanje ovakve šifre brute force metodom današnjem prosječnom kompjuteru treba cca 70 miliona godina. Stoga, iako brute force pristup garantira da će šifra bilo koje dužine prije ili kasnije biti probijena, logično je zaključiti da je praktično primjenjiv samo na relativno kratke šifre, ili na one nešto duže, ali uskog skupa dozvoljenih znakova.

Treba imati u vidu da što je šifra duža, veće su prednosti napada na nju metodom rječnika nasuprot metodi brutalne sile. Velike su šanse da nijedan haker nije nikada do sada probio nijednu nasumično generiranu šifru na skupu od 95 znakova, dužine 8 znakova ili više. Ukoliko je šifra duga, ali predstavlja neku riječ, stanje se, statistički gledano, znatno pogoršava, jer je tada primjenjiva metoda riječnika.

Na sreću, programeri su svjesni problema pogađanja šifri. Često pribjegavaju rješenjima pauziranja izvršavanja koda pri unosu korisničkog imena i šifre na par trenutaka, ili se proces provjere šifre vještački komplikuje samo da bi trajao što duže. Korisnicima ne predstavlja problem pričekati sekundu po unosu login podataka, ali onome ko to pokušava milionima puta zaredom svakako mrsi račune. Također, uobičajeno je da se (privremeno ili trajno – npr. PIN na mobilnim telefonima) onemogući pristup korisnicima koji više puta zaredom pokušaju prijaviti se pomoću pogrešne šifre.

Idealna šifra? Ili više njih?

Utvrdili smo da šifra mora biti duga i sastavljena od nasumičnih znakova, malih i velikih slova, brojeva i posebnih simbola (primjer takve šifre bio bi FP2s26XwYm, be6Qh6C884 i slično). Ovakvu šifru je naprosti nemoguće probiti u razumnom roku, ali na žalost, vrlo ju je teško i zapamtiti. To i ne bi bio toliki problem (jedna šifra se vremenom nekako i nauči napamet) da nam ne treba više takvih dugih i teško pamtljivih šifri.

Stvar je u tome da zbilja ne želite koristiti istu šifru za eBay, eBanking uslugu svoje banke i neki web forum. Koliko vjerujete administratorima tog foruma (oni možda znaju vašu šifru)? Koliko vjerujete onima koji su bili ili će tek biti administratori tog foruma ili bilo koje druge web stranice na kojoj imate korisnički račun s pripadajućom šifrom. Njihovo osoblje može znati vaše korisničko ime, šifru, email adresu i još puno informacija o vama. I ne samo to, sigurnost takvih stranica znatno je manja nego, primjerice, sigurnost eBaya, PayPala ili servera vaše banke. Stoga su upravo raznorazni forumi i slične stranice česta meta hakera u potrazi za parovima korisničko ime-lozinka. Hakeri će koristeći se ukradenim podacima kasnije pokušati prijaviti na mjesta znatno veće sigurnosti, i eto problema.

Sad će neko reći: zašto ne koristiti par komplikovanih šifri za one važne stvari, poput eBankinga i sličnog, i par lako pamtljivih, jednostavnih, za ono manje važno, tipa email account. Taj email se ionako ne koristi za ništa bitno… Krivo! Ukoliko je predmetna email adresa povezana s eBankingom, maliciozni korisnik može u vaše ime reći da je zaboravio šifru, na što će nova šifra biti poslana – na email. I onda smo opet na početku. Srećom, banke i slične institucije ulažu veliki trud u sigurnu identifikaciju korisnika svojih usluga, tako da, pored uobičajenog korisničkog imena i šifre, tu se još često koriste i dinamičke šifre, matrice pinova, tokeni i još neke mjere koje zahtjevaju od korisnika da posjeduje uređaj, tabelu ili karticu koji su fizički odvojeni od kompjutera sa kog se pristupa banci. Naglasak je na onom fizički odvojen, jer ukoliko je osnovna šifra ukradena ili je kompjuter korisnika kompromitiran (malware?), dobre su šanse da dodatni sistem provjere nije.

Usprkos dodatnim metodama zaštite, i dalje je preporučljivo koristiti različite i snažne šifre na različitim mjestima. I onda imamo problem: treba nam mnogo dugih, nasumičnih i teško pamtljivih šifri. Jednostavno ih moramo negdje zapisati. Međutim, ni to nije baš bezopasno – postoje programi koje narodski zovemo virusima (mada se zapravo radi o jednoj drugoj vrsti malicioznog softvera) koji skeniraju inficirane kompjutere u potrazi za šiframa. Dakle, zapisavanje šifri u neku datoteku na kompjuteru je prilično loša ideja, aktivnom i ažuriranom antivirusnom programu usprkos. Stoga ni ne čudi stav velikog broja sigurnosnih stručnjaka koji su mišljenja da šifre uopće ne treba zapisivati. Ali kada zahtjevima da šifre budu duge, nasumične/teško pogodljive, te da se na različitim mjestima koriste različite šifre dodamo i onaj da šifre treba redovno mijenjati (jer šifre prije ili kasnije ‘procure’, tj. znaju postati poznate i drugima, a ne samo vlasniku korisničkog računa), dolazimo zbilja u vrlo nezgodnu situaciju.

Stav autora ovog teksta je da šifre treba obavezno zapisivati (podrazumijeva se da će se tako zapisane šifre držati na sigurnom mjestu). Iako su sigurnosni stručnjaci u potpunosti u pravu kada govore o rizicima koji nastaju zapisivanjem šifri, treba uzeti u obzir da sistem kojem je šifra zaboravljena prilično neupotrebljiv svojim korisnicima. Naravno, pretpostavlja se da šifru Windows korisničkog računa nećete zalijepiti na post-it papirić i zalijepiti na monitor, tada takva šifra uopće nema smisla, zapravo, puno je lakše bez nje.

Još jedna stvar na koju treba upozoriti je da nije preporučljivo slijepo vjerovati brojnim online random password generatorima. Ukoliko veza između vas i takvog generatora nije zaštićena SSLom, neko je može prisluškivati. Ono još opasnije je da taj generator bilježi u neki log sve generirane šifre i IP adrese onih koji su ih tražili. Isto vrijedi i za razne password strenght evaluatore. Mi vam u sklopu ovog teksta nećemo preporučiti password generator, jednostavno zato što nismo pronašli niti jedan koji nam se učinio potpuno vjerodostojan kako bi ga mogli mirne duše preporučiti našim čitateljima (zapamtite, postulat br. 1 informatičke sigurnosti je TNO – trust no one ne vjeruj nikom). No obzirom da ovaj članak ne bi bio potpun bez primjera password generatora i evaluatora, skrećemo vam pažnju na GeodSoftov Password Generator i Microsoftov Password Checker.

Na sreću nije sve tako crno kako se na prvi pogled čini. Rješenja u ovom tekstu pobrojanih problema ima, ali o njima više u nekom od narednih članaka.

Ovaj tekst izvorno je objavljen 30.08.2010. godine pod nazivom ‘Zaštita putem šifri‘ na portalu ITpro u rubrici ‘ICT Teme‘ . Sva prava zadržava IT PRO d.o.o.

Slike: Dia 122: Desbloqueado by Freddy The Boy, door key by woodleywonderworks.

Slični postovi:

ITpro, Sigurnost

O autoru

Autor teksta je +Zoran Piro, na Internetu poznatiji kao CopyPaste. Živi i radi u Sarajevu, Bosnia & Hercegovinia. U slobodno vrijeme studira elektrotehniku, inače informatičar, SysAdmin, voli o sebi misliti kao o programeru. Voli: književnost i pisanje općenito (očito, zar ne?), pogotovo fantasy i sci-fi. Bez muzike ne zna, neće i ne može. Filmove i TV baš i ne gotivi, osim nekih posebnih filmova i serija u koje se zaklinje da su najnaj što je ljudski um stvorio. Jedan je od pokretača i član bhBlog tima.

4 odgovora to “O šiframa”

  1. Cyber Bosanka says:

    Ja sam ovo pročitala na ITpro.ba :P

    Ali nije višak i opet pročitati ;)

  2. eBay kupovina | Not A Blog says:

    [...] o tome kako zaštiti svoju šifru i svoj account pročitajte u relativno friškom tekstu O šiframa. A sada nazad na [...]

  3. Password managers - LastPass | Not A Blog says:

    [...] smo imali priliku vidjeti u jednom od prethodnih tekstova naše male sage o šiframa (pogledajte i O šiframaKradljivci šifri), sigurnost servera i klijenta, ali i njihove [...]