Rétro-ingénierie

La rétro-ingénierie, ou ingénierie inversée, est l'activité qui consiste à étudier un objet pour en déterminer le fonctionnement interne, la méthode de fabrication, peut-être dans l'intérêt de le modifier. On parle également de rétro-conception dans le domaine du vivant. Le terme équivalent en anglais est reverse engineering.

« Reverse engineering » redirige ici. Pour le groupe de musique suisse, voir Reverse Engineering (groupe).

Définition formelle

Il peut s'agir de :

  • comprendre le fonctionnement de l'objet, pour être en mesure de l'utiliser correctement, de le modifier, ou encore de s'assurer de son bon fonctionnement[1], le cas échéant dans un cadre pédagogique « Beaucoup d'étudiants, dans les années 1980, ont passé des journées entières à se former à la microélectronique à partir de circuits existants selon les principes de la rétro-ingénierie pédagogique » rappellent C. Berrou et V. Gripon (2012)[2] ;
  • comprendre le fonctionnement et l'utilité d'un objet technique ancien, ou d'une œuvre d'art présentant des aspects techniques comme en archéologie[3] et en archéologie industrielle[4] ou dans le cadre de la restauration d’œuvres techniques anciennes[5] ;
  • fabriquer une copie de cet objet alors qu'on ne peut en obtenir ni les plans ni les méthodes de fabrication (activité généralement illégale si l'objet est encore protégé par un brevet) ;
  • créer un nouvel objet ayant des fonctionnalités identiques à l'objet de départ, sans viol de brevet ;
  • analyser un objet produit par un concurrent, dans le cadre d'une activité de veille concurrentielle ou pour détecter d'éventuelles violations de brevets ;
  • utiliser les méthodes de la rétro-ingénierie pour innover en s'inspirant du vivant (biomimétique).

Suivant la nature de l'objet et l'objectif poursuivi, on a recours à différentes méthodes et techniques.

  • Pour des objets physiques, il est possible de démonter le système jusqu'à un certain point pour en analyser les composants ;
  • En électronique et en informatique, la démarche peut être celle de l'étude d'une boîte opaque : l'objet à étudier est isolé, les entrées et les sorties actives sont déterminées. La réponse du système en fonction des variations du signal ou des signaux en entrée est ensuite déterminée ;
  • certains outils de rétro-ingénierie peuvent être utilisés pour analyser des systèmes complexes tels le web ou l'une de ses parties[6] ;
  • en biomimétique où il s'agit de comprendre le fonctionnement d'être vivants ou d'écosystèmes, un large éventail d'outils d'imagerie, de biomarqueurs et bioindicateurs, d'analyse biomoléculaire et jusqu'à l'observation éthologique peuvent être mobilisés.

C'est aussi une activité de veille technologique.

Rétro-ingénierie des objets physiques

Le principe de la rétro-conception repose sur la collecte d’un nuage de points issu de la surface de l’objet à scanner numériquement (au moyen d'un scanner tridimensionnel) ou à palper mécaniquement.
Ce nuage de points est traité par des fonctions CAO (Conception Assistée par Ordinateur) permettant la reconstruction de surfaces à partir desquelles un modèle paramétrique est défini par l'utilisateur et le système générateur (choix des cotes et des relations inter-cotes, tolérance…)
L'arbre de construction est ainsi redéfini dans sa majeure partie.
Cette méthode n'est applicable que pour des objets CAO « manufacturables » car seules des opérations de conception (extrusion, trou débouchant…) et de fabrication (retrait, tolérances…) non virtuelles sont potentiellement acceptables pour la reproduction physique de l'objet.

La rétro-conception peut être utilisée pour diverses raisons :

  • La conception originelle n’est pas supportée par une documentation suffisante ou adéquate.
  • Le modèle originel de CAO n'est pas suffisant pour soutenir des modifications et/ou les procédés de fabrication courante.
  • Le fabricant originel n'existe plus ou ne fabrique plus le produit, mais il y a des besoins pour le produit.
  • Composants usés ou cassés pour lesquels il n'y a aucune source d'approvisionnement.
  • Renforcement des fonctionnalités.
  • Amélioration de la performance et/ou les fonctionnalités de produit.
  • Manque de pièces additionnelles (pièces de rechange).
  • Actualisation des matériaux désuets ou des processus de fabrication désuets.
  • Analyse des fonctionnalités des produits des concurrents : études des produits, des méthodes utilisées, des composants et des fournisseurs... Ces techniques peuvent même être effectuées pour estimer le cout d'une pièce, voire même son prix de revient à partir de ces diverses informations
  • Détection des contrefaçons chez des produits concurrents.
  • Compréhension des processus de conception d'un produit concurrent.
  • l'identification d'éventuelles violations de brevets commises par un concurrent ou à éviter.

Rétro-ingénierie en électronique

Elle consiste à reconstituer un schéma électronique fonctionnel en analysant les connexions d'un circuit imprimé ou le dessin des masques d'un circuit intégré. On peut aussi, sur certains dispositifs informatisés récupérer le code assembleur de leur firmware. Le code source est alors élaboré à partir de l'image mémoire de ces composants. On parle alors de désassemblage. Il est parfois possible de dialoguer avec un objet via des liaisons laissées à la discrétion du boitier (interfaces sérielles, JTAG, ICSP…).

Rétro-ingénierie en informatique

La rétro-ingénierie s'applique aussi au logiciel. Ceci peut être réalisé en utilisant des outils d'analyse comme le désassembleur ou le décompilateur. Les méthodes employées sont similaires à celle du débogage.

Le projet Samba est un exemple typique de rétro-ingénierie. L'équipe a dû déterminer le fonctionnement du partage de ressources en réseau du système d'exploitation Microsoft Windows sans avoir accès aux spécifications techniques officielles. Ils ont donc dû les déterminer puis les traduire sous forme d'un programme informatique. Il en va de même pour le système de fichier NTFS.

La rétro-ingénierie logicielle est fréquemment appliquée aux structures de données : il s'agit, dans ce cas de figure, d'effectuer une documentation des structures de données physiques peu ou mal documentées (applications vieillissantes). On essaie de reconstituer un modèle de données à partir des structures physiques des fichiers ou des tables.

La rétro-ingénierie logicielle fut popularisée avec le détournement des protections anticopie des jeux vidéo[réf. nécessaire]. Cette activité est appelée cracking.

Pour écrire des pilotes pour certains périphériques (webcam, scanneur, etc.), les développeurs de logiciels libres se retrouvent souvent contraints à faire de la rétro-ingénierie sur le pilote en interceptant les échanges entre la puce et le pilote, découvrant ainsi comment dialoguer avec la puce. Il s'agit alors de simuler le pilote, puis de faire mieux (cf. pilote Linux de webcam spca, pwc, etc.[réf. nécessaire]). Un exemple est le projet Nouveau visant à produire des pilotes 3D libres pour les cartes graphiques NVIDIA ou radeonHD, projet similaire pour les cartes graphiques ATI Radeon HD.

En cryptographie, la rétro-ingénierie prend plusieurs formes avec des attaques cryptanalytiques. Le but est d'extraire des informations secrètes depuis la « boîte noire » symbolisant la procédure de chiffrement. Ces types d'attaques sont nommés attaques par canaux auxiliaires. On pense que la rétro-ingénierie est aussi à l'origine de la fuite des algorithmes RC2 et RC4 qui furent diffusés sur Internet via le groupe de discussion sci.crypt. L'algorithme Arcfour est d'ailleurs un clone de RC4.

Légalité de la rétro-ingénierie informatique

De nombreux éditeurs de logiciels propriétaires incluent dans leurs CLUF des clauses interdisant la rétro-ingénierie. Cependant dans de nombreux pays la rétro-ingénierie est autorisée par la loi, notamment à des fins d'interopérabilité. Dans ces pays, les clauses de ces CLUF ne sont pas valables, ou tout au plus dans les limites déterminées par la loi.

En France, la loi pose un cadre légal restrictif à la rétro-ingénierie, pour laquelle des exceptions spécifiques sont définies dans l'article L122-6-1 du Code de la propriété intellectuelle[7], ce cadre étant partiellement issu du droit européen (voir infra).

Programmes en langages intermédiaires

Les langages de programmation semi-compilés (compilé en un code binaire interprété par une machine virtuelle) tels que Java et .NET rendent la rétro-ingénierie plus aisée.

Ainsi, la rétro-ingénierie de fichiers binaires exécutables destinés à la plate-forme Java peut se réaliser avec le programme ArgoUML.

Pour les programmes .NET, Microsoft fournit en standard ILDASM[8], et il existe également des décompilateurs .NET[9].

La rétro-ingénierie comme défense

  • Étude de binaire malicieux (exemple : rootkit) dans le cadre d'une attaque informatique.
  • Étude de virus informatique pour l'amélioration d'un antivirus ou en vue d'apporter un moyen d'éradication.
  • Étude et recherche de vulnérabilités dans les logiciels, afin d'améliorer leur sécurité.

Législation

Description de la loi

La Directive 91/250/CEE du Conseil, du , concernant la protection juridique des programmes d'ordinateur porte un Article 6, Décompilation qui sera plus tard transposé en majeure partie dans les articles L122-6 et L122-6-1 du Code de la propriété intellectuelle, par la Loi n° 94-361 du portant mise en œuvre de la directive (C. E. E.) n° 91-250 du Conseil des communautés européennes en date du concernant la protection juridique des programmes d'ordinateur et modifiant le code de la propriété intellectuelle[10],[11].

L'article L122-6 spécifie que traduire la forme du code d'un logiciel fait partie du droit d'exploitation appartenant à l'auteur d'un logiciel[12] (dont, comme l'indique l'article L335-3 du même code, la violation par autrui est assimilable à un délit de contrefaçon[13]), et n'est pas possible, sans autorisation et d'une façon qui ne soit pas opposable par contrat, par autrui, sauf dans le cas explicité par l'article L122-6-1 du Code de la propriété intellectuelle, spécifiant un certain nombre de conditions, y compris que « ces actes [soient] limités aux parties du logiciel d'origine nécessaires à » « l'interopérabilité d'un logiciel créé de façon indépendante avec d'autres logiciels », sans que « Les informations ainsi obtenues [ne soient] » « utilisées à des fins autres que la réalisation de l'interopérabilité du logiciel créé de façon indépendante », « Ni communiquées à des tiers sauf si cela est nécessaire à l'interopérabilité du logiciel créé de façon indépendante », « Ni utilisées pour la mise au point, la production ou la commercialisation d'un logiciel dont l'expression est substantiellement similaire ou pour tout autre acte portant atteinte au droit d'auteur », tout en rappelant que « Le présent article ne saurait être interprété comme permettant de porter atteinte à l'exploitation normale du logiciel ou de causer un préjudice injustifié aux intérêts légitimes de l'auteur »[7].

Outre la traduction de la forme du code, cet article stipule également que « La personne ayant le droit d'utiliser le logiciel peut sans l'autorisation de l'auteur observer, étudier ou tester le fonctionnement ou la sécurité de ce logiciel afin de déterminer les idées et principes qui sont à la base de n'importe quel élément du logiciel lorsqu'elle effectue toute opération de chargement, d'affichage, d'exécution, de transmission ou de stockage du logiciel qu'elle est en droit d'effectuer »[7].

Il stipule également la possibilité pour autrui d'effectuer des actes relevant du droit d'exploitation de l'auteur « lorsqu'ils sont nécessaires pour permettre l'utilisation du logiciel, conformément à sa destination, par la personne ayant le droit de l'utiliser, y compris pour corriger des erreurs », mais que cette possibilité est limitable contractuellement[7].

La directive européenne 2009/24/CE remplace plus tard la directive 91/250/CEE, sans entraîner de modification substantielle de l'article L122-6-1 du Code de la propriété intellectuelle.

Contexte historique

La loi ne précise pas si les dispositions relatives au fait d'« étudier ou tester le fonctionnement ou la sécurité [d'un] logiciel » et de « La reproduction du code [d'un] logiciel ou la traduction de la forme de ce code » se superposent ou s'excluent, et n'a été modifiée qu'à une occasion, celle de la Loi de programmation militaire de 2013 pour préciser que « la sécurité » du logiciel pouvait être étudiée, au même titre que « le fonctionnement ». La directive ayant servi à sa rédaction datant de 1991, les thématiques telles que l'open source étaient alors peu présentes dans le débat public et des projets comme le World Wide Web ou Linux en étaient encore à leurs balbutiements.

Les « intérêts légitimes de l'auteur », tels que mentionnés par l'article L122-6-1, ne sont pas définis non plus.

Si l'article 6 de la directive 91/250/CEE est bien titré « Décompilation »[11], il est à noter que les outils de décompilation vers un langage comme le C actuels, tels que Ghidra ou le plug-in Hex-Rays d'IDA Pro n'ont émergé qu'une vingtaine d'années plus tard, de même que les langages à représentation intermédiaire, comme Java, pour lesquels des décompilateurs furent rapidement disponibles, n'existaient pas encore, et qu'il était à l'époque davantage question de désassemblage. L'article de loi transposé parle uniquement de « traduction de la forme du code », effaçant une éventuelle nuance sémantique qui n'avait pas nécessairement d'objet à l'époque.

Jurisprudence

En 2013, la justice française acquitte le cryptographe d'origine australienne Sean O'Neil, créateur de l'algorithme VEST (en) pour avoir publié l'algorithme de génération de clefs à la base de l'obfuscation du protocole d'alors de Skype[14]. Il est néanmoins condamné en appel en 2015, la justice estimant cette fois qu'il n'aurait pas dû publier son code[15]. Il est néanmoins à cette époque déjà incarcéré pour la création d'une secte, impliquant des faits de corruption de mineures et de viol[16].

La décision de la Cour d'appel est faite nonobstant l'avis du Conseil d'État du qui, répondant à une requête de l'April attaquant le décret d'application de la loi DADVSI, déclare à propos de l'article L122-6-1 que « ces dispositions instituent, sous certaines conditions, une exception de décompilation destinée à permettre le développement de logiciels libres », cela en précitant et tenant compte de la disposition de l'article concerné qui indique que « Les informations ainsi obtenues ne peuvent être […] communiquées à des tiers sauf si cela est nécessaire à l’interopérabilité du logiciel créé de façon indépendante »[17].

Ce dernier avis est cité comme base jurisprudentielle par l'association VideoLAN pour le développement de certains composants du logiciel VLC media player, notamment libdvdcss ou libbluray[18],[19].

La définition de la notion d'« interopérabilité » est parfois considérée comme précaire[20] ; en 2011, la Cour de cassation retoque la décision d'une Cour d'appel, jugeant, dans le cadre des objectifs poursuivis par la reproduction non autorisée du code source d'un logiciel afin d'implémenter un système de migration de données, que « les opérations de migration visaient, non pas à permettre la communication entre les deux logiciels « Athena » et « H. Open », mais à remplacer l'un par l'autre ; que, dès lors, en affirmant que ces opérations de migration étaient justifiées par l'interopérabilité, la Cour d'appel a violé l'article L.122-6-1-IV du Code de la propriété intellectuelle, tel qu'il doit être interprété à la lumière de la Directive n° 91/250 du  »[21].

Dispositions relatives à l'étude des mesures techniques de protection, ou DRM (directive 2001/29/CE DADVSI)

La Loi n° 2006-961 du relative au droit d'auteur et aux droits voisins dans la société de l'information[22] transpose la Directive 2001/29/CE du Parlement européen et du Conseil du sur l'harmonisation de certains aspects du droit d'auteur et des droits voisins dans la société de l'information[23]. Elle cadre, entre d'autres choses, l'étude et le contournement des mesures techniques de protection (ou DRM) en modifiant le Code de la propriété intellectuelle.

L'article L. 331-5 du Code de la propriété intellectuelle définit les mesures techniques de protection comme il suit :

Les mesures techniques efficaces destinées à empêcher ou à limiter les utilisations non autorisées par les titulaires d'un droit d'auteur ou d'un droit voisin du droit d'auteur d'une œuvre, autre qu'un logiciel, d'une interprétation, d'un phonogramme, d'un vidéogramme, d'un programme ou d'une publication de presse sont protégées dans les conditions prévues au présent titre.
On entend par mesure technique au sens du premier alinéa toute technologie, dispositif, composant qui, dans le cadre normal de son fonctionnement, accomplit la fonction prévue par cet alinéa. Ces mesures techniques sont réputées efficaces lorsqu'une utilisation visée au même alinéa est contrôlée par les titulaires de droits grâce à l'application d'un code d'accès, d'un procédé de protection tel que le cryptage, le brouillage ou toute autre transformation de l'objet de la protection ou d'un mécanisme de contrôle de la copie qui atteint cet objectif de protection.
Un protocole, un format, une méthode de cryptage, de brouillage ou de transformation ne constitue pas en tant que tel une mesure technique au sens du présent article.

Et stipule également que :

Les mesures techniques ne doivent pas avoir pour effet d'empêcher la mise en œuvre effective de l'interopérabilité, dans le respect du droit d'auteur. Les fournisseurs de mesures techniques donnent l'accès aux informations essentielles à l'interopérabilité dans les conditions définies aux articles L. 331-6 et L. 331-7.

Mais aussi que :

Les mesures techniques ne peuvent s'opposer au libre usage de l’œuvre ou de l'objet protégé dans les limites des droits prévus par le présent code, ainsi que de ceux accordés par les détenteurs de droits.
Les dispositions du présent article s'appliquent sans préjudice des dispositions de l'article L. 122-6-1 du présent code.

D'après l'article L. 331-7 du Code de la propriété intellectuelle :

Tout éditeur de logiciel, tout fabricant de système technique et tout exploitant de service peut, en cas de refus d'accès aux informations essentielles à l'interopérabilité, demander à l'Autorité de régulation des mesures techniques de garantir l'interopérabilité des systèmes et des services existants, dans le respect des droits des parties, et d'obtenir du titulaire des droits sur la mesure technique les informations essentielles à cette interopérabilité.

D'après l'article L. 335-3-1 du Code de la propriété intellectuelle :

I. - Est puni de 3 750 euros d'amende le fait de porter atteinte sciemment, à des fins autres que la recherche, à une mesure technique efficace telle que définie à l'article L. 331-5, afin d'altérer la protection d'une œuvre par un décodage, un décryptage ou toute autre intervention personnelle destinée à contourner, neutraliser ou supprimer un mécanisme de protection ou de contrôle, […]
II. - Est puni de six mois d'emprisonnement et de 30 000 euros d'amende le fait de procurer ou proposer sciemment à autrui, directement ou indirectement, des moyens conçus ou spécialement adaptés pour porter atteinte à une mesure technique efficace […]
[…]
IV. - Ces dispositions ne sont pas applicables aux actes réalisés à des fins de sécurité informatique, dans les limites des droits prévus par le présent code.

Dispositions relatives à la protection du secret des affaires (directive (UE) 2016/943)

La Loi n° 2018-670 du relative à la protection du secret des affaires, transposant la Directive (UE) 2016/943 du Parlement européen et du Conseil du sur la protection des savoir-faire et des informations commerciales non divulgués (secrets d’affaires) contre l’obtention, l’utilisation et la divulgation illicite, permet, dans certains cas, la limitation contractuelle de la rétro-ingénierie : elle créé l'article L151-3 du Code du commerce qui stipule que « l'observation, l'étude, le démontage ou le test d'un produit ou d'un objet qui a été mis à la disposition du public ou qui est de façon licite en possession de la personne qui obtient l'information » constitue un « [mode] d'obtention licite d'un secret des affaires », « sauf stipulation contractuelle interdisant ou limitant l'obtention du secret »[24]. L'article L151-1, quant à lui, apporte une définition d'un secret des affaires[25],[26].

Le Code du commerce est à interpréter distinctement du Code de la propriété intellectuelle.

États-Unis

Comme un brevet nécessite de publier l'invention, on peut se passer de rétro-ingénierie pour étudier les éléments brevetés. L'une des principales motivations de la rétro-ingénierie est de déterminer si un produit concurrent viole un brevet ou des droits d'auteur.

Depuis 1998, le Digital Millennium Copyright Act interdit le contournement des mesures techniques de protection.

Notes et références

  1. [PDF] Marie-Hélène Durand, « Les standards et la prise en compte des COTS : comment se concilient l’utilisation des COTS et les normes actuelles ? », Laboratoire d'analyse et d'architecture des systèmes (LAAS).
  2. Berrou, C., & Gripon, V. (2012). Petite mathématique du cerveau: Une théorie de l'information mentale. Odile Jacob.
  3. Stricot, M. (2015). Préservation et archéologie des médias : importance de la rétro ingénierie dans la reconstruction archéologique d'œuvres d'art à composante technologique.
  4. Hervy, B., Laroche, F., Kerouanton, J. L., & Bernard, A. (2012). Projet Nantes1900: les nouvelles technologies au service de la capitalisation des connaissances et de la valorisation du patrimoine historique.
  5. Geindreau, R. (2016, January). Étude préalable à la restauration d'un objet technico-scientifique contemporain. Le générateur Cockcroft-Walton de l’Institut de Physique Nucléaire de Lyon. In CeROArt. Conservation, exposition, Restauration d'Objets d'Art (No. 5). CeROArt asbl.
  6. Lammari, N. (2008). Méthode de rétro-ingénierie pour l'analyse des sites Web (Doctoral dissertation, CEDRIC Lab/CNAM).
  7. Article L122-6-1 du Code de la propriété intellectuelle
  8. (en) « Ildasm.exe Tutorial »(Archive.orgWikiwixArchive.isGoogle • Que faire ?), sur msdn.microsoft.com.
  9. (en)« Dot Net Decompilers », Program Transformation Wiki.
  10. Loi no 94-361 du 10 mai 1994 portant mise en oeuvre de la directive (C. E. E.) n° 91-250 du Conseil des communautés européennes en date du 14 mai 1991 concernant la protection juridique des programmes d'ordinateur et modifiant le code de la propriété intellectuelle
  11. « Directive 91/250/CEE du Conseil, du 14 mai 1991, concernant la protection juridique des programmes d'ordinateur », sur EUR-Lex
  12. Article L122-6 du Code de la propriété intellectuelle
  13. Article L335-3 du Code de la propriété intellectuelle
  14. Guillaume Champeau, « La justice française blanchit le cassage du protocole de Skype », sur Numerama, (consulté le )
  15. Marc Rees, « Un informaticien condamné pour avoir contrefait Skype et révélé ses fragilités », sur Next INpact, (consulté le )
  16. « Microsoft échoue à faire condamner pour "contrefaçon" le gourou de Valbonne », sur Nice-Matin, (consulté le )
  17. Conseil d'État, 10ème et 9ème sous-sections réunies, 16/07/2008, 301843
  18. (en) « Legal », sur VideoLAN (consulté le )
  19. (en) « libbluray », sur VideoLAN (consulté le )
  20. « Logiciel : qui sont les titulaires du droit à la décompilation ? », sur Mathias Avocats, (consulté le )
  21. Cour de cassation, civile, Chambre civile 1, 20 octobre 2011, 10-14.069
  22. Loi no 2006-961 du 1er août 2006 relative au droit d'auteur et aux droits voisins dans la société de l'information
  23. « Directive 2001/29/CE du Parlement européen et du Conseil du 22 mai 2001 sur l'harmonisation de certains aspects du droit d'auteur et des droits voisins dans la société de l'information », sur EUR-Lex
  24. Article L151-3 du Code du commerce
  25. Article L151-1 du Code du commerce
  26. « La nouvelle protection du secret des affaires - Loi n° 2018-670 du 30 juillet 2018 relative à la protection du secret des affaires », sur Cabinet d’Avocats Seban et Associés (consulté le ).

Voir aussi

Articles connexes

Bibliographie

  • Portail de la sécurité informatique
  • Portail du droit
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.