Docstoc

A szoftverek védelme

Document Sample
A szoftverek védelme Powered By Docstoc
					A szoftverek védelme

Ebben a cikkben a szoftvertermékek védelméről lesz szó. Ez egy nagyon érdekes kérdés:
rengeteg módja van az illegális másolás elleni védekezésnek, és ezeket folyamatosan
fejlesztik. Gyakran lehet arról is hallani, hogy ez vagy az a termék feltörhetetlen, vagy csak
nagyon bonyolult és hosszú folyamat végén lehet feltörni. Azonban ez sajnos nem így van.

Az egyik módja a programok védelmének a különböző algoritmusok, illetve az elektronikus
kulcsok használata. Az elektronikus kulcs egy viszonylag bonyolult elektronikus szerkezet,
mely energiafüggetlen memóriával rendelkezik. Ebben a memóriában tárolódnak el azok az
adatok, amelyekre a a védelmi rendszernek szüksége van. Egy pár szót ejtünk arról a
technológiáról, melyet ezekben az elektronikus "Stealth" kulcsokban alkalmaznak.




Nos, ebben az esetben is a mikroprocesszoros technológiát alkalmazzák. Azok az elektronikus
kulcsok, melyek Stealth-technológiával működnek, beépített mikrokontrollerrel (ellenőrző
csip) rendelkeznek. Ez a a megoldás rengeteg újfajta védekezési módszer megjelenését
segítheti elő.
A védelem általában Y=F(X) típusú algoritmust használ. A prototípusaikkal ellentétben a
Stealth kulcsok hardver szinten oldják meg az adatok kódolását. Ez biztosítja az emelt szintű
védelmet a programtörésekkel (crack) szemben.
Akár 18 algoritmust is használhatnak egy Stealth kulcson belül. Vagyis egy ilyen kulcson
belül 18 különböző hardver algoritmus alkalmazható. Ez azt jelenti, hogy egy termék védelme
érdekében egyszerre több algoritmust is igénybe vehetünk. Ez még inkább megnehezíti a
feltörés folyamatát.
Ezek meglehetősen bonyolultak. Minden egyes algoritmusban jelen van az ún. meghatározó,
mely bájtok sorozata, melyek az olvasástól és a változtatásoktól védettek, azaz illetéktelen
nem tudja ezeket megváltoztatni.
Ennek a hossza akár 200 bájt (1600 bit) is lehet. Az összes lehetséges kombináció
kipróbálásához, az ilyen algoritmus feltörésére sok-sok évezredre van szükség (elméletileg).
Minden felhasználó, aki Stealth kulccsal rendelkezik, olyan kulcsot használ, amelyik gyárilag
beépített algoritmusokkal rendelkezik. Azonban ezen túl lehetőség van saját algoritmusok
megalkotására is. Ha ezt alkalmazza, akkor a kulcs a kódolást az ön által megadott algoritmus
alapján fogja elvégezni.

A kulcs tulajdonságainak alkalmazása.
Az algoritmus létrehozása során használhatjuk azok kombinációját is, melyet önállóan is
meghatározhatunk. Az algoritmus akár egyforma is lehet az adott Stealth kulcs esetében, vagy
beállíthatjuk úgy is, hogy ezek az értékek az abszolút és egyedi ID (azonosító) értéktől
függjenek. Létrehozhatunk olyan algoritmust is, amelyik korlátozza a futtatások számát. Ezt a
demo verziók esetében célszerű alkalmazni.
Egyidejűleg 255 bájt kódolható. Bármilyen Stealth kulcs egy lekérdezés során 255 bájt (2040
bit) adatot képes feldolgozni. A nagyobb mennyiségű adatok kódolása magasabb szintû
biztonságot is biztosít.

A "gyors" algoritmusok.
A hardver algoritmusok mellett alkalmazhatjuk az adatok gyors átalakításának algoritmusát is.
Ez lehetővé teszi nagy mennyiségű adat kódolását olyan nagy sebességgel, hogy maga a
folyamat gyakorlatilag észlelhetetlen lesz a felhasználó számára.

