zaŠtita programskog koda |
Softverska industrija svoju profit obezbjeđ;uje prvenstveno prodajom softvera. Da bi softver bio zaštićenen kako od pirata tako i od konkurencije, nužno je zaštititi pristup izvornom programskom kodu. Tehnologije kao što su Java i Microsoft.NET vrše prevođenje "just-in-time", tj. instrukcije programa se prevode u realnom vremenu u mašinski kod razumljiv računaru, što olakšava otkrivanje izvornog koda. Razlikujemo nekoliko metoda zaš;tite programskog koda: |
Obsfukcija |
|
Obsfukcija (skrivanje) je najraširenija tehnika koja izvorni programski kod čini nerazumljivim. Programi koji su najpogodniji i koji se najčešće koriste za obsfukciju su C, C++, i Perl. Ovi programi koriste posebne predprocesore u kojima se vrši maskiranje sintakse programskog koda u sintaksu koja nije razumljiva za potencijalne napadače. Svrha obsfukcije je da na neko vrijeme spriječi napade. Veća učinkovitost će se postići ako je kombiniramo sa nekim od drugih tehnika kao što su enkripcija, code morphing i sl.;
|
 |
| sl.61 - Izvorni kod programa u C-u koji ispisuje "Hello World": |
 |
sl.62 - Obsfuciran programski kod u C-u, koji ima istu funkciju: |
U prvom primjeru je prikazana sintaksa programa koja je svima razumljiva i jasno pokazuje da programski kod ispisuje rečenicu "Hello World". U drugom primjeru je prikazana sintaksa programa koji također ispisuje rečenicu Hello World, ali prema sintaksi to nije odmah uočljivo jer je ispisano:
"@h3eglhl1o. >w%o#rtlwdl!S".
Kako je ispis realiziran pomoću funkcije niza koja prilikom ispisa izostavlja svaki drugi simbol, tako da na kraju kao rezultat dobijemo "Hello World". Ovdje naglašavamo da su dati jednostavni primjeri obsfukacije. Složeniji programi mogu imati više miliona linija koda, a sama obsfukcija je urađena mnogo kompleksnije, što predstavlja veliki problem u pokušajima da se otkrije izvorni kod programa.
Obsfukcija ne samo da se koristi za zaštitu, veći pojedini zloćudni programi koriste obsfukciju kako bi antivirusnim programima prikrili svoju prisutnost u programima i nesmetano se razmnožavali. Obsfukcija omogućuje da takvi programi mijenjaju svoj kod pri čemu njihova funkcija ostaje ista. |
Enkription |
Enkripcija, osim što se koristi u vojne svrhe, u mobilnoj telefoniji, računalnim mrežama, može se koristiti i u svrhu zaštite aplikacija, pa time i zaštite izvornog programskog koda, na način da izvorni kod bude čitljiv samo uz posjedovanje ključa kriptiranja. Poznatiji algoritmi za enkripciju programskog koda su Rijndael, Serpent i Twofish. Nedostatak kod ove vrste zaštite je što se gubitkom ključa bespovratno gubi kriptirani kod. |
 |
| sl.63 - Primjer enkripcije u PHP-u |
Code morphing |
"Code morphing" je tehnika zaštite izvornog koda programa od inverznog inženjeringa, modifikacija, analiza, kod koje se promjena programskog koda vrši nakon prevođenja. Naredbe u kodu se zamjenjuju sa njima sličnim pri čemu rezultat koda ostaje isti. Metoda "Code morfing" je slična metodi obsfukcije "code transposition" sa razlikom što se kod "code transposition" mijenja izvorni kod a kod "Code morfing" se mijenja mašinski kod. "Code morfing" se najčešće implementira pomoću programskih jezika koji prevode u realnom vremenu, što povećava njihovu ranjivost od inverznog inženjeringa. |
Security through obscurity |
"Security through obscurity" ili u prevodu „sigurnost kroz nejasnoće“ je metoda koja se koristi kao samostalna metoda zaštite ili u kombinaciji sa drugim metodama zaštite. „Security through obscurity“ metoda ne pruža potpunu sigurnost jer je pitanje vremena kada će nejasnoće na kojima je zasnovana biti razjašnjene i zaštita biti otklonjena. Stoga „Security through obscurity“ se najčešće koristi kao privremena mjera zaštite.
|