You are on page 1of 16

Zatita softvera

CCERT-PUBDOC-2004-04-71

Sigurnosni problemi u raunalnim programima i operativnim sustavima podruje je


na kojem CARNet CERT kontinuirano radi.
Rezultat toga rada ovaj je dokument koji je nastao suradnjom CARNet CERT-a i LS&Sa, a za koji se nadamo se da e Vam koristiti u poboljanju sigurnosti Vaeg sustava.

CARNet CERT,

www.cert.hr - nacionalno sredite za sigurnost


raunalnih mrea i sustava.

LS&S, www.lss.hr- laboratorij za sustave i signale pri Zavodu za


elektronike sustave i obradbu informacija Fakulteta elektrotehnike i
raunarstva Sveuilita u Zagrebu.

Ovaj dokument predstavlja vlasnitvo CARNet-a (CARNet CERT-a). Namijenjen je za javnu objavu, njime se moe
svatko koristiti, na njega se pozivati, ali samo u originalnom obliku, bez ikakvih izmjena, uz obavezno navoenje
izvora podataka. Koritenje ovog dokumenta protivno gornjim navodima, povreda je autorskih prava CARNet-a,
sukladno Zakonu o autorskim pravima. Poinitelj takve aktivnosti podlijee kaznenoj odgovornosti koja je
regulirana Kaznenim zakonom RH.

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 2 / 16

Sadraj

1.UVOD..........................................................................................................................................4
2.ZAKONSKA ZATITA SOFTVERA........................................................................................................5
2.1.AUTORSKO PRAVO....................................................................................................................................5
2.2.PATENT.............................................................................................................................................5
2.3.LICENCA.............................................................................................................................................6
2.4.VRSTE SOFTVERA.....................................................................................................................................6
3.METODE ZATITE SOFTVERA.............................................................................................................8
3.1.DONGLE.............................................................................................................................................8
3.2.ZATITA POMOU INSTALACIJSKOG MEDIJA.............................................................................................................8
3.3.ZATITA CD-A PROTIV KOPIRANJA....................................................................................................................9
3.4.FIKSNA REGISTRACIJSKA IFRA........................................................................................................................9
3.5.PROMJENJIVA REGISTRACIJSKA IFRA.................................................................................................................9
3.6.SERIJSKI BROJ OVISAN O HARDVERU.................................................................................................................10
3.7.ZATITA PROGRAMA POMOU REGISTRACIJSKE DATOTEKE..............................................................................................10
4.METODE ZA PROBIJANJE SOFTVERSKE ZATITE.................................................................................11
4.1.DEBUGGING........................................................................................................................................11
4.2.DISASSEMBLING....................................................................................................................................11
4.3.DECOMPILING......................................................................................................................................11
5.KOMERCIJALNI SOFTVER...............................................................................................................12
5.1.FLEXLM..........................................................................................................................................12
5.2.HASP............................................................................................................................................13
5.3.PC GUARD........................................................................................................................................14
6.ZAKLJUAK................................................................................................................................16
7.REFERENCE.................................................................................................................................16

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 3 / 16

