Elena, miembro de nuestro equipo de trabajo, nos ha hecho el favor de redactar este tutorial porque domina muy bien el tema.
Solución:
El definición de una función hash criptográfica incluye resistencia a preimágenes: dado h(x), debería ser inviable recuperar X. Una función hash que es “reversible” es exactamente lo contrario de esa propiedad. Por lo tanto, no puede tener una “función hash reversible” más de lo que puede tener un pez alérgico al agua.
Posiblemente desee una función hash que, para la mayoría de las personas, es una función hash criptográfica con todas sus propiedades, pero que también incluye algún tipo de trampilla que permite revertirla. Si sabes algún secreto específico. este tipo de cosas podría existen pero requieren matemáticas, como la criptografía asimétrica. No estoy al tanto de tal construcción en este momento, pero es posible que uno pueda manipular algo basado en un módulo RSA, o tal vez una curva elíptica con coordenadas tomadas módulo un módulo RSA (no tengo un diseño preciso en mente, pero Tengo intuición que se puede hacer de esa manera).
Incluso un hash no criptográfico generalmente no se puede revertir (independientemente de otras propiedades especiales de los hash criptográficos, como la resistencia a la colisión/preimagen). La razón por la que normalmente no es posible es porque simplemente no tienes suficiente información.
Una función hash (generalmente) se vuelve N
bits de entrada en M
bits de salida, donde M
es una pequeña constante y la mayor parte del tiempo N > M
es true. Por supuesto N
no necesita ser mayor que M
, es perfectamente posible generar, por ejemplo, un hash SHA a partir de un solo byte, pero por lo general el mensaje hash es más largo (a menudo mucho más largo) que el valor hash.
Eso significa ni más ni menos que para revertir el hash y restaurar el mensaje original, tendría que usar magia de adivinación para completar la información que falta. Hay 2Nuevo Méjico soluciones, y cada una de ellas es tan correcta como cualquier otra.
Entonces, si hash, por ejemplo, un 36-byte string con SHA e intenta revertir esto, hay 2128 soluciones, todas igualmente correctas.
Si se sabe que la entrada tiene ciertas propiedades conocidas (como comenzar con una secuencia conocida, como From:
, o una entropía particularmente baja), es posible que pueda descartar la mayoría de las soluciones y eventualmente encontrar un texto sin formato plausible, tal vez incluso el correcto, pero esto no es trivial, y nunca puede probar que tiene el correcto, a menos que ya lo supieras antes o tengas otra forma de verificación.
Algunos algoritmos hash, como los CRC (como mencioné anteriormente) son reversibles. Ver este documento para un enfoque para hacer esto. (Los CRC son rápidos de calcular e ideales para proteger los datos de la corrupción donde no hay requisitos de seguridad).
El diseño de hashes criptográficamente seguros tiene como objetivo garantizar que no exista tal atajo y que encontrar una coincidencia de hash requiera una búsqueda completa del espacio de claves.
Comentarios y calificaciones del tutorial
Si tienes algún titubeo o forma de perfeccionar nuestro post te invitamos realizar una ilustración y con mucho gusto lo analizaremos.