Enkripcija i autentifikacija
Ako su i korisnikov računar i server obezbeđeni, hakeri vrše napad na kanal veze između njih. Bilo koja tačka na liniji kojom se vrši komunikacija može biti izložena napadu. Najbolji načini borbe protiv ovog tipa napada su enkripcija i autentifikacija.
Enkripcija
Enkripcija (encription) predstavlja šifrovanje podataka tako da se oni ne mogu rastumačiti bez ključa (tajne šifre). Kroz istoriju su se razvijali različiti metodi šifrovanja – zamena slova i pojmova, menjanje redosleda slova i drugi. Računari su omogućili automatizaciju procesa šifrovanja, ali i lakše dešifrovanje. Pošto je svaki podatak na računaru suštinski broj, proces šifrovanja se može posmatrati kao reverzibilna matematička transformacija, što znači da se iz transformisanih podataka mogu povratiti originalni podaci.
Ako se i za šifrovanje i dešifrovanje koristi isti ključ, govorimo o tzv. simetričnoj enkripciji. Uspešnost bilo kog algoritma zavisi od veličine ključa koji se koristi – što je veći ključ, to više kombinacija napadač mora da isproba kako bi razbio šifru. Možete videti primer koji na jednostavan način ilustruje princip rada ovih algoritama.
T | A | J | N | A | P | O | R | U | K | A | |
W | N | S | W | N | S | W | N | S | W | N | S |
84 | 65 | 74 | 78 | 65 | 32 | 80 | 79 | 82 | 85 | 75 | 65 |
87 | 78 | 83 | 87 | 78 | 83 | 87 | 78 | 83 | 87 | 78 | 83 |
171 | 143 | 157 | 165 | 143 | 115 | 167 | 157 | 165 | 172 | 153 | 148 |
½ | Å | Ø | Ñ | Å | s | º | Ø | Ñ | ¼ | Ö | ö |
Dakle, ovde smo primenili operaciju sabiranja za šifrovanje, a da bismo dešifrovali tekst, koristićemo oduzimanje. Naravno, pravi algoritmi za enkripciju su mnogo komplikovaniji. Danas se uglavnom koriste algoritmi koji šifruju blokove podataka (block cyphers), a neki od najpoznatijih su DES i TripleDES, AES, Blowfish, RC5, RC6 i sl.[3]
Glavni problem sa ovim tipom enkripcije je dostavljanje šifre drugom korisniku. Ne zaboravite – kada se koristi enkripcija uvek se pretpostavlja da je kanal veze kompromitovan (što znači da uvek pretpostavljamo da će napadač presresti poruku).
Rešenje ovog problema nađeno je u asimetričnoj enkripciji, kod koje se ne može koristiti isti ključ za šifrovanje i dešifrovanje. Ova enkripcija funkcioniše po principu dva ključa – javnog i tajnog.
- Ana želi da pošalje poruku Bojanu
- Ana šifruje poruku Bojanovim tajnim ključem
- Bojan jedini može da dešifruje poruku koristeći svoj tajni ključ
To znači da svako može da šifruje poruke za Bojana pomoću njegovog javnog ključa, ali on jedini može posle toga da ih pročita.
Jedan od najpoznatijih asimetričnih algoritama je RSA algoritam, kod koga se javni i tajni ključ izračunavaju na bazi dva slučajno izabrana velika prosta broja. Iako pružaju veoma visok stepen bezbednosti, problem sa ovim algoritmima je što su računski veoma zahtevni i nisu adekvatni za prenos velike količine podataka. Obično se bezbedna komunikacija na Internetu odvija tako što se putem asimetrične enkripcije pošalje šifra za simetričnu enkripciju preko koje se onda odvija prenos podataka.[2]
Poznati algoritmi za asimetričnu enkripciju su još i DSA (koristi se za digitalne potpise) i algoritmi eliptične krivulje (elliptic curve).
Hešovanje
Hešovanje (hashing) je praktično nepovratna enkripcija. Bilo koji podatak se hešovanjem preračunava u "nečitljivi" niz bajtova i to uvek fiksne dužine. Jako je mala verovatnoća da će dva različita podatka (npr. šifre) dati dva jednaka heša. Iz heširanog podatka se nikako ne može doći do originala.
Praktično, to je kao da saberemo dva broja. Dobili smo zbir, ali iz tog zbira niko ne može znati koji su bili originalni brojevi. Hešovanje je mnogo bolja matematička transformacija, jer praktično "nema šanse" da se dva puta ponovi isti rezultat.
Najpoznatiji heš algoritmi su MD5 i SHA-1.
Autentifikacija
Autentifikacija (authentication) predstavlja identifikaciju osobe ili računara na mreži. Za tako nešto se koriste sistemi korisničkih imena i šifara, digitalnih potpisa i digitalnih sertifikata.
Digitalne sertifikate izdaju posebne organizacije (certificate authority – CA) koje sertifikatom garantuju identitet web sajta ili pojedinca. Digitalni sertifikati i potpisi takođe mogu biti ukradeni ili iskopirani. Budući da se zasnivaju na sistemu javnog i tajnog ključa, korisnik je jedini odgovoran za bezbednost tajnog ključa koji se nalazi na njegovom računaru. Poznati su i slučajevi korišćenja zastarelih ili ukradenih digitalnih sertifikata kako bi se virusi predstavili kao legitiman softver.[2]
Način "identifikacije" putem sistema javnog i tajnog ključa funkcioniše malo drugačije u odnosu na asimetričnu enkripciju.
- Ana želi da potvrdi svoj identitet
- Ana šifruje identifikacioni podatak svojim tajnim ključem
- Svako može da dešifruje taj podatak koristeći Anin javni ključ, čime je potvrđeno da je Ana "sa druge strane"
Kao što vidimo, ovde tajni ključ služi za šifrovanje, a javni za dešifrovanje. Stvar je u tome da nam ne treba da skrivamo poruku, već samo da dokažemo ko smo, pošto samo Ana može da šifruje tako da se dešifruje njenim javnim ključem.
Hešovanje igra značajnu ulogu u informacionim sistemima i na serverima, gde su šifre praktično najbitniji podaci. Ako se ukradu sa servera, kako god da su zaštićene, mogu biti "provaljene". Međutim, ako su šifre na serveru hešovane, ne mogu biti iščitane. Tako, kada pošaljemo serveru šifru, on je hešuje i proveri da li se poklapa sa hešovanom šifrom u sistemu.
Pošto hešovanje za bilo koju količinu podataka daje "sažetak" iste dužine, koristi se i za proveru verodostojnosti fajla ili poruke - čak i razlika u jednom bajtu originalnih podataka će proizvesti sasvim drugačiji heš..
Još jedan problem identifikovanja javlja se u zaštiti materijala na web sajtovima od automatskog preuzimanja. Mnogi sajtovi danas zarađuju od reklama i od najvećeg im je značaja posećenost. Ako nude određene materijale (npr. fajlove za download, slike...), bitno im je da korisnici pogledaju reklame umesto da botovi (specijalizovani programi koji automatski surfuju Internetom) ili download manageri (tip programa koji služi za download velikog broja fajlova sa različitih sajtova) preuzimaju te fajlove automatski. Isto važi za sajtove koji omogućavaju javnu komunikaciju (npr. forumi, blogovi, news sajtovi sa komentarima) i koji ne žele da botovi automatski ostavljaju reklamne poruke.
Sajtovi uvode dodatne mere zaštite kako bi proverili da li se "sa druge strane" zaista nalazi ljudsko biće. Jedan od metoda je CAPTCHA sistem (Completely Automated Public Turing test to tell Computers and Humans Apart), gde se na ekranu prikazuje slika teksta koja je tako deformisana da ostaje (relativno) čitljiva ljudima, ali ne i računarima.[4]
Steganografija
Steganografija predstavlja poseban način postizanja bezbedne komunikacije, koji se ne oslanja na šifrovanje već na prikrivanje poruke. Kod klasične enkripcije, poruka postaje nečitljiva ali je očigledno da je poslata. Steganografija čini poruku nevidljivom.
Uobičajeno je da se poruka sakriva unutar nekog drugog (bezazlenog) fajla. To je najčešće slika, ali može biti i audio, video, tekst, dokument ili bilo koji drugi fajl.
Kada se poruka sakriva unutar slike, može se koristiti LSB metod ili maskiranje. LSB (Least Significant Bit) metod funkcioniše na principu promene najmanje važnog bita u svakom bajtu podataka. Kao što znamo, svaka tačka slike sastoji se iz tri komponente (RGB), odnosno tri bajta. Ako se najniži bit svakog bajta upotrebi za inkorporiranje poruke, svaka tačkica će promeniti boju samo za najfiniju nijansu – ljudskom oku slika se neće vidljivo promeniti, a u sebi će sadržati sakrivenu poruku.[1] Ovaj metod je siguran samo za slike koje nemaju lossy kompresiju. Kao što znamo, pikseli slike koje koriste kompresiju sa gubitkom podataka se više menjaju sa jačom kompresijom, pa se tako i poruka gubi.
R=56 | G=134 | B=221 | |||||||||||||||||||||
0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
R=57 | G=135 | B=220 |
Kakve poruke ćemo moći da prenesemo zavisi od steganografskog programa, ali ako bi poruke bile svedene na običan ASCII, bez dodatnih znakova, za jedan ASCII znak bi nam trebalo 7 bitova - znači za 3 slova koristimo 7 tačaka. To bi značilo da u sliku od 400x400 tačaka možemo sakriti tekst od preko 68000 znakova.
Steganografija putem maskiranja je malo otpornija, pa se može koristiti i u JPG slikama. Ovo je metod sličan umetanju vodenog žiga - na slici se vrši promena u svetlini i na taj način se poruka krije "pred očima".
Drugi metodi steganografije uključuju korišćenje samog matematičkog modela kompresije (npr. menjanje koeficijenta transformacije - čime se onda i prenosi poruka). Unutar običnog teksta se poruka može ubaciti u obliku praznina na kraju redova. Takođe, mnogo veće poruke, pa i cele fajlove je moguće "nakačiti" uz druge fajlove. Podaci koji se kriju, pored toga mogu biti i šifrovani.
Steganografija se ne koristi samo za slanje poruka, već i za sakrivanje podataka na samom računaru.
- Cole, E., Krutz, R. and Conley J. W. (2005), Network Security Bible, Indianapolis: Wiley Publishing
- Mao, W. (2004), Modern Cryptography: Theory and Practice, New Jersey: Prentice Hall PTR
- Galbreath, N. (2002), Cryptography for Internet and Database Applications, Indianapolis: Wiley Publishing
- The Official Captcha Site, CAPTCHA: Telling Humans and Computers Apart Automatically