ducin blog®:
kako to rade pravi majstori

Zaštita i sigurnost informacija

eye on youNaslov možda ne prija uhu, ali svi znaju o čemu se radi. Gotova svi imaju svest koliko je ovo bitna tema. Međutim, bez obzira na važnost ovog pitanja, problem bezbednosti je najčešće zanemaren. Retko gde ćete imati priliku da učite o sigurnosti računarskih sistema. Svi akademski kursevi posvećeni su algoritmima, programskim jezicima(čitaj Java) ili teorijskom računarstvu. Ovu temu, obično i sami programeri poznati po samoukosti, ostavljaju za kasnije, što obično bude nikada. U tom pogledu, imao sam sreće da u prošlom semestru izučavam ovu materiju, i hteo to ili ne upoznam se sa nečim što čini pismenost jednog programera.

Problem bezbednosti je izražen posebno danas, u uslovima poplave Web aplikacija, od kojih je dabar deo ranjiv još „iz aviona“. U kombinaciji sa gomilom aljkavih programera, rezultati su potencijalno katastrofalani. Verovatno da jedino lenjost sprečava zlonamernike da učine više štete.

Da li je sistem siguran?

Prvo pitanje koje pada na pamet. Kao i obično, pitanje bez dobro dogovora.

Ovo nije problem koji bi mogao da bude rešen nekim matematičkim aparatom. Ne postoji instrument koji može da kaže da li je neki sistem siguran ili ne. Kao što ne može da se kaže da li neki program ima ili nema grešaka. Nejasno je da li strogo formalno, uopšte i možemo da definišemo šta je siguran sistem. Najbolje je na ovaj problem gledati kao na jedan inženjerski problem, i uvesti nešto manje strog kriterijum, sa pitanjem da li je sistem dovoljno siguran. Jedino dovoljno dobro rešenje je osloniti se na dobru praksu i skup već oprobanih metoda.

Sa ekonomskog aspekta može da se govori i o prihvatljivom nivou rizika. Kako nisam ljubitelj, a nadam se ni drugi, ekonomskog pogleda na stvari, ostavimo tu temu za neki drugi put…

Napadi i pretnje

Prosto rečeno, napad je bilo koja akcija koja ugrožava sigurnost informacija. U [1] se kaže:

U osnovi, napadi su akcije koje su usmerene na ugrožavanje sigurnosti informacija, računarskih sistema i mreža. Postoje različite vrste napada, ali one se generalno mogu klasifikovati u 4 različite kategorije.

Tako autori navode sledeće kategorije napada:

  • Presecanje ili prekidanje
  • Presretanje
  • Izmena
  • Fabrikovanje

Da bi se napad uopšte dogodio, sistem mora da ima određenu ranjivost(vulnerability), koja može da se iskoristi(eksploatiše) sa ciljem kompromitovanja sistema. Ranjivost može da nastane na više načina. Kao posledica greške u dizajnu, kao posledica greške ili previda u poslovnim pravilima ili kao posledica programerske greške(ko je rekao prekoračenje bafera). Na taj način, svaki potencijalni protivnik sa namerom i kapacitetom da iskoristi određenu ranjivost i situacija koja može da dovede do napada, predstavljaju pretnju po sistem.

Na osnovu pretnje, mogućnosti da se pretnja realizuje i materijalnog gubitka koji bi na taj način nastao, može da se izračuna i rizik. Zatim, na osnovu rizika može da se kreira i strategija ili plan rešavanja ili ublažavanja pretnje. No, ekonomski aspekti nas ne interesuju u ovoj priči…

Kriptografija

U osnovi svake sigurnosne tehnike ili servisa obično leži kriptografija. Bruce Schneier je na pitanje šta je to kriptografija dao sledeći jednostavan odgovor:

Ako uzmem pismo, zaključam ga u sef, sakrijem taj sef negde u Njujorku, a zatim vam kažem da pročitate pismo, onda to nije kriptografija. Sa druge strane, ako uzmem pismo i zaključam ga u sef, a zatim vam dam taj sef, njegovu projektnu dokumentaciju i stotinu identičnih sefova sa njihovim šiframa, a vi i dalje ne možete da otvorite sef i pročitate pismo, to je kriptografija.

Osnovni zadatak kriptografije je proučavanje kriptografskih algoritama, ili svima poznato, algoritama šifrovanja. Današnje šifre svoju moć zasnivaju na nečemu što se zove ključ(nije uvek tako, Cezarova šifra). Nasuprot kriptografiji, kriptoanaliza ima zadatak da na osnovu šifrovanog teksta odredi početni tekst ili ključ koji je korišćen. Kriptologija obuhvata zajedno kriptografiju i kriptoanalizu.

