J'utilise scrypt
pour générer des hachages forts du mot de passe de l'utilisateur. Je veux connecter l'utilisateur, mais je ne veux pas envoyer le mot de passe en clair sur le fil, comment puis-je vérifier si le mot de passe est correct (sans un aller-retour), car il est salé?Authentification avec mot de passe salé
Je rencontre un scénario client/serveur. Le client est une application sur un ordinateur de bureau (pas un site Web, ni un serveur http).
Comment puis-je y parvenir? Je suis venu seulement jusqu'ici: je génère le hachage du sel + sur le client, en forme un mcf et l'envoie à mon serveur. Enregistrez le mcf dans la base de données. Je n'ai pas envoyé le mot de passe, juste le hash qui est pratiquement inutile (puisque scrypt devrait être assez fort, et nécessiterait quelques millions d'années pour l'inverser). Comment puis-je maintenant connecter l'utilisateur à mon service, sans envoyer le mot de passe en clair au serveur pour le comparer? Je ne peux pas le ressasser, car cela se traduirait par un hachage différent en raison d'un sel différent? Je devrais envoyer le sel au client, hacher le mot de passe, envoyer le hachage au serveur, le comparer et envoyer un jeton d'authentification.
Comment puis-je y parvenir? Un jeton d'authentification est-il réellement sécurisé? Il peut être simplement utilisé pour usurper l'identité de quelqu'un, je suppose?
'alors c'est le mot de passe'. doh. Tu as raison. Comment les applications courantes traitent-elles les attaques de type mitm? Je fais évidemment toute communication sur SSL/TLS. J'ai aussi pensé à utiliser HMAC pour vérifier toutes les requêtes avec un hash, mais je devrais l'envoyer au moins une fois de toute façon, ce qui le rend inutile. – Leandros
"Je suis évidemment en train de faire des communications via SSL/TLS." Alors vous le faites bien, mon frère. Sous le capot, TLS utilise un HMAC pour s'assurer que la modification du message entraînerait une erreur. Votre configuration semble sécurisée alors - puisque le mot de passe n'est pas réellement en clair. Avec TLS, l'attaquant ne devrait pas être en mesure de faire une attaque MitM sur vous - il faudrait visser avec vos autorités de certification de confiance sur la machine locale. – Gray
Je discutais de la question avec un de mes amis, SSL utilise essentiellement le cryptage à clé publique/privée, non? (quelque chose dans le genre de [ceci] (https://www.comodo.com/resources/small-business/digital-certificates2.php)). Quel est le même que votre cryptage asymétrique mentionné? – Leandros