Rétro-ingénierie - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

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'identifiction d'éventuelles violations de brevets commises par un concurrent ou à éviter.

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 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, 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 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.

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

De nombreux éditeurs de logiciels privateurs 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.

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, et il existe également des décompilateurs .NET (en)

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

  • Étude de binaire malicieux (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é.
Page générée en 0.112 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise