Respuesta intuitiva
HMAC es un código que permite al destinatario verificar tanto la integridad de los datos como la autenticación del mensaje.
Para ver cómo funciona HMAC, usaré una analogía, supongo que pongo un mensaje secreto en un sobre y se lo envío a Alice y supongo que John quiere interceptarlo. Ahora considere estos tres escenarios
- Puse el mensaje en el sobre con una clave (por ejemplo, contraseña), lo sellé y lo envié. John intercepta mi sobre, lo abre y lee mi mensaje. Este es el problema con la autenticación básica (BA) .
BA: Mensaje + Clave
- El virus Youndoo está en mi PC con Windows 10. Está agregando tantos softwares no deseados como mymemory y DiskP. ¿Cómo elimino todo esto?
- Cómo bloquear una carpeta en mi computadora
- ¿Cuáles son los mejores programas anti-malware?
- ¿Qué es vGrabber? ¿Es seguro para mi computadora?
- Tengo mi PC infectada con el malware myfiles.exe. ¿Qué puedo hacer para eliminarlo?
- Ahora, decido encriptar el mensaje cifrándolo con una clave secreta (puede encontrar más información sobre el cifrado en wikipedia). Ahora el mensaje es un código que solo Alice puede entender. John intercepta el sobre, abre el mensaje y ve tonterías. Sin embargo, supone que el contenido incluye un mensaje y una clave de alguna forma. Debido a las propiedades de las funciones hash, John también puede crear un código válido y enviarlo a Alice como un impostor. Este es el llamado código de autenticación de mensaje (MAC) .
MAC: Mensaje + Tecla -> Hash (Mensaje + Tecla) -> Código Secreto
- Como John puede reproducir el mismo código secreto, quiero ocultar eso también. HMAC toma el “Código secreto” y lo vuelve a codificar para crear otro código de la siguiente manera
HMAC: Mensaje + Tecla -> Hash (Mensaje + Tecla) -> Código Secreto 1 -> Hash (Código Secreto 1 + Tecla) -> Código Secreto 2.
Resulta que John no puede reproducir o leer el Código Secreto 2.
Más información
MAC
Un código de autenticación de mensaje (MAC) resuelve el problema de que alguien abra su sobre y obtenga su información tomando su clave y ejecutándola a través de una función hash, que actúa como una especie de codificador.
Ahora, el hacker abre el sobre interceptado y lee un montón de tonterías que solo el servidor puede descifrar, así que el problema está resuelto, ¿verdad? No del todo, los hackers inteligentes pueden descifrar los MAC.
He aquí por qué: dejar
MAC = H (mensaje | clave)
donde H es la operación hash y | es concatenación H sufre la falla de que es posible agregar datos al mensaje y hacer otro MAC válido sin siquiera saber la clave.
Bueno, podemos tratar de evitar esto haciendo H (clave | mensaje) o H (clave | mensaje | clave), pero resulta que estos métodos tienen fallas similares.
HMAC
El código de autenticación de mensaje de hash con clave (HMAC) resuelve el problema de MAC con la solución
HMAC = H (clave | H (clave | mensaje))
O, en términos de MAC, tenemos HMAC = H (clave | MAC), por lo que simplemente está volviendo a codificar el código de salida MAC con la clave secreta. Ahora, ya no puede crear un MAC válido ya que está enmascarado por una función hash.
La única razón por la que el hack funcionó con MAC es porque el atacante tuvo acceso al par codificado (clave | mensaje) y jugó con él. Con el hash adicional, esta información ya no está disponible.