Inżynieria odwrotna

Czy to odbudowa silnika samochodowego, czy diagramowanie zdania, ludzie mogą się nauczyć o wielu rzeczach po prostu rozbierając je na części i składając z powrotem. Na tym, w skrócie, polega koncepcja inżynierii wstecznej – rozłożyć coś na części, aby to zrozumieć, zbudować kopię lub ulepszyć.

Proces, który początkowo był stosowany tylko do sprzętu komputerowego, obecnie reverse-engineering jest stosowany do oprogramowania, baz danych, a nawet ludzkiego DNA. Inżynieria wsteczna jest szczególnie ważna w przypadku sprzętu i oprogramowania komputerowego. Programy są pisane w języku, powiedzmy C++ lub Java, który jest zrozumiały dla innych programistów. Aby jednak działały na komputerze, muszą zostać przetłumaczone przez inny program, zwany kompilatorem, na jedynki i zera języka maszynowego. Skompilowany kod jest niezrozumiały dla większości programistów, ale istnieją sposoby, aby przekonwertować kod maszynowy z powrotem na format bardziej przyjazny dla człowieka, w tym narzędzie programowe zwane dekompilatorem.

Inżynieria wsteczna jest używana do wielu celów: jako narzędzie do nauki; jako sposób na tworzenie nowych, kompatybilnych produktów, które są tańsze niż to, co jest obecnie na rynku; do sprawiania, że oprogramowanie współpracuje bardziej efektywnie lub do łączenia danych pomiędzy różnymi systemami operacyjnymi lub bazami danych; oraz do odkrywania nieudokumentowanych cech produktów komercyjnych.

Słynny przykład reverse-engineering dotyczy firmy Phoenix Technologies Ltd. z San Jose, która w połowie lat 80. chciała wyprodukować BIOS dla komputerów PC, który byłby kompatybilny z BIOS-em IBM PC. (BIOS to program przechowywany w firmware, który jest uruchamiany przy starcie komputera; zobacz Technology QuickStudy, 25 czerwca).

Aby uchronić się przed zarzutami o proste (i nielegalne) skopiowanie BIOS-u IBM, Phoenix dokonał jego inżynierii wstecznej stosując tak zwane podejście „czystego pokoju” lub „chińskiego muru”. Najpierw zespół inżynierów przestudiował BIOS IBM – około 8KB kodu – i opisał wszystko, co robił, tak dokładnie, jak to było możliwe, bez użycia lub odwoływania się do rzeczywistego kodu. Następnie Phoenix sprowadził drugi zespół programistów, którzy nie mieli żadnej wcześniejszej wiedzy o IBM BIOS i nigdy nie widzieli jego kodu. Pracując tylko na podstawie specyfikacji funkcjonalnej pierwszego zespołu, drugi zespół napisał nowy BIOS, który działał zgodnie z opisem.

Powstały w ten sposób BIOS Phoenixa różnił się od kodu IBM, ale pod każdym względem działał identycznie. Dzięki zastosowaniu podejścia clean-room, nawet jeśli niektóre fragmenty kodu były identyczne, nie doszło do naruszenia praw autorskich. Phoenix zaczął sprzedawać swój BIOS firmom, które następnie wykorzystały go do stworzenia pierwszych komputerów kompatybilnych z IBM.

Inne firmy, takie jak Cyrix Corp. i Advanced Micro Devices Inc. z powodzeniem dokonały inżynierii wstecznej mikroprocesorów Intel Corp. w celu stworzenia tańszych układów kompatybilnych z układami Intela.

Niewiele systemów operacyjnych zostało poddanych inżynierii wstecznej. Z ich milionami linii kodu – w porównaniu z około 32 KB nowoczesnych BIOS-ów – ich inżynieria wsteczna byłaby kosztowną opcją.

Ale aplikacje są podatne na inżynierię wsteczną, ponieważ niewielu twórców oprogramowania publikuje swój kod źródłowy. Z technicznego punktu widzenia, interfejs programowania aplikacji (API) powinien ułatwiać współpracę programów, ale eksperci twierdzą, że większość API jest napisana tak słabo, że producenci oprogramowania stron trzecich nie mają innego wyjścia, jak tylko poddać inżynierii wstecznej programy, z którymi chcą, aby ich oprogramowanie współpracowało, tylko po to, aby zapewnić kompatybilność.

Kąty etyczne

Inżynieria wsteczna może również ujawnić błędy bezpieczeństwa i wątpliwe praktyki prywatności. Na przykład, inżynieria wsteczna Digital: Convergence Corp. z Dallas ujawniła, że każdy czytnik posiada unikalny numer seryjny, który pozwala producentowi urządzenia łączyć zeskanowane kody z danymi rejestracyjnymi użytkownika i w ten sposób szczegółowo śledzić jego zwyczaje – wcześniej niepublikowana cecha.

Ostatnie ruchy prawne wspierane przez wielu dużych producentów oprogramowania i sprzętu, jak również przemysł rozrywkowy, ograniczają zdolność firm do przeprowadzania inżynierii wstecznej.

„Inżynieria wsteczna jest legalna, ale są dwa główne obszary, w których widzimy zagrożenia dla inżynierii wstecznej”, mówi Jennifer Granick, dyrektor kliniki prawa i technologii w Stanford Law School w Palo Alto, Califto. Jedno zagrożenie, jak dotąd niesprawdzone w sądach, pochodzi z licencji typu shrink-wrap, które wyraźnie zabraniają każdemu, kto otwiera lub używa oprogramowania, jego inżynierii wstecznej, mówi.

Drugie zagrożenie pochodzi z Digital Millennium Copyright Act (DMCA), która zabrania tworzenia lub rozpowszechniania narzędzi lub informacji, które mogłyby być użyte do złamania zabezpieczeń technologicznych chroniących oprogramowanie przed kopiowaniem. W lipcu zeszłego roku, na podstawie tego prawa, firma Adobe Systems Inc. z siedzibą w San Jose poprosiła FBI o aresztowanie Dmitrija Sklyarova, rosyjskiego programisty, gdy ten przebywał w USA na konferencji. Sklyarov pracował nad oprogramowaniem, które złamało szyfrowanie plików e-booków firmy Adobe.

Faktem jest, że nawet zgodna z prawem inżynieria wsteczna często wymaga złamania takich zabezpieczeń, a DMCA zezwala na inżynierię wsteczną dla celów kompatybilności.

„Ale nie wolno wam sprawdzić, czy oprogramowanie robi to, co powinno robić”, mówi Granick, ani nie możecie spojrzeć na nie w celach naukowych. Proponuje analogię: „Masz samochód, ale nie wolno ci otworzyć maski”.

1pixclear.gif

The Clean-Podejście do inżynierii odwrotnej

The Clean-Room Approach To Reverse-Inżynieria Odwrotna
Jedna osoba lub grupa rozbiera urządzenie na części i opisuje, co robi w sposób tak szczegółowy, jak to tylko możliwe, na wyższym poziomie abstrakcji niż konkretny kod. Ten opis jest następnie przekazywany innej grupie lub osobie, która nie ma absolutnie żadnej wiedzy na temat konkretnego urządzenia, o którym mowa. Ta druga strona następnie buduje nowe urządzenie w oparciu o opis. Efektem końcowym jest nowe urządzenie, które działa identycznie jak oryginał, ale zostało stworzone bez możliwości dokładnego skopiowania oryginału.

Schwartz jest pisarzem freelancerem w Arlington, Mass. Skontaktuj się z nim pod adresem [email protected].

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *