web-dev-qa-db-fra.com

Quelles sont les différences entre une graine de chiffrement et un sel?

Aujourd'hui, j'ai eu du mal à expliquer la différence à un ami.

Je sais que les graines sont utilisées lors de la génération de chaînes "aléatoires". Et les sels sont utilisés pour fournir différents résultats à un hachage.

Quelle est la meilleure façon de décrire ces concepts et leurs éventuelles différences.

27
Gabriel Fair

Graine:

Le cryptage est alimenté par des nombres aléatoires, mais comment générer un nombre vraiment aléatoire? La milliseconde actuelle? Le nombre de threads de processeur utilisés? Vous avez besoin d'un point de départ. C'est ce qu'on appelle une graine: elle lance un nombre aléatoire.

Sel:

Lorsque vous hachez une chaîne, elle se retrouvera toujours avec le même hachage.

foo = acbd18db4cc2f85cedef654fccc4a4d8 à chaque fois.

C'est un problème lorsque vous souhaitez stocker des éléments que vous souhaitez conserver véritablement cachés (comme les mots de passe). Si tu vois acbd18db4cc2f85cedef654fccc4a4d8 vous savez toujours que c'est foo. Ainsi, vous ajoutez simplement un "sel" à la chaîne d'origine pour vous assurer qu'elle est unique.

foo + asdf = e967c9fead712d976ed6fb3d3544ee6a

foo + zxcv = a6fa8477827b2d1a4c4824e66703daa9

Ainsi, le "sel" améliore le "hachage" en masquant le texte original.

44
schroeder

Les termes les plus simples auxquels je puisse penser:

  • A seed est une valeur aléatoire qui doit généralement être gardée secrète ou le cryptage est rompu
  • A sel est une valeur aléatoire qui n'est généralement pas un secret, qui est utilisée pour rendre certaines attaques précalculées plus difficiles

J'aime les utiliser parce que l'idée de garder les choses secrètes ou non est quelque chose de significatif pour n'importe qui.

10
Cort Ammon

Votre ami est justifié dans sa confusion, car il n'y a pas de grande différence. À un niveau élevé, chacun est utilisé comme entrée pour modifier la sortie d'une fonction de brouillage.

Essayez de souligner la différence entre une fonction de hachage et un générateur de nombres aléatoires, et à quoi ils servent généralement. En outre, être en mesure de faire la distinction entre un générateur de nombres aléatoires régulier utilisé pour les statistiques (qui peut utiliser une graine prévisible ou connue) et un générateur de nombres aléatoires sécurisé sur le plan cryptographique utilisé pour la génération de clés secrètes (qui nécessite une source d'entropie non devinable comme graine. )

5
John Deters

PRNG (graine) = une chaîne de nombres aléatoires

hachage (sel + mot de passe) = mot de passe haché

Le générateur de nombres aléatoires met en évidence la nature fondamentale des ordinateurs. Ils ne sont pas aléatoires. Même le caractère aléatoire perçu n'est pas aléatoire, mais proche du hasard, bien que l'on puisse éventuellement retirer cet exemple du vieux chapeau de marcher sur des demi-distances vers un objectif et de ne jamais l'atteindre vraiment.

0
munchkin