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

48

Quiero decir, ¿es solo una cuestión de "qué tan difícil es revertir la función con la tecnología actual"?

¿O hay un concepto matemático o propiedad que los hace diferentes?

Si se trata de "qué tan difícil es revertir la función", ¿es correcto decir que con el progreso de la tecnología, algunas funciones criptográficas de hash dejan de ser criptográficas para ser simplemente funciones de hash? ¿Es esto lo que le pasó a MD5?

    
pregunta edutesoy 17.02.2012 - 10:20
fuente

3 respuestas

56

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

Una función de cifrado criptográfico tiene como objetivo garantizar una serie de propiedades de seguridad. Lo más importante es que es difícil encontrar colisiones o pre-imá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 las colisiones por información no maliciosa. Algunos intentan detectar cambios accidentales en los datos (CRC), otros intentan colocar objetos en diferentes cubos 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 su objetivo era proporcionar seguridad. Pero está roto, y por lo tanto ya no se puede usar como un hash criptográfico. Por otro lado, cuando tienes una función hash no criptográfica, realmente no puedes llamarlo "roto", ya que, en primer lugar, nunca intentó estar seguro.

    
respondido por el CodesInChaos 17.02.2012 - 11:01
fuente
21

Hay algunas propiedades que protegen criptográficamente las funciones hash fuertemente requerido, que no es tan fuertemente requerido para Funciones hash no criptográficamente seguras:

  • resistencia a la preimagen (dado un hash h debe ser difícil encontrar un mensaje m que genere h cuando hash
  • resistencia de colisión débil (dado un mensaje m1 debe ser difícil encontrar un mensaje diferente m2 para que m1 y m2 produzcan el mismo hash)
  • fuerte resistencia a la colisión (debería ser difícil encontrar cualquier mensaje m1 y m2 que produzca el mismo hash)

En esos puntos, ves un montón de difícil , que es una medida cualitativa en lugar de cuantitativa. La mejor respuesta aquí es la factibilidad: 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ómputo crecen exponencialmente de acuerdo con la Ley de Moore, una vez que el teléfono celular puede resolver problemas difíciles).

En general, es una buena práctica suponer que difícil significa que el tiempo para alcanzar algún objetivo está completo en NP. Esto significa que el tiempo requerido para romper el hash aumenta considerablemente a medida que aumenta la longitud del hash.

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

    
respondido por el jupp0r 17.02.2012 - 09:53
fuente
2

Diría que las dos cosas clave que hay que 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 "función hash", la etiqueta simplemente no le dice qué propiedades debe tener esa función. Debe 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 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 estar mejor etiquetado como funciones hash resistentes a la colisión , que son funciones public ("public" = no requiere una clave secreta) que se requieren para tener estas tres propiedades:

  • Segunda resistencia de preimagen: para un valor aleatorio m1 elegido por una parte honesta, es muy costoso para un atacante encontrar cualquier valor m2 ≠ m1 tal que hash(m1) = hash(m2) .
  • Resistencia de preimagen: para un valor aleatorio h elegido por una parte honesta, es muy costoso para un atacante encontrar cualquier valor m tal que hash(m) = h .
  • Resistencia a colisiones: es muy costoso para un atacante encontrar cualquier par de valores m1 ≠ m2 , de manera 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 al oráculo aleatorio: Este es casi imposible de explicar brevemente, pero no lo digamos: es muy costoso para un atacante encontrar correlaciones no aleatorias entre las salidas de los insumos que elija. .

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

    
respondido por el Luis Casillas 14.09.2017 - 01:52
fuente

Lea otras preguntas en las etiquetas