web-dev-qa-db-fra.com

Fonction de hachage réversible?

Existe-t-il une fonction de hachage réversible?

La fonction de hachage comme SHA et MD5 ne sont pas réversibles. Je voudrais savoir s'il existe des fonctions de hachage réversibles?

17
Geek

La définition d'un fonction de hachage cryptographique inclut la résistance aux préimages: étant donné h (x) =, il devrait être impossible de récupérer x. Une fonction de hachage "réversible" est exactement l'opposé de cette propriété. Par conséquent, vous ne pouvez pas avoir plus de "fonction de hachage réversible" que vous ne pouvez avoir un poisson allergique à l'eau.


Vous voudrez peut-être une fonction de hachage qui, pour la plupart des gens, est une fonction de hachage cryptographique avec toutes ses propriétés, mais qui comprend également une sorte de trappe qui permet de l'inverser si vous connaissez un secret spécifique . Ce genre de choses pourrait existent mais nécessitent des mathématiques, comme la cryptographie asymétrique. Je ne suis pas au courant d'une telle construction en ce moment, mais on pourrait peut-être truquer quelque chose basé sur un module RSA, ou peut-être une courbe elliptique avec des coordonnées prises modulo un module RSA (je n'ai pas de conception précise en tête, mais J'ai le intuition que cela peut être fait de cette façon).

26
Tom Leek

Même un hachage non cryptographique ne peut généralement pas être inversé (c'est-à-dire quelles que soient les autres propriétés spéciales des hachages cryptographiques, telles que la résistance aux collisions/pré-images). La raison pour laquelle ce n'est généralement pas possible est que vous n'avez tout simplement pas assez d'informations.

Une fonction de hachage transforme (généralement) N bits d'entrée en M bits de sortie, où M est une petite constante et la plupart du temps N > M est vrai. Bien sûr Nn'a pas besoin d'être plus grand que M, il est parfaitement possible de générer par ex. a SHA hachage à partir d'un seul octet, mais généralement le message haché est plus long (souvent beaucoup plus long) que la valeur de hachage.

Cela signifie ni plus ni moins que pour inverser le hachage et restaurer le message d'origine, vous devrez utiliser magie de divination pour remplir les informations manquantes. Il ya deuxN-M solutions, et chacun d'eux est aussi correct que tous les autres.

Donc, si vous hachez, par exemple, une chaîne de 36 octets avec SHA et essayez d'inverser cela, il y a 2128 solutions, toutes également correctes.
Si l'entrée est connue pour avoir certaines propriétés bien connues (comme commencer par une séquence bien connue, comme From:, ou une entropie particulièrement faible), vous pourrez peut-être exclure la plupart des solutions et éventuellement trouver un texte en clair plausible, peut-être même la bonne - mais cela est loin d'être trivial, et vous ne pourrez jamais prouver que vous avez la bonne un, sauf si vous le saviez déjà ou si vous avez un autre moyen de vérification.

12
Damon

Certains algorithmes de hachage, comme les CRC (comme je l'ai noté ci-dessus) sont réversibles. Voir cet article pour une approche pour ce faire. (Les CRC sont rapides à calculer et idéaux pour protéger les données contre la corruption là où il n'y a aucune exigence de sécurité).

La conception de hachages cryptographiquement sécurisés vise à garantir qu'il n'y a pas de raccourci de ce type et que la recherche d'une correspondance de hachage nécessite une recherche complète de l'espace clé.

4
Rich

Vous recherchez peut-être quelque chose comme PKI, où une chaîne peut être chiffrée avec une clé publique à une extrémité et non chiffrée avec une clé privée à l'autre. Pas un hachage évidemment, mais un moyen de crypter/décrypter une chaîne pour transmettre un secret.

1
Scott Duffy

Vous pouvez regarder le hachage multiplicatif de Knuth , qui génère un mappage réversible et aléatoire entre des entiers dans les limites de la table de hachage.

Par exemple, Optimus implémente l'algorithme de Knuth dans PHP pour masquer les ID séquentiels. Cependant, n'utilisez pas cet algorithme pour à des fins de sécurité .

Vous pouvez lire en détail dans son livre, Art of Computer Programming, Vol. en particulier à partir de la page 513.

1
jchook

ELI5: Qu'est-ce qu'un hachage?

Imaginez que vous ayez du mal à mettre des choses sur votre placard, alors vous créez un système qui définit quel tiroir vous mettrez tout en fonction du code-barres. Vous avez 7 tiroirs, vous scannez donc le code-barres sur votre téléphone et il vous indique où vous le mettez, de 1 à 7.

Imaginez maintenant que vous obtenez votre liste d'épicerie de 30 articles, après avoir tout rangé, et ce qu'il faut savoir sur le tiroir 3, sans ouvrir le tiroir. Que faites vous? Vous écrasez chaque élément de votre liste, mettez votre programme et notez tous les éléments qui se trouvent dans le tiroir 3. Facile.

Imaginez maintenant que votre liste comporte quelque chose entre, disons, 1030 à 109000 articles, et votre armoire a 2160 articles. Sans ouvrir les tiroirs, comment savoir ce que c'est sur chaque tiroir? Vous faites une attaque bruteforce: testez maintes et maintes fois chaque code jusqu'à ce que vous obteniez celui qui correspond au tiroir 3. C'est ce que les gens disent inverser un hachage, même si un hachage ne peut jamais être inversé. Vous ne pouvez l'exécuter que jusqu'à ce que vous obteniez le même résultat.

Une fonction de hachage, par définition, ne peut jamais être inversée. Si vous le pouvez, ce n'est pas un hachage. Il s'agit d'encodage ou de cryptage.

0
ThoriumBR