tipos resumen porque llaman las informatica funciones explicacion ejemplos criptografia algoritmos algoritmo hash cryptography
submission

resumen - ¿Cómo se diseñan las funciones criptográficas de hash?



porque a las funciones hash se le llaman funciones resumen (7)

Actualmente, se está ejecutando la competencia de funciones hash del NIST con el objetivo de encontrar un reemplazo para las funciones más antiguas de SHA-1 y SHA-2.
Puede obtener informes sobre todos los algoritmos que participan allí (consulte here para las presentaciones de la segunda ronda). Se describen muchas funciones hash diferentes, así como sus fortalezas y problemas.

Después de reading acerca de por qué las funciones hash unidireccionales son unidireccionales, me gustaría saber cómo diseñar una función hash. Sí, sé que es una mala idea no usar una función hash probada y probada, pero todavía me gustaría saber qué importa en el diseño y cómo es el proceso de diseño.

Estoy familiarizado con los cifrados de la red Feistel, pero estos son necesariamente reversibles, lo que es horrible para un hash criptográfico. ¿Hay algún tipo de construcción que sea bien utilizada en el hash criptográfico? ¿Algo que lo hace unidireccional?



En primer lugar, debe leer el capítulo 9 de "El manual" . El nombre completo de este libro es "El manual de criptografía aplicada".

A continuación, te recomiendo que mires el análisis de las funciones hash existentes. Por ejemplo, Skein es uno de los competidores SHA-3 más fuertes. La submission de Skien contiene una gran cantidad de documentación sobre cómo se construye y se proven que es segura.


La "unidireccional" de una función hash no es algo fácil de calcular. En general, las funciones hash se muestran de buena calidad al resistir el escrutinio de la comunidad criptográfica durante un período prolongado. Podría echar un vistazo a algunos de los ataques publicados en las funciones hash existentes y tratar de diseñar una función hash que los evite específicamente, pero incluso entonces puede resultar débil ante otro nuevo ataque.

Sin embargo, para un muy buen punto de partida, recomiendo leer sobre la competencia NIST (ver la respuesta de tanascius).


La función hash y otras funciones criptográficas se crean con conceptos matemáticos muy sólidos. La mayoría de ellos están construidos, por lo que no es necesariamente incapaz de revertirlos o descifrarlos, pero, dependiendo del rendimiento de las computadoras actuales, no es factible hacerlo. Esa fue la razón por la cual los algoritmos certificados previamente de DES y MD5 ahora están obsoletos. Dicho esto, le sugiero que lea primero los conceptos matemáticos relacionados con las funciones criptográficas de hash. ¿Cuáles? Eso lo dejaría para alguien que tenga más conocimientos que yo :)



Un cifrado se puede convertir en una función hash simplemente descartando parte del resultado. Si bien esa no es la forma más rápida de producir una función hash, y ciertamente no funcionará en los casos en que uno pueda necesitar una función hash biyectiva (por ejemplo, una función que tomará 128 bits de entrada y producirá 128 bits de salida, como que cada valor de salida posible ocurrirá para alguna entrada) debería funcionar adecuadamente para muchos propósitos.

El único tipo de función unidireccional biyectiva que he podido formular por mi cuenta sería (ejemplo dado para 128-> 128):

  1. Asigne una entrada de todos los ceros a una salida de todos los ceros.
  2. Para cualquier otra entrada, cargue un registro de desplazamiento de retroalimentación lineal con todos los 1, interprete la entrada como un conteo de desplazamiento de 128 bits y ejecute la palanca de cambios para tantos conteos (tenga en cuenta que esto no requiere realmente hacer 2 ^ 128 pasos).

Revertir el hash unidireccional requeriría resolver el problema de registro discreto. Para grandes cantidades de bits, ese es realmente un problema difícil, pero desafortunadamente creo que hay enfoques para resolverlo con n = 128. Sospecho que usar una base numérica mayor que 2, y usar una operación fundamental que no sea xor, podría mejorar la fuerza del enfoque, pero no tengo idea de cómo analizar dichos ajustes para asegurar que la función sea biyectiva.