Poprzedni artykuł w numerze
Wprowadzenie
O d pewnego czasu, śledząc zapytania na forach internetowych, zarówno prawnych, jak i informatycznych, można napotkać pytania odnoszące się do zgodności z prawem stosowania metody inżynierii wstecznej. Niestety refleksja dotycząca odpowiedzi prawników na zasadnie postawione pytania prawne jest daleka od satysfakcjonującej. Jako przykład można przytoczyć temat na forum prawnym, w którym jeden z użytkowników po sformułowaniu dość szczegółowego pytania, dotyczącego rozpracowania drogą inżynierii wstecznej zamkniętego protokołu programu dla celów komercyjnych i ewentualnych konsekwencji prawnych, otrzymał odpowiedź, że musi on najpierw zapoznać się z lekturą obowiązkową, po czym otrzymał link do cyfrowej wersji ustawy z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych.https://forumprawne.org/nowe-technologie/590495-inzynieria-wsteczna-tworzenie-korzystanie-z-nieautoryzowanego-klienta.html [2018.02.22, 14:00].
Nie jest to z pewnością satysfakcjonująca odpowiedź ani tym bardziej wyczerpująca. Chyba żaden z prawników nie chciałby znaleźć się w analogicznej sytuacji, w której po „padnięciu” serwera wewnętrznego kancelarii jedynym, w czym mógłby nam pomóc administrator sieci, byłoby polecenie podręcznika do podstaw architektury sieci. Zapotrzebowaniu przedsiębiorstw z branży IT na odpowiedź co do charakteru prawnego ich działań powinni wyjść naprzeciw prawnicy, którzy w coraz szerszym zakresie będą rozumieli techniczny aspekt działalności swoich klientów. Coraz częściej można spotkać się ze skomplikowanymi problemami prawa autorskiego w zakresie technologii informacyjnej. Ze względu na transgraniczny charakter działalności przedsiębiorców IT to prawo europejskie i w szczególności dyrektywa Parlamentu Europejskiego i Rady 2009/24/ WE z 23 kwietnia 2009 r. w sprawie ochrony prawnej programów komputerowych jest podstawowym źródłem regulacji dotyczących prawa autorskiego na obszarze Unii Europejskiej w zakresie dopuszczalnej metodologii stosowanej przy tworzeniu i odtwarzaniu programów komputerowych.Dziennik Urzędowy Unii Europejskiej, 5 maja 2009 r., L 111/16. Osią poniższych rozważań jest orzeczenie Trybunału Sprawiedliwości Unii Europejskiej w sprawie SAS Institute Inc. przeciwko World Programming Ltd., które wyznaczyło sposób oceny prawnej inżynierii wstecznej w stosunku do kodu źródłowego programów na obszarze Unii Europejskiej.Wyrok Trybunału (Wielka Izba) z 2 maja 2012 r., SAS Institute Inc. przeciwko World Programming Ltd., sprawa C-406/10, Elektroniczny Zbiór Orzeczeń – http://curia.europa.eu [2018.02.22, 14:00].
Inżynieria wsteczna (reverse engineering)
Reverse engineering (inżynieria wsteczna bądź odwrotna) sensu largo, jako metodologia stosowana w produkcji maszyn, polega na odtworzeniu, w jaki sposób i dla jakich celów została skonstruowana maszyna bądź mechanizm.S. Pinker, Jak działa umysł, Książka i Wiedza, Warszawa 2002, s. 31. Obecnie jest to szeroko rozpowszechnione narzędzie w ramach technologii informacyjnej w postaci jej szczególnej formy, inżynierii wstecznej kodu (reverse code engineering).
Inżynieria wsteczna przeprowadzana w IT polega na analizie budowy kodu źródłowego i sposobu działania programów komputerowych, w sytuacji gdy analityk nie ma dostępu do części bądź całości kodu źródłowego i musi na podstawie charakterystyki funkcjonalnej programu określić prawdopodobną treść kodu programu.G. Coldwind, Praktyczna inżynieria wsteczna, Wydawnictwo Naukowe PWN, Warszawa 2016, s. 15. Inżynieria wsteczna kodu stała się skutecznym narzędziem do ustalenia przebiegu infekcji i jej skutków w przypadku złośliwego oprogramowania, przy budowie tzw. programów antywirusowych. Stosowana jest również przy analizie bezpieczeństwa komputerowego, ocenia na jego podstawie poprawność implementacji i analizy komponentów oprogramowania, studiuje je przez pryzmat błędów bezpieczeństwa.
Inżynieria wsteczna, poza wykorzystywaniem jej w charakterze prewencyjnym, ma powszechne zastosowanie przy procesie programowania, modyfikacji czy rozszerzaniu funkcjonalności, poprzez śledzenie toku wykonania kodu. Jest ona przede wszystkim stosowana przez producentów do odtwarzania programów zaprojektowanych przez konkurencję. W sytuacji gdy brak jest dostępu do kodu źródłowego, wnioskowanie inżynierii wstecznej zdaje się być najskuteczniejszym narzędziem.
Istotny problem natury prawnej pojawia się jednak, gdy licencja programu zawiera klauzulę zabraniającą stosowania reverse engineering. Pytanie nasuwające się w sposób przewidywalny, to czy taka klauzula jest wiążąca dla osoby kupującej oprogramowanie. Czy może stosować ona do analizy programu i odtworzenia go inżynierię wsteczną wtedy, gdy nie ma dostępu do kodu źródłowego, oraz czy zapis licencji nie ma charakteru abuzywnego.Tamże, s. 15–16.
Inżynieria odwrotna opiera się na wnioskowaniu redukcyjnym, które polega na wnioskowaniu z prawdziwości następstwa o prawdziwości przesłanki. Innymi słowy – wnioskowanie prowadzone jest od wniosku do przesłanki. Z tego powodu kierunek wnioskowania nie jest zgodny z kierunkiem wynikania zdań.
Wnioskowanie redukcyjne jest wnioskowaniem zawodnym, nieopartym na żadnym prawie logicznym, lecz na prawdopodobieństwie. Uprawdopodobnienie w tym przypadku nie wyklucza błędu we wniosku, niemniej jednak oparte jest na racjonalnym toku myślenia mającym swe uzasadnienie w praktyce i statystyce występowania pewnych zjawisk.Z. Ziembiński, Logika praktyczna, Wydawnictwo Naukowe PWN, Warszawa 1998, s. 182–184.
Należy podkreślić, że choć w kontekście poniższych rozważań inżynieria wsteczna jest stosowana w ogromnej mierze jako narzędzie w dziedzinie IT, to nie jest domeną jedynie tej dyscypliny. Jako przykład o charakterze anegdotycznym można przytoczyć domniemane odtworzenie samolotu bojowego F-117 przez Chińczyków, po uzyskaniu dostępu do części, zestrzelonego w 1999 r. nad Serbią, amerykańskiego samolotu.J. Reed, Chinese Spies May Have Taken F-117 Wreckage, https://www.defensetech.org/2011/01/24/chinese-spies-mayhave-taken-f-117-wreckage/ [2018.02.22, 14:00].
SAS Institute Inc. przeciwko World Programming Ltd.
Rozstrzygnięcie w sprawie SAS Institute Inc. przeciwko World Programming Ltd. stało się wyznacznikiem interpretacyjnym odnośnie do dopuszczalności stosowania inżynierii wstecznej w stosunku do programów komputerowych w obrębie Unii Europejskiej. SAS Institute jest producentem oprogramowania analitycznego służącego do przetwarzania i analizy danych, w szczególności o charakterze statystycznym. System SAS oparty na składniku „Base SAS” umożliwiał użytkownikom przystosowanie systemu do przetwarzania własnych skryptów przy użyciu „języka SAS”, poprzez uruchamianie własnych programów.
World Programming Ltd. wprowadził na rynek konkurencyjne oprogramowanie „World Programming System”, umożliwiające wykonywanie programów napisanych w języku SAS. Program był w swojej funkcjonalności tak bardzo podobny, że przy tych samych danych wejściowych niewielka była liczba różniących się danych wyjściowych przy porównaniu obu programów. Pozwalało to na uruchamianie skryptów napisanych w języku SAS z pominięciem oprogramowania wydanego przez SAS Institute Inc.Wyrok Trybunału (Wielka Izba) z 2 maja 2012 r., SAS Institute Inc. przeciwko World Programming Ltd., sprawa C-406/10, Elektroniczny Zbiór Orzeczeń – http://curia.europa.eu [2018.02.22, 14:00].
Na etapie postępowania krajowego, włącznie do poziomu High Court of Justice (England & Wales), nie udowodniono, ażeby World Programming Ltd. miał dostęp do kodu źródłowego aplikacji SAS, w związku z czym nie wykazano również, aby powyższa spółka doprowadziła do skopiowania części kodu bądź koncepcji strukturalnej kodu.
W sytuacji braku możliwości wykazania prostego skopiowania części bądź całości kodu źródłowego jedyną wytłumaczalną metodą była inżynieria wsteczna kodu. Dwa sądy niższych instancji orzekły, że nie stanowi naruszenia praw autorskich napisanie własnego programu, emulującego funkcje innego programu, na podstawie obserwacji jego funkcjonowania.
W związku z powyższym nasunęło się pytanie, czy zastosowanie inżynierii wstecznej w podanym stanie faktycznym mogło stanowić naruszenie prawa. Wśród skierowanych przez SAS Institute Inc. w stosunku do World Programming Ltd. znalazły się zarzuty naruszenia praw autorskich: poprzez pośrednie powielenie programów zawierających komponenty SAS, powielenie podręcznika systemu SAS oraz zarzut naruszenia warunków licencji poprzez wykorzystanie wersji systemu SAS („Learning Edition”).Tamże.
High Court of Justice (England & Wales) zdecydował się na zawieszenie postępowania i skierowanie pytań prejudycjalnych do Europejskiego Trybunału Sprawiedliwości. Zgodnie z przepisami odnoszącymi się do postępowania przed Trybunałem Sprawiedliwości Unii Europejskiej do wyłącznej kompetencji sądu, nie natomiast do stron, należy formułowanie pytania prejudycjalnego dotyczącego interpretacji przepisów w zgodzie z prawem europejskim, jednocześnie sąd obowiązany jest do zawieszenia postępowania.M. Kenig-Witkowska, Prawo instytucjonalne Unii Europejskiej, C. H. Beck, Warszawa 2017, s. 396 i 414. W wystosowanych przez brytyjski Sąd pytaniach prejudycjalnych zagadnienia sformułowano w następujący sposób.
Pierwszy zakres zadanych pytań dotyczył kwestii, czy art. 1 ust. 2 dyrektywy w sprawie ochrony prawnej programów komputerowych (91/250) należy interpretować w ten sposób, że zbiór funkcji programu komputerowego oraz język programowania i format plików danych używanych w ramach programu komputerowego, w celu korzystania z pewnych jego funkcji, stanowią formę wyrażenia tego programu i mogą z tego tytułu podlegać ochronie przyznawanej programom komputerowym przez prawo autorskie.
Wielka Izba wydała wyrok w dniu 2 maja 2012 r. i orzekła w tym zakresie negatywnie. Mianowicie że nie podlegają ochronie przyznanej programom komputerowym przez prawo autorskie ani zbiór funkcji programu, ani język programowania, format plików, używane w celu korzystania z pewnych funkcji programu i nie stanowią formy wyrażenia tego programu.
Kategorię drugą zadanych pytań należy uznać za najbardziej esencjonalną dla zagadnienia reverse code engineeringu. Dotyczyły one interpretacji art. 5 ust. 3 wspomnianej dyrektywy. Wielka Izba TSUE orzekła, że powyższy artykuł należy interpretować: „w ten sposób, że osoba, która uzyskała kopię programu komputerowego na podstawie licencji, jest upoważniona bez zezwolenia podmiotu prawa autorskiego do tego programu, by obserwować, badać lub testować funkcjonowanie tego programu w celu ustalenia koncepcji i zasad, na których opiera się każdy z elementów wspomnianego programu, gdy dokonuje czynności objętych tą licencją oraz ładowania i uruchamiania koniecznego do używania programu komputerowego, pod warunkiem że osoba ta nie narusza praw wyłącznych podmiotu prawa autorskiego do tego programu”. Powyższy sposób interpretacji w swojej istocie odzwierciedla wszystkie konstytutywne cechy inżynierii odwrotnej, tj. odtwarzania funkcji programu jedynie na podstawie obserwacji, badania i prób testowania. Wreszcie trzeci rodzaj pytań sprowadzał się do ustalenia interpretacji przepisów w kontekście legalności kopiowania tzw. manual, czyli podręcznika użytkownika. Trybunał Sprawiedliwości Unii Europejskiej, orzekając, dokonał interpretacji art. 2 lit. a dyrektywy 2001/29/WE z 22 maja 2001 r. w sprawie harmonizacji niektórych aspektów praw autorskich i pokrewnych. Wielka Izba stwierdziła, że powielenie w podręczniku użytkownika elementów opisanych w podręczniku użytkownika innego programu chronionego prawem autorskim może stanowić naruszenie prawa autorskiego, jeśli owo powielenie stanowi wyraz własnej twórczości intelektualnej autora podręcznika chronionego prawem autorskim. Jednocześnie TSUE pozostawił ustalenie tego faktu sądowi krajowemu.Wyrok Trybunału (Wielka Izba) z 2 maja 2012 r., SAS Institute Inc. przeciwko World Programming Ltd., sprawa C-406/10, Elektroniczny Zbiór Orzeczeń – http://curia.europa.eu [2018.02.22, 14:00]. Rozważając wpływ powyższego orzeczenia na porządek europejskiego prawa, w pierwszej kolejności należy zauważyć, że wspomniana dyrektywa w sprawie ochrony prawnej programów komputerowych (91/250) z 14 maja 1991 r. została zastąpiona przez dyrektywę Parlamentu Europejskiego i Rady 2009/24/WE z 23 kwietnia 2009 r. w sprawie ochrony prawnej programów komputerowych, natomiast tożsama z poprzednim stanem prawnym jest treść zarówno art. 1 ust. 2, jak i art. 5 ust. 3.Dziennik Urzędowy Unii Europejskiej, 5 maja 2009 r., L 111/16.
Dyrektywa w sprawie ochrony prawnej programów komputerowych została implementowana w Zjednoczonym Królestwie poprzez takie akty prawne, jak Copyright Designs and Patents Act, Copyright (Computer Programs) Regulations oraz Copyright and Related Rights Regulations 2003.Baza aktów prawnych Zjednoczonego Królestwa Wielkiej Brytanii, https://www.legislation.gov.uk/ukpga /1988/48/contents [2018.02.22, 14:00]. W Polsce natomiast realizację wspomnianej dyrektywy stanowi ustawa z 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych.Dz.U. z 1994 r. nr 24, poz. 83.
Dyrektywy unijne nie są – jak jest to w przypadku rozporządzeń – kierowane bezpośrednio do obywateli, lecz do państw członkowskich. W związku z tym to na państwie spoczywa obowiązek transpozycji norm prawnych w tym zakresie do krajowego porządku prawnego.W. Hakenberg, Prawo europejskie, C. H. Beck, Warszawa 2012, s. 72. Implementacją, w ramach polskiego systemu prawnego, zasady wyrażonej w dyrektywie w sprawie ochrony prawnej programów komputerowych jest art. 1 ust 21 ustawy o prawie autorskim i prawach pokrewnych, który stanowi, że ochroną objęty może być wyłącznie sposób wyrażenia; nie są objęte ochroną odkrycia, idee, procedury, metody i zasady działania oraz koncepcje matematyczne. Również art. 75 ust. 2 pkt 2 wspomnianej ustawy reguluje w sposób bardziej szczegółowy dopuszczalność inżynierii wstecznej. Przepis ten stanowi, że nie wymaga zezwolenia uprawnionego: obserwowanie, badanie i testowanie funkcjonowania programu komputerowego w celu poznania jego idei i zasad przez osobę posiadającą prawo korzystania z egzemplarza programu komputerowego, jeżeli, będąc do tych czynności upoważniona, dokonuje ona tego w trakcie wprowadzania, wyświetlania, stosowania, przekazywania lub przechowywania programu komputerowego.Dz.U. z 1994 r. nr 24, poz. 83, art. 1 i art. 75. Powyższe przepisy dopuszczają używanie techniki inżynierii wstecznej zgodnie z prawidłową interpretacją implementowanej dyrektywy. W doktrynie polskiego prawa autorskiego również zaakceptowano, w związku z powyższym przepisem, że nie są przedmiotem wyłącznych praw wytwórcy programu: funkcje programu i język programowania.E. Ferenc-Szydełko, Ustawa o prawie autorskim i prawach pokrewnych. Komentarz, C. H. Beck, Warszawa 2016, s. 47.
Należy również dodać, że zgodnie z polskim prawem dokonanie praktycznej analizy funkcjonowania programu (obserwacja, badanie, testowanie funkcji programu) nie wymaga odrębnej zgody wytwórcy programu. Natomiast może tego dokonywać jedynie osoba mająca prawo do korzystania z egzemplarza programu komputerowego. Nie może stosować reverse engineeringu osoba, która korzysta z programu na skutek złamania prawa bądź dobrych obyczajów, np. poprzez złamanie zabezpieczeń programu.Tamże, s. 637–638 i 640; M. Sieradzka, Ustawa o zwalczaniu nieuczciwej konkurencji. Komentarz, Wolters Kluwer, Warszawa 2016, s. 395–396.
Co więcej, stosowania metody inżynierii wstecznej nie musi dokonywać nabywca produktu, a ograniczenia licencyjne, zabraniające odtwórczej analizy, nakładają ograniczenie jedynie na pierwotnego nabywcę jako stronę umowy i nie mają charakteru powszechnego.M. Sieradzka, Ustawa o zwalczaniu, s. 397.
Należy podkreślić, że orzeczenie Trybunału Sprawiedliwości Unii Europejskiej ma charakter uniwersalny, ponieważ wskazuje na dopuszczalność stosowania inżynierii wstecznej na obszarze Unii Europejskiej. Ma to doniosłe znaczenie w dziedzinie IT, ponieważ istotna część przedsiębiorców z tej branży prowadzi działalność o charakterze transgranicznym. Zatem swoboda prowadzenia dystrybucji oprogramowania wytworzonego na bazie inżynierii wstecznej ma istotny wpływ na wolność działalności gospodarczej i pewność obrotu prawnego.
Ostatecznym rozstrzygnięciem sprawy SAS Institute Inc. przeciwko World Programming Ltd. na poziomie krajowym było oddalenie wszystkich zarzutów sformułowanych przez SAS Institute Inc., poza tymi, które dotyczyły podręcznika użytkownika (manual). W tym zakresie World Programming Ltd. naruszył prawa autorskie SAS Institute Inc. poprzez istotne odtworzenie treści podręcznika użytkownika.Rozstrzygnięcie England and Wales High Court z 25 stycznia 2013 r., http://www.bailii.org/ew/cases/EWHC/ Ch/2013/69.html#para6 [2018.02.22, 14:00]. Powyższa sprawa przed Trybunałem Sprawiedliwości Unii Europejskiej stała się precedensowa w tym sensie, że można uznać, iż wolność oprogramowania komputerowego oraz metody jego tworzenia na podstawie orzeczenia TSUE stawiają wolność twórczości i postęp w dziedzinie tworzenia oprogramowania przed chęcią monopolizacji przez niektórych przedsiębiorców całych obszarów technologii informacyjnej.
Podsumowanie
Wydane przez Trybunał Sprawiedliwości Unii Europejskiej prejudycjalne orzeczenie w sprawie SAS Institute Inc. przeciwko World Programming Ltd. wyznaczyło sposób interpretacji przepisów prawa europejskiego odnoszących się do stosowania metody inżynierii wstecznej. W związku z transgranicznym oraz – jako szczególny przypadek – wewnątrzwspólnotowym charakterem działalności przedsiębiorstw IT wskazane orzeczenie ma również wpływ na polski system prawny. Implementacja dyrektywy Parlamentu Europejskiego i Rady 2009/24/ WE z 23 kwietnia 2009 r. w sprawie ochrony prawnej programów komputerowych w postaci ustawy z 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych przesądza o dopuszczalności stosowania metody inżynierii wstecznej zgodnie z polskim porządkiem prawnym. W przyszłości niezbędne będzie podnoszenie poziomu wiedzy prawników oraz rozwój doktryny w zakresie reverse engineeringu, szczególnie w jego informatycznej formie dotyczącej analizy kodów źródłowych. W związku z powyższym nieunikniona wydaje się edukacja prawników również w zakresie technicznych aspektów procedury programowania oraz inżynierii wstecznej. Z tego względu, że to elementy techniczne są istotne i konstytutywne dla prawidłowego stwierdzenia, czy przeprowadzona analiza i odtwarzanie programu mieści się w granicach zgodnej z prawem inżynierii wstecznej, czy też nastąpiło naruszenie praw autorskich.