Des chercheurs utilisent des techniques de machine learning pour identifier des codeurs anonymes
En analysant des échantillons de code source

Le , par Blondelle Mélina, Expert confirmé
Votre style d'écriture est un peu comme votre empreinte digitale. Votre choix de mots, l'orthographe, la ponctuation, la structure de la phrase et la syntaxe sont tous des informations qui identifient de façon unique le propriétaire d'un contenu. Nous disent les experts en stylométrie, l'analyse statistique du style linguistique. Les nouvelles recherches montrent que la stylométrie peut également s'appliquer à des échantillons de langage artificiel, comme du code. Il s'avère que les développeurs de logiciels laissent également une empreinte digitale. Telle est la découverte faite par Rachel Greenstadt, professeur agrégé d'informatique à l'université de Drexel, et Aylin Caliskan, professeur adjoint à l'université George Washington. Leur recherche a été présentée vendredi dernier à la DefCon, une conférence sur le hacking.

Ils ont constaté que le code, comme d'autres formes d'expression stylistique, n'est pas anonyme. Les chercheurs ont utilisé des techniques d’apprentissage automatique pour dés-anonymiser les auteurs des échantillons de code. Leur travail pourrait être utile dans un conflit de plagiat, par exemple, mais cela pourrait également avoir des répercussions sur la vie privée des codeurs qui se veulent anonymes, en particulier pour les milliers de développeurs qui contribuent au code source ouvert au monde.


Caliskan et une équipe d’autres chercheurs ont également montré qu’il était possible de dévoiler l'identité d'un programmeur en utilisant uniquement le code binaire compilé. Lorsqu'un code est écrit, un programme appelé compilateur le transforme en une série de 1 et de 0 compréhensible par une machine. Il est possible de décompiler le code binaire en langage de programmation C++ tout en préservant les éléments du style unique du développeur.

Un scénario illustratif peut être imaginé avec un article écrit et qu'on a utilisé Google Translate pour le transformer en une autre langue. Bien que le texte puisse sembler complètement différent, les éléments de l'écriture sont toujours intégrés à des traits tels que votre syntaxe. La même chose est vraie pour le code selon les chercheurs. « Le style est préservé », déclare Caliskan. « Il y a une empreinte stylistique très forte qui reste quand les choses sont basées sur l'apprentissage sur une base individuelle ».

Greenstadt et Caliskan disent également qu'il est plus facile d'identifier les développeurs expérimentés que les novices. Plus vous êtes compétent, plus votre travail devient unique. Cela peut être en partie dû au fait que les programmeurs débutants copient et collent souvent des solutions de code à partir de sites web tels que Stack Overflow ou sur GitHub. De même, que les échantillons de code traitant des problèmes plus difficiles sont également plus faciles à attribuer.

Selon Caliskan et Greenstadt, leur travail pourrait être utilisé pour mettre fin au plagiat. « Les gens doivent être conscients qu’il est généralement très difficile de masquer à 100 % leur identité dans ce genre de situation », déclare Greenstadt. Puis, il rappelle que même certaines méthodes d’obscurcissement standard, des outils utilisés par les ingénieurs logiciels pour rendre le code plus compliqué et donc sûr, ne réussissent pas à masquer le style unique d’un développeur.

Source : DefCon Hacking Conference

Et vous ?

Qu'en pensez-vous ? Bonne ou mauvaise nouvelle pour vous ? Partagez vos avis.
Quels impacts selon vous cette méthode pourrait avoir dans l'environnement de la programmation ?

Voir aussi :

Les développeurs peuvent être identifiés à partir de leur code source, des chercheurs estiment qu'ils laissent leurs traces dans leurs programmes
La première vente aux enchères pour les algorithmes attire des offres de plus de 1000$, voici les mérites esthétiques du code
Peut-on définir des normes d'écriture d'un beau code ? « Il n'y a pas de style de code correct », il faut être cohérent selon un bloggeur


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de onilink_ onilink_ - Membre éclairé https://www.developpez.com
le 15/08/2018 à 10:26
Autant je trouve l'affirmation au niveau du code source très logique, autant un binaire C++, avec toutes les passes de transformation et d'opti qui s'appliquent (surtout qu'on parle d'un langage basé sur des principes de meta prog), ça me laisse perplexe.
Avatar de CoderInTheDark CoderInTheDark - Membre expérimenté https://www.developpez.com
le 15/08/2018 à 11:22
Cela me fait penser aux enseignants.
A force de corriger les copies ils sont capables de reconnaitre les écritures et les styles de l'auteur.
alors quand les élèvent copient les un sur les autres ils ne se font pas avoir
Surtout quand il y a les mêmes erreurs ou termes.
Au brevet l'examen était anonyme, mais les profs reconnaissaient quand même les copies de leurs élèves, pour moi ça posait un problème de partialité

Pour le code c'est pareil, on a des préférence pour des fonctions une façon de nommer nos variables de commenter ou pas le code.
Tout cela permet de déduire une empreinte.

Je pense que ça se faisait déjà de façon artisanale pour les malware.
La preuve en est que certains essayaient de se faire passer pour des russes, pour cacher leur vrai langue.
Pour moi l'emploi du nom Babare était sûrement de l'intoxication, pourquoi ne pas l'appelé camembert

Levé l'anonymat des développeurs libre va peut être refroidir certains, qui ont peur de rentrer en conflit avec leur employeur, des problèmes avec leur close de non-concurrence,...
un code anonyme est un peu suspect , on le regardera un peu plus

Concernant l'offuscation contrairement à ce qui est dit dans l'article.
Pour moi c'est surtout pour rendre le code plus dur à comprendre, car son auteur ne veut pas partager
Avatar de Felecarp Felecarp - Futur Membre du Club https://www.developpez.com
le 15/08/2018 à 19:17
Je ne pense pas que cette technologie puisse régler un problème de plagiat. Il faudrait demander à ceux qui se prétendent être les auteurs du programme disputé de fournir des extrait de code avec le même style. Il est facile de tricher.

Pour que l'on reconnaisse le style d'un développeur, il faut que celui-ci cesse d'évoluer. Hors il suffit de continuer ďapprendre pour que le style évolue. Il faut aussi que le code n'ai été écrit que par une seule personne.

Cette méthode pourrait être rendue inefficace.
Avatar de Juniper62 Juniper62 - Membre à l'essai https://www.developpez.com
le 16/08/2018 à 11:50
une technique sujette à des dérives est toujours à jeter à la poubelle selon moi... car l'Homme l'utilisera toujours à mauvais escient, à moins de réussir à l'interdire ...

et ça me laisse tout aussi perplexe que onilink_ concernant une décompilation des binaires issus d'une compilation d'un code C++
Avatar de onilink_ onilink_ - Membre éclairé https://www.developpez.com
le 16/08/2018 à 12:06
Citation Envoyé par Felecarp Voir le message
Je ne pense pas que cette technologie puisse régler un problème de plagiat. Il faudrait demander à ceux qui se prétendent être les auteurs du programme disputé de fournir des extrait de code avec le même style. Il est facile de tricher.

Pour que l'on reconnaisse le style d'un développeur, il faut que celui-ci cesse d'évoluer. Hors il suffit de continuer ďapprendre pour que le style évolue. Il faut aussi que le code n'ai été écrit que par une seule personne.

Cette méthode pourrait être rendue inefficace.
Cela est vrai pour de petites bases de code et pour de jeunes développeurs.

Mais il y a un moment ou ton style d'écriture se stabilise. Quand tu as des bases de code de centaines de milliers de ligne a ton actif, je pense qu'on peut créer une empreinte numérique de ton style de manière très efficace.
Et on pourrait même aller plus loin si ton code est versionné, car cela permettrait en plus d'évaluer ton style au cours du temps et de définir un profile encore plus solide.

Bref, ces méthodes la fonctionnent très bien quand il y a beaucoup de données disponibles. C'est d'ailleurs utilisé dans de nombreux domaines.

Pour le plagiat par contre je suis d'accord qu'il y a de très forts risques de détournement. Si l'outil est disponible pour tout le monde, il suffit de refactorer le code jusqu'a qu'il colle a ce que l'on veut...
On pourrait même imaginer des outils de transformation de style automatiques.
Contacter le responsable de la rubrique Accueil