Saltar al contenido

¿Cuál es la diferencia entre una función hash y una función hash criptográfica?

Ya no tienes que investigar más por otras webs porque has llegado al sitio adecuado, poseemos la solución que quieres encontrar pero sin complicaciones.

Solución:

Cada función hash criptográfica es una función hash. Pero no todas las funciones hash son un hash criptográfico.

Una función hash criptográfica tiene como objetivo garantizar una serie de propiedades de seguridad. Lo más importante es que es difícil encontrar colisiones o preimágenes y que la salida parece aleatoria. (Hay algunas propiedades más, y “hard” tiene límites bien definidos en este contexto, pero eso no es importante aquí).

Las funciones hash no criptográficas solo intentan evitar colisiones para entradas no maliciosas. Algunos tienen como objetivo detectar cambios accidentales en los datos (CRC), otros intentan colocar objetos en diferentes depósitos en una tabla hash con la menor cantidad de colisiones posible.

A cambio de garantías más débiles, suelen ser (mucho) más rápidos.

Todavía llamaría a MD5 una función hash criptográfica, ya que tenía como objetivo proporcionar seguridad. Pero está roto y, por lo tanto, ya no se puede utilizar como hash criptográfico. Por otro lado, cuando tiene una función hash no criptográfica, realmente no puede llamarla “rota”, ya que nunca trató de ser segura en primer lugar.

Hay algunas propiedades que las funciones de hash criptográficamente seguras requieren fuertemente, que no son tan necesarias para las funciones de hash no criptográficamente seguras:

  • resistencia a la preimagen (dado un hash h debe ser difícil encontrar un mensaje m que cede h cuando tiene hash
  • Resistencia débil a la colisión (dado un mensaje m1 debe ser difícil encontrar un mensaje diferente m2 de modo que m1 y m2 producir el mismo hash)
  • fuerte resistencia a las colisiones (debería ser difícil encontrar mensajes m1 y m2 que dan el mismo hash)

En esos puntos, ves muchos difícil, que es una medida cualitativa en lugar de cuantitativa. La mejor respuesta aquí es la viabilidad: hay una línea borrosa cuando algo se vuelve factible y esas líneas se mueven con el tiempo (a medida que las capacidades de cálculo crecen exponencialmente de acuerdo con la Ley de Moore, una vez que los problemas difíciles ahora pueden resolverse con su teléfono celular).

En general, es una buena práctica asumir que difícil significa que el tiempo para lograr alguna meta es NP-completo. Esto significa que el tiempo necesario para romper el hash aumenta considerablemente a medida que aumenta la longitud del hash.

Otro punto es que un algoritmo hash criptográficamente seguro puede ser útil en algunas aplicaciones, pero no en otras. Depende del modelo de su atacante, la naturaleza de la información que desea proteger y cosas como los requisitos de rendimiento (como regla general, cuanto mejores son las propiedades criptográficas de un hash, peor es su comportamiento en tiempo de ejecución).

Yo diría que los dos key las cosas para entender aquí son:

  1. El término “función hash” es vago, o más precisamente, polisémico: tiene una “familia” de significados que están estrechamente relacionados pero son distintos. Si alguien etiqueta una función como una “función hash”, la etiqueta simplemente no le dice qué propiedades debe tener esa función. Tienes que examinar el contexto donde se usa el término y los requisitos de ese contexto.
  2. El término “función hash criptográfica” es un nombre poco apropiado: parece una descripción, pero tiene una definición técnica complicada que el término en sí no describe en realidad. En pocas palabras, hay funciones como códigos de autenticación de mensajes (MAC) que a menudo se etiquetan como funciones hash y ofrecen alguna forma de seguridad criptográfica, pero no son “funciones hash criptográficas” en la definición convencional.

El término “función hash criptográfica” se usa convencionalmente para referirse a lo que podría etiquetarse mejor como funciones hash resistentes a colisiones, que son público functions (“public” = no requiere un secreto key) que deben tener estas tres propiedades:

  • Segunda resistencia a la preimagen: Por un valor aleatorio m1 elegido por una parte honesta, es muy costoso para un atacante encontrar algún valor m2 ≠ m1 tal que hash(m1) = hash(m2).
  • Resistencia a la preimagen: Por un valor aleatorio h elegido por una parte honesta, es muy costoso para un atacante encontrar algún valor m tal que hash(m) = h.
  • Resistencia a colisiones: Es muy costoso para un atacante encontrar cualquier par de valores m1 ≠ m2 tal que hash(m1) = hash(m2).

Hay una cuarta propiedad en la que las funciones hash criptográficas más antiguas fallan trivialmente, pero que las más nuevas, como SHA-3 y Blake2, están diseñadas para lograr:

  • Indiferenciabilidad aleatoria de oráculo: Este es casi imposible de explicar brevemente, pero vamos a reducirlo a esto: es muy costoso para un atacante encontrar correlaciones no fortuitas entre las salidas de las entradas de su elección.

La propiedad del oráculo aleatorio (cuando se formula correctamente) implica las tres propiedades anteriores, así como otras adicionales como la ausencia de ataques de extensión de longitud eficientes. (Las extensiones de longitud son la razón más obvia por la que las funciones hash antiguas como SHA-256 y SHA-512 fallan en la propiedad de oráculo aleatorio).

Aquí tienes las reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *