Rétro-ingénierie
La rétro-ingénierie, ou ingénierie inverse ou inversée, est l'activité qui consiste à étudier un objet pour en déterminer le fonctionnement interne ou la méthode de fabrication. On parle également de rétroconception. Le terme équivalent en anglais est reverse engineering.
Il s'agit 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] ;
- 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) ;
- 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, soit dans le cadre d'une activité de veille concurrentielle, soit pour détecter d'éventuelles violations de brevets.
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 constituants. En électronique et en informatique, la démarche peut être celle de l'étude d'une boîte opaque : on isole l'objet à étudier, on détermine les entrées et les sorties actives. On essaie ensuite de déterminer la réponse du système en fonction des variations du signal ou des signaux en entrée.
Brève histoire de la rétro-ingénierie
Celle-ci s'applique principalement dans le domaine militaire. Selon L'Histoire de Polybe, à partir de la capture d'une birème phénicienne, superpuissance maritime de l'époque, seulement 40 jours avant la bataille de la pointe d'Italie, les Romains, alors puissance uniquement continentale, ont réussi à imposer leur domination maritime sur l'ensemble de la Méditerranée en copiant le procédé de standardisation employé par les Carthaginois, leur permettant de bâtir à partir de rien et en un temps record une véritable flotte de combat de près de 80 navires, en y ajoutant quelques perfectionnements comme le corvus (sorte de passerelle d'abordage dotée d'un crochet de bronze en forme de bec de corbeau, se fichant avec force dans le pont du navire abordé), puis quelques décennies plus tard sur les trirèmes, le xylokastron (château de bois) en proue, les balistes de marine, qui, malgré leur début chaotique en raison de la modification du centre de gravité rendant dangereuse leur utilisation par mer agitée, permirent de transformer les batailles navales en affrontements d'infanterie à partir de la première bataille de Mylae en -260.
Rétro-ingénierie des objets physiques
Le principe de la rétroconception repose sur la prise d’un nuage de points issu de la surface de l’objet à scanner numériquement ou à palper mécaniquement.
Ce nuage de points est traité par des fonctions CAO permettant la reconstruction de surfaces à partir desquelles un modèle paramétrique est codéfini par l'utilisateur et le système générateur (choix des côtes et des relations intercotes, 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.
Quelles sont les différentes raisons d’utiliser la rétroconception ?
- 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.
- Analyse des fonctionnalités des produits des concurrents.
- 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.
Rétro-ingénierie en électronique
Il y a la possibilité de refaire un schéma électronique en analysant un circuit imprimé. 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.
Par exemple en France, ce droit est garanti par l'article L122-6-1 du code de la propriété intellectuelle[2]. On trouve des dispositions similaires dans la directive 2009/24/CE du Parlement européen et du Conseil du 23 avril 2009[3].
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[4], et il existe également des décompilateurs .NET[5].
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é.
La rétro-ingénierie comme activité de veille technologique
La rétro-ingénierie est aussi une activité de veille technologique. Elle est orientée vers :
- l'étude des produits concurrents ;
- la compréhension des méthodes utilisées par le concurrent ;
- la recherche des fournisseurs ;
- la détermination des composants utilisés ;
- l'estimation du coût de revient à partir de tout ou partie des informations précédentes ;
- la décomposition du coût d'une pièce en évaluant chacun de ses composants, la matière utilisée, le temps de fabrication et la méthode ;
- l'identification d'éventuelles violations de brevets commises par un concurrent ou à éviter.
Législation
France
Extrait de l'article L. 331-5 du code de la propriété intellectuelle :
- 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.
Extrait de 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é.
Depuis 2006, le chapitre IV du Titre I du Droit d'auteur et droits voisins dans la société de l'information interdit le contournement des mesures technique de protection, en particulier la gestion des droits numériques.
Extrait de l'article 13 du DADVSI :
- 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.
Extrait du nouvel article Art. L. 335-3-1 introduit l'article 22 du DADVSI :
- I. - Est puni de 3 750 EUR 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 EUR 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 recherche […] ou de sécurité informatique, dans les limites des droits prévus par le présent code.
É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
- ↑ [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).
- ↑ « Code de la propriété intellectuelle - Article L122-6-1 », Légifrance.
- ↑ Directive 2009/24/CE du Parlement européen et du Conseil du 23 avril 2009 concernant la protection juridique des programmes d'ordinateur
- ↑ (en) « Ildasm.exe Tutorial » (Archive • Wikiwix • Archive.is • Google • Que faire ?), sur msdn.microsoft.com.
- ↑ (en)« Dot Net Decompilers », Program Transformation Wiki.
Voir aussi
Articles connexes
- Espionnage industriel
- Outils pour la rétro-ingénierie du logiciel :
- décompilateur,
- désassembleur,
- débogueur.
- Législation :
- Interopérabilité
- Paycheck, film dont une partie de l'intrigue est centrée sur cette technique
Liens externes
- Portail de la sécurité informatique