1. Uvod
Softverska industrija danas se iznimno brzo razvija i potrebe za novim aplikacijama sve su vee.
Istovremeno Internet veze postaju sve bre, a raunalna mrea postaje novi medij za jednostavnu i brzu
distribuciju softvera. Takva situacija prua zanimljive mogunosti, ali istovremeno namee i velike
pravne i sigurnosne probleme proizvoaima softvera.
Softver je proizvod koji je jako teko i skupo razvijati, to dovodi do njegove visoke trine cijene, no
istovremeno ga je zbog niske cijene CD/DVD medija te Internet pristupa lako umnoavati i distribuirati.
Zbog toga se softver esto ilegalno kopira i distribuira to se popularno naziva softversko piratstvo.
Zbog tog piratstva softverske kompanije danas trpe ogromne gubitke. Prema nekim procjenama, danas
na svaku legalnu kopiju softvera dolaze 3-4 ilegalne kopije.
Kako bi zatitili intelektualno vlasnitvo razvijenog softvera te svoje financijske interese, proizvoai
softvera su poeli implementirati razne hardverske i softverske metode koje onemoguavaju
neovlateno kopiranje i distribuciju programa te njihovo koritenje. Te zatite ukljuuju provjeru
serijskog broja isporuenog softvera, provjeru raznih parametara raunala na kojem je softver instaliran,
obveznu autentikaciju svake zasebne kopije softvera, provjeru ispravnosti isporuenih licenci,
enkripciju izvrnog koda programa te razne druge metode.
Jo uvijek ne postoji metoda za zatitu softvera koju bi bilo nemogue probiti. Svaka metoda koja je do
sada primijenjena u praksi na kraju je ipak razbijena te sav softver nakon nekog vremena postane
dostupan u piratskoj verziji.
U takvoj situaciji namee se pitanje kakvog uope smisla ima ulagati vrijeme i sredstva u razvoj takvih
zatita, kad je s dananjom tehnologijom jednostavno nemogue pobijediti ljude s dovoljno vremena,
sredstava i motivacije za razbijanje softverskih zatita. Razlog za to je potpuno komercijalan jer ako
softver nema zatitu postat e dostupan u besplatnoj verziji za svega nekoliko dana. Meutim, ako
softver ima donekle kompliciranu zatitu, mogue je da ona nee biti probijena nekoliko mjeseci ili ak
godina, pa e za to vrijeme biti odgoeno pojavljivanje piratske verzije tog programa. Na taj nain je
mogue sprijeiti znaajniju financijsku tetu softverskoj kompaniji jer nakon tog razdoblja softver e
ionako zastarjeti te vie nee donositi znaajniju dobit.
Osim toga, u softver je mogue ugraditi viestruke zatite i provjere u razliitim dijelovima
programskog koda, tako da je teko ispravno razbiti zatitu. Kod takve zatite je mogue da piratske
verzije programa prividno rade (tj. mogue je pokrenuti softver), ali u nekim fazama rada program se
jednostavno ugasi, pone se ponaati nestabilno ili nema neke funkcionalnosti koje ima legalna verzija.
Naravno, nakon dovoljno vremena e se sigurno pojaviti ispravna verzija piratskog programa, ali do tada
moe proi dosta vremena. Osim toga, kad se takav program i pojavi, na Internetu e postojati mnogo
verzija piratskog softvera od kojih e veina biti neispravna. Ta injenica moe mnoge korisnike
natjerati da kupe program, ak i nakon objavljivanja piratskih verzija, jednostavno zato da izbjegnu
gnjavau te gubitak vremena i novca, pokuavajui koristiti neispravan softver.
Na Internetu je mogue pronai mnogo stranica sa detaljnim uputama za razbijanje softverskih zatita.
Tu su objanjeni razni postupci te napisane opirne upute za koritenje specijalnih alata za razbijanje
takvih zatita. Na alost, ne postoji nita slino za edukaciju programera. Zbog toga mnogi programeri
uope nisu svjesni koliko su jednostavne zatite koje oni primjenjuju te da su vjerojatno ve odavno
probijene.
Razlog tome je djelomino i okruenje i motivacija ove dvije skupine ljudi. Programeri su ljudi koji svoj
posao rade za novac i navikli su da je tajnost podataka najbolji nain za odravanje prednosti pred
konkurencijom i zaraivanje to vee svote novaca. Pirati, s druge strane, ne rade za novac te zbog toga
i objavljuju besplatno na Internetu sve rezultate svog rada. Piratska verzija softvera moe donijeti
znaajne novane utede njegovim krajnjim korisnicima, ali pirati razbijaju softverske zatite iskljuivo
iz znatielje, izazova ili ugleda koji e mu razbijanje nove i komplicirane zatite donijeti unutar
piratske zajednice. Pirati su najee spremni provesti tjedne i mjesece pred raunalom pokuavajui
probiti nove softverske zatite, a programeri u pravilu podcjenjuju njihov broj i motivaciju.

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 4 / 16

2. Zakonska zatita softvera


Osnovni preduvjet za borbu protiv softverskog piratstva je donoenje zakona koji e regulirati prava
autora softvera te prava njegovih korisnika. Problem sa softverom je oduvijek bila injenica da ga je
bilo teko svrstati u bilo koju od tradicionalnih kategorija intelektualnog vlasnitva. Softver se moe
promatrati na dva naina. S jedne strane, izvorni kod programa te nain implementacije razliitih
algoritama u sintaksi konkretnog programskog jezika se mogu promatrati kao literarno djelo i zbog toga
ga je mogue zatititi pomou autorskog prava. S druge strane, softver je takoer mehanizam koji, kad
se izvri, moe obaviti neki koristan posao, a takve stvari se tradicionalno tite pomou patenata. Oko
zakonskih odredbi za zatitu softvera se u zadnje vrijeme vodi dosta rasprave i nije potpuno jasno koju
koliinu zatite bi softver trebao imati. Programeri naravno ele svoj softver zatititi to bolje tako da
od njega mogu imati to veu financijsku korist, dok s druge strane korisnici ele da softver bude to
dostupniji, otvoreniji i pristupaniji irokoj javnosti. U praksi je potrebno pronai odgovarajuu razinu
zatite koja e omoguiti dovoljno zatite programerima da se stimulira daljnji razvoj softvera te koja
e osigurati da softver bude dovoljno pristupaan korisnicima.

2.1.

Autorsko pravo
Autorsko pravo je najraireniji nain zatite bilo kojeg intelektualnog vlasnitva. Autorsko pravo titi
autora od nelegalnog koritenja njegovog djela. Tonije, zatita djela koju omoguuje autorsko pravo
se moe definirati pomou sljedeih prava:
pravo umnaanja djela;
pravo na izmjene i dopune u djelu;
pravo distribucije djela;
pravo javnog izvoenja i prikazivanja djela;
pravo autora na koritenje njegovog imena uz svaku kopiju djela te zatita od koritenja imena uz
tue radove ili uz iskrivljene verzije njegovog djela;
pravo autora da sprijei iskrivljavanje ili unitavanje svojeg djela.
Autorsko pravo naelno titi originalnu implementaciju i nain prikaza neke ideje, a ne samu ideju. U
softverskoj industriji to znai da je mogue autorskim pravom zatititi izvorni i izvrni kod programa,
strukturu i organizaciju koda programa, dijelove ili cijelo korisniko suelje te sve prirunike, upute i
ostalu dokumentaciju u digitalnom ili pisanom obliku. Autorsko pravo meutim ne titi razne
programske algoritme ili metode te matematike postupke koji su koriteni u realizaciji softvera.
Autorsko pravo titi od neovlatenog kopiranja ili oponaanja koda, meutim, autorsko pravo ne titi od
konkurencije koja samostalno i nezavisno (bez uvida u izvorni kod konkurencije) razvije slian softver.
Dapae, drugi autor moe ak dobiti autorsko pravo za svoj program bez obzira na slinost s ve
postojeim softverom. Autorsko pravo se esto koristi jer je primjenjivo na skoro svaki oblik softvera, a
mogue ga je lako, brzo i jeftino dobiti.
Svako djelo zatieno autorskim pravom mora imati vidljivu oznaku, a mora biti oznaena i godina
izdavanja te ime autora ili naziv tvrtke koja je nositelj autorskih prava.

