152 votes

Différence entre le hachage d'un mot de passe et son chiffrement

L'actuel haut-voter pour cette question, les états:

Un autre qui n'est pas tellement une question de sécurité, mais il est lié à la sécurité, est complète et abjecte incapacité à analyser la différence entre le hachage d'un mot de passe et de le chiffrer. Le plus souvent trouvé dans le code où le programmeur est en essayant de fournir dangereux "me Rappeler de mon mot de passe" de la fonctionnalité.

Quelle est exactement cette différence? J'ai toujours été sous l'impression que le hachage est une forme de cryptage. Qu'est-ce que l'état dangereux de la fonctionnalité de l'affiche fait référence?

234voto

Vinko Vrsalovic Points 116138

Le hachage est une fonction unidirectionnelle (ainsi, une cartographie). C'est irréversible, vous appliquez l'algorithme de hachage sécurisé et vous ne pouvez pas obtenir l'original de la chaîne de retour. Le plus vous pouvez faire est de générer ce qu'on appelle une "collision", qui est, de trouver une autre chaîne de caractères qui donne le même hash. Cryptographique sécurisé algorithmes de hachage sont conçus pour empêcher l'occurrence de collisions. Vous pouvez attaquer un hachage sécurisé par l'utilisation d'un arc-en-ciel de la table, vous pouvez contrarrest par l'application d'un sel à la table de hachage avant de le ranger.

Le cryptage est un bon (two way) de la fonction. Il est réversible, vous pouvez décrypter la déformation de la chaîne pour obtenir un exemplaire original de la chaîne si vous avez la clé.

Le dangereux fonctionnalités dont elle parle, c'est que si vous chiffrer les mots de passe, votre application est la clé stockée quelque part et un attaquant qui obtient l'accès à votre base de données (et/ou code) peut obtenir les mots de passe en obtenant à la fois la clé et le texte chiffré, alors qu'avec un hash c'est impossible.

Les gens l'habitude de dire que si un pirate est propriétaire de votre base de données ou votre code, il n'a pas besoin d'un mot de passe, donc la différence est discutable. C'est naïf, parce que vous avez encore le devoir de protéger vos utilisateurs, mots de passe, principalement parce que la plupart d'entre eux ne pas utiliser le même mot de passe, encore et encore, en les exposant à un risque plus élevé en cas de fuites, de leurs mots de passe.

36voto

Bill the Lizard Points 147311

Le hachage est une fonction, ce qui signifie qu'une fois que vous hachage d'un mot de passe, il est très difficile d'obtenir le mot de passe d'origine de retour à partir de la table de hachage. Le chiffrement est dans les deux sens de la fonction, où il est beaucoup plus facile d'obtenir le texte original de retour à partir du texte chiffré.

Plaine de hachage est facilement défait en utilisant une attaque par dictionnaire, où l'attaquant pré-hachage de chaque mot dans un dictionnaire (ou toute combinaison de caractères jusqu'à une certaine longueur), puis utilise ce nouveau dictionnaire pour rechercher des mots de passe hachés. À l'aide d'un unique aléatoire de sel pour chaque hachage de mot de passe stocké rend beaucoup plus difficile pour un attaquant d'utiliser cette méthode. Il serait pratiquement le besoin de créer un nouveau dictionnaire unique pour chaque sel de la valeur que vous utilisez, ce qui ralentit leur attaque terriblement.

Il est dangereux de stocker des mots de passe en utilisant un algorithme de chiffrement parce que si c'est plus facile pour l'utilisateur ou l'administrateur pour obtenir le mot de passe d'origine de retour à partir du texte chiffré, il est aussi plus facile pour un attaquant de faire de même.

13voto

lkamal Points 704

Encrypted vs Hashed Passwords

Comme indiqué dans l'image ci-dessus, si le mot de passe est crypté, il est toujours un secret caché où quelqu'un peut extraire le texte brut mot de passe. Toutefois, lorsque le mot de passe est haché, vous êtes détendu qu'il y a à peine n'importe quelle méthode de récupération du mot de passe à partir de la valeur de hachage.


Extrait de Chiffrées vs les mots de passe Hachés - ce Qui est mieux?

Le chiffrement est bon?

Texte en clair les mots de passe peuvent être cryptées en utilisant des algorithmes de chiffrement symétrique comme DES, AES, ou avec toute autre d'algorithmes et de les stocker dans la base de données. Lors de l'authentification (vérification de l'identité avec nom d'utilisateur et mot de passe), l'application va décrypter le mot de passe chiffré stocké dans la base de données et de les comparer avec d'utilisateur mot de passe fourni pour l'égalité. Dans ce type de manipulation de passe, même si quelqu'un d'obtenir l'accès à des tables de base de données de mots de passe ne sera pas simplement réutilisables. Cependant il y a une mauvaise nouvelle dans cette approche. Si jamais quelqu'un en obtenir l'algorithme de chiffrement avec la clé utilisée par votre application, il/elle sera en mesure d'afficher tous les mots de passe utilisateur enregistrés dans votre base de données par le déchiffrement. "C'est la meilleure option que j'ai obtenu", un développeur de logiciel peut crier, mais est-il une meilleure façon?

Fonction de hachage cryptographique (à sens unique)

Oui, il est, peut-être vous avez manqué le point ici. Avez-vous remarqué qu'il n'est pas nécessaire de les décrypter et de les comparer? Si il est à sens unique approche de conversion où le mot de passe peut être converti en certains se sont convertis mot, mais l'opération inverse (génération de mot de passe à partir de convertis-mot) est impossible. Maintenant, même si quelqu'un a accès à la base de données, il n'y a aucun moyen que les mots de passe peuvent être reproduites ou extraites à l'aide de l'convertis-mots. Dans cette approche, il n'y aura pratiquement toute façon que certains pouvaient savoir à vos utilisateurs de " top secret des mots de passe; et ce qui permet de protéger les utilisateurs utilisent le même mot de passe sur plusieurs applications. Ce que les algorithmes peuvent être utilisés pour cette approche?

8voto

CheGueVerra Points 3580

J'ai toujours pensé que le chiffrement pouvait être converti dans les deux sens, de manière à ce que la valeur finale puisse vous ramener à la valeur d'origine. Avec Hashing, vous ne pourrez plus revenir du résultat final à la valeur d'origine.

8voto

Lasse V. Karlsen Points 148037

Les algorithmes de hachage sont généralement de chiffrement dans la nature, mais la principale différence est que le chiffrement est réversible grâce à de déchiffrement et de hachage n'est pas.

Une fonction de chiffrement prend généralement en entrée et produit chiffré de sortie qui est la même ou légèrement plus grande taille.

Une fonction de hachage prend en entrée et produit un, généralement de petite production, en général de taille fixe.

Même s'il n'est pas possible de prendre un résultat haché et "dehash" pour revenir à l'entrée d'origine, vous pouvez forcer votre chemin à quelque chose qui produit le même hash.

En d'autres termes, si un schéma d'authentification prend un mot de passe, le hache, et la compare à une version cryptée de l'requiert le mot de passe, il pourrait ne pas être nécessaire que vous savez le mot de passe d'origine, mais seulement de son de hachage, et vous pouvez forcer votre chemin à quelque chose qui va correspondre, même si c'est un mot de passe différent.

Les fonctions de hachage sont généralement créés pour réduire les risques de collisions et il est difficile de simplement calculer quelque chose qui va produire le même hash que quelque chose d'autre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X