¿Puede un hash salado ser un MAC eficaz?

3

Un HMAC es básicamente un "hash con clave". Solo el mensaje correcto y la clave correcta producirá un resumen de hash particular de manera eficiente.

Hablando conceptualmente, lo mismo se puede decir para un hachís salado; solo el mensaje correcto y el mismo valor de sal producirá un valor hash particular de manera eficiente. De hecho, el algoritmo HMAC es poco más que un hash anidado y salado, donde las sales que aparecen ante el mensaje para cada uno de los dos hashes anidados se basan en una simple derivación de la clave.

Si una verdadera sal, por lo tanto, se mantuviera secreta como una clave (o, de manera equivalente, si se utilizara una clave simétrica secreta compartida como una sal), es lógico que cualquier primitiva hash criptográfica se convierta en una MAC efectiva. p>

Entonces, supongo que dos preguntas siguen naturalmente. Primero, ¿es correcta esa suposición? En segundo lugar, si es así, ¿qué le permite al algoritmo HMAC superar el hash primitivo incorporado, aparte de reducir la velocidad de cálculo a la mitad y agregar un orden de magnitud a la complejidad de fuerza bruta de encontrar un mensaje de preimagen usando una tecla constante (o viceversa)? versa)?

    
pregunta KeithS 22.01.2013 - 21:03
fuente

1 respuesta

7

Si la función hash es una Oráculo aleatorio luego se agrega la concatenación de la clave (su" sal secreta ") y el mensaje es, de hecho, un MAC perfecto (digo" clave "porque si una sal es un dato secreto que coincide con la definición de una clave; usemos el nombre correcto).

Lamentablemente, los oráculos aleatorios no existen realmente ... en cambio, estamos atascados con funciones hash que sabemos que no son oráculos aleatorios, y debemos llevarnos bien con sus peculiaridades. En particular, la función hash de la Merkle – Damgård persuasión (que incluye MD5 , SHA-1, SHA-256 y SHA-512) sufren el ataque de extensión de longitud , que no contradice la básica propiedades que se esperan de una función hash segura (resistencia a preimágenes, segundas preimágenes y colisiones), pero significa que las construcciones de MAC simples tienden a fallar horriblemente.

... Es por eso que se inventó HMAC : con su invocación de hash anidada doble, hace frente a la no aleatoriedad-oracleness de funciones hash MD. No hacemos las dos invocaciones de hash por diversión, sino porque son necesarias para lograr la seguridad adecuada. Permítanme enfatizar el punto importante: diseñar un algoritmo MAC no es tan fácil como puede parecer; no puedes oprimir una función hash y una tecla y esperar lo mejor. Los detalles, como de costumbre, importan.

Si necesita rendimiento con una gran 'P' , del tipo que HMAC no cumpliría, entonces:

  1. Tienes redes muy rápidas o CPU muy lenta.
  2. Hay construcciones MAC más rápidas que no se basan en la función hash existente.
  3. Se te servirá mejor con un modo de encriptación autenticada , asumiendo que también cifras los datos que se MACAN (esto es el escenario más común).
respondido por el Thomas Pornin 22.01.2013 - 21:29
fuente

Lea otras preguntas en las etiquetas