2.2.

Patent
Patent je zatita izuma koju izdaje vlada neke drave, a sprjeava druge osobe ili organizacije da
proizvode i prodaju isti ili slian proizvod. Patentna zatita se moe primijeniti na svaki koristan
princip, mehanizam, proizvodni proces i sl. koji je nov, nije oigledan i nije sadran u nijednom
prethodno objavljenom patentu. Za razliku od autorskog prava, patent zabranjuje objavu bilo kakvog
slinog rada pa makar bio i nezavisno razvijen.
Za razliku od autorskog prava koje titi prezentaciju neke ideje i oblik izraavanja, patent titi samu
ideju. U softverskoj primjeni patent titi ideje, algoritme i matematike postupke koritene u programu,
a ne sam programski kod.
Nedostatak patenata je visoka cijena njihovog izdavanja i dugo vrijeme (obino nekoliko godina) koje
mora proi od predaje zahtjeva pa do eventualnog odobrenja za izdavanje patenta. Osim toga, da bi se
formule, metode ili algoritmi zatitili patentom prvo ih je potrebno objaviti i dati na uvid komisiji za
dodjeljivanje patenta, a na taj nain se uglavnom gubi na sigurnosti koju prua tajnost istih ideja.
Kako se softverska industrija nevjerojatno brzo razvija, postoji jako malo softverskih rjeenja koja mogu
opstati na tritu vie od nekoliko godina, koliko je potrebno za izdavanje patenta. Zbog toga je

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 5 / 16

traenje patenta za softver rijetko isplativo i koristi se samo za neke algoritme i postupke za koje se
smatra da su dovoljno fundamentalni da bi mogli ostati u upotrebi desetak ili vie godina.
Patent je najmoniji zakonski oblik zatite softvera jer, kao to je ve spomenuto, zabranjuje objavu
programa koji ima sline funkcije ili koristi iste softverske metode pa makar bio nezavisno razvijen. Ta
injenica je ujedno razlog velikih kontroverzi i estokih rasprava koje se vode oko patentiranja
softverskih rjeenja.
Softverska industrija zagovara patentiranje softvera jer, osim nelegalnog kopiranja i oitog kopiranja
koda, eli zatititi to vie inovativnosti i originalnosti koja je utroena u razvoj softvera. Konkurencija
moe razviti slian softver jednostavnim prouavanjem funkcionalnosti originalnog rjeenja, ak i bez
poznavanja izvornog koda, a patent je jedini nain da se to sprijei. S druge strane, postoji raireno
miljenje da bi patentiranje softverskih algoritama zaustavilo razvoj softvera, irenje znanstvenih ideja
te stvorilo razne monopole u softverskoj industriji.
Danas je softver mogue patentirati u SAD-u, ali ne i u Europi.

2.3.

Licenca
Veina softvera se danas izdaje pod nekom vrstom licennog sporazuma. Licenca je ustvari proirenje
autorskog prava na neki softver. Kod licenciranog softvera korisnik uope ne kupuje softver ve kupuje
samo licencu za njegovo koritenje, a vlasnik softvera ostaje autor. Licenca je posebna dozvola u kojoj
je tono definirano na koji nain korisnik moe koristiti taj softver.
Licenca definira na koliko raunala se softver smije instalirati, u koje svrhe se smije koristiti
(komercijalne, osobne, obrazovne svrhe itd.) te koliko dugo je licenca vaea. Nakon isteka licence ona
se mora obnoviti (tj. ponovno kupiti od autora programa) ili korisnik mora prestati koristiti softver.

Slika 1: Softver za nadzor nad softverskim licencama

2.4.

Vrste softvera
Prema zakonskom obliku zatite softver se moe podijeliti u sljedee kategorije:
Public domain;
Open Source;
Freeware;
Shareware;
Komercijalni softver;
Komercijalni softver (licencirani).

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 6 / 16

