|
La rétro-ingénierie (traduction littérale de l'anglais reverse engineering), également appelée rétroconception, ingénierie inversée ou ingénierie inverse, est l'activité qui consiste à étudier un objet pour en déterminer le fonctionnement interne ou sa méthode de fabrication. Plusieurs objectifs peuvent être visés par cette analyse :
Suivant la nature de l'objet et l'objectif, différentes méthodes et techniques sont utilisées. 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 noire : 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 ou des signaux en entrée.
Brève histoire de la rétro-ingénierieOn trouve plusieurs exemples de rétro-ingénierie dans le domaine militaire. Par exemple, à la fin des années 1940, les Soviétiques ont construit le bombardier Tupolev Tu-4, qui est en fait une copie du bombardier américain Boeing B-29 Superfortress. Cette copie a été réalisée par rétro-ingénierie de trois B-29 capturés après un atterrissage forcé en URSS. Rétro-ingénierie des objets physiquesLe 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é au travers des logiciels de reconstruction de surfaces permettant d’abord de construire un modèle polygonal (utilisé dans l’usinage, la simulation et le prototypage rapide) et par la suite de générer une surface NURBS. Exporté vers un logiciel CAO, l’objet défini numériquement pourra être modifié, analysé et adapté à son environnement et à son architecture interne. Quelles sont les différentes raisons d’utiliser la rétroconception?
Rétro-ingénierie en électroniqueRétro-ingénierie en informatiqueLa 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 rétrodocumentation 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. Cette activité est appelée cracking. Pour écrire des pilotes pour certains périphériques (cybercaméra, scanneur…), 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 cybercaméra spca, pwc, etc.). 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. Programmes en langages intermédiairesLes 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, et il existe également des décompilateurs .NET (en) La rétro-ingénierie comme défense
La rétro-ingénierie comme activité de veille technologiqueLa rétro-ingénierie est aussi une activité de veille technologique. Elle est orientée vers :
LégislationFranceExtrait de l'article L. 331-5 du Code de la propriété intellectuelle :
Extrait de l'article L. 331-7 du Code de la propriété intellectuelle :
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 du nouvel article Art. L. 335-3-1 introduit l'article 22 du DADVSI :
États-UnisComme 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. Voir aussi
|
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net