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

Java Discussion :

Application qui gère les mots de passe en Java


Sujet :

Java

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    Soit X le mot de passe maitre crypté avec la clé de chiffrement, est-ce que je peux sauvegarder X dans ma BD et lors de l'authentification, je déchiffre X avec la clé de chiffrement calculée puis je compare X avec le mot de passe saisi ?
    En fait, ton mot de passe maitre sera celui qui permettra de te connecter à la base de donnée... Comme te l'as dit hwoarang
    Citation Envoyé par hwoarang
    Au lancement de ton programme, tu lui demandes son login mot de passe. Puis tu te connectes à la base avec ceux-ci. Ensuite, 2 cas :
    - Le login/mot de passe est bon : La base de données devient accessible comme si elle n'etait pas cryptée, tu peux faire tes requetes et ce que tu veux.
    - Le login/mot de passe est mauvais : La base de données renvoie une erreur. Tu affiche à l'utilisateur que c'est pas bon et voila.
    A aucun moment, tu n'as besoin de stocker le mot de passe (pas plus que son hash).
    Donc tu n'as pas besoin de stocker ton mot de passe maitre

    Si tu voulais faire comme ce que tu indiques, cela signifirait que le mot de passe maitre est dans la conf de ton application ou dans ton code, donc récupérable facilement. Une fois que j'ai le mot de passe d'accès à la base de données, je me connecte, récupère la clé de dechiffrement et déchiffrement le mot de passe maitre... et c'est gagné ! et puis même pas besoin de déchiffrer le mot de passe maitre, je récupère directement les mots de passe secondaires.

  2. #42
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Si tu voulais faire comme ce que tu indiques, cela signifirait que le mot de passe maitre est dans la conf de ton application ou dans ton code, donc récupérable facilement.
    non du tout, vous m'avez mal compris !

    Je disais que ce que je stocke dans la BD c'est seulement le le mot de passe maitre CRYPTÉ avec la clé de chiffrement ET le salt (vecteur généré aléatoirement). Si je veux authentifier l'utilisateur, je calcule de nouveau la clé de chiffrement via cette équation :
    Encryption key = SHA(SHA(master password)+salt)
    Puis je déchiffre le mot de passe maitre CRYPTÉ (stocké dans la BD) avec la clé précédemment calculée, je fais une comparaison entre ce que j'ai obtenu et le mot de passe saisi.

    J'espère avoir bien clarifier l'idée.

  3. #43
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Et la clé de chiffrement qui chiffre ce mot de passe maître, elle est où ? -_-°
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #44
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Et la clé de chiffrement qui chiffre ce mot de passe maître, elle est où ?
    Je ne stocke la clé de chiffrement nulle part, juste, je la recalcule puis je déchiffre le master password crypté (stocké dans la BD) avec, si j'obtiens le même password saisi, ça veut dire que le mot de passe maitre tapé est correcte.

  5. #45
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Effectivement, je me suis embrouillé en prenant en cours de route.

    Mais je vois pas trop pourquoi tu voudrais comparer le mot de passe avec le mot de passe pour vérifier qu'il est correct. Si le décryptage réussit c'est qu'il est correct, sinon il est incorrect.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #46
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Mais je vois pas trop pourquoi tu voudrais comparer le mot de passe avec le mot de passe pour vérifier qu'il est correct.
    J'ai l'impression que le probleme, c'est qu'il ne sait pas vérifier si le décryptage est correct. C'est pour ca que je parlais de réinventer la roue...

  7. #47
    Membre éclairé Avatar de Sennad
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2014
    Messages : 180
    Points : 703
    Points
    703
    Par défaut
    Si j'ai bien compris c'est la DB qui va renvoyer une erreur si le pass pour la décrypter est incorect.
    Du coup du coté java ta rien a vérifier là dessus.
    -----------------------------------------------------------------------------------------
    Don't play with fire if u don't wanna get burn ! Clinton - Fearon
    ____________________________________________________Pensez au

  8. #48
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Si le décryptage réussit c'est qu'il est correct, sinon il est incorrect.
    C'est ce que je voulais dire car, décryptage réussit => clé de chiffrement calculée est correcte.

    Merci à tous les membres qui ont participé à cette discussion.

    =>Résolu.

  9. #49
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par Sennad Voir le message
    Si j'ai bien compris c'est la DB qui va renvoyer une erreur si le pass pour la décrypter est incorect.
    Du coup du coté java ta rien a vérifier là dessus.
    Si on utilise une DB qui le gere, oui. Mais la, il hésitait entre DB ou fichier XML (avec tout à refaire à la main).

    Citation Envoyé par khaled_prg Voir le message
    Merci à tous les membres qui ont participé à cette discussion.
    Et concretement, tu as choisi quelle solution ? Si une DB, laquelle ?

  10. #50
    Membre éclairé Avatar de Sennad
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2014
    Messages : 180
    Points : 703
    Points
    703
    Par défaut
    Bah il a dû choisir la DB H2 vu que Tchize (il me semble) lui a proposé, car elle peut être encrypté, et qu'ils ont développé cette idée jusqu'à la fin.
    -----------------------------------------------------------------------------------------
    Don't play with fire if u don't wanna get burn ! Clinton - Fearon
    ____________________________________________________Pensez au

  11. #51
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Et concretement, tu as choisi quelle solution ? Si une DB, laquelle ?
    Tout d'abord, grand merci à toi @hwoarang pour ta suggestion de H2Database.

    En fait, je voulais à la base, chiffrer les mots de passe stockés dans la BD, si je peux faire ça avec H2Database, je vais l'utiliser, sinon, j'en doute.
    qu'en penses-tu @hwoarang ?

  12. #52
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    bah c'est ce que j'ai fait pour un projet similaire donc je vais pas te dire que c'est une mauvaise idée
    Par contre, tu vas te heurter à un probleme que j'ai eu; Pour le cryptage, il faut faire (d'apres le site de H2) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Class.forName("org.h2.Driver");
    String url = "jdbc:h2:~/test;CIPHER=AES";
    String user = "sa";
    String pwds = "filepwd userpwd";
    conn = DriverManager.
        getConnection(url, user, pwds);
    Ca veut dire que pwds contient le mot de passe de cryptage ainsi que le mot de passe de l'utilisateur (séparés par un espace). Ca veut aussi dire que les mots de passe ne doivent pas contenir d'espace (sinon, la base de données va te jeter).
    Donc 2 solutions :
    - Ne pas autoriser les espaces
    - Transformer la chaine pour qu'elle ne contienne plus d'espace. En ce qui me concerne, j'ai utilisé l'algo suivant :
    1 - Dans la chaine mot de passe, transformer "%" en "%%"
    2 - Dans la chaine résultant, transformer " " en "%1".
    => comme ca, je suis sur qu'il n'y a pas d'espace. Si je veux revenir en arrier, il suffit de faire le contraire :
    1 - transformer "%1" en " ".
    2 - transformer "%%" en "%".

    Par contre, il faut garder à l'esprit que si tu fais ca, le mot de passe entré par l'utilisateur n'est pas toujours le meme que celui qui sert a crypter la base (dans le cas ou il contient des espaces).

    EDIT : J'ajoute que si tu veux te prendre la tete pour eviter d'utiliser des String (comme te l'a suggéré tchize), H2 dispose d'une API pour envoyer des char[] pour le mot de passe

  13. #53
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    @hwoarang +1
    j'ai lu quelque part que SQLite n'est pas conseillé dans les projets de cryptographie, c'est pourquoi je pense à migrer vers H2DB. ça a l'air intéressant.

    Si je comprends bien, filepwd est le mot de passe qui sert à déchiffrer la BD tandis que userpwd représente le mot de passe maitre, c'est ça ?
    et puis keske je dois faire pour chiffrer certaines colonnes de ma table ?

  14. #54
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    j'ai lu quelque part que SQLite n'est pas conseillé dans les projets de cryptographie, c'est pourquoi je pense à migrer vers H2DB. ça a l'air intéressant.
    En tout cas, ca vaut le coup d'essayer. Apres, tu aimes, tu aimes pas, c'est une question de gout.

    Citation Envoyé par khaled_prg Voir le message
    Si je comprends bien, filepwd est le mot de passe qui sert à déchiffrer la BD tandis que userpwd représente le mot de passe maitre, c'est ça ?
    Oui. Une meme BDD peut avoir plusieurs utilisateurs avec des droits differents (ecriture de données, lecture de données, création/modification de tables...). De maniere générale, quand tu te connectes à une BDD, tu as besoin d'un login et d'un mot de passe. Comme tu l'as compris, ca correspond à user et userpwd.
    Dans le cas du cryptage de la base, tu as besoin en plus de la clé de cryptage, soit filepwd.

    Citation Envoyé par khaled_prg Voir le message
    et puis keske je dois faire pour chiffrer certaines colonnes de ma table ?
    La, tu vas deja te retrouver avec une BD cryptée. Ca peut etre suffisant (dans mon cas, je me suis arreté la). Mais si tu veux aller plus loin et crypter les login/mot de passe, tu peux utiliser l'algo que tu veux.

  15. #55
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    +1

    cool, ça m'arrange donc
    Juste une toute petite question : en ce qui concerne la clé de cryptage AES de la BD, c'est H2DB qui la génère ?

  16. #56
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Je n'ai jamais regardé mais j'imagine que oui. En tout cas, tu n'as besoin que du mot de passe utilisateur (qui a été utilisé pour crypter la base). Si ca t'interesse, n'hesites pas à regarder la doc, ils doivent expliquer plus précisemment comme tout s'articule. En ce qui me concerne, ca marche, je n'ai pas cherché plus loin
    Au fait, au risque d'enfoncer une porte ouverte, j'ajoute que l'avantage d'utiliser la base comme dit dans cette discussion est de ne pas avoir le mot de passe utilisateur qui se balade. Par contre, ca veut aussi dire que si l'utilisateur perd son mot de passe, il ne peut pas le récupérer. Pour un logiciel de gestion de mots de passe, c'est une info à garder en tete

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/04/2014, 22h43
  2. Une application qui gère les ordres de missions
    Par okouby dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 29/12/2012, 09h43
  3. Bloquer les IP qui essayent des mots de passe
    Par gilles_906 dans le forum Développement
    Réponses: 15
    Dernier message: 28/11/2012, 10h29
  4. [WS 2003] Un groupe qui a le droit de changer les mots de passes d'un autre groupe
    Par hpavavar dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 22/07/2009, 18h56
  5. Le dossier qui stock les mots de passe
    Par cartonis dans le forum Sécurité
    Réponses: 21
    Dernier message: 17/08/2005, 12h49

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