Public domain je softver s kojim korisnik moe raditi sve to eli. Doputeno je koritenje,
umnoavanje, distribucija pa ak i prodavanje bez ikakve dozvole od autora.
Open Source je softver koji je besplatan za koritenje, umnoavanje i distribuciju, a dozvoljeno je raditi
promjene u izvornom kodu te takav softver dalje distribuirati. Jedini uvjet koji se obino namee
korisniku je da promijenjeni softver i dalje bude Open Source. Takav softver se distribuira zajedno s
licencom u kojoj su definirana sva prava i obaveze korisnika. Ako korisnik distribuira takav softver, bilo
u izvornom obliku bilo izmijenjen, uvijek se mora distribuirati pod istim licennim sporazumom.
Freeware je besplatan za koritenje i distribuciju, ali se ne smije mijenjati. Taj softver se takoer izdaje
pod posebnom licencom sa definiranim pravilima koritenja. Autor zadrava autorsko pravo na ovakav
softver.
Shareware je slian kao i freeware, ali se u licennom sporazumu obino trai da korisnik poalje autoru
odreenu svotu novca. Kod takvog softvera obino postoji definirano vrijeme u kojem korisnik moe
besplatno koristiti program, a ako ga eli koristiti i nakon tog razdoblja mora ga platiti. Novane svote
za takav softver su obino simboline i to je zgodan nain za distribuciju softvera koji inae ne bi
opstao na tritu komercijalnog softvera.
Komercijalni softver je softver koji korisnik mora kupiti te ga smije samo koristiti, a ne kopirati,
distribuirati ili mijenjati. Postoje dva tipa komercijalnog softvera, softver koji korisnik moe kupiti te
licencirani softver. Ako korisnik kupi kopiju programa, moe ga koristiti na nain koji je definiran
zakonom o autorskim pravima. Danas je skoro sav softver licenciran i u tom sluaju korisnik kupuje
samo licencu za koritenje programa. Korisnik moe koristiti takav softver samo na nain koji je u
skladu s licennim sporazumom te zakonom o autorskim pravima.

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 7 / 16

3. Metode zatite softvera


Glavni problem s zakonskim mjerama koje su opisane u prethodnom poglavlju je njihova primjenjivost u
praksi. Bez obzira na koji nain je softver zakonski zatien, u praksi je teko otkriti prekritelje i jo
tee na sudu dokazati krivicu. Zbog takve situacije je proizvoaima softvera najee lake i jeftinije
sprijeiti piratstvo ugradnjom tehnolokih zatitnih mjera u svoj softver, nego kasnije pokuavati
krivino goniti prekritelje licennog sporazuma.
Za zatitu softvera se koriste razliite hardverske i softverske metode. Zadaa svih tih metoda je da od
korisnika zahtijevaju neku vrstu autentikacije prije nego to mu se omogui koritenje softvera.
Korisnik mora imati poseban hardver koji se spoji na paralelni ili serijski komunikacijski port raunala
ili neku vrstu registracijske datoteke ili registracijsku ifru koju mora upisati prilikom instalacije
programa. Osim toga sve te metode pokuavaju nekako ifrirati ili samo zakomplicirati izvrni kod
programa tako da onemogue pirate u pokuaju razbijanja zatite.

3.1.

Dongle
Dongle je ureaj koji je potrebno spojiti na serijski ili paralelni komunikacijski port raunala da bi se
mogla pokrenuti odreena aplikacija. Dongle je relativno jednostavna naprava koja sadri hardverski
implementiran klju za omoguavanje pristupa odreenoj aplikaciji i koja je sposobna na zahtjev
aplikacije poslati taj klju.
Unutar same aplikacije se na vie mjesta poziva funkcija koja komunicira s dongle kljuem, aplikacija
alje razne upite na odgovarajui komunikacijski port i provjerava pristigle odgovore. Ako dongle nije
prisutan ili ako ne alje odgovarajui klju, program e prestati s radom.
Osim zatite od ilegalnog kopirana softvera, dongle se moe koristiti i za onesposobljavanje odreenih
dijelova programa, ovisno o kupljenoj verziji softvera, odnosno o kupljenoj licenci. U tom sluaju se
kupcima uvijek isporuuje ista verzija programa, ali se isporuuje dongle sa drukijim kljuem. Ako
korisnik kupi najskuplju verziju softvera dobiti e dongle koji otkljuava sve funkcije programa, a ako
kupi jeftiniju verziju dobiti e dongle koji omoguava rad programa, ali neke funkcije ostavlja
zakljuane.
Dongle klju je prilino teko kopirati, ali je zato mnogo jednostavnije probiti funkcije za komunikaciju
s dongle kljuem unutar same aplikacije. Zbog toga je i nivo sigurnosti koji se postie ovakvim nainom
zatite najee odreen izvedbom same aplikacije, a ne izvedbom donglea. Meutim kod za provjeru
ispravnosti donglea unutar aplikacije se moe enkriptirati, a isto tako se moe enkriptirati i sva
komunikacija aplikacije i dongle ureaja.
Ako je provjera kljua ugraena na vie mjesta u programu te ako su ti dijelovi koda enkriptirani moe
biti jako teko pronai i ukloniti sve provjere iz aplikacije.
Novije izvedbe dongle ureaja imaju ugraenu EPROM memoriju u koju je mogue pohraniti programski
kod nekih funkcija u programu. Funkcije u EPROM-u su enkriptirane i dekriptiraju se direktno u radnu
memoriju kod izvravanja programa. Na taj nain je bez originalnog donglea praktiki nemogue probiti
zatitu jer dio koda jednostavno nedostaje.
Usprkos opisanim prednostima, dongle ureaji se danas skoro vie uope ne koriste, a razlozi su:
komplicirana instalacija, esto je potreban poseban upravljaki softver (engl. driver) za ispravan rad
dongle kljua;
visoka cijena, svakom korisniku je osim primjerka aplikacije potrebno isporuiti i poseban primjerak
donglea;
nemogunost distribucije softvera preko Interneta.

