Je travaille sur l'ajout de la fonctionnalité génératrice de Hash Digest à notre base de code. Je voulais utiliser une chaîne comme sel de hachage de manière à ce qu'une clé pré-connue / passephrase puisse être achuée à ce qu'il était nécessaire pour être haché. Suis-je mal comprendre ce concept? P>
5 Réponses :
Vous comprenez parfaitement le concept. Assurez-vous simplement que le sel préparé est répétable chaque fois. P>
Si je vous comprends correctement, cela sonne comme si vous avez raison. Le pseudocode pour le processus ressemble à quelque chose comme: Le sel ajoute simplement un autre niveau de complexité pour les personnes qui tentent d'obtenir à vos informations. P> P>
Et il est encore meilleur si le sel est différent pour chaque phrase cryptée, car chaque sel nécessite sa propre table arc-en-ciel. P>
Un sel est un élément aléatoire qui est ajouté à l'entrée d'une fonction cryptographique, dans le but d'avoir un impact sur le traitement et la production de manière distincte à chaque invocation. Le sel, par opposition à une "clé", n'est pas censé être confidentiel.
Un siècle il y a, les méthodes cryptographiques de cryptage ou d'authentification étaient "secrètes". Ensuite, avec l'avènement des ordinateurs, les gens ont compris que la conservation d'une méthode complètement secrète était difficile, car cela impliquait de maintenir le logiciel lui-même confidentiel. Quelque chose qui est régulièrement écrit sur un disque ou incarné comme un quincaillerie dédié, a du mal à rester confidentiel. Donc, les chercheurs ont divisé la "méthode" en deux concepts distincts: l'algorithme (qui est public et devient logiciel et matériel) et la clé em> (un paramètre à l'algorithme, présent en RAM volatile uniquement pendant le traitement). La clé concentre le secret et est une donnée pure. Lorsque la clé est stockée dans le cerveau d'un être humain, elle est souvent appelée "mot de passe" car les humains sont meilleurs pour mémoriser des mots que les bits. P> puis la clé elle-même a été divisée plus tard. Il s'est avéré que, pour une sécurité cryptographique appropriée, nous avions besoin de deux choses: un paramètre confidentiel et un paramètre variable. Fondamentalement, la réutilisation de la même clé pour des usages distincts a tendance à créer des problèmes; Il fuit souvent des informations. Dans certains cas (surtout des chiffres de courant, mais aussi pour les mots de passe de hachage), il fuit trop et conduit à des attaques réussies. Donc, il y a souvent un besoin de variabilité, quelque chose qui change à chaque fois que la méthode cryptographique fonctionne. Maintenant, la bonne partie est que la plupart du temps, la variabilité et le secret ne doivent pas être fusionnés. C'est-à-dire que nous pouvons séparer le confidentiel em> de la variable em>. Donc, la clé était divisée en: p> Seule la clé doit être secrète. L'élément variable doit être connu de toutes les parties impliquées, mais elle peut être publique. C'est une bénédiction parce que le partage d'une clé secrète est difficile; Les systèmes utilisés pour distribuer un tel secret trouveraient coûteux d'accueillir une partie variable qui change chaque fois que l'algorithme fonctionne. p> dans le contexte de stockage de mots de passe hachés, l'explication ci-dessus devient les suivantes: p> Puisque le sel doit être accessible aux vérificateurs, mais il est nécessaire de ne pas être secret, il est de coutume de stocker la valeur de sel avec la valeur de hachage. Par exemple, sur un système Linux, je peux utiliser cette commande: p>
$1$zap$t3KZajBWMA7dVxwut6y921
"Le sel, par opposition à une" clé ", n'est pas censé être confidentiel." - Avec un hachage à sens unique connu comme MD5 ou SHA-1, vous devez garder le sel confidentiel sinon la force brute inversant votre hachage est beaucoup plus facile.
Si le sel est confidentiel, ce n'est pas un sel mais une partie de la clé. Maintenant, il arrive que dans une configuration de hachage-the-mot de passe, un sel fait son travail (il empêche de fuir des mots de passe identiques et des attaques parallèles), mais ce n'est pas assez bon car les humains sont pathétiques au choix et se souvient de bons mots de passe. Ainsi, il est de coutume d'essayer de conserver la sortie entière "protégée" ( / etc / shadow code> pas lisible par le public); La sécurité supplémentaire vient de cacher la sortie de hachage et non de cacher le sel. De toute façon, le vérificateur doit toujours avoir accès au sel et à la sortie de hachage.
sa valeur qui mérite de mentionner que même si le sel doit être différent pour chaque utilisation du mot de passe, votre sel ne doit en aucun cas être calculé à partir du mot de passe lui-même! Ce genre de chose a le résultat pratique d'invalider complètement votre sécurité. P>
Dans quelle langue écrivez-vous cela?
J'écris ceci en Java