Y a-SHA-256 javascript implémentations qui sont généralement considéré comme digne de confiance?

Je suis en train d'écrire une connexion pour un forum, et le besoin de hacher le mot de passe côté client en javascript avant de l'envoyer sur le serveur. Je vais avoir de la difficulté à décider de l'algorithme SHA-256 de la mise en œuvre, je peux réellement confiance. Je m'attendais à y avoir une sorte d'autorité de script utilisé par tous, mais je suis la recherche charge de différents projets, tous avec leurs propres implémentations.

Je me rends compte à l'aide d'autres personnes crypto est toujours un acte de foi, sauf si vous êtes qualifié pour examiner vous-même, et qu'il n'existe pas de définition universelle de la "confiance", mais cela semble être quelque chose de commun et assez important qu'il doit y avoir une sorte de consensus sur ce qu'il faut utiliser. Suis-je naïf?

Modifier puisqu'il revient beaucoup dans les commentaires: Oui, nous faisons des mesures plus strictes de hachage de nouveau sur le côté serveur. Le côté client de hachage n'est pas le résultat final que nous enregistrer dans la base de données. Le côté client de hachage est parce que l'humain client le demande. Ils n'ont pas donné une raison précise pour laquelle, probablement, ils ont juste comme overkill.

  • Si un script produit le même hachages que l'implémentation de référence sur votre serveur, qu'est-ce que vous recherchez?
  • Si la vérification cohérent hachages est la seule chose que vous devez valider un algorithme de hachage puis, cette question est un peu idiote, oui. J'ai juste pensé qu'il y avait peut-être, potentiellement, d'autres choses qui pourraient mal tourner avec un mal écrit l'algorithme SHA que juste l'incohérence des résultats? Après que tout le monde me dit de ne jamais, jamais, jamais essayer de rouler ma propre initiative, j'ai juste cru qu'il y aurait plus à lui
  • De ne pas m'éloigner du sujet, mais pourquoi êtes-vous le hachage du mot de passe sur le côté client?
  • crypto "ne roulent pas vos propres" s'applique principalement à inventer votre propre algorithme. Pour bien connue des algorithmes de "pourquoi" est la principale raison. De mauvaises implémentations seront éliminées assez rapidement.
  • Le client (l'humain) veut-il de cette façon. Nous utilisons le protocole https, mais ils préfèrent le mot de passe n'est jamais en clair n'importe où sauf sur la fin. Nous utilisons les meilleurs algorithmes de hachage sur le côté serveur
  • Même pas proche. "Ne roulent pas vos propres" s'applique à inventer votre propre algorithme, la rédaction de votre propre mise en œuvre d'un algorithme, le développement de votre propre protocole sur le dessus des algorithmes de chiffrement, ou à peu près rien au-dessus de l'aide en tant que haut-niveau d'abstraction disponible. Si vous pensez que vous serez sûr de coller à une sécurité de base, et n'écrivant colle le code, tu vas passer un mauvais moment.
  • si vous utilisez un mot de passe haché sans un protocole de stimulation/réponse, puis le hachage de mot de passe EST le mot de passe et c'est vraiment la même que la transmission du mot de passe en texte clair.
  • Il est utile dans la protection de l'utilisateur mot de passe en clair pour tous les autres sites, ils pourraient l'utiliser, si ce n'est pour notre site en particulier. C'est une solution facile qui peut-être ne nous aideront pas, mais peut éventuellement aider à l'utilisateur si nous bousiller quelque part. Et comme je l'ai dit, la demande du client, je ne peux rien faire à ce sujet, même si je le voulais.
  • Je sais que cela ne va pas changer votre esprit du client, ou votre esprit, mais je peux vous dire que de nombreuses fois au cours d'une plume de test, j'ai été en mesure de pivoter de manière beaucoup plus efficace que je pourrais l'avoir, autrement, en étant capable d'utiliser directement un admin de hachage de mot de passe, j'ai obtenu à partir d'un web serveur de base de données pour gagner des privilèges d'administrateur dans l'application web et télécharger un shell pour plus de pivotement. Les mots de passe étaient en fait assez bonne et aurait pris moi un moment de craquer, mais depuis que j'ai pu utiliser le hachage directement il n'y a essentiellement pas de barrière entre l'injection SQL -> shell local.
  • Je suis plus qu'ouvert à avoir mon esprit a changé 🙂 mais dans ce cas, je ne comprends pas vraiment comment votre point s'applique. Nous hash le mot de passe deux fois: une fois sur le côté client avec un simple SHA-256, et une fois sur le côté serveur avec quelque chose de plus exigeant. La première de protéger le texte en clair dans le cas de MITM ou similaire, et le deuxième pour la brute de protection. Même si vous avez obtenu une prise de la base de données et l'admin de hachage, vous ne pouviez pas utiliser directement pour valider la connexion.
  • Sur le sujet de client-côté hachage de mot de passe, reportez-vous à côté Client hachage de mot de passe. Pour le bien c'est le cas, utilisez rot13 sur le côté client et un mot de passe correct algorithme de hachage (PBKDF2 ou bcrypt ou scrypt, accepter aucun substitut) sur le serveur.
  • Ah, depuis que vous êtes de hachage dans les deux endroits, alors oui, mon point est discutable. Je ne savais pas que tu faisais de hachage sur le serveur-côté.
  • C'est exactement ce que nous faisons. Ma propre justification pour le hachage côté client est de protéger l'utilisateur en clair (où ils pourraient utiliser d'ailleurs) dans le cas d'un MITM. Oui, https fait un meilleur travail, mais côté client de hachage n'est pas une chose difficile à mettre en œuvre et est seulement de manière partielle, de contrôle des dommages dans le cas où le https n'est pas correctement configuré. Est-il quelque chose de mal avec ce raisonnement que je suis absent? Ou faites-vous tout à fait en désaccord que ça en vaut la peine?
  • Un rapide de hachage n'est pas de protéger le mot de passe utilisateur, s'il est obtenu à partir d'un dump de la base ou de l'écoute clandestine sur le fil.
  • Il fait si c'est un mot de passe fort. Je ne tiens pas faire d'illusions, que c'est une parfaite défense contre tous les agresseurs, mais il est facile de défense contre certains attaquants. L'atténuation des dommages sur le dessus de meilleures pratiques, pas les délires d'un nouveau calcul de conception sécurisée.
  • Il ne peut aider, au moins lorsqu'utilisé en combinaison avec une lenteur de hachage sur le serveur.
  • Il ne pourrait pas l'aider si elle donne un faux sentiment de sécurité. Si un SHA-2, de votre mot de passe est une fuite, vous devez le traiter comme une fuite de votre mot de passe de toute façon. Une lente hachage ne peut que l'aider si elle est correctement mis en œuvre (et la complexité est intrinsèquement préjudiciable à la sécurité).
  • Si vous tombez sur cette question, parce que vous êtes à la recherche d'un rapide et compact, SHA-256 de la mise en œuvre puis voir cette question: stackoverflow.com/questions/31219009/...

InformationsquelleAutor jono | 2013-08-19