3.2.

Zatita pomou instalacijskog medija


Za ovaj nain zatite aplikaciju je potrebno distribuirati na mediju na koji je mogue pisati podatke kao
to je meki ili tvrdi disk ili izbrisivi optiki disk (CD-RW). U posebnoj datoteci na instalacijskom mediju
je zapisan broja instalacija programa. Nakon svake uspjene instalacije broja se povea i ponovno
zapie u istu datoteku. Kad se dostigne odreeni broj instalacija, program vie nije mogue instalirati s
tog medija.
Za ispravan rad ove zatite, datoteka s brojaem mora biti enkriptirana tako da joj je to tee
promijeniti sadraj, a sam medij mora biti to tee kopirati.

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 8 / 16

Ovaj mehanizam zatite se rijetko koristi i to zbog oitih razloga kao to su vezanost uz odreenu vrstu
instalacijskog medija, nemogunost distribucije softvera preko Interneta, visoka cijena i nepraktinost.

3.3.

Zatita CD-a protiv kopiranja


Postoji vie vrsta zatite CD medija protiv kopiranja i svi programi koji se isporuuju na CD mediju
koriste takvu zatitu.
Najjednostavniji oblik zatite je u obliku provjere da li se ispravan CD nalazi u CD itau. Na taj nain se
moe sprijeiti kopiranje i pokretanje programa s tvrdog diska raunala, ali je takoer nemogue
razlikovati originalni od ilegalno kopiranog CD-a. ak i takva jednostavna zatita je korisna jer
onemoguava softverske pirate da rade tzv. ripanje originalnog programa. Ripanje je postupak koji se
najee primjenjuje za raunalne igre, a njime se s originalnog CD-a uklone sve slike, animacije,
zvukovi, DirectX upravljaki programi i svi ostali dijelovi koji zauzimaju puno prostora, a nisu nuno
potrebni za rad programa. Nakon toga se preostali sadraj komprimira i distribuira preko Interneta.
Tako nastala verzija programa puno je manja, to olakava njeno skidanje s Interneta osobama sa
sporom vezom.
Kompliciranije zatite protiv kopiranja CD medija se obino rade tako da se na originalni CD snimi
informacija koju je nemogue kopirati pomou komercijalno dostupnog softvera za kopiranje CD-ova.
Veliki dio softvera provjerava naziv (engl. Label) CD-a koji se trenutno nalazi u itau. Ako se za naziv
CD-a koriste nestandardni znakovi, to moe zbuniti veinu softvera za kopiranje CD medija.
Zatita CD-a se esto izvodi tako da se provjeri da li su na CD-u prisutne sve datoteke. Posebno se
provjeravaju datoteke koje se najee uklanjaju prilikom ripanja CD-a.

3.4.

Fiksna registracijska ifra


Vjerojatno najjednostavniji oblik zatite je ugraivanje programske funkcije koja zahtijeva od korisnika
unoenje odreene ifre za registraciju. Ta vrijednost je uvijek ista i ne ovisi o nikakvim parametrima
kao to su korisniki podaci ili podaci o korisnikovom raunalu. Kod takve zatite je dovoljno da pirat
jednom pronae registracijsku ifru i objavi je na Internetu pa da svatko moe besplatno registrirati taj
softver.
Usprkos svojoj jednostavnosti, ovaj tip zatite ima neke prednosti nad ostalim mehanizmima. Najvea
prednost je to ispravna ifra za registraciju ne mora biti pohranjena na disku ve je pohranjena negdje
u programskom kodu. Tu ifru je nemogue saznati itanjem programskog koda jer se obje ifre (ifra
pohranjena u kodu i ifra koju upie korisnik) najprije nekim sloenim matematikim operacijama
pretvore u nove vrijednosti koje se tek tada usporeuju. Ako su te operacije dovoljno komplicirane
moe biti jako teko shvatiti ispravan postupak raunanja ifre.
Najei nain uklanjanja te ifre je prepravljanje dijela koda za provjeru ifre tako da se potpuno
zaobie provjera i program normalno nastavi s radom. Da se sprijei takvo probijanje zatite, mogue je
koristiti registracijsku ifru za dekriptiranje dijelova programskog koda. Ako je dio koda enkriptiran
pomou registracijske ifre onda e ga biti mogue dekriptirati samo pomou te iste ifre. ak i ako
pirat uspije premostiti algoritam za provjeru ifre kod upisa program jo uvijek nee ispravno raditi.
Enkriptirani dio koda se moe dekriptirati u memoriji neposredno prije nego korisnik pokrene tu
funkciju, i kada funkcija vie nije potrebna ponovno se enkriptira. Ako program ima nekoliko
enkriptiranih dijelova onda e maksimalno jedan od tih dijelova biti dekriptiran u memoriji u svakom
trenutku, to piratima onemoguava snimanje dektiptiranog programskog koda iz memorije.

3.5.

Promjenjiva registracijska ifra


