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

C# Discussion :

Conserver les informations sensibles - où ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2008
    Messages : 95
    Par défaut Conserver les informations sensibles - où ?
    Bonjour.

    Voilà mon soucis. J'ai un programme qui encrypte et décrypte un certain nombre d'informations sensibles en les sauvegardant sur le disque dur. Pour ça, elle utilise donc un mot de passe, qui, pour l'instant (ô horreur !) est sauvegardé dans le code source même de ce programme.

    Je sais que c'est indigne de faire ça, notamment car ça veut dire que le mot de passe en question figure en clair et est visible à tout le monde. Alors la question, c'est : je fais comment à la place ?

    Car pour la même raison, je ne peux pas sauvegarder le mot de passe sur le disque, ni dans le registre (ni options du programme, ni ses ressources). Le seul moyen que je vois, c'est de le crypter à son tour, mais alors le mot de passe servant pour cryptage, on va le mettre où ?

    Bref, comment fait-on dans les logiciels normaux ?


    PS. Je précise que ce mot de passe ne peut être entré par l'utilisateur, et ne peut être lié à un compte utilisateur Windows. Il doit être de préférence transportable d'une machine à une autre (c'est le cas actuellement), et modifiable (ce n'est pas le cas actuellement), sa modification entrainant l'impossibilité d'utiliser des informations sensibles bien entendu.

  2. #2
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    salut,

    1 - tu peux le crypter en md5, tu le demande à chaque fois à l'utilisateur. Evolutif et un peu plus sécurisé.

    2 - si l'utilisateur ne doit pas le connaître (ce sont ses propres informations, mais bon, admettons), je ne sais pas, j'y réfléchirais quand j'aurais plus de temps

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2008
    Messages : 95
    Par défaut
    Bon, je crois que je me suis très mal exprimé. Alors je recommence.


    On a des informations qu'il convient de crypter en les enregistrant en local. Ces infos sont cryptés avec une clé (que j'ai appelé mot de passe dans mon message précédent) ; cette clé doit être également sauvegardée en local pour pouvoir ensuite, le temps venu, décrypter les informations en question.

    L'utilisateur ne doit pas avoir à entrer la clé de cryptage (déjà parce qu'il n'a pas que ça à faire, et ensuite parce que si c'est une clé à 40 caractères, il va finir par l'enregistrer dans un fichier texte en plain sur son disque pour la copier-coller ensuite). Cette clé doit donc être conservée par l'exécutable même.


    Cas actuel : la clé est en brut dans le code source. Celui qui peut lire le DLL concerné peut donc connaitre la clé.

    D'où la question qui se pose : ne pouvant lier la clé au compte Windows, comment peut-on la sauvegarder, et où, pour qu'elle ne soit pas lisible par tout et n'importe qui (y compris par exemple par les administrateurs ayant accès à tous les fichiers de l'utilisateur concerné) ?



    PS. Juste à titre d'exemple pour être plus clair... Beaucoup de navigateurs web permettent de sauvegarder les mots de passe que la personne entre sur des sites web qu'elle visite. J'imagine (en étant très optimiste) que ces mots de passe ne sont pas non plus sauvegardés en brut sur le disque ; or, en allumant le navigateur, la personne n'a pas à entrer la clé de cryptage ni rien ; celle-ci est donc sauvegardée par le navigateur même quelque part...

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Le problème c'est qu'avec .Net on peut facilement voir le code d'un assembly, à moins d'utiliser des outils payant permettant de masquer le code (car il me semble que ça existe).

    Je pense que la solution "classique" serait de réaliser ce module en C/C++ de manière à avoir quelque chose qu'on ne puisse pas désassembler (car pas en .Net) empêchant ainsi de trouver la clé utilisée par l'algorithme de chiffrement (stop avec les cryptage ^^).

    Au passage, pour sisqo60, MD5 est un algorithme de hachage (génération d'une empreinte) et non de chiffrement

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Le problème c'est qu'avec .Net on peut facilement voir le code d'un assembly, à moins d'utiliser des outils payant permettant de masquer le code (car il me semble que ça existe).
    Oui ca s'appelle un obfuscateur ou obfuscator en anglais

    Au passage, pour sisqo60, MD5 est un algorithme de hachage (génération d'une empreinte) et non de chiffrement
    Ce qui signifie que le reverse coding n'est pas possible : une clef md5 ne permet pas de reconstituer le code qui l'a généré

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par olibara Voir le message
    Oui ca s'appelle un obfuscateur ou obfuscator en anglais
    Je ne parle pas d'un obfuscateur. L'obfuscateur modifie le nom des classes, variables, ... pour rendre difficile l'interprétation du code désassemblé. Mais une chaîne de caractère en dure sera toujours parfaitement lisible il me semble.

    Je me rappelle avoir du regarder une dll .Net avec Reflector afin d'essayer de comprendre ce qui était fait par une méthode, mais impossible car le code était complètement masqué. Reflector ne pouvait pas extraire le code. Il y a donc des outils permettant ce genre de choses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conserver les informations d'un utilisateur
    Par paladice dans le forum Développement Web avec .NET
    Réponses: 6
    Dernier message: 18/06/2013, 15h51
  2. [Débutant] comment conserver les informations d'un utilisateur dans une variable?
    Par beaudelaire dans le forum ASP.NET
    Réponses: 1
    Dernier message: 28/12/2011, 06h31
  3. retrouver les informations "résumé" d'une base
    Par VVE dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/07/2004, 15h10
  4. Afficher les informations du système
    Par orisis dans le forum Windows
    Réponses: 8
    Dernier message: 10/06/2004, 15h10
  5. Conserver les retours à la ligne
    Par arwen dans le forum ASP
    Réponses: 2
    Dernier message: 04/12/2003, 12h50

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