Selon l'étude, toutes ces caractéristiques pourraient permettre de remonter à l'auteur d'un morceau de code anonyme avec une très forte précision.
Pour aboutir à ces résultats, les chercheurs, des universités de Drexel, Maryland, Goettingen, et Princeton ont développé une stylométrie de code, qui utilise le traitement du langage naturel et l'apprentissage automatique pour déterminer les auteurs de codes sources à partir du style de programmation.
Leur méthode est basée sur les caractéristiques traditionnelles de style, telles que la mise en page et les attributs lexicaux. Elle est aussi fondée sur les arbres de syntaxe abstraite qui permettent de capter les propriétés du style de programmation indépendamment du style d'écriture. En d'autres mots, avec cette méthode, même si un individu modifie par exemple les noms de variables, les commentaires ou espacements d'un code comme pour brouiller les pistes remontant à l'auteur, cela ne changera pas la probabilité d'identifier l'auteur du code, parce que le style de codage est toujours conservé.
L'étude a permis de dégager deux principaux résultats:
- Il est plus facile de remonter à l'auteur lorsqu'un code résulte de tâches de programmation difficiles que lorsqu'il résulte de tâches de programmation faciles.
- Il est plus facile d'identifier l'auteur d'un code lorsque celui-ci est qualifié (capable d'exécuter les tâches les plus difficiles) que lorsqu'il est moins qualifié. « Cela pourrait indiquer que lorsque les programmeurs deviennent plus avancés, ils construisent un style de codage plus fort par rapport à des débutants. Il y a une autre possibilité que peut-être de meilleurs programmeurs commencent avec un style de codage plus unique», selon les chercheurs.
La méthode utilisée a été testée sur un échantillon de 250 codeurs pris sur plusieurs années avec une moyenne de 630 lignes de code par auteur. Le test a permis d'identifier les auteurs des codes anonymes avec une précision de 95%. Un 2è test avec moins de programmeurs (30), mais plus de lignes de code par personne (1900), a donné une précision de 97%.
L'étude montre donc que, dans tous les cas, les programmeurs laissent leurs empreintes digitales dans leurs codes.
Une telle étude présente un double intérêt:
« D'abord, après avoir obtenu un code source malveillant, on pourrait obtenir des preuves pour des poursuites pénales. Pour cela, on pourrait faire une comparaison stylistique du code avec divers auteurs dans des dépôts de code en ligne. Un adversaire prudent ne peut laisser les fichiers binaires, mais un moins prudent peut laisser un code écrit dans un langage de script ou un code source téléchargé dans le système violé pour la compilation. » Ont déclaré les chercheurs.
« La seconde application est de déterminer si, oui ou non, un morceau de code a été écrit par son auteur revendiqué. Cela prend diverses formes, y compris la détection de ghostwriting, une forme de plagiat, et l'investigation des litiges de droit d'auteur. »
Source : Rapport d’étude (pdf)
Et vous ?
Que pensez-vous de l’étude et des implications de ses résultats?