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.
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.
Les termes les plus simples auxquels je puisse penser:
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.
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. )
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.