Az elektronikus kulcs hozzáférésének lehetőségei.
Bármilyen műveletet is szeretnénk elvégezni a Stealth kulcsokon, mindenképpen szükségünk
lesz a hozzáférés kódjára. Létezik egy általános és három személyes kód. Ha több hozzáférési
kódot használunk, akkor ezzel nagyban megnehezítjük a hozzáférést bármilyen nem publikus
információhoz.

A rendszer tiltásai.
A hardver segítségével letiltható a memória adott részéből történő információ olvasása vagy
írása. Ebben az esetben semmilyen program segítségével nem lehet sem olvasni, sem pedig
megváltoztatni ezeket az adatokat (persze ha minden ilyen egyszerű lenne).

A Stealth kulcs memóriájának kódolása.
A Stealth kulcs memóriájában minden adat kódolt formában található. Magával a
kódolás/dekódolás folyamatával a kulcs elektronikája foglalkozik. Ez a módszer gyakorlatilag
értelmetlenné teszi ezeknek az adatoknak a kiolvasását, még nagyon drága hardverek
segítségével is. Például, annak érdekében, hogy megszerezzük a kulcs másolatát, ezeket az
adatokat be kell írni egy másik kulcsba. Azonban a másik kulcs elektronikája helytelenül
fogja ezeket az adatokat értelmezni, mivel egy teljesen más algoritmus alapján végzi a
dekódolást.

A debuggerek blokkolása.
A Stealth kulcs egyedi hardver védelemmel rendelkezik, amely azt a célt szolgálja, hogy ne
lehessen megvizsgálni a működési elvét és logikáját különféle debuggerek segítségével. Ha a
kulcs észleli, hogy az adatcserét egy segédprogram kezdeményezi (ebben az esetben ugyanis
megnövekednek az időközök), akkor egész egyszerűen nem fog reagálni semmilyen
parancsra.




Az adatcsere protokollja a Stealth kulcsok esetében.

"Mozgó" (Változó). A valós adatok mellett a kulcs által generálódik egy speciális "zaj",
mely hasznos információt nem hordozó adatokat tartalmaz (azonban a tanulmányozás
szempontjából ezek nagyon fontos adatok).
Kódolás. Minden adat, mely a kulcs és a program között áramlik, folyamatosan kódolódik. Ez
a két funkció egy meglehetősen magas szintű védelmet biztosít a kulcs utánzatokkal szemben.
Önbeállítás. A munka folyamata során megtörténik a paraméterek optimális beállítása,
amelyek a hardver- és szoftver-környezettől jelentősen függenek.
Automatikus verifikáció (ellenőrzés). Bármilyen információ kerül a memóriába, ezt
azonnali verifikáció követi, vagyis mindenképpen leellenőrződik az adatok adekvátsága.
Automatikus ismétlés. Ha a különböző zajok miatt, melyeket más hardverek idéznek elő,
hiba keletkezik, akkor a műveletet a rendszer újra megismétli, vagyis ismételten lekérdezi a
kulcsot.

Ezek a tulajdonságok nagyban megnövelik a kulcs megbízhatóságát, és biztosítják számára a
magas szintű összeférhetőséget a hardverekkel és szoftverekkel.

Téma: Fémdobozba zárva
Ebben a részben arról olvashatnak, milyen módszerekkel törik fel a különféle szoftvervédelmi
rendszereket, s arról is miként védekezhetünk ez ellen.

A biztonság

A kulcs hardver-másolatának megalkotása
Speciális programok, illetve hardverek segítségével beolvassák a kulcson található memória
integrált áramkörének tartalmát, majd ugyancsak speciális eszközök segítségével ezeket az
adatokat hasonló IC-kbe másolják be. Ilyen módon létrehozzák a kulcs másolatát, amely
alkalmas a védett programmal való együttmûködésre.

Ezt a módszert csak abban az esetben alkalmazzák, amikor ismert a memória IC-jének típusa,
és rendelkezésre állnak a másoláshoz szükséges eszközök. De ami a legfontosabb ebben az
esetben, az az, hogy a memória semmilyen módon ne legyen másolástól védett. Pontosan ez
az a feltétel, ami bizonyos típusú kulcsok gyenge pontja. Nagyon sok kulcsban ugyanis
gyenge, vagy egyáltalán nincs ilyen típusú védelem, ami nagyban megkönnyíti a másolásukat,
ezért ez egy meglehetõsen elterjedt módszer.

Ennek a módszernek viszont több hátránya is van. A legjelentõsebb probléma az, hogy ha
még sikerül is megszereznünk vagy elõállítanunk a kulcs illegális másolatát, nem fogjuk tudni
terjeszeteni azt, hiszen a kulcs másolata továbbra is védett maradt, egész egyszerûen most már
egy másik kulcshoz van kötve ez az információ. Ezenkívül az ilyen másolás meglehetõsen
drága. Gyakran egyszerûen olcsóbb megvásárolni a szoftver legális változatát, mint fizetni a
feltörésért. Ezért ez a módszer nem örvend túl nagy népszerûségnek.

A kulcs emulátorának létrehozása
A kulcs belsõ logikáját tanulmányozva, egy programot lehet alkotni, ami mondjuk DLL,
eszközkészlet stb. Ez imitálja a kulcs mûködését. Egy jó minõségû program képes a minden
részletében tökéletesen utánozni az eredeti kulcsot. Ennek eredménye az lesz, hogy a védett
szoftver kiválóan fog mûködni, nem is sejtve azt, hogy illegálisan mûködik.

Az ilyen utánzatokat osztályozni is lehet.
Vannak univerzálisak (ezek az emulátorok egy adott márkán belül minden kulcs számára
kivállóan mûködnek), és vannak nem univerzálisak, vagy crack-ek (ezek a programok minden
kulcs számára egyedileg, külön készülnek).

A mûködési elvük alapján a következõképpen oszthatjuk fel õket.

Amelyek a kulcs szerkezetének mûködésén alapulnak (általában ezek olyan emulátorok,
melyek olyan kulcsok esetében mûködnek, amik nem rendelkeznek, vagy csak nagyon
primitív hardver algoritmussal rendelkeznek), illetve, melyek a kulcs által adott válaszokon
alapulnak. Az elsõ esetben a kulcs szerkezetét teljesen utánozzák, minden egyes apró részletre
kitérve, a második esetben pedig egy speciális táblázatot alkalmaznak, amelyik a kulcs helyes
válaszait tartalmazza.

Mindkét esetben az emulátoroknak nemcsak az a feladatuk, hogy helyesen reagáljanak a
lekérdezésekre, hanem az is, hogy helyesen végezzék az adatcsere protokollját (ellenkezõ
esetben ugyanis a védelmi program nem fogja tudni megfelelõképp értelmezni az utánzat által
küldött adatokat).

Ez a módszer nagyon hatékonynak minõsül a szoftverek feltörése terén, és meglehetõsen
népszerû. Manapság a kulcsok gyártói a következõ védekezési módszereket alkalmazzák az
emulátorokkal szemben.

1. "Mobil" adatcsere-protokoll az elektronikus kulccsal. A program és az elektronikus kulcs
közötti adatcserébe mesterségesen "zajt" kevernek. Ennek során a "zaj" jellege az idõ
változásával ugyancsak változik. Mivel az emulátornak nemcsak a kulcs irányából érkezõ
adatokat kell feldolgozni, hanem az adatcsere protokolljának minden sajátosságát is, ezért az
információ "zajossága" nagyban megnehezíti az ilyen jellegû programok megírását.
Manapság gyakorlatilag minden kulcsgyártó alkalmazza ezt a megoldást.