Postoje dve osnovne vrste šifara sa ključem. Simetrične i asimetrične šifre. Simetrične šifre, poznate i kao šifre sa tajnim ključem, koriste jedan te isti ključ i za šifrovanje i za dešifrovanje podataka. Simetrične šifre mogu da rade bit po bit(bajt po bajt) sa ulaznim podacima, kada se nazivaju šifre toka, ili sa blokovima podatka, kada se kaže da su to blokovske šifre. Asimetrične šifre, koje se još zovu i šifre sa javnim ključem, koriste dva različita ključa. Javni i privatni ključ. Poruka se šifruje javnim ključem, a zatim je dešifrovanje moguće jedino privatnim ključem.

U zavisnosti od toga na koji način šifra obrađuje ulazne podatke, razlikuju se supstitucione i transpozicione šifre. Supstituciona šifra svaki element(slovo) ulaza, zamenjuje nekim drugim(ne uvek istim) elementom. Kod transpozicionih šifara, elementi ulaza ostaju isti, ali im se menja raspored.

Jednosmerne heš funkcije

Jednosmerne funkcije nisu same algoritmi šifrovanja, ali su sastavni deo gotovo svih šifara. To su funkcije koje je relativno lako izračunati, ali jako teško naći inverznu funkciju. Lako je razbiti prozor, ali gotovo je nemoguće od komadića sastaviti prvobitni oblik. Da li „prave“ jednosmerne funkcije u matematičkom smislu postoje, ne zna se niti postoji dokaza za to. Primenjena kriptografija koristi jedan poseban oblik jednosmernih funkcija. Jednosmerne heš funkcije. Heš funkcija za ulaznu, originalnu poruku, daje vrednost fiksne dužine, nazvanu heš. Na taj način, dobija se digitalni „otisak prsta“ originalne poruke. Kako ove funkcije ulaznu poruku preslikavaju u vrednost fiksne dužine moguće je da postoje dve različite poruke koje imaju jednaku heš vrednost. Očigledno je da ove funkcije nisu bijekcije, te da nisu ni prave jednosmerne funkcije. Međutim njihov rezultat je dovoljno dobar za primenu u kriptografiji. Naime, ako je heš dužine 160 bita, tada je verovatnoća da dve poruke imaju jednaku heš vrednost jednaka 1:2^160.

SSL

Da bi se uspostavio siguran komunikacioni kanal između dva računara, potreban je nekakav sigurnosni protokol. Jedan takav protokol, koji dodaje sigurnost u TCP/IP model, je dobro poznati SSL – Secure Socket Layer. Konkretno SSL nudi:

  • Privatnost. Sve poruke između dva računara šifrovane su simetričnom šifrom.
  • Proveru identiteta. Identitet obe strane može da se proveri(klijent i server).
  • Pouzdanost. Protokol proverava integritet poruka.

Funkcionalno SSL se sastoji iz dva protokola: SSL Handshake-a i SSL Record-a. Handshake uspostavlja sigurnu sesiju između dve strane. Identifikuje računare, bira konkretan protokol za šifrovanje i razmenjuje ključ sesije kojim će nadalje biti šifrovane sve poruke. SSL Record obavlja samo šifrovanje komunikacije. Posebna snaga ovog protokola ogleda se u tome što se sam ključ sesije, koji razmenjuju dve strane, šifruje javnim ključem. Sa druge strane relativna brzina proizilazi iz činjenice da se za komunikaciju koristi simetrična šifra.

Najpoznatija primena SSL-a je HTTPS protokol. Uistinu HTTPS nije novi protokol, već je to stari obični HTTP, koji kao komunikacioni kanal koristi SSL.

Zaključak

Kako su neke teme ostale nedorečene u jednom od prethodnih tekstova, da pokušam da sada budem potpuno jasan. Ako želite da učite o ovakvim stvarima, upišite FIT. Ako želite efikasno, brzo, i studiranje koje vam daje praktično i upotrebljivo znanju, upišite FIT. Ako hoćete da učite o pravom programiranju, i da vas uči ekipa sjanih profesora i asistenata, upišite FIT. Uzgred, imao sam priliku da mi jedan od dole potpisanih autora knjige bude profesor…

[1] Sigurnost računarskih sistema i mreža, Mikro Knjiga 2007, Dragan Pleskonjić, Nemanja Maček, Borislav Đorđević, Marko Carić

[2] Primenjena kriptografija, prevod drugog izdanja, Mikro Knjiga 2007, Bruce Schneier

Napisao: duca
Nema komentara za ovaj tekst

Napišite komentar

Ime

E-mail(ne prikazuje se)

Web adresa(opciono)(obavezno navesti http:// deo)


Spam kontrola: Koliko ima dana u nedelji?(brojevima)
Privatnost | Pravila korišćenja | | tel: +1 (603) 661-4651
© 2007 Dušan Pantelić. Sva prava zadržana.
From Russia with love, nginx! | FreeCSSTemplates.org