Bolji nain zatite je generiranje registracijske ifre pomou parametara koji su sakupljeni iz podataka
o korisniku ili tajno prikupljeni iz parametara korisnikog raunala.
Ovakav program generira ifru iz korisnikih podataka te koristi podatke poput korisnikog imena,
adrese, naziva tvrtke i sl. Kada korisnik upie svoju ifru, program provjerava da li se ifra poklapa s
izraunatom ifrom.
Program koji koristi podatke sakupljene iz korisnikog raunala radi na slian nain samo to umjesto
korisnikih podataka koristi razne podatke o korisnikom raunalu poput serijskog broja diska, raznih
postavki Windows Registrya i sl. Iz prikupljenih vrijednosti program rauna neku vrijednost i pohranjuje
je u skrivenoj datoteci na tvrdom disku raunala. Korisnik mora proizvoau softvera poslati generirani

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 9 / 16

identifikacijski broj raunala na osnovu kojeg mu proizvoa softvera vrati odgovarajuu ifru za
registraciju softvera.

3.6.

Serijski broj ovisan o hardveru


Ovo je najee koriten nain hardverske zatite raunala. Prilikom instalacije programa generira se
pseudo-sluajni serijski broj raunala. Aplikacija ifrira taj broj i sakrije ga u posebnu datoteku, a moe
ga zapisati i u neku od datoteka operacijskog sustava. Serijski broj se generira pomou serijskog broja
isporuene kopije softvera te iz prikupljenih podataka o hardveru raunala i konfiguraciji operacijskog
sustava. Na taj nain se postie jedinstveni generirani broj.
Nakon instalacije program je potrebno registrirati. U procesu registracije, generirani broj se alje
proizvoau softvera koji korisniku vraa registracijsku ifru koja odgovara generiranom serijskom broju
hardvera.

3.7.

Zatita programa pomou registracijske datoteke


Registracijske datoteke imaju istu ulogu kao i registracijske ifre, a prednost im je koliina informacija
koju je mogue spremiti u njih. Registracijska datoteka moe sadravati informacije o korisniku,
registracijsku ifru za autentikaciju korisnika, kljueve za dekriptiranje enkriptiranih dijelova izvrnog
koda aplikacije i sl. Registracijska datoteka je obino enkriptirana tako da je nemogue proitati i
promijeniti njen sadraj.
U takvoj datoteci moe biti zapisan dio izvrnog koda aplikacije tako ako datoteka ne postoji ili je
neispravno dekriptirana, aplikaciji nedostaje dio koda i ne moe ispravno raditi. U registracijsku
datoteku je mogue pohraniti podatke o hardveru korisnikovog raunala i na taj nain je potrebna
jedinstvena datoteka za svako raunalo.
Kao i kod registracijskih ifri, iz aplikacije je mogue ukloniti dio koda koji provjerava ispravnost
registracijske datoteke. Kako bi se to otealo, provjera ispravnosti datoteke se ugrauje u vie mjesta u
programu i informacije u datoteci se koriste za ifriranje dijelova izvrnog koda.

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 10 / 16

4. Metode za probijanje softverske zatite


Postoje dva glavna pristupa probijanju softverske zatite. Prvi pristup je pokretanje programa unutar
nekog alata za ispravljanje pogreaka u kodu (engl. debugging), a drugi pristup je reverzno prevoenje
programa iz izvrnog koda natrag u asemblerski kod (engl. disassembling) ili neki od viih programskih
jezika (engl. decompiling).

4.1.

Debugging
Alati za ispravljanje pogreaka u kodu omoguuju interaktivno pokretanje programa. Program za
debugging moe zaustaviti izvravanje programa izmeu svake dvije instrukcije. Nakon to se program
zaustavi, programer moe vidjeti u kojem dijelu izvornog koda programa se proces trenutno nalazi.
Osim dijela izvornog koda, programer u svakom trenutku moe vidjeti sadraj radne memorije, sadraj
procesorskih registara, podatke koji se zapisuju u datoteke, informacije o programskim nitima i mnoge
druge informacije. Takve alate koriste programeri za vrijeme razvoja softvera jer im omoguuju detaljan
uvid u rad programa i uklanjanje pogreaka u programiranju. Slian alat je ugraen u svaki softverski
paket koji je namijenjen razvoju aplikacija, poput Microsoft Visual Studia ili Borland C++ Buildera.
Meutim alati za debugging se esto rade i kao samostalne aplikacije i takvi alati su obino puno
moniji. Najbolji debugging alati mogu komunicirati direktno s jezgrom operacijskog sustava i zaobii
pozive sustava. Na taj nain su puno stabilniji u radu, mogu prepoznati vie informacija u stanju
sustava te ak omoguuju analizu hardverskih upravljakih programa (engl. drivera).
Koritenjem takvih alata, pirati mogu zaustaviti program u trenutku kad on zahtijeva autorizaciju
korisnika. Nakon to se program zaustavi, mogue je vidjeti dio koda koji je odgovoran za provjeru
autorizacije i izmijeniti ga tako da prihvaa svaku ifru.
Najpoznatiji alat za debugging je SoftIce tvrtke Compuware, program moe uhvatiti mnoge pogreke
koje drugim alatima promaknu, pa ak prikazati pogreku nakon blokiranja Windows operacijskog
sustava.

4.2.

