Inżynierii wstecznej lub inżynierii wstecznej lub odwrócony , to aktywność studia jest przedmiot w celu ustalenia swego działania, sposobu wytwarzania i mogą być w interesie zmiany. Mówimy również o projektowaniu odwrotnym w dziedzinie organizmów żywych. Równoważnym terminem w języku angielskim jest inżynieria wsteczna .
To może być:
W zależności od charakteru obiektu i zamierzonego celu stosuje się różne metody i techniki.
Zasada inżynierii odwrotnej opiera się na pobraniu chmury punktów z powierzchni obiektu do zeskanowania cyfrowego (za pomocą skanera trójwymiarowego ) lub do wyczuwania mechanicznego.
Ta chmura punktów przetwarzana jest przez funkcje CAD (Computer Aided Design) pozwalające na odtworzenie powierzchni, z których definiowany jest model parametryczny przez użytkownika i system generujący (wybór wymiarów i relacji międzywymiarowych, tolerancja itp.)
Drzewo konstrukcyjne jest zatem przedefiniowana w znacznej części.
Ta metoda ma zastosowanie tylko do „wytwarzalnych” obiektów CAD, ponieważ tylko operacje niewirtualnego projektowania (wyciskanie, otwór przelotowy…) i wytwarzania (skurcz, tolerancje…) są potencjalnie dopuszczalne do fizycznego odtworzenia obiektu.
Jakie są różne powody korzystania z inżynierii odwrotnej?
Polega na odtworzeniu funkcjonalnego schematu elektronicznego poprzez analizę połączeń obwodu drukowanego lub konstrukcji masek układu scalonego. Możliwe jest również, na niektórych urządzeniach skomputeryzowanych, pobranie kodu montażowego ich oprogramowania układowego . Kod źródłowy jest następnie tworzony z obrazu pamięci tych komponentów. Nazywa się to demontażem . Czasami możliwe jest nawiązanie dialogu z obiektem poprzez łącza pozostawione do uznania jednostki (interfejsy szeregowe, JTAG, ICSP itp.).
Inżynieria odwrotna dotyczy również oprogramowania . Można to zrobić za pomocą narzędzi analitycznych, takich jak deasembler lub dekompilator . Stosowane metody są podobne do debugowania .
Projekt Samba jest typowym przykładem inżynierii odwrotnej. Zespół musiał ustalić, jak działa współdzielenie zasobów sieciowych systemu operacyjnego Microsoft Windows bez dostępu do oficjalnych specyfikacji technicznych . Musieli więc je określić, a następnie przetłumaczyć na program komputerowy. To samo dotyczy systemu plików NTFS .
Inżynieria wsteczna oprogramowania jest często stosowana do struktur danych : w tym przypadku obejmuje ona dokumentowanie słabo lub słabo udokumentowanych fizycznych struktur danych ( starzejące się aplikacje ). Staramy się odtworzyć model danych z fizycznych struktur plików lub tabel .
Odwrotna inżynieria oprogramowania została spopularyzowana dzięki nadużywaniu zabezpieczeń przed kopiowaniem gier wideo . Ta czynność nazywana jest pękaniem .
Aby napisać sterowniki dla niektórych urządzeń peryferyjnych (kamera internetowa, skaner itp.), twórcy wolnego oprogramowania często są zmuszeni do odtworzenia kodu sterownika, przechwytując wymianę między chipem a sterownikiem, odkrywając w ten sposób, jak prowadzić dialog z chipem. Jest to wtedy kwestia symulowania sterownika, a następnie robienia go lepiej ( por. Linux webcam driver spca, pwc, itp. ). Przykładem jest projekt Nouveau mający na celu stworzenie darmowych sterowników 3D dla kart graficznych NVIDIA lub radeonHD , podobny projekt dla kart graficznych ATI Radeon HD.
W kryptografii inżynieria wsteczna przybiera różne formy z atakami kryptoanalitycznymi . Celem jest wydobycie tajnych informacji z „czarnej skrzynki” symbolizującej procedurę szyfrowania. Tego typu ataki nazywane są uboczne ataki kanału . Uważa się również, że za wyciekiem algorytmów RC2 i RC4, które zostały opublikowane w Internecie za pośrednictwem grupy dyskusyjnej sci.crypt, stoi inżynieria wsteczna . Algorytm Arcfour jest również klonem RC4.
Wielu producentów oprogramowania własnościowego zawiera klauzule w swoich umowach EULA, które zabraniają inżynierii wstecznej. Jednak w wielu krajach inżynieria wsteczna jest prawnie dozwolona, zwłaszcza w celu zapewnienia interoperacyjności . W tych krajach klauzule niniejszej umowy EULA są nieważne lub co najwyżej mieszczą się w granicach określonych przez prawo.
We Francji prawo ustanawia restrykcyjne ramy prawne dla inżynierii odwrotnej, dla których określone wyjątki są określone w artykule L122-6-1 Kodeksu Własności Intelektualnej, przy czym ramy te częściowo wywodzą się z prawa europejskiego ( patrz poniżej ).
Częściowo skompilowane języki programowania (skompilowane do kodu binarnego interpretowanego przez maszynę wirtualną), takie jak Java i .NET, ułatwiają inżynierię wsteczną.
Tak więc inżynierię wsteczną wykonywalnych plików binarnych przeznaczonych na platformę Java można przeprowadzić za pomocą programu ArgoUML .
W przypadku programów .NET firma Microsoft zapewnia standard ILDASM, a także dekompilatory .NET.
Inżynieria odwrotna jest również czynnością polegającą na obserwacji technologii . Jest ukierunkowany na:
Dyrektywa Rady 91/250/EWG z dnia14 maja 1991, dotyczący ochrony prawnej programów komputerowych, zawiera art. 6, Dekompilacja, który zostanie później transponowany w większości do artykułów L122-6 i L122-6-1 kodeksu własności intelektualnej , ustawą nr 94-361 z10 maja 1994 wdrażająca Dyrektywę (EWG) nr 91-250 Rady Wspólnot Europejskich z dnia 14 maja 1991dotyczące ochrony prawnej programów komputerowych oraz modyfikacji kodu własności intelektualnej .
Artykuł L122-6 określa, że tłumaczenie formy kodu oprogramowania jest częścią prawa do eksploatacji należącego do autora oprogramowania (w tym, jak wskazano w art. L335-3 tego samego kodu, naruszenie przez innych jest porównywalne z przestępstwo podrabiania) i nie jest możliwe bez upoważnienia i w sposób niewykonalny umową przez inne osoby, z wyjątkiem przypadku wyjaśnionego w artykule L122-6 -1 Kodeksu własności intelektualnej, który określa szereg warunków, w tym, że "działania te [są] ograniczone do części oryginalnego oprogramowania niezbędnych do" "interoperacyjności oprogramowania stworzonego niezależnie z 'innym oprogramowaniem', bez "informacji w ten sposób uzyskanych [nie są]" "wykorzystywane do celów innych niż osiągnięcia interoperacyjności niezależnie stworzonego oprogramowania", "Ani przekazywane stronom trzecim, chyba że jest to konieczne do niezależnie stworzonego interoperacyjności oprogramowania", "Nie są używane do rozwoju, produkcji lub marketingu oprogramowania, którego ekspresja jest istotnie podobna, lub jakiegokolwiek innego czynu naruszającego prawa autorskie ”, przypominając, że„ Niniejszy artykuł nie może być interpretowany jako pozwalający na ingerencję w normalne działanie oprogramowania lub powodowanie nadmiernego uszczerbku dla uzasadnionych interesów Autor ".
Oprócz tłumaczenia formy kodu, artykuł ten stwierdza również, że „Osoba mająca prawo do korzystania z oprogramowania może bez upoważnienia autora obserwować, badać lub testować działanie lub bezpieczeństwo tego oprogramowania w celu określa idee i zasady, które leżą u podstaw dowolnego elementu oprogramowania podczas wykonywania przez niego jakiejkolwiek operacji ładowania, wyświetlania, wykonywania, przesyłania lub przechowywania oprogramowania, do których jest uprawniony”.
Przewiduje również możliwość wykonywania przez inne osoby czynności objętych prawami autorskimi autora „gdy jest to niezbędne do umożliwienia korzystania z oprogramowania zgodnie z jego przeznaczeniem przez osobę mającą prawo do korzystania z niego. poprawić błędy ”, ale możliwość ta jest ograniczona umową.
Dyrektywa europejska 2009/24/CE zastępuje później dyrektywę 91/250/CEE, nie powodując żadnych istotnych zmian w artykule L122-6-1 Kodeksu Własności Intelektualnej.
Kontekst historycznyUstawa nie precyzuje, czy przepisy dotyczące „badania lub testowania działania lub bezpieczeństwa oprogramowania” oraz „odtwarzania kodu oprogramowania lub tłumaczenia formy tego kodu” nakładają się na siebie, czy też wykluczają, i został zmodyfikowany tylko w jednym przypadku, w ustawie o programowaniu wojskowym z 2013 r., aby określić, że„ bezpieczeństwo ”oprogramowania może być badane w taki sam sposób jak„ operacja ”. Odkąd dyrektywa została sporządzona w 1991 roku , tematy takie jak open source nie były wówczas zbytnio obecne w debacie publicznej, a projekty takie jak World Wide Web czy Linux były jeszcze w powijakach.
„Uzasadnione interesy autora”, o których mowa w artykule L122-6-1, również nie są zdefiniowane.
Jeśli artykuł 6 dyrektywy 91/250 / CEE jest zatytułowany „Dekompilacja”, należy zauważyć, że narzędzia do dekompilacji na język taki jak prąd C , takie jak Ghidra lub wtyczka Hex-Rays z IDA Pro, pojawiły się dopiero dwadzieścia lat później, podobnie jak pośrednie reprezentacji języków takich jak Java , dla których decompilers były łatwo dostępne, jeszcze nie istniały, i był w epoce bardziej zapytania od decyzji. demontaż . Przetransponowany artykuł prawny mówi jedynie o „tłumaczeniu formy kodu”, usuwając ewentualny niuans semantyczny, który niekoniecznie miał wówczas przedmiot.
OrzecznictwoW 2013 roku francuski wymiar sprawiedliwości uniewinnia kryptografa australijskiego pochodzenia Seana O'Neila, twórcę algorytmu VEST (en) za opublikowanie algorytmu generowania kluczy na podstawie zaciemniania ówczesnego protokołu Skype . Został jednak skazany w apelacji w 2015 roku , tym razem sądy uznały, że nie powinien był publikować swojego kodeksu. Był jednak już w tym czasie uwięziony za stworzenie sekty , zamieszanej w akty korupcji nieletnich i gwałty.
Decyzja Sądu Apelacyjnego jest wykonany bez względu na opinię Rady Stanu z dnia16 lipca 2008który, odpowiadając na wniosek z kwietnia, atakujący dekret implementujący ustawę DADVSI , oświadcza w odniesieniu do artykułu L122-6-1, że „postanowienia te ustanawiają, pod pewnymi warunkami, wyjątek dekompilacji mający na celu umożliwienie rozwoju wolnego oprogramowania”, ten określając i biorąc pod uwagę przepis danego artykułu, który wskazuje, że„ Uzyskane w ten sposób informacje nie mogą być […] przekazywane stronom trzecim, chyba że jest to konieczne dla interoperacyjności niezależnie stworzonego oprogramowania ”.
Ta opinia jest cytowana jako podstawa orzecznicza stowarzyszenia VideoLAN do opracowania niektórych komponentów oprogramowania VLC media player , w tym libdvdcss lub libbluray.
Definicja pojęcia „ interoperacyjności ” jest czasami uważana za niepewną; w 2011 roku Sąd Kasacyjny zakwestionował decyzję Sądu Apelacyjnego , orzekając , w ramach celów realizowanych przez nieuprawnione powielanie kodu źródłowego oprogramowania w celu wdrożenia systemu migracji danych, że „Operacje migracji były mające na celu umożliwienie komunikacji między dwoma programami„ Athena ”i„ H. Open ”, ale zastąpienie jednego przez drugie; że zatem, twierdząc, że te operacje migracyjne były uzasadnione interoperacyjnością, Sąd Apelacyjny naruszył art. L.122-6-1-IV kodeksu własności intelektualnej, jak należy go interpretować w świetle dyrektywy 91/25014 maja 1991 ”.
Przepisy dotyczące badania technicznych środków ochrony, czyli DRM (Dyrektywa 2001/29 / WE DADVSI)Prawo nr 2006-961 od1 st sierpień 2006o prawie autorskim i prawach pokrewnych w społeczeństwie informacyjnym transponuje dyrektywę 2001/29/WE Parlamentu Europejskiego i Rady z dnia22 maja 2001w sprawie harmonizacji niektórych aspektów praw autorskich i pokrewnych w społeczeństwie informacyjnym . Obejmuje ona między innymi badanie i obchodzenie technicznych środków ochrony (lub DRM ) poprzez zmianę Kodeksu Własności Intelektualnej .
Artykuł L. 331-5 kodeksu własności intelektualnej definiuje techniczne środki ochrony w następujący sposób:
Skuteczne środki techniczne mające na celu uniemożliwienie lub ograniczenie nieuprawnionego wykorzystania przez właścicieli praw autorskich lub praw pokrewnych do utworu innego niż oprogramowanie, interpretacji, fonogramu, wideogramu, programu lub publikacji prasowej są chronione na warunkach przewidzianych w tym tytule.Do celów akapitu pierwszego przez środek techniczny rozumie się każdą technologię, urządzenie lub element, które w normalnym toku swojego działania pełnią funkcję przewidzianą w niniejszym ustępie. Te środki techniczne uważa się za skuteczne, gdy korzystanie, o którym mowa w tym samym ustępie, jest kontrolowane przez posiadaczy praw poprzez zastosowanie kodu dostępu, procesu ochrony, takiego jak szyfrowanie, szyfrowanie lub jakiekolwiek inne przekształcenie przedmiotu ochrony lub mechanizm kontroli kopiowania, który osiąga ten cel ochrony.Protokół, format, metoda szyfrowania, szyfrowania lub transformacji nie stanowią jako takie środka technicznego w rozumieniu niniejszego artykułu.A także stwierdza, że:
Środki techniczne nie mogą skutkować uniemożliwieniem skutecznego wdrożenia interoperacyjności przy poszanowaniu praw autorskich. Dostawcy środków technicznych zapewniają dostęp do informacji istotnych dla interoperacyjności na warunkach określonych w art. L. 331-6 i L. 331-7.Ale także, że:
Środki techniczne nie mogą sprzeciwiać się swobodnemu korzystaniu z utworu lub chronionego obiektu w granicach praw przewidzianych w niniejszym kodeksie, jak również praw przyznanych przez posiadaczy praw.Postanowienia tego artykułu obowiązują bez uszczerbku dla postanowień artykułu L. 122-6-1 niniejszego kodeksu.Zgodnie z art. L. 331-7 kodeksu własności intelektualnej:
Każdy wydawca oprogramowania, każdy producent systemu technicznego i każdy operator usług może, w przypadku odmowy dostępu do informacji istotnych dla interoperacyjności, zwrócić się do Urzędu Regulacji Środków Technicznych o zagwarantowanie interoperacyjności systemów i istniejących usług, z poszanowaniem praw stron oraz do uzyskania od posiadacza praw do środka technicznego informacji istotnych dla tej interoperacyjności.Zgodnie z art. L. 335-3-1 kodeksu własności intelektualnej:
I. - Grzywna w wysokości 3750 euro podlega karze za świadome podważanie, do celów innych niż badania naukowe, skutecznego środka technicznego określonego w art. L. 331-5 w celu zmiany ochrony utworu poprzez odszyfrowanie, odszyfrowanie lub jakikolwiek inny interwencja osobista mająca na celu obejście, zneutralizowanie lub usunięcie mechanizmu ochronnego lub kontrolnego, […] II. - podlega karze sześciu miesięcy pozbawienia wolności i grzywnie w wysokości 30 000 euro za świadome nabywanie lub oferowanie innym, bezpośrednio lub pośrednio, środków zaprojektowanych lub specjalnie przystosowanych do podważenia skutecznego środka technicznego […] […] IV. - Niniejsze postanowienia nie mają zastosowania do czynności dokonywanych dla celów bezpieczeństwa komputerowego, w granicach praw przewidzianych w niniejszym kodeksie. Przepisy dotyczące ochrony tajemnic handlowych (Dyrektywa (UE) 2016/943)Prawo nr 2018-670 od30 lipca 2018w sprawie ochrony tajemnicy przedsiębiorstwa , transponująca dyrektywę Parlamentu Europejskiego i Rady (UE) 2016/943 z dnia8 czerwca 2016o ochronie know-how i niejawnych informacji handlowych (tajemnic handlowych) przed bezprawnym pozyskiwaniem, wykorzystywaniem i ujawnianiem , dopuszcza w niektórych przypadkach umowne ograniczenie inżynierii odwrotnej: tworzy art. L151-3 Kodeksu handlowego, który stanowi, że „obserwacja, badanie, demontaż lub testowanie produktu lub przedmiotu, który został udostępniony publicznie lub który jest zgodnie z prawem w posiadaniu osoby uzyskującej informacje, „stanowi” [tryb] zgodnego z prawem uzyskania tajemnicy handlowej "," chyba że istnieje postanowienie umowne zabraniające lub ograniczające uzyskanie tajemnicy ”. Artykuł L151-1 ze swej strony zawiera definicję tajemnicy przedsiębiorstwa.
Kodeks handlowy powinien być interpretowany w oderwaniu od Kodeksu Własności Intelektualnej .
Ponieważ patent wymaga publikacji wynalazku , można zrezygnować z inżynierii odwrotnej w celu zbadania opatentowanych elementów. Jedną z głównych motywacji inżynierii odwrotnej jest ustalenie, czy konkurencyjny produkt narusza patent lub prawa autorskie .
Od 1998 roku ustawa Digital Millennium Copyright Act zabrania obchodzenia technologicznych środków ochronnych.