Reverzní inženýring: Na hraně etiky?

DEFINICE Reverzní inženýring je proces, při kterém se vezme nějaký produkt, analyzují se jeho funkce a v něm probíh...


DEFINICE
Reverzní inženýring je proces, při kterém se vezme nějaký produkt, analyzují se
jeho funkce a v něm probíhající procesy a poté se o tom vyhotoví zpráva. Cílem
této činnosti bývá poskytnutí podkladů pro duplikaci zkoumaného produktu nebo
pro vytvoření produktu nového, který má lepší vlastnosti než originál.
Ať už pracujete v oblasti vývoje automobilových motorů, navrhujete integrované
obvody nebo píšete romány, vždy je velmi poučné analyzovat práci někoho jiného.
V prvním případě asi rozeberete motor konkurenční firmy, ve druhém opatrně
nasnímáte rozložení prvků na některém z existujících čipů, ve třetím si možná
necháte vykreslit diagramy zobrazující četnost jednotlivých slov a délku vět
kolegy z branže. A právě takové činnosti jsou základem reverzního inženýringu
díky němu lze pochopit cizí výtvory, okopírovat je nebo zdokonalit podle
vlastní potřeby.
Uvedený proces byl v oblasti informačních technologií zprvu používán pouze na
hardware, s postupem času se však rozšířil i na software. Zajímavým příkladem,
který má s IT leccos společného, je pak zkoumání lidské DNA i v tomto případě
jde o jistou formu reverzního inženýringu a podobnost s analýzou softwaru, nebo
možná ještě spíše rozsáhlé databáze, je jistě zřejmá.

Útok na software
Programy jsou psány v programovacích jazycích, typicky v C++, Basicu, Javě nebo
v některém z řady dalších a zdrojové texty jsou srozumitelné nejen autorovi,
ale i dalším programátorům. (Řečeno samozřejmě s jistou nadsázkou: v případě
nekomentovaného kódu je ona srozumitelnost často vykoupena hodinami bádání.)
Aby bylo možno programy spustit, jsou zpravidla přeloženy do strojového jazyka
(v případě Javy do bytecode). Výjimkou z tohoto pravidla jsou pouze
interpretované aplikace.
Přeložený (zkompilovaný) kód už je pro většinu programátorů na první pohled
naprosto nesrozumitelný a jeho analýza by zpravidla zabrala nepřiměřeně velké
množství času. Existují však způsoby, jak jej převést do pro člověka
přijatelnější formy např. prostřednictvím nástrojů, které se nazývají
dekompilátory. Výsledek jejich práce je podstatně srozumitelnější, vhodný ke
zkoumání způsobů práce původního programu.

Proč vlastně
Reverzní inženýring se používá z řady důvodů. Hodí se např. jako nástroj výuky
nových odborníků, nezbytný je i pro získávání podrobných informací o
konkurenčních produktech, díky nimž lze navrhnout např. nové, s originálem
zcela kompatibilní a pokud možno levnější řešení. Díky zpětnému inženýringu lze
zajistit interoperabilitu produktů, z nichž o jednom výrobce odmítá sdělit
podrobné technické informace, případně vytvořit nadstavby nad softwarem, který
sice je schopen poskytovat dalším aplikacím své služby, ale není zveřejněno
jeho API (aplikační programové rozhraní).
Slavným případem reverzního inženýringu je vývoj BIOSu společnosti Phoenix
Technologies. Ta se v polovině 80. let minulého století rozhodla, že nabídne
ostatním výrobcům PC BIOS kompatibilní s tím, který do svých počítačů dávala
IBM. Aby se vyhnula právním postihům, které by ji čekaly při prostém
zkopírování kódu IBM, zvolila při reverzním inženýringu tzv. metodu Čínské zdi:
Nejdříve první tým techniků analyzoval přibližně 8KB kód BIOSu IBM a popsal
jeho funkce bez toho, aby zmínil byť jen fragmenty jeho kódu. Potom Phoenix
přivedl druhou, zcela nezávislou skupinu programátorů, kteří na základě
popsaných vlastností původního BIOSu vytvořili zbrusu nový kód. Ten se choval
zcela stejně jako původní program IBM, dosahoval toho však odlišným způsobem. I
když si některé části kódu byly podobné, použití metody Čínské zdi zajistilo,
že nebyla porušena autorská práva. Společnost Phoenix začala svůj BIOS prodávat
dalším firmám, které jej používaly k vytvoření prvních klonů IBM PC.
Další společnosti, jako např. Cyrix nebo AMD (Advanced Micro Devices), provedly
úspěšný reverzní inženýring procesorů Intelu a poté vytvořily jejich levnější
klony. Když nastal čas, přistoupily i k jejich dalšímu zdokonalení, mj.
prostřednictvím přidání nových instrukcí.
Reverzního inženýringu nezůstaly samozřejmě ušetřeny ani některé operační
systémy. S jejich rostoucí složitostí se však tento úkol stává stále
obtížnějším najít smysl v milionech řádků kódu je pochopitelně podstatně
náročnější než zpětný inženýring 8KB kódu původního BIOSu IBM.
Stejný problém se týká i dnešních aplikací. V některých případech však není
zbytí především tehdy, když je třeba zajistit vzájemnou spolupráci různých
programů. Softwarové firmy pochopitelně zpravidla nezveřejňují zdrojový kód a
také API jednotlivých aplikací bývá často jen špatně dokumentované, případně
jsou vynechány některé důležité "drobnosti". Dodavatelům různých utilit a
nadstaveb tak skutečně často nezbývá, než se pustit do analýzy jejich kódu,
resp. častěji do analýzy vlastních nadstaveb výrobce.

Etické problémy
S reverzním inženýringem souvisejí i otázky etiky. A to hned z několika
pohledů. Analýzou cizích produktů lze např. odhalit jejich bezpečnostní
slabiny, případně dokonce zadní vrátka, která si výrobce ponechal pro vstup do
systému. Např. reverzní inženýring skenovacího zařízení CueCat společnosti
Digital Convergence z Dallasu ukázal, že je každý vyrobený kus vybaven
unikátním identifikačním číslem, který výrobci při porovnání příslušných
databází s daty registrovaného uživatele a čísla produktu umožňuje sledovat
chování zákazníka. Na tuto vlastnost přitom do té doby nikdo neupozornil.
Některé právní kroky velkých softwarových i hardwarových výrobců, stejně jako
např. firem působících v zábavním průmyslu, však směřují ostře proti reverznímu
inženýringu. "Reverzní inženýring je legální, ale existují dvě důležité
oblasti, kde spatřujeme potenciální hrozby pro tento postup," říká Jennifer
Granicková, šéfka katedry práva na Stanfordské právnické univerzitě. Za první z
hrozeb, byť dosud neotestovanou v žádném soudním případu, označuje licenční
ujednání u jednotlivých softwarových produktů, která reverzní inženýring
explicitně zakazují. Druhým problémem je pak podle ní zákon označovaný zkratkou
DMCA (Digital Millennium Copyright Act), který zakazuje tvorbu a šíření
takových nástrojů nebo informací, které mohou vést k prolomení technologických
zámků chránících software před kopírováním. Reverzní inženýring často prolomení
takových "zámků" vyžaduje. Samotný zákon DMCA ovšem reverzní inženýring
nezakazuje naopak, povoluje jej, pokud je třeba tento postup využít k zajištění
kompatibility různých produktů.
Loni v červnu společnost Adobe na základě tohoto zákona požádala FBI o uvěznění
ruského programátora Dmitrije Skljarova, který v té době navštívil jednu
odbornou konferenci v USA. Skljarov totiž objevil, jak prolomit ochranu souborů
elektronických knih této společnosti a svůj objev si nenechal pro sebe. Adobe
se svým požadavkem uspěla.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.