Disassembling
Disassembling i decompiling su postupci koji izvrni kod programa pretvaraju natrag u izvorni kod, tako
da ga je mogue analizirati. Alati za disassembling pretvaraju izvrni binarni kod u asemblerski kod.
Kako je asembler jezik koji se direktno (jedna instrukcija asemblera odgovara jednoj binarnoj
instrukciji) prevodi u binarni kod, disassembling alati mogu prevesti svaku aplikaciju, bez obzira na
programski jezik u kojem je ona izvorno napisana.
Najbolji alati mogu generirati strukturiran kod koji je mogue lako pratiti i analizirati pa ak kreiraju i
komentare za lake snalaenje u programu.
Najee koriten alat za disassembling je IDA Pro tvrtke NuMega.

4.3.

Decompiling
Alati za decompiling pretvaraju izvrni binarni kod programa u izvorni kod nekog od programskog jezika
vie razine kao to je C++ ili Java. Ovi alati mogu prevesti samo izvrni kod nekog odreenog jezika za
koji je taj alat razvijen. Na primjer, alat napravljen za programski jezik C++ ne moe prevesti program
napisan u Javi. Najvea prednost ovih alata nad alatima za disassembling je injenica da veina
programera i pirata puno bolje poznaje jezike vie razine od asemblera i takav kod im je puno lake
analizirati.

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 11 / 16

5. Komercijalni softver
5.1.

FlexLM
FlexLM (Flex License Manager) je softver tvrtke Macrovision. FlexLM je izuzetno kompliciran sustav
nadzora nad softverskim licencama i predstavlja danas najrairenije komercijalno rjeenje za zatitu
softvera.
FlexLM softver ukljuuje zatitu izvrnog koda aplikacije, kontrolu ispravnosti registracijskih datoteka
na disku, softver za implementaciju na posluiteljima koji nadziru koritenje licenci u lokalnoj mrei,
sustav za lako obnavljanje licenci i centralnu administraciju cijelog sustava.
Za zatitu samih aplikacija FlexLM softver koristi enkripciju izvrnog koda aplikacije, enkriptiranu
registracijsku datoteku koja je ovisna o hardveru korisnikog raunala, kontrolu posluitelja kojom se
neovlatenim korisnicima zabranjuje pokretanje mrenih aplikacija, a u nekim izvedbama se koristi i
dongle.
Sustav nadzire koritenje softvera i ispravnost licenci, a mogue je izabrati razliite metode
licenciranja softvera. Softver podrava nekoliko desetaka razliitih licennih sustava, a najpoznatiji su:
Node locked softver je mogue pokrenuti samo na raunalu za koje je izdana licenca;
User based softver moe pokrenuti samo korisnik koji je vlasnik licence (licenca je vezana uz
osobu, a ne raunalo kao kod Node locked sustava);
Site licensing softver mogu pokrenuti svi korisnici na odreenoj lokaciji (firmi, odjelu itd.);
Floating license softver mogu pokrenuti svi korisnici u lokalnoj mrei, ali postoji ogranienje na
maksimalni broj korisnika koji mogu istovremeno raditi sa programom.
Softver podrava i licenciranje prema vremenu utroenom u radu s zatienim programom. FlexLM
posluitelj prati vrijeme provedeno u radu s softverom za sve korisnike u mrei te se na osnovu toga
korisniku isporuuje raun.

Slika 2: Izbor vrste licenciranja


FlexLM sustav se sastoji od 4 glavna dijela i to su:

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 12 / 16

aplikacijski softver (engl. application software);


registracijska (licenna) datoteka (engl. license file);
posluitelj za kontrolu licenci (engl. license manager deamon);
posluitelj proizvoaa softvera (engl. vendor daemon).
Aplikacijski softver je softver koji je zatien FlexLM sustavom. Softver ima ugraene funkcije koje
provjeravaju postojanje i ispravnost registracijske datoteke. Datoteka se mora nalaziti u odreenom
direktoriju, a u datoteci je naveden naziv i inaica softvera, podaci o vlasniku licence te razdoblje u
kojem je licenca vaea.
U registracijskoj datoteci je zapisana i staza do posluitelja za kontrolu licenci ija je zadaa nadzor
licenci u lokalnoj mrei. Aplikacija se spaja na taj posluitelj i od njega saznaje lokaciju posluitelja
softverske kompanije. Posluitelj proizvoaa softvera nadgleda koritenje licenci za sve muterije tog
proizvoaa.
S obzirom da je FlexLM jako popularan softver koji koriste mnogi proizvoai softvera za zatitu svojih
aplikacija, mogue je da korisnik na svom raunalu ima vie aplikacija od razliitih proizvoaa, a koje
su sve zatiene FlexLM sustavom. U tom sluaju korisnik mora instalirati FlexLM softver samo jednom i
taj sustav upravlja licencama za sve aplikacije za koji je odgovoran.

Slika 3: FlexLM softver za kontrolu licenci


Iako je ovaj sustav jako poznat i koriste ga stotine proizvoaa softvera irom svijeta, njegova
komplicirana zatita je ipak probijena i vrlo brzo se pojavljuju piratske verzije softvera koji koristi
ovakvu zatitu.
FlexLM softver se instalira kao dijeljena DLL biblioteka funkcija i aplikacija koja je zatiena FlexLM
sustavom komunicira s tom bibliotekom svaki puta kada provjerava ispravnost licenci. Takva
implementacija ustvari olakava probijanje zatite.

5.2.