2. A hardver algoritmusok alkalmazása. Ez nagyban megnöveli a kulcs logikájának
bonyolultságát, mivel a program lekérdezéseire ez a kulcs jóval bonyolultabb válaszokat fog
adni, mint hogy "igen vagy nem". Ennek megfelelõen, ahhoz, hogy megalkossuk az ilyen
kulcs emulátorát, meg kell szerkesztenünk az összes lehetséges válasz táblázatát, ami egy
nagyon munka-, idõigényes és költséges feladat.

Manapság nagyon sok kulcs rendelkezik ezzel a megoldással. Ezek különbözhetnek
bonyolultságuk és tulajdonságaik tekintetében is. Azonban nem minden ilyen algoritmus
képes megbízhatóan biztosítani a teljes körû védelmet. A hardver algoritmusnak bonyolultnak
kell lennie, hogy azt ne lehessen kikövetkeztetni; ebben az esetben a kulcsnak nagy
mennyiségû információt kell feldolgoznia egy lekérdezés során (pl. ha a kulcs egyszerre két
bájtot képes feldolgozni, akkor az összes lehetséges kérdés és válasz száma 65 536). Hogy
egy ilyen kulcs lehetséges válaszainak teljes táblázatát összeállíthassuk, legalább egy órára
van szükség. Minden felhasználó esetében ennek a kulcsnak különbözõnek kell lennie, hogy
ne legyen lehetõség egy univerzális emulátor megalkotására.

Az automatikus védelem önálló moduljai
A kész programok automatikus védelmének módszere (envelope módszer) gyakorlatilag
mindenki számára elérhetõ. Az elõnye a következõ: speciális program segítségével,
mindössze néhány másodperc alatt meg lehet oldani bármilyen programvédelmi problémát.
Nagyon sok idõt spórolunk meg, nem kell rendelkeznünk semmilyen tudással a
programvédelem terén, és vannak olyan esetek is, amikor ez az egyetlen védekezési mód (pl.
ha valamilyen oknál fogva nem áll rendelkezésünkre a védett program forráskódja).

Ugyanakkor ennek a módszernek vannak gyenge pontjai is. Mivel a védelem már egy kész
programra kerül, ezért nem alkot a védett programmal egy egységes egészet. Az automatikus
védelem modulja csak "illeszkedik" a programhoz, ami azt jelenti, hogy elméletileg lehetõség
van ennek a modulnak a leválasztására, miközben maga a program semmilyen módon nem
sérül. Egyébként ezen a téren meglehetõsen nagy tapasztalattal rendelkeznek a programok
feltörõi, annyira, hogy olyan programok is vannak, melyek automatikusan elvégzik az ilyen
módon kódolt programok feltörését.

Abszolút biztonságos védelem nem létezik, és a programok feltörése minden esetben csupán
idõ kérdése. És ez az idõ a védekezési mód minõségétõl függ. Leginkább azok a rendszerek
sebezhetõk, melyek megalkotói nem integrálták a már feltört programok tapasztalatait.
Azonban vannak olyan automatikus védelmen alapuló módszerek is, melyeket nem lehet
univerzális programok segítségével feltörni. A feltörésükhöz komoly programozói tudásra is
szükség van.

Ebben az esetben természetesen megnövekszik a feltörés költsége, és az esetek többségében
sokkal ésszerûbb és olcsóbb a legális változat megvásárlása.

A másik meglehetõsen biztonságos védekezési mód, az automatikus védelem és az API
funkciók védelmének kombinációja. Ebben az esetben, még ha sikerül is a védelmi modul
leválasztása, akkor sem biztos, hogy használni tudjuk a terméket.

Az API funkciók alkalmazása
Az automatikus védelmi lehetõségek mellett meglehetõsen elterjedt az API funkciók
alkalmazása. Általában az API rendelkezésre áll minden korszerû programozási nyelv
esetében, és a lehetõ legkülönfélébb tulajdonságokkal rendelkezhet. A felhasználónak be kell
írnia a program szövegébe a megfelelõ helyen a megfelelõ funkciót, és ilyen módon egy
bizonyos szintû biztonságot tud elérni.

Eredményképp a védelem a program mélyébe lesz beágyazva, és annak elválaszthatatlan
része lesz. Egy ilyen típusú biztonsági eszközt jóval bonyolultabb feltörni, mint mondjuk az
automatikus biztonsági rendszert. Ennek az az oka, hogy ebben az esetben nincs lehetõség
univerzális crack megalkotására.

Különbözõ disassembler programok segítségével vizsgálják a program logikai szerkezetét, és
így próbálják megtalálni azokat a helyeket, melyek az API funkciókat alkalmazzák. Ezek után
ezeken a helyeken módosítják a programot. Az iyen feltörési módszerek ellen a következõ
lehetõségek állnak rendelkezésünkre:

1. Az API és az automatikus védelem kombinálása. Egy megfelelõ biztonságot nyújtó
védelmi program képes megvédeni a védett programot a disassemblerektõl is. Ez azt jelenti,
hogy mielõtt hozzákezdenének a program feltöréséhez, meg kell szünteni az automatikus
védelem modulját. Minden fejlesztõ javasolja ennek a két módszernek a kombinálását. Az
automatikus védelem modulja a védekezés "külsõ szintjét" alkotja, amely elzárja az
illetéktelenek elõl az API funkciókat.
2. Bonyolultabb logikájú védelmi modulok alkalmazása. A professzionális védelmi
rendszerek rendelkeznek belsõ védelmi módszerekkel. A modulok szövegének kódolása, a
kódok részleteinek "zajosítása" (konkrét információt nem hordozó adatok hozzáadása), a
kontrollösszegek (CRC) alkalmazása. Ezek és a hasonló megoldások nagyban képesek
megnehezíteni a feltörés folyamatát.

3. Nem triviális logika kidolgozása. Nem túl nehéz egy olyan programot feltörni, amely az
API funkció által generált értéket egy egyszerû összehasonlításra használj, mint pl.
"igaz/hamis".Rengeteg olyan hatásos módszer van, mellyel bonyolítani lehet a védelem
logikáját.

Az ilyen lehetõségeket alkalmazva olyan védelmi programokat alkothatunk, melyek feltörése
már jóval nehezebb feladat lesz. Ennek az lesz az eredménye, hogy minimálisra csökken
annak a valószínûsége, hogy a programból sikerül minden API funkciót kiiktatni. A védelem
"maradványai" pedig jelen lesznek a már feltört programban, akadályozva az ilyen program
normális mûködését. Ebben az esetben a felhasználó nem lesz képes a program összes
lehetõségét kihasználni, és elõbb vagy utóbb kénytelen lesz megvásárolni a legális változatot.

4. A hardver válaszainak alkalmazása a program mûködése során. A védelem megszervezése
során a program számára fontos adatokat le lehet kódolni a hardver segítségével, és ilyen
kódolt formában is be lehet írni a programba. A munka folyamata során a program a
szükséges idõpontban a hardver algoritmust fogja futtatni, amely ezen adatok dekódolására
szolgál, majd ezeket az adatokat a program már a célnak megfelelõen fogja alkalmazni. Ebben
az esetben még az sem segít, ha minden API funkciótól sikerül megszabadulnia a feltörõnek.
Hiszen a legfontosabb adatok még mindig kódolt formában lesznek jelen a programban, és
ezek dekódolása elektronikus kulcs hiányában lehetetlen.



A cikk tulajdonosa: RuNet - érdekességek az orosz internetrõl
http://portal.runet.hu
A cikk webcíme:
http://portal.runet.hu/modules.php?name=News&file=article&sid=113

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:2
posted:2/10/2013
language:Hungarian
pages:6
Joe Pine Joe Pine
About