Question

Ma première question est la suivante: j'ai entendu dire que la chaîne était hachée 2 fois (par exemple, sha1 (sha1 (mot de passe))), car le deuxième hachage avait une longueur fixe, est-ce vrai?

Ma deuxième question est: quelle est la plus sûre? (var1 et var2 sont deux chaînes):

  1. sha1 (var1 + sha1 (var2))
  2. sha1 (var1 + var2)

Si c’est le premier, est-ce que cela en vaut la peine?

Était-ce utile?

La solution

En hachant la chaîne deux fois, vous augmentez le risque de collision, ce qui est mauvais pour la sécurité.

Au lieu d’avoir un nombre infini d’entrées conduisant à 2 128 sorties possibles, vous aurez 2 128 entrées possibles aboutissant peut-être à moins de 2 128 sorties.

Utiliser du sel et du poivre avant le hachage permet au moins de saisir des possibilités infinies. Le hachage à deux reprises augmente la durée d'exécution de votre script et le risque de collision, à moins que vous ne conserviez la source d'entrées infinies.

Autres conseils

  • sha1 (var1 + sha1 (var2))
  • sha1 (var1 + var2)

Ni est très sécurisé. Ne réinventez pas la roue. HMAC a été conçu à cet effet. en particulier, il prend des mesures (remplissage, etc.) pour éviter les problèmes de certaines faiblesses de certains algorithmes de hachage qui interagissent mal avec les implémentations "simples" ci-dessus.

De plus, le double hachage n'est pas utile pour améliorer la sécurité. Considérez: au mieux, vous mapperez une valeur aléatoire à une autre valeur aléatoire. Cependant, s'il y a collision, si les deux valeurs résultantes du deuxième hachage sont égales, vous avez perdu la sécurité en aboutissant à une collision. Autrement dit, vous ne pouvez jamais vous débarrasser d'une collision de cette façon, mais vous pouvez en gagner une.

Cela dit, les attaques pré-image existantes pourraient ne pas fonctionner contre le double hachage ... mais! Ils pourraient encore travailler. Je ne suis pas qualifié pour dire lequel, et si vous posez la question ici, vous ne le serez probablement pas non plus. Certes, les attaques par collision, qui sont tout ce qui est pratique avec MD5 aujourd'hui, ne sont pas gênées par le double hachage.

Il est préférable de s'en tenir aux algorithmes éprouvés, qui ont fait leurs preuves depuis des décennies, car avec la cryptographie, il est trop facile de sécuriser quelque chose qui a l'air mais ne l'est pas.

Je doute que cela ajoute une quelconque sécurité. Cela augmenterait la durée d'exécution de votre script, mais n'apporterait pas beaucoup de sécurité au hachage. N'oubliez pas que lorsque quelqu'un tente de casser votre hachage, il n'a pas besoin de trouver la valeur exacte de var1 et var2, il lui suffit de trouver celle qui produit le même hachage.

Je ne suis pas un expert en cryptographie, mais pour autant que je sache, vous n’obtiendrez aucune sécurité en hachant une valeur plusieurs fois en plus de ralentir le processus. Donc, si vous effectuez un hachage 1000 fois, vous ferez une attaque (par exemple, une attaque par dictionnaire) 1000 fois plus lentement, mais cela n’a rien à voir avec le hachage une ou deux fois.

L'utilisation d'un seul sel, sans sel, permet de le résoudre facilement.

De nombreuses grandes tables contiennent des tonnes de ces hachages, ce qui permet de résoudre un seul hachage sans sel.

Ajouter un deuxième hachage n’aidera pas beaucoup non plus, car encore une fois, ces tables existent déjà avec les valeurs sauvegardées.

Un sel dynamique ajouté au mot de passe aidera beaucoup plus que plusieurs hachages. Les hachages multiples n’ajoutent pas grand-chose.

Mon impression est que vous construisez un mur de briques avec une porte en acier, mais que les autres murs sont en contreplaqué. En d'autres termes, vous pouvez injecter autant de sécurité que vous le souhaitez dans les mots de passe de hachage, mais il existe toujours des moyens beaucoup plus simples de casser votre système. Je pense qu'il est bien préférable d'adopter une approche globale de la sécurité au lieu de trop se préoccuper de choses comme celle-ci.

Est-ce que var1 + var2 sera identique dans une situation attendue? Je veux dire, la première proposition devrait être acceptable dans ce cas, car vous éviteriez les collisions intempestives. Pour en valoir le coût, c'est une question à laquelle vous devriez répondre. Eviter une collision en vaut la peine.

À propos de l’algorithme sha, il est supposé brouiller les résultats. Donc, l'appliquer plusieurs fois ne devrait pas donner de meilleurs résultats, ni l'appliquer à une action "plus aléatoire". les entrées devraient donner de meilleurs résultats.

Le hachage d'une chaîne de caractères à plusieurs reprises compliquera la tâche de l'attaquant en cas d'attaque par dictionnaire, ce qui le rendra "beaucoup plus long". à la force brute. Votre première question n’est pas claire, mais les hachages multiples ne sont pas moins sécurisés car le second a une longueur fixe.

Mais plus important qu'un hachage multiple, l'utilisation d'un salt est essentiel pour une meilleure sécurité.

En ce qui concerne votre deuxième question, je dirais qu’il n’est pas très simple de dire lequel des 2 est le plus sûr, je pense que l’option 2 est vraiment suffisante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top