HASP
Softver HASP (Hardware Against Software Piracy), koji proizvodi tvrtka Aladdin, je sustav za zatitu
aplikacija koji primjenjuje dongle kljueve. Softver podrava dongle kljueve koji se spajaju na skoro
sve mogue komunikacijske portove u raunalu. Postoje izvedbe donglea za paralelni port, USB port,
PCI sabirnicu (kartica koja se ugradi u raunalo) te kao PCMCIA kartica.
Na slikama 4 i 5 su prikazani dongle ureaji za paralelni i USB port.

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 13 / 16

Slika 4: Dongle za paralelni port

Slika 5: Dongle za USB port

Svi dongle ureaji imaju vlastitu EPROM memoriju i procesor koji enkriptira i dekriptira podatke u
memoriji. Kako je gotovo nemogue proitati podatke iz memorije bez poznavanja ispravnog kljua,
postie se nivo zatite koji je jako teko razbiti.
Dongle ima dovoljno mjesta u memoriji za pohranu 112 razliitih licenci za 112 razliitih aplikacija, a s
istim ureajem je mogue tititi aplikacije na Windows, Unix i Macintosh platformama.
Softver koji se isporuuje s ovim ureajima ima dva naina rada. Korisniku aplikaciju je mogue
zatititi koritenjem takozvane omotnice ili promjenom izvornog koda aplikacije. Omotnica zatiuje
korisniku aplikaciju tako da enkriptira izvrnu datoteku i doda dio koda koji omoguuje izvravanje
aplikacije. Taj nain zatite je jednostavniji jer ne zahtijeva promjenu izvornog koda aplikacije, ali je
manje siguran. Drugi nain zatite je da se prilikom programiranja u softver ugrade posebne funkcije iz
biblioteke koja se isporuuje s Aladdin softverom.

5.3.

PC Guard
PC Guard je softver kompanije Sofpro, namijenjen zatiti softvera i kontroli licenci na Windows
platformama. PC Guard titi softver pomou elektronike omotnice ili API poziva u izvornom kodu
aplikacije, slino kao to je to opisano za HASP softver. Zatita se postie enkripcijom izvrnog koda i
detektiranjem pokuaja analize koda.
Za autentikaciju korisnika PC Guard koristi registracijsku ifru koja ovisi o hardveru korisnikog
raunala. PC Guard moe detektirati registracijske oznake tvrdog diska, CD/DVD-a, BIOS-a, Ethernet
kartice, procesora i operacijskog sustava na korisnikom raunalu i te informacije koristi za kontrolu
korisnikove registracijske ifre.
Postoji posebna verzija PC Guard softvera za klasine Windows aplikacije te posebna verzija za .NET
aplikacije.

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 14 / 16

Slika 6: Korisniko suelje programa PC Guard


Rad s programom PC Guard je vrlo jednostavan. Aplikaciju je mogue zatiti tako da se upie ime
aplikacije, njena registracijska oznaka te izabere nain licenciranja. Na slici 6 je prikazano korisniko
suelje programa PC Guard i to prozor u kojem se izabire jedan od 4 mogua naina licenciranja.

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 15 / 16

6. Zakljuak
Iz ovog dokumenta je vidljivo da je zatita softvera predstavlja veliki problem u modernom drutvu.
Zatita softvera je proces povezan ne samo s informatikom tehnologijom, ve i sa zakonodavstvom i
ekonomijom. Moderni sustavi za kontrolu softverskih licenci su narasli u velike, distribuirane, mrene
sustave kojima je zadaa ne samo borba protiv softverskog piratstva, ve i stvaranje infrastrukture koja
e omoguiti efikasniji nain naplate koritenja softvera. U ne tako dalekoj budunosti se softver
vjerojatno vie nee plaati unaprijed kao danas, ve prema vremenu koritenja, poput naplate struje ili
vode, a sustavi za kontrolu licenci to moraju omoguiti.
S druge strane, sustavi za zatitu softvera jo uvijek ne uspijevaju obaviti svoju primarnu zadau, a to je
zatita softvera od izrade piratskih verzija. Iako je na Internetu mogue pronai tvrtke koje za svoje
sustave zatite tvrde da nikad nisu probijeni, praksa pokazuje da je razbijanje bilo kakve softverske
zatite samo pitanje vremena. esto je isplativije u softver ugraditi vlastiti mehanizam za zatitu, nego
kupovati poznati, komercijalni sustav. Iako komercijalni sustav vjerojatno ima bolje algoritme za
zatitu, iskusni pirati imaju uhodane procedure za probijanje takvih poznatih i esto koritenih sustava
za zatitu.
Odluka o ugradnji zatite u softver je uvijek ekonomska i potrebno je nai kompromis izmeu cijene
ugradnje takve zatite i potencijalnih gubitaka od prodaje softvera ako se zatita ne ugradi. Vrlo rijetko
se isplati ulagati u najskuplje metode zatite softvera jer svaka zatita e s vremenom biti probijena i
bitno je samo da se to odgodi dovoljno dugo kako bi proizvoa softvera ipak ostvario zadovoljavajui
profit od prodaje softvera.

7. Reference
1. Stranica tvrtke Aladdin: http://www.ealaddin.com
2. Stranica tvrtke Macrovision: http://www.macrovision.com
3. Stranica tvrtke Sofpro: http://www.sofpro.com

Revizija v1.1

CCERT-PUBDOC-2004-04-71

Stranica 16 / 16

You might also like