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

Windows Forms Discussion :

Hash mot de passe SQL Server 2012


Sujet :

Windows Forms

  1. #1
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut Hash mot de passe SQL Server 2012
    Bonjour,
    Voici mon environnement de développement: application winforms + une base de données SQL Server 2012 + c# + framework .net 4.5
    Les mots de passe dans la base sont actuellement en clair dans la table user. Je voudrais :
    - Mettre en place un système de cryptage afin de ne pas les stocker en clair dans la base
    - Mettre en place le décryptage lors de la vérification des paramètres d’un user devant s’authentifier.
    En faisant mes recherches, je suis tombé sur http://crackstation.net/hashing-security.htm (traitant de l’utilisation de "Salted Password Hashing") mais aussi ceci http://weblogs.asp.net/wim/archive/2...05/417920.aspx utilisant le MD5 or SHA1 hashing via System.Web.Security bien qu'en étant en winforms.
    Je ne suis pas du tout expert dans le cryptage, hash et consorts. Alors quelle méthode me conseillez-vous d’utiliser ?
    En outre, question bête peut-être , de quel type doit-être le champ devant contenir le hash du mot de passe? Merci.
    N'oubliez pas le tag et

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Il ne faut pas stocker le mot de passe en clair, ni même le mot de passe chiffré ; il faut seulement stocker le "hash" du mot de passe. Un hash est non réversible, si bien qu'à partir du hash, tu ne peux pas retrouver le mot de passe. Pour authentifier un utilisateur, il faut donc calculer le hash du mot de passe qu'il a fourni, et vérifier si ça correspond bien au hash stocké dans la DB. Si tu utilises un salt (ce qui est conseillé), il faut le stocker avec le hash du mot de passe (généralement dans une colonne séparée)

    Pour le type de la colonne, tu peux utiliser un type binaire, ou un type texte si tu préfères stocker le hash sous forme hexadécimale.

  3. #3
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Merci pour ta réponse tomlev. C'est très clair.
    Citation Envoyé par tomlev Voir le message
    Pour authentifier un utilisateur, il faut donc calculer le hash du mot de passe qu'il a fourni, et vérifier si ça correspond bien au hash stocké dans la DB. Si tu utilises un salt (ce qui est conseillé), il faut le stocker avec le hash du mot de passe (généralement dans une colonne séparée)
    Que pensez-vous si j'utilise un salt unique pour tous les users? Est-ce safe?
    N'oubliez pas le tag et

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par callo Voir le message
    Que pensez-vous si j'utilise un salt unique pour tous les users? Est-ce safe?
    Non, justement il faut éviter ça, sinon c'est quasiment équivalent à ne pas utiliser de salt. C'est bien expliqué dans l'article que tu as mentionné (cf. la section The WRONG Way: Short Salt & Salt Reuse)

  5. #5
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Cool. Merci beaucoup. Je passe le sujet à résolu.
    N'oubliez pas le tag et

  6. #6
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Si tu utilises un salt (ce qui est conseillé), il faut le stocker avec le hash du mot de passe (généralement dans une colonne séparée)
    L'article dit ceci:
    To make it impossible for an attacker to create a lookup table for every possible salt, the salt must be long. A good rule of thumb is to use a salt that is the same size as the output of the hash function. For example, the output of SHA256 is 256 bits (32 bytes), so the salt should be at least 32 random bytes.
    Dois-je en déduire que si je choisis le type du champ mot de passe de la table comme binaire, le champ du salt aussi doit-être de type binaire?
    N'oubliez pas le tag et

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par callo Voir le message
    Dois-je en déduire que si je choisis le type du champ mot de passe de la table comme binaire, le champ du salt aussi doit-être de type binaire?
    Bah ça n'a pas vraiment de rapport, mais effectivement il vaut mieux que le hash et le salt soient de même type, ce sera plus cohérent.

    Ce passage de l'article n'ajoute pas de contrainte en ce qui concerne le format de stockage des données. Si tu utilises un hash SHA256, ça fait 256 bits, donc 32 octets, tu peux utiliser soit un champ binaire de 32 octets, soit un champ texte de 64 caractères (puisqu'il faut 2 caractères pour représenter un octet en hexadécimal). L'avantage du texte, c'est que c'est lisible, par contre il faudra faire des conversions depuis et vers le binaire.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Points : 59
    Points
    59
    Par défaut Salt connu : quel intérêt ?
    Bonjour,

    Question "idiote" : je ne vois pas l'intéret du salt s'il est connu ?

    Autrement dit, je ne vois pas en quoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hash("hello" + "QxLUF1bgIAdeQX")
    est plus sûr que :
    dès lors que "QxLUF1bgIAdeQX" est stocké en clair dans la base dans une colonne exprès pour lui ? Question sécurité, quelle est la valeur ajoutée du salt dans ce cas ?

    Je passe à coté de quelque chose ?

    Merci d'éclairer ma lanterne

    Au cas où, si la discussion ci-dessus ne permet pas à elle seule de comprendre ma question, cf article : https://crackstation.net/hashing-security.htm

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/11/2012, 21h40
  2. fenetre de login/pass sql server
    Par thered dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/06/2009, 16h17
  3. Mot de passe Win2003 Server
    Par gantec dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 22/05/2008, 23h26
  4. fonction de recherche par mot clé sous SQL SERVER 2005
    Par solawe dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/07/2007, 19h31
  5. Changer de mot de passe sous Server 2003
    Par branqueira dans le forum Windows Serveur
    Réponses: 11
    Dernier message: 20/07/2007, 12h41

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