web-dev-qa-db-fra.com

Quelle est la différence entre le salage de hachage et le noncing?

J'ai lu sur ces deux sujets, et je n'arrive pas à comprendre la différence entre salage et hachage non forcé.

51
Ryan Ward

Un sel est une valeur aléatoire non secrète utilisée pour garantir que le même texte en clair ne sera pas haché de manière cohérente avec la même valeur de sortie; il est utilisé pour empêcher les attaques de pré-calcul telles que Rainbow Tables .

Un nonce ("nombre utilisé une fois") est une valeur - généralement générée aléatoirement - qui est associée à un message dans un schéma cryptographique et doit être unique dans une certaine portée spécifiée (comme un intervalle de temps donné ou une session). Il est généralement utilisé pour empêcher rejouer les attaques .

Les nonces et les sels sont similaires et servent à des fins connexes, mais ne sont pas identiques. Les deux sont généralement générés de manière aléatoire, non secrets, et servent à empêcher les attaques qui seraient autrement possibles contre le système. Ils diffèrent principalement dans le contexte dans lequel ils sont utilisés et dans les conséquences des répétitions - un sel en double n'a pas d'importance, mais un nonce en double peut avoir des conséquences désastreuses.

46
Nick Johnson

nonce = nombre utilisé une fois. Si vous générez un sel unique pour chaque bit de données que vous hachez, c'est essentiellement un nonce également.

11
Marc B

Hashing est un processus à sens unique contrairement au cryptage (en utilisant une clé, nous pouvons décrypter). La taille fixe et les légères modifications des données produisent une valeur de hachage entièrement nouvelle. C'est comme une empreinte digitale. Exemple: MD5, MD6, SHA-1, SHA-2 et ainsi de suite ..


Le stockage du mot de passe dans la base de données au format de hachage n'est pas non plus sécurisé par les tables Rainbow, les attaques par dictionnaire et la force brute (les GPU peuvent calculer des milliards de hachages par seconde). Pour éviter ces problèmes, nous devons utiliser Salt.

Un Salt (nombre aléatoire) est utilisé pour que le même mot de passe ne génère pas toujours la même clé. c'est-à-dire qu'un sel est simplement ajouté pour rendre un mot de passe commun rare.

Un Salt est quelque chose que nous ajoutons à notre hachage pour empêcher les attaques Rainbow en utilisant des tables Rainbow qui sont essentiellement d'énormes tables de recherche qui convertissent les hachages en mots de passe comme suit:

dffsa32fddf23safd -> passwordscrete 
f32ksd4343fdsafsj -> stackoverflow

Ainsi, le pirate peut trouver cette table Rainbow, pour éviter ce problème, nous devons stocker le hachage avec la combinaison de mot de passe et de sel.

hash= hashFunction(passowrd+salt)

A Nonce ( N umber utilisé uniquement ne fois) n'a pas besoin d'être secret ou aléatoire, mais il ne doit pas être réutilisé avec la même clé. Ceci est utilisé pour empêcher les attaques de relecture (aka attaque de lecture).

6
Premraj