Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Expert confirmé
    Des chercheurs utilisent des techniques de machine learning pour identifier des codeurs anonymes
    Des chercheurs utilisent des techniques de machine learning pour identifier des codeurs anonymes
    en analysant des échantillons de code source

    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
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre expérimenté
    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.
    Des tutos de pixel art: https://twitter.com/OniMille

  3. #3
    Membre chevronné
    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
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  4. #4
    Futur Membre du Club
    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.

  5. #5
    Membre à l'essai
    moué
    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++

  6. #6
    Membre expérimenté
    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.
    Des tutos de pixel art: https://twitter.com/OniMille