IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Sécurité Discussion :

[Article] Obfuscation : protection du code source contre le reverse engineering


Sujet :

Sécurité

  1. #1
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 137
    Points
    23 137
    Par défaut [Article] Obfuscation : protection du code source contre le reverse engineering
    Bonjour,

    Hugo Etiévant vous présente un article intitulé :
    Obfuscation : protection du code source contre le reverse engineering


    Ce document présente les techniques et les limites de l'obfuscation du code source à des fins de protection contre le reverse engineering. On parle aussi d'assombrissement destiné à rendre le code impénétrable.
    La sécurité et la propriété intellectuelle sont deux priorités des éditeurs de logiciels. La sécurité d'une application est nécessaire pour sa large diffusion. La propriété intellectuelle garantie la pérennité des recettes et justifie les investissements réalisés pour son développement. Mais quid du secret industriel ?


    A. Les dangers du reverse engineering

    Le reverse engineering est une technique permettant de reconstituer le code source d'une application à partir de sa forme compilée telle que livrée à ses clients par un éditeur. La possession du code source permet de connaître le fonctionnement précis d'une application.

    Un concurrent peut grâce à cette technique connaître les algorithmes utilisés par son concurrent et lui voler ses secrets. Outre les algorithmes, les identifiants de connexion à des ressources (bases de données, annuaires...) sont là aussi accessibles, d'où le risque de vol de mot de passe et d'accès frauduleux à des ressources protégées.

    Bonne lecture.

  2. #2
    Membre confirmé

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Points : 597
    Points
    597
    Par défaut
    Il faut mettre à jour la partie B :



    Face aux risques liés au reverse engineering quelles techniques permettent de cacher le code source d'une application ?

    Il en existe quatre :

    l'obfuscation transforme le code source avant compilation de manière à le rendre illisible pour l'être humain
    le chiffrement assure la confidentialité totale du code source tant que l'algorithme de chiffrement n'a pas été cassé et que la clé n'a pu être trouvée par force brute
    l'exécution de code distant permet de ne livrer aux clients qu'une partie de l'application, les portions sensibles sont conservées sur un serveur distant protégé sur lequel elles s'exécutent
    le code natif protégé est un code compilé pour une architecture matérielle très spécifique, rendant difficile l'utilisation d'un décompilateur adapté

    Il sera discuté dans cet article de la technique par obfuscation.
    Il existe deux types d'obfuscations, l'obfuscation de code source ou de code compilé.

    Ici on parle d'obfuscation de code source uniquement.

    Le chiffrement assure la confidentialité totale du code source tant que l'algorithme de chiffrement n'a pas été cassé et que la clé n'a pu être trouvée par force brute
    Plus ou moins faux, vu que la clé de déchiffrement doit-être présente en local on ne la brute-force pas Et il s'agit la d'une technique d'obfuscation de code compilé.


    Le code natif protégé est un code compilé pour une architecture matérielle très spécifique, rendant difficile l'utilisation d'un décompilateur adapté
    ? On parle d'un code exécuté par une VM ? Ce qui entre aussi dans le domaine d'obfuscation de code compilé à mon avis.

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 137
    Points
    23 137
    Par défaut
    Bonjour,

    J'ai transmis l'information à l'auteur .

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Bonjour,

    J'ai lu l'article, qui est interessant sur le fond, mais je reste sceptique sur un point : il est dit, notamment dans la conclusion, que l'obfuscation ne sert effectivement a rien, ce qui est assez vrai. Alors pourquoi un article sur le sujet -- outre "la beaute de la chose" ?

    Par ailleurs, concernant le cryptage :

    le chiffrement assure la confidentialité totale du code source tant que l'algorithme de chiffrement n'a pas été cassé et que la clé n'a pu être trouvée par force brute
    L'article parle ici de cryptage de code, qui requiert donc de decrypter le code avant execution/affichage/quelque chose du genre, ce qui revient donc a devoir stocker la cle quelque part, et donc avoir un cryptage qui ne sert a rien.
    Il existe bien a ma connaissance quelques essais d'execution de code crypte, mais tous les autres necessitent a un moment d'avoir une cle accessible par l'attaquant (au mieux en RAM, au pire dans le programme). Je pense donc qu'il serait plus juste d'ajouter un mot sur l'inutilite de ceci.

    Le cryptage des chaînes de caractères permet de cacher leur valeur. La clé de décryptage et la fonction de décryptage seront noyées dans le code.
    Crypter quelque chose en stockant au meme endroit algorithme de (de)cryptage et cle ne sert absolument a rien.

    Sinon, une petite erreur de liens : tous les liens 1 2 3 4 5 de la section B et les liens 1 et 2 de la section C du menu lateral renvoient sur les liens 1 2 3 4 5 de la section A.

  5. #5
    Membre confirmé

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Points : 597
    Points
    597
    Par défaut
    Pour avoir bosser pas mal de temps sur l'obfuscation voila quelques réponses :

    J'ai lu l'article, qui est interessant sur le fond, mais je reste sceptique sur un point : il est dit, notamment dans la conclusion, que l'obfuscation ne sert effectivement a rien, ce qui est assez vrai. Alors pourquoi un article sur le sujet -- outre "la beaute de la chose" ?
    1. On ne cherche pas à rendre une programme invulnérable c'est impossible. Mais à gagner du temps, c'est à dire de l'argent. Pour un jeu vidéo, gagner quelques semaines avant la sortie d'un crack permet de rentabiliser le jeu.

    2. Pour un virus, on peut chercher à être le plus furtif possible l'obfuscation permet de le faire.

    3. Un code source obfuscqué permet de faire de l'open source de mauvaise foi Ainsi on donne les sources, mais leur utilisation est pas simple.

    Finalement l'obfuscation sert à gagner du temps, donc à coûter de l'argent à un attaquant. On peut pas protéger un binaire que l'on livre.

    Par ailleurs, concernant le cryptage :

    Citation:
    le chiffrement assure la confidentialité totale du code source tant que l'algorithme de chiffrement n'a pas été cassé et que la clé n'a pu être trouvée par force brute
    Comme je l'ai déjà signalé il peut s'agir d'une méthode d'obfuscation de binaire, concrètement on peut par exemple faire un packer. Donc chiffrer le programme dans sa forme "fichier". Et le déchiffrer à la volé ou non en mémoire.

    Crypter quelque chose en stockant au meme endroit algorithme de (de)cryptage et cle ne sert absolument a rien.
    ça évite de trouver une clé en faisant un simple strings d'un binaire. On augmente la difficulté de reverse.

Discussions similaires

  1. Protection du code source - Programme PHP
    Par safener dans le forum Cloud Computing
    Réponses: 0
    Dernier message: 01/08/2014, 20h29
  2. protection du code source et des données
    Par drick35 dans le forum Android
    Réponses: 2
    Dernier message: 22/04/2013, 16h41
  3. Protection de code source
    Par Invité dans le forum C++
    Réponses: 7
    Dernier message: 09/04/2012, 04h52
  4. protection du code source
    Par sam01 dans le forum Droit
    Réponses: 3
    Dernier message: 28/06/2006, 12h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo