Introduction à la rétro-ingénierie logicielle
La rétro-ingénierie
Présentation
La rétro-ingénierie logicielle est le principe d'analyser un programme sans ses sources, pour en comprendre le fonctionnement interne. Deux approches complémentaires sont en général utilisées, l'analyse statique et l'analyse dynamique. Dans le premier cas il s'agit de reconstituer, partiellement ou totalement, le code source du logiciel à partir du programme exécutable ou au moins de le traduire du langage machine au langage assembleur. Pour le second cas, il s'agit d'étudier le programme directement pendant son exécution à l'aide d'un débogueur.
Les raisons pouvant amener à faire de la rétro-ingénierie sont multiples :
- Interopérabilité d'un logiciel, par exemple pour le projet samba. Le partage de ressources réseaux n'étant pas documentés par Microsoft les développeurs ont été obligés de « reverser » le protocole afin d’en comprendre le fonctionnement et ainsi le rendre compatible avec l’existant de Microsoft (Netbios, CIFS,..).
- Elle peut être utilisée à des fins de documentation. En effet, il est ainsi possible de retrouver le fonctionnement d’un logiciel avec lequelle on souhaiterait communiquer, mais dont la documentation n’est plus disponible.
- La rétro-ingénierie peut aussi être une activité de veille compétitive. Elle peut alors consister à étudier mes produits concurrents, les méthodes utilisées, estimer les couts de développement d’une application similaire. Mais cela permet également de déceler d’éventuelles violations de brevet par un concurrent.
- Une application moins connue, mais tout aussi utilisée est la recherche de failles de sécurité dans les programmes. C’est ainsi que certaines failles de sécurités sont trouvées dans les applications commerciales dont les sources ne sont pas disponibles. Les Virus sont eux aussi systématiquement étudiés par rétro ingénierie. D'ailleurs, ils sont très souvent très bien protégés afin de rendre leur identification plus lente.
- L’application la plus connue est bien évidemment le détournement des protections logicielles (cracking) afin de pouvoir l’utiliser sans le numéro de série, ou après expiration de la période, d’essai par exemple.
Cadre juridique
Le cadre juridique de la rétro-ingénierie est très strictement défini par la loi française. Il est parfaitement illégal de la pratique sans raison valable.
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 oeuvre 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 oeuvre 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.