Reverzní
inženýrství
Reverzní inženýrství (též zpětné inženýrství nebo zpětná
analýza, anglicky reverse engineering, zkratka RE) je označení pro proces, jehož
cílem je odkrýt princip fungování zkoumaného předmětu (např. mechanického
zařízení nebo počítačového programu), většinou za účelem sestrojení stejně či
podobně fungujícího předmětu (nemusí však být výslovnou kopií originálu).
Reverzní inženýrství může být v závislosti na situaci a právním systému
nelegální (např. jako průmyslová špionáž nebo porušení práv duševního
vlastnictví), ne však ve všech státech světa stejně.
Charakteristika
Výstupem reverzního inženýrství je obnovení návrhu (či jen
dokumentace), které může být podkladem k vytvoření podobného produktu,
bezpečnostnímu auditu a podobně.
Příklady zpětného inženýrství
Bombardér B-29 se stal vzorem pro sovětský Tu-4.
V architektuře je RE
používáno pro rekonstrukci 3D modelu skutečného objektu (naskenováním bodů,
které jsou zpracovány v CAD programech).
Ve vojenství je často zneužíváno RE ke kopírování cizích technologií. Dva příklady z druhé světové války:
Britové a Američané vyráběli kanystry na benzín podle německého vzoru (tzv.
Jerrycan),
Sověti během let 1945–1949 vyvinuli strategický bombardér Tupolev
Tu-4, který byl téměř dokonalou kopií amerického letounu B-29.
Během studené
války schválil Ronald Reagan plán CIA reagující na krádeže západních technologií
tím, že východním agentům bylo podstrčeno několik technologií se skrytými
chybami. To se stalo příčinou výbuchu sibiřského plynovodu (po atomových
výbuších dosud největší umělá exploze vůbec).
V elektrotechnice bývají zkoumány integrované obvody – RE v oblasti počítačových procesorů přispívá k velké míře kompatibility instrukčních sad.
Zpětné inženýrství v programování
Reverzní inženýrství je v informatice
definováno jako proces analýzy předmětného systému s cílem identifikovat
komponenty systému a jejich vzájemné vazby a/nebo vytvořit reprezentaci systému
v jiné formě nebo na vyšší úrovni abstrakce.
Reverzní inženýrství využívá dekompilátory (tj. opak překladače), disassemblery, virtualizaci, sledování či záznam činnosti zařízení pomocí logického analyzátoru nebo dalších pomůcek.
Zpětné inženýrství je často využíváno pro získání softwarové dokumentace, která umožní například:
analyzovat určité proprietární datové formáty (pro zvýšení interoperability),
odhalit slabiny čipových karet
pochopit funkci databázových modelů
odhalit
funkci kódu počítačových programů
odstranění ochrany proti kopírování
počítačových her, aplikací, operačních systémů apod. (tzv. cracking)
vyhledávání bezpečnostních chyb (viz programátorská chyba, zranitelnost,
exploit)
implementovat ovladač zařízení, který není pro jisté prostředí
dostupný
ovladače grafických karet pro projekt X.Org
ovladače pro
bezdrátové síťové karty pro Linux, FreeBSD apod.
Proti reverznímu inženýrství
je software typicky chráněn pomocí obfuskací kódu, šifrováním, hardwarovým
klíčem a dalšími prostředky.
Příkladem software vzniklého díky reverznímu inženýrství je Samba, kde byl problém duševního vlastnictví vyřešen uložením povinnosti zveřejnit dokumentaci firmě Microsoft ze strany orgánů Evropské unie (na základě vyšetřování zneužití monopolního postavení).
Právní aspekty
Reverzní inženýrství upravuje v českém právu autorský zákon
(121/2000 Sb.).
„ § 65
(2) Myšlenky a principy, na nichž je založen jakýkoli prvek počítačového
programu, včetně těch, které jsou podkladem jeho propojení s jiným programem,
nejsou podle tohoto zákona chráněny.
§ 66
Omezení rozsahu práv autora k
počítačovému programu
(1) Do práva autorského nezasahuje oprávněný uživatel
rozmnoženiny počítačového programu, jestliže
b) jinak rozmnožuje, překládá,
zpracovává, upravuje či jinak mění počítačový program, je-li to nezbytné k
využití oprávněně nabyté rozmnoženiny počítačového programu v souladu s jeho
určením, není-li dohodnuto jinak,
d) zkoumá, studuje nebo zkouší sám nebo jím
pověřená osoba funkčnost počítačového programu za účelem zjištění myšlenek a
principů, na nichž je založen kterýkoli prvek počítačového programu, činí-li tak
při takovém zavedení, uložení počítačového programu do paměti počítače nebo při
jeho zobrazení, provozu či přenosu, k němuž je oprávněn,
“
V některých
případech zpětné analýzy počítačového programu však může dojít k nutnosti zásahu
do technických prostředků ochrany (obecně nepřesně nazývané Digital rights
management), který je sám o sobě zásahem do práv autora (v takových případech je
zpětná analýza v České republice podle § 43 autorského zákona nelegální) nebo
může být právo zpětné analýzy smluvně poskytovatelem programu prakticky
vyloučeno.