Cracking - ochrana softwaru
Mnoho ľudí, ktorí sa dlhú dobu venujú ochrane softwaru tvrdia, že je nemožné vytvoriť ochranu, ktorá bude neprelomiteľná. Ide však o to, aby sa vytvorila ochrana, na ktorej neuspeje väčšina crackerov a jej prelomenie bude časovo nesmierne náročné. Čas je v tomto ohľade tým faktorom, ktorý rozhoduje o úspešnosti ochrany. Ako úspešná ochrana môže byť považovaná ochrana, ktorá zostane neprelomená najdlhšie. A čo je to vlastne cracking? Cracking býva označovaný ako súbor postupov, pri ktorých dochádza k úpravám, alebo skúmaniu a pozorovaniu funkcií, metód a princípov programovacieho kódu bez možnosti použitia zdrojových kódov programovacieho jazyka, v ktorom bol program vytvorený. Základným stavebným kameňom crackingu je tzv. reverzné inžinierstvo (reverse engineering), pri ktorom dochádza k spätnému prekladu programu do určitého programovacieho jazyka – najčastejšie do toho najnižšieho, ktorým je Assembler. Existujú ale aj dekompilátory (spätné prekladače), ktoré sú schopné preložiť program späť i do vyšších programovacích jazykov. Tie sú ale v praxi veľmi nespoľahlivé, problémové a často nedosahujú požadovaný stupeň presnosti. Proces úpravy softwaru vedie k určitým zmenám v jeho pôvodnej funkcii, a to najčastejšie ku zmenám v rôznych ochranných, poprípade bezpečnostných prvkov. Cracking nesmie byť chápaný iba ako editácia programovacieho kódu. Rad ochranných systémov možno odstrániť aj bez zásahu do programu, napr. zistením správneho hesla, registračného čísla.. atď., alebo iba skúmaním programovacieho kódu. Pre každého crackera je určite najdôležitejšia perfektná znalosť Assembleru. Vďaka tomu sa dá s troškou nadsadenia označiť ako cracker každý programátor v Assamblery. Presnejšie povedané, tak to vidí laická verejnosť, ktorá každého crackera okamžite odsudzuje ako kriminálnika. Realita je väčšinou úplne odlišná. Presne tak ako existujú dobrí a zlí ľudia, tak existujú aj dobrí aj zlí crackeri. Zatiaľ, čo sa jední snažia iba čo najviac naučiť, získať veľa skúseností, podávať ich ďalej a pomáhať softwarovým vývojárom v snahe ochrániť software pred craknutím tým, že ukážu na slabé miesta ochrán, druhí robia pravý opak. Crackujú a nelegálne šíria software. Tak má vôbec cenu chrániť software, pretože aj tak ho niekto crackne? Áno. Každá ochrana je po nejakom čase prelomená, ale v žiadnom prípade nemožno polemizovať nad otázkou, či chrániť software alebo nie.
Problematiku situácie v oblasti pirátstva nemožno predsa riešiť tým, že nebudeme software chrániť tým, že ho nebudeme vydávať. Je to problém ako každý iný. Napríklad aj banky nebudú zrušené len preto, že ich čas od času niekto vylúpi. Naopak bude posilnená ich ochrana a bezpečnostná politika, aby sa to už viackrát nemohlo opakovať.
V súčastnej dobe existuje niekoľko spôsobov, ako bezpečne ochrániť software tak, aby ho nebolo možné ckreknúť bez znalosti požadovaného hesla, šifry, registračného súboru alebo čokoľvek iného:
1. Zašifrovanie dát. Ochrana, ktorá pracuje so zašifrovanými dátami, ktoré sú dešifrovateľné jedine zadaním registračného čísla (hesla) a nedochádza v nej k priamej kontrole zadaného a správneho dešifrovacieho kľúča – dáta sú jednoducho len dešifrované, a pokiaľ pri práci s nimi vznikne chyba, bol zadaný zlý dešifrovací kľúč. Bohužiaľ má táto metóda jeden háčik. Platí iba do tej chvíle, kým cracker zistí požadovaný kľúč. Akonáhle ho získa napr. od kamaráta, ktorý sa zaregistroval, už nie je problém uložiť dáta v dešifrovanej podobe.
2. Neúplné programy. Je to akýkoľvek typ demo alebo sharewarový program, v ktorom kód nie je fyzicky prítomný. Je nemožné predsa v programe meniť niečo, čo tam vôbec nie je. Registrovanému užívateľovi je väčšinou poslaná plná verzia programu. V takomto prípade ale treba premyslieť protikopírovaciu ochranu, aby nebolo možné plnú verziu programu nelegálne šíriť. Základné rozdelenie dnešných typov ochrán:
a) časové obmedzenie – trial, time limit, try – buy
b) obmedzený počet spustení – runtime limit
c) registračné číslo alebo heslo – serial number
d) kľúčový súbor – key file
e) funkčne obmedzené programy – crippled
f) hardwarový kľúč – dongle
g) kontrola prítomnosti CD – CD-Check
h) protikopírovacie ochrany CD
i) kompresné a šifrovacie programy – PE-šifréry/kompresory
j) programy naprogramované vo Visual Basicu
Rad druhov ochrán býva často kombinovaný, takže sa môžete stretnúť s časovo obmedzenou verziou programu, ktorá sa odblokuje zadaním správneho sériového čísla, alebo kľúčovým súborom.
Ochrana softwaru by sa mala stáť nedeliteľnou súčasťou jeho vývoja a nemalo by sa na ňu pozerať ako na niečo dodatočného. Naopak, malo by sa na ňu pamätať už od začiatku vývoja softwaru. Čím viac je potom zakomponovaná do softwaru, tým lepšie ju dokáže chrániť. Je omnoho ťažšie odstrániť ochranu, ktorá je poprepletaná so všetkými časťami programu, ako niekoľkými ochrannými prvkami, ktoré boli do programu dodané až dodatočne.
Vždy je preto omnoho lepšie, keď je ochrana programu naprogramovaná priamo jeho autorom, než keď je použitý už hotový ochranný systém.
Asi nikdy nebude možné naprogramovať ochranu, ktorá bude neprelomiteľná, ale už teraz je možné vytvoriť ochranu, na ktorej neuspeje väčšina cracerov. Vytvorenie takejto ochrany vyžaduje obrovské množstvo skúsenosti a dlhú prax v oblasti crackingu. Cracking je veda neuveriteľne rozsiahla. Rovnako ako všetko ostatné v oblasti informačných technológií sa každým dňom rozvíja, rozširuje a mení, aby tak menila limity možného a nemožného, preskúmaného a neznámeho.
|