Kompatybilność kontra przepisy dekompilowanie oprogramowania

Reverse engineering jest praktyką wzbudzającą duże zainteresowanie zarówno wśród informatyków, jak i prawników zajmujących się ochroną prawa własności intelektualnej. Jej głównym celem pozostaje ułatwienie tworzenia aplikacji poprawnie współdziałających ze sobą. W opozycji do tego pozostają poglądy utożsamiające dekompilację z docieraniem do chronionych prawem tajemnic handlowych czy też know-how zaimplementowanego w produkty informatyczne.

Reverse engineering jest praktyką wzbudzającą duże zainteresowanie zarówno wśród informatyków, jak i prawników zajmujących się ochroną prawa własności intelektualnej. Jej głównym celem pozostaje ułatwienie tworzenia aplikacji poprawnie współdziałających ze sobą. W opozycji do tego pozostają poglądy utożsamiające dekompilację z docieraniem do chronionych prawem tajemnic handlowych czy też know-how zaimplementowanego w produkty informatyczne.

Waga kompatybilności

Dekompilacja jest dotarciem do "warstwy" programu niedostępnej dla większości użytkowników. Korzystający z aplikacji na ogół mają jedynie styczność z finalnym efektem pracy programisty w postaci kodu maszynowego. Wyjątkiem pozostają rzecz jasna projekty skupione wokół środowiska zwolenników open source. W wyniku reverse engineering dokonujemy swoistego "powrotu do źródeł", którego rezultatem jest odtworzenie kodu źródłowego programu. Popularność takich praktyk wynika z potrzeby zapewnienia współdziałania różnorodnych komponentów informatycznych. Trudno obecnie nie doceniać wagi kompatybilności. W przypadku produktów skierowanych do szerokiego grona odbiorców zapewnienie ich prawidłowego funkcjonowania w powiązaniu z innymi programami może okazać się kluczem do osiągnięcia sukcesu komercyjnego.

Reverse engineering pozwala na zgłębienie tajemnic, jakie kryje oprogramowanie. Z punktu widzenia programisty szczególnie istotne pozostaje zaznajomienie się z zasadami, na których oparto działanie aplikacji. Uwidaczniają się one w wewnętrznej strukturze programu. Odtworzenie kodu źródłowego to rzecz jasna pierwszy etap dla programisty. Następnie musi on odnaleźć interesujące go informacje, a w końcu wykorzystać je we własnej pracy. Niektórzy zdobywają się na porównanie dekompilacji do zaglądania do wnętrza samochodu, by sprawdzić, na jakich podstawach oparto jego działanie.

Reverse engineering bywa używany również do innych celów niż zapewnienie kompatybilności. Firmy rozważają dekompilację produktów innych przedsiębiorców, by uczynić swoją ofertę bardziej konkurencyjną. Prowadzący prace naukowo-badawcze w dziedzinie bezpieczeństwa systemów komputerowych uciekają się do tych działań w celu ujawnienia potencjalnych wad programu. Odtworzenie kodu źródłowego to czasem dobry sposób zweryfikowania podejrzeń plagiatu.

Dekompilacja nie dla wszystkich

Dekompilacja budzi zainteresowanie nie tylko wśród informatyków, ale i prawników. Świadczą o tym szczegółowe przepisy dotyczące reverse engineering. Analizę tego problemu trzeba jednak rozpocząć od pewnych ogólnych wyjaśnień. Program komputerowy podlega ochronie na mocy przepisów prawa autorskiego. Nie ma przy tym znaczenia rozróżnienie na kod źródłowy i maszynowy programu. Regulacje prawne przewidują bowiem ochronę dzieła bez względu na formę jego wyrażenia. Ochrona efektów pracy twórczej człowieka nie rozciąga się jednak na idee i zasady działania wyrażone w utworze. Z kolei dekompilacja to próba dotarcia właśnie do tych niechronionych "elementów" aplikacji.

Problem wokół dekompilacji sprowadza się głównie do niechęci firm do dzielenia się informacjami wykorzystanymi w trakcie programowania. Choć zasady i idee wyrażone w aplikacji nie są chronione na mocy prawa autorskiego, to producenci często chcą zachować je jedynie dla siebie. Powołują się przy tym na ochronę tajemnicy handlowej. Praktyki takie są szczególnie widoczne na rynku amerykańskim, gdzie czynione są starania maksymalnego ograniczania zakresu dozwolonej dekompilacji.

Jedna z pierwszych spraw sądowych związanych z dekompilacją na gruncie amerykańskiego prawa to spór pomiędzy Sega Enterprises Ltd a Accolade INC. Przedmiotem rozstrzygnięcia pozostawało w tym przypadku działanie Accolade INC polegające na dekompilacji kartridży z grami do konsoli Segi. Dzięki temu firmie udało się odnaleźć fragment kodu, identyfikowany przez konsolę jako zabezpieczenie techniczne, a następnie wykorzystać go we własnych produktach. Rozstrzygnięcie sądu, zapadłe w 1992 r., potwierdziło dopuszczalność takiej praktyki jako przykładu dozwolonego użytku. Orzeczenia w sprawie Sega kontro Accolade nie można jednak traktować jako generalnego przyzwolenia na reverse engineering. Sąd odniósł się bowiem jedynie do sytuacji, w której u podstaw dekompilacji tkwi potrzeba kompatybilności.

Dla porównania w 2003 r. Ben Edelman - student prawa na Uniwersytecie w Harvardzie zwrócił się z prośbą do firmy N2H2 o udostępnienie informacji dotyczących oferowanego przez nią oprogramowania blokującego strony WWW. Uzyskanie danych miało pomóc w badaniach nad prawidłowością mechanizmów uniemożliwiających dostęp do treści pornograficznych. Firma odmówiła, uznając, że jest to tajemnica handlowa. Ben Edelman próbował więc uzyskać zgodę sądową na podjęcie dekompilacji - bezskutecznie. Sąd uznał bowiem, iż brak jest przesłanek ku temu.

Gdzie jest haczyk? Sposoby ograniczania dopuszczalności reverse engineeringu

Producenci oprogramowania rodem z USA uciekają się do klauzul kontraktowych, zabraniających dekompilacji użytkownikom. Najbardziej restrykcyjne licencje wyłączają możliwość reverse engineeringu we wszystkich przypadkach. Nie ma więc znaczenia cel towarzyszący osobie podejmującej próbę odtworzenia formy aplikacji zbliżonej do jego kodu źródłowego. Szczególnie popularne jest uzupełnianie takimi treściami licencji typu click-wrap, przybierających postać niewielkich okienek wyświetlanych podczas instalacji programu. Przykładem pozostaje rozstrzygnięcie w sprawie Bowers kontra Baystate. Sprawa dotyczyła analizy oprogramowania typu CAD tworzonego przez firmę Bowers. Pozwany, mimo klauzuli zakazującej reverse engineering, zdecydował się na analizę aplikacji w celu usprawnienia własnego produktu. Przedstawiciele Baystate podkreślali, że programiści jedynie "przyjrzeli się" interfejsowi konkurenta. Zarówno sąd I, jak i II instancji uznał, iż doszło w tym wypadku do naruszenia kontraktu. Tym samym wyłączenie dopuszczalności dekompilacji w ten sposób uznano za dopuszczalne. Innym sposobem blokowania możliwości odtworzenia kodu źródłowego staje się powoli wykorzystywanie różnorodnych środków technicznych. Wykorzystanie systemów Digital Rights Management może skutecznie przeciwdziałać odtworzeniu formy kodu źródłowego programu. Programista decydujący się na dekompilację może mieć po prostu problemy z odnalezieniem narzędzi pozwalających nie tyle na reverse engineering, ile usunięcie zabezpieczeń chroniących program przed ingerencją osób trzecich. Przepisy karne zawarte w większości państw limitują dostępność takich programów w Internecie.

Art. 75 ustawy o prawie autorskim i prawach pokrewnych wskazuje na wiele uprawnień przysługujących legalnemu użytkownikowi aplikacji.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200