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 :

Info sur seed et hash


Sujet :

Sécurité

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Par défaut Info sur seed et hash
    Bonjour,
    Je voudrais avoir un peu plus d'informations sur le cryptage symétrique, son fonctionnement en général, et les bonnes manières pour la persistance des mot de passe.

    J'ai un peu de mal entre les seeds et les salts. Ce que je comprends :

    - un seed est utilisé pour crypter/décrypter un mot de passe.
    - un salt est utilisé pour hasher un mot de passe.

    J'ai lu que dans une base de données, il faut stocker le hash et le salt du mot de passe.
    Prenons une application web par exemple. Elle stocke de manière sécurisée des comptes d’utilisateurs.

    Quand l'utilisateur crée son compte
    1. Il rentre son mot de passe en clair (ex : password)
    2. On rajouter un salt au mot de passe (ex : password+Salt)
    3. Le mot de passe est hashé grace à un algorithme de hash tel que blowfish par exemple (ex : XXXpassHashXXX).

    Du coup, dans la base de donnée, je stocke XXXpassHashXXX et Salt. C'est bien ça ?
    Ce qui veut dire que lorsqu'il va se connecter :
    1. il saisit son mot de passe (ex : passwordErreur)
    2. On rajouter le salt provenant de la base au mot de passe (ex : passwordErreur+Salt)
    3. on hash le mot de passe (ex : XXXotherHashXXX)
    4. On teste si ce hash est égal avec le hash en base (XXXotherHashXXX et XXXpassHashXXX)
    5. On constate que les deux hashs sont différents, donc on interdit l'entrée.

    J'espère que je ne me suis pas trompé jusqu'ici. En tout cas si c'est bien comme ça que ça fonctionne... à quoi sert le seed ???
    Je ne l'ai pas utilisé jusqu'ici, et j'ai bien stocké ce qu'il fallait dans la base ?

    Merci pour vos éclaircissements.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 501
    Par défaut
    seed (graine) et salt (sel), c'est la même chose dans ce contexte. Certains préfère seed, d'autre salt, c'est selon.

    Le seed/salt est utilisé pour introduire une certaine variabilité dans les hash des mots de passe. Tous les utilisateurs qui ont comme mot de passe "toto" n'auront ainsi pas le même hash puis que le seed/salt risque fort d'être différent.

    J'ai vu certaines applications qui construisaient le seed/salt avec le numéro de pid du process ainsi que la date courante, en brassant cela et en sortant un nombre pseudo variable (mais suffisant variable pour le cas qui nous intéresse).

    Sinon, ce que tu décrit est parfaitement juste.

    Au fait, en français, on chiffre et on déchiffre. Crypter, c'est un barbarisme qui provient du verbe anglais "to crypt"

    Autre chose, on ne devrait JAMAIS chiffrer et déchiffrer un mot de passe, c'est un pêché, c'est le mal. Si on peut le déchiffrer, c'est qu'il est chiffré avec une clé secrète et que quelqu'un d'autre qui possède cette clé secrète peut déchiffrer ce mot de passe (et les autres).

    Par contre, on peut le hasher et comparer le hash obtenu avec celui en base de données.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Par défaut
    Merci pour les précisions,
    Au moins je suis sûr d'avoir bien compris.

    Citation Envoyé par ram-0000 Voir le message
    seed (graine) et salt (sel), c'est la même chose dans ce contexte. Certains préfère seed, d'autre salt, c'est selon.
    Dans ce contexte.... ça veut dire que dans un autre contexte, ces deux choses sont différentes ?

    J'essaie de bien comprendre parce qu'il faut que je crée une application android qui échange avec un site web réalisé avec le framework phpcake (v2.3). Il faut que l'utilisateur puisse se connecter sur le site depuis son terminal android. La sécurité mise en place est assez élevée puisque le système de chiffrement / hashage par le framework utilise seed ET salt (en utilisant blowfish).

    Du coup, je ne comprends pas ce que le seed vient faire là, mais ce qui est sûr c'est qu'il est utilisé avec le salt...

    Alors est-ce que quelqu'un peut m'expliquer dans quels cas on peut les mélanger ?

    J'ai l'impression que ce n'est pas expliqué dans la doc comment les deux sont mélangés avec blowfish pour obtenir le hash final : Cliquer là et ctrl+F + "salt" ou "seed" pour arriver directement aux endroits ou ils en parlent.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 501
    Par défaut
    Je viens de lire le doc (en diagonale) et

    seed et salt sont pareils, c'est de la variabilité dans les algo MAIS dans CakePHPCookbook, ils introduisent une nuance :

    • seed est utilisé par les algorithmes de chiffrement symétriques
    • salt est utilisé par les algorithme de hash

    Ce sont 2 nombres/chaines de caractères qui ne doivent pas être facilement devinable
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Par défaut
    Ah d'accord,
    Mais est ce que ça veut dire que les deux (seed et salt) sont utilisés pour le mot de passe ? Pas forcément en fait...

  6. #6
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 273
    Par défaut
    En fait, même si dans la pratique ça revient au même, le seed et le salt n'ont pas tout à fait la même finalité.

    Le seed est utilisé comme une "séquence aléatoire fixe" et remplace donc le côté aléatoire du chiffrement afin d'obtenir un résultat qui sera toujours identique.

    Un exemple très simple pour comprendre : dans la plupart des langages, il est possible d'utiliser un seed avec fonction random, ce qui lui permet de générer toujours la même suite aléatoire pour un seed donné.
    En cryptographie, ça doit être utilisé pour la génération des clefs (ou de la clef en symétrique) afin de s'assurer que la/les clef(s) générée soit toujours la même pour un seed donné. Le seed pouvant donc être un mot de passe.

    Le salt, lui, a pour but d'altérer le résultat donné par un algorithme, principalement pour éviter d'avoir des résultats trop prévisibles.

    Par exemple en md5, il existe des bases de données entières de "hash connus" faisant un lien entre un mot de passe et son hash md5. L'ajout d'un salt permet de ne pas hasher directement le mot de passe mais de modifier ce dernier afin que le hash généré soit altéré. Ce procédé permet donc de rendre plus "fort" le hash généré, quelque soit le mot de passe de départ.

    En résumé :
    - parler de seed pour une fonction de hashage n'a pas de sens vu qu'il n'y a pas de notion d'aléatoire en hash.
    - un salt est "juste" une sécurité pour s'assurer que le hash généré (je ne suis pas certain que le salt soit utile pour du chiffrement) ne soit pas facilement reliable à la chaîne hashée.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Par défaut
    Ok merci pour ces infos. Finalement le framework n'utilise pas le seed et le salt pour créer le hash comme j'ai pu le dire précédemment.

    Le framework utilise bcrypt pour hasher le pass, et il est tout à fait possible de comparer deux password avec jbcrypt, une adaptation de bcrypt pour JAVA.

    En fait je me compliquais carrément. Merci pour vos éclaircissements.

Discussions similaires

  1. Cherche lien info... sur l'analyse du code
    Par Alec6 dans le forum Qualimétrie
    Réponses: 3
    Dernier message: 03/03/2004, 14h44
  2. Récupérer des infos sur un AVI
    Par FredericB dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/12/2003, 14h25
  3. Demande d'info sur treeview
    Par Anaxagore dans le forum IHM
    Réponses: 6
    Dernier message: 28/08/2003, 18h27
  4. [MFC]Info sur da la fusion sous Word
    Par kor dans le forum MFC
    Réponses: 6
    Dernier message: 22/08/2003, 11h14
  5. [CR] Infos sur l'utilisation de dll
    Par step dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 09/08/2002, 11h35

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