Je suis en train de développer un nouveau magasin pour mon organisation et je m'occupe maintenant du stockage des mots de passe. Les concepts de salage, HMAC etc sont bien avec moi - et veulent stocker les mots de passe des utilisateurs soit salés et hachés, HMAC haché, ou HMAC salé et haché - pas sûr de la meilleure façon, mais en théorie, il a gagné » Peu importe, car il sera en mesure de changer au fil du temps si nécessaire.Stockage et transfert sécurisés des mots de passe
Je souhaite avoir un service JSON XML & pouvant servir de service de jetons de sécurité pour les applications côté client. J'ai déjà développé un pour un autre système, ce qui nécessite que le client double-crypte un mot de passe en clair en utilisant SHA1 d'abord, puis HMACSHA1 en utilisant une clé unique (ou non) fournie par le serveur pour cette session seulement . Je voudrais répéter cette technique pour le nouveau système - la mise à niveau de l'algo vers SHA256 (choisi puisque les implémentations sont facilement disponibles pour toutes les plates-formes susmentionnées - et c'est beaucoup plus fort que SHA1) - mais il y a un problème.
Si je stocke le mot de passe comme un hachage salé dans le magasin d'utilisateurs, le client devra être envoyé ce sel afin de construire le hachage correct avant d'être HMACd avec la clé de session unique. Cela irait complètement à l'encontre de l'utilisation d'un sel en premier lieu. De même, si je n'utilise pas de sel pour le stockage de mot de passe, mais que j'utilise plutôt HMAC, c'est toujours le même problème.
Pour l'instant, la seule solution que je peux voir est d'utiliser le hachage SHA256 nu pour le mot de passe dans le magasin de l'utilisateur, afin que je puisse l'utiliser comme point de départ sur le serveur et le client. transfert de mot de passe salé/hmacd pour le service Web. Cela laisse toujours le magasin de l'utilisateur vulnérable à une attaque de dictionnaire où il aurait jamais été accédé; et aussi improbable que cela puisse être - en supposant que cela n'arrivera jamais, cela ne va pas avec moi.
Appréciez grandement n'importe quelle entrée.
"en théorie, cela n'aura aucune importance, car il sera possible de changer au fil du temps si nécessaire." - non; Une fois que vous avez correctement haché les mots de passe **, vous ne pouvez pas les reconstruire **. Par conséquent, vous ne pouvez pas les re-masquer sous un algorithme différent. Vous devez décider maintenant. –
Je voulais dire au niveau de la programmation; Ce n'est pas grave si maintenant je repense à une façon de le faire et ensuite passer à une autre manière avant de finalement libérer le système. Une fois qu'il est déployé et en cours d'exécution, bien sûr, je sais que je ne peux pas le changer! –