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

Algorithmes et structures de données Discussion :

Gestion d'identifiants dans un programme


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Par défaut Gestion d'identifiants dans un programme
    Salut à tous.

    J'ai certaines notions en C++ mais un point dans les spécifications d'un projet sur lequel je travail me pose problème.

    Je réalise une application qui permet à un utilisateur de se connecter à une base de donnée distante. Pour le moment, à chaque redémarage du programme, il faut rentrer son nom d'utilisateur et son mot de passe.

    A terme, il faut que mon programme mémorise au moins un nom d'utilisateur et son mot de passe.

    Enregistrer l'utilisateur n'est pas un problème en soit. Mais pour ce qui est du mot de passe, je ne vois pas comment faire pour qu'il n'y ai aucun risque. Mon chef ma dit d'enregistrer le md5 du mot de passe dans un fichier. Sauf que je vois pas comment le réutiliser ensuite puisqu'il fautdrait le décrypter...

    J'en arrive à ma question, quel est le meilleur moyen pour un programme de stocker en dur sur la machine des identifiants, de manière à pouvoir les exploiter rapidement par la suite (comme le fait un client ftp par exemple)

    Voila, j'attends vos conseils avec impatience

    D'avance merci.

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Un md5 ne se décrypte pas puisque c'est un hachage.

    Pour faire un truc rapide, tu demande la 1er fois le mdp puis tu le code selon [met ici l'algo que tu veut] et tu enregistre ca sur le DD.
    Apres , tu lit le mot de passe crypté , tu le décrypte et puis tu l'utilise dans ton prog.
    Mais sache que tou mdp stocké sur un DD est attaquable (force brute,...)
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Par défaut
    Merci pour cette première réponse et approche.

    Je savais que md5 n'était pas l'approche à suivre. Est-ce que justement tu aurais une liste d'algo à me proposer qui permettent de crypter/decrypter une chaine de caractères ?

    De manière plus sûr et rapide que si je faisais ça moi même.

  4. #4
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Pour faire un truc rapide, tu demande la 1er fois le mdp puis tu le code selon [met ici l'algo que tu veut] et tu enregistre ca sur le DD.
    Apres , tu lit le mot de passe crypté , tu le décrypte et puis tu l'utilise dans ton prog.
    Mais sache que tou mdp stocké sur un DD est attaquable (force brute,...)
    En fait, cela ne fait que déplacer le problème. Ça resoud le problème du stockage du mot de passe mais ça en pose un nouveau : où stocker la clé de chiffrement/déchiffrement ?

  5. #5
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    Apres , tu lit le mot de passe crypté , tu le décrypte et puis tu l'utilise dans ton prog.
    En fait, le md5 n'est effectivement pas fait pour être décrypté, mais bien pour être stocké.
    En gros la méthode usuelle, c'est :
    - On rentre le mot de passe, on le crypte (avec md5, c'est très bien, mais on peut aussi utiliser d'autres méthodes, la seule contrainte étant qu'un même mot de passe doit toujours donner exactement le même cryptage). Le nom d'user est par contre écrit en clair.
    - Plus tard, quand l'user veut se connecter, il rentre son login (facile a reperer, il est en clair) et son mot de passe. On crypte son nouveau mot de passe (avec la même méthode que précédement) et on compare avec ce qu'on a dans la base. Si c'est pareil, alors c'est que le mot de passe rentré est le même, donc, ok.

    Cette méthode est sécurisée dans la mesure ou même si quelqu'un arrive a lire la table ou sont stocké les mots de passe, il ne pourra pas en retirer les mots de passe en clair, justement parce que le md5 n'est PAS réversible.

    Je savais que md5 n'était pas l'approche à suivre.
    En fait, cette méthode, telle que je te l'ai décrite est très souvent employé et est relativement fiable (pour autant qu'une méthode de protection puisse l'être ^^)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Par défaut
    Merci pour ces nouvelles réponses.

    Utiliser MD5 pour hasher mon mot de passe est l'enregistrer n'est en fait pas le problème. Je connais cette méthode et je l'ai déjà utilisé. Ce qui m'ennuye en fait dans ce cas là, c'est qu'il est nécessaire à chaque lancemement du programme de retaper son mot de passe et de faire une comparaison pour se connecter

    Mon but est d'éviter à l'utilisateur cette étape ennuyeuse, surtout s'il est le seul à utiliser le programme. Je prends l'exemple d'un client ftp ou vous avez la possibilité d'enregistrer des serveurs avec vos identifiants. Pour vous connecter ensuite il suffit de choisir l'un d'entre eux sans resaisir toutes les infos

    A force de rechercher, j'ai trouvé une solution intéressante qui est l'utilisation de RSA. Je n'ai toute fois pas encore réussi à l'implémenter correctement. Donc à defaut de mieux et en attendant, j'utilise un XOR pour crypter le mot de passe

    Voila, si d'autres personnes sont porteuses d'idées ou de liens, je suis preneur.

    Encore merci

  7. #7
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par goulmak Voir le message
    Merci pour ces nouvelles réponses.

    Utiliser MD5 pour hasher mon mot de passe est l'enregistrer n'est en fait pas le problème. Je connais cette méthode et je l'ai déjà utilisé. Ce qui m'ennuye en fait dans ce cas là, c'est qu'il est nécessaire à chaque lancemement du programme de retaper son mot de passe et de faire une comparaison pour se connecter

    Mon but est d'éviter à l'utilisateur cette étape ennuyeuse, surtout s'il est le seul à utiliser le programme. Je prends l'exemple d'un client ftp ou vous avez la possibilité d'enregistrer des serveurs avec vos identifiants. Pour vous connecter ensuite il suffit de choisir l'un d'entre eux sans resaisir toutes les infos

    A force de rechercher, j'ai trouvé une solution intéressante qui est l'utilisation de RSA. Je n'ai toute fois pas encore réussi à l'implémenter correctement. Donc à defaut de mieux et en attendant, j'utilise un XOR pour crypter le mot de passe

    Voila, si d'autres personnes sont porteuses d'idées ou de liens, je suis preneur.

    Encore merci
    La question à se poser est "quelle niveau de sécurité je recherche". Si tu veux un "bon" niveau de sécurité, tu demandes à l'utilisateur de taper son mot de passe.
    Si tu ne veux aucun niveau de sécurité, tu stockes le mot de passe dans un fichier texte.
    Il n'y a pas réellement de niveau intermédiaire à proprement parler. En effet, même si tu cryptes en RSA 2048 bits (ce qui est stupide, puisque le cryptage/décryptage est effectué par la même entité, et il est inutile d'avoir un algorithme assymétrique), tu devras stocker *sur la même machine* la clé privé de décryptage. Un accès au disque donnera donc nécessairement toutes les infos pour décrypter le mot de passe. Et il ne faut pas croire que si la clé est gardé "en dur" dans l'appli, ça change quoi que ce soit. Un programme se décompile, et une personne malveillante pourra assez facilement récupérer la fonction de décryptage.

    La seule possibilité est dans le cas où il y a plusieurs mots de passe, les crypter tous ensemble et ne demander qu'un seul mot de passer pour décrypter l'ensemble. Mais pour un mot de passe, à partir du moment où tu dois l'envoyer et que tu le gardes sur la machine, c'est plus ou moins comme s'il était en clair. Désolé :-)

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

Discussions similaires

  1. Gestion d'identifiants d'objets contenus dans une Map qui transite entre 2 bundles
    Par Laurent.B dans le forum Plateformes réactives et architectures modulaires
    Réponses: 7
    Dernier message: 21/05/2012, 10h50
  2. [AC-2003] Gestion des erreurs dans les sous-programmes
    Par azertix dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/10/2010, 11h13
  3. gestion d'identifiant dans deux tables
    Par toinoudu85 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/10/2009, 19h26
  4. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52
  5. [langage] Commande DOS dans un programme
    Par Jibees dans le forum Langage
    Réponses: 15
    Dernier message: 23/04/2003, 12h08

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