Funciones hash: ¿Cuál es una explicación intuitiva del algoritmo HMAC?

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

  • 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.

He hecho este video con la esperanza de que te ayude a entender lo que hace HMAC.

HMAC (código de autenticación de mensaje de hash con clave) es una “Firma” calculada que a menudo se envía junto con algunos datos. El HMAC se utiliza para verificar (autenticar) que los datos no han sido alterados o reemplazados. ¡Aquí hay una explicación de video de metáfora!

Vas a enviar un paquete a

Esto es lo que puede hacer: antes de enviarle el paquete, coloque otra copia de la fotografía dentro de una pequeña caja cerrada. Guarda la llave. Coloca la pequeña caja cerrada dentro del paquete junto con la fotografía original que eres

La belleza aquí es que no necesitas “recordar” nada sobre lo que originalmente le enviaste; todo lo que necesita para garantizar la legitimidad de la foto vuelve dentro del paquete.

En el ejemplo anterior, el pequeño cuadro bloqueado representa un HMAC. Su clave es la clave de HMAC. La fotografía son los datos a los que está aplicando el HMAC.

Las tortugas afiladas

Debido a que la mayoría de las funciones hash son iterativas, en realidad no es tan difícil agregar datos adicionales al mensaje y producir un código de autenticación válido (en relación con la edición del mensaje original y la producción de un código de autenticación válido). Rehashing el hash significa que esta forma de ataque ya no funciona porque no sabes cuál es el hash original para la clave || el valor del mensaje fue.

Primero, anteponga una clave XORed con un patrón a los datos, luego haga un hash. Ahora agregue la clave XORed con un patrón muy diferente a este hash y hash nuevamente. Ahora tenemos un HMAC listo.

More Interesting

¿Qué aplicaciones / sistemas tenían en común Merck y Maersk que explicarían por qué ambos fueron tan afectados en el incidente de malware del 27 de junio?

Cómo obtener una certificación en seguridad de IoT

En 100 años, ¿crees que los niños israelíes se avergonzarán de lo que hicieron sus antepasados ​​en las últimas décadas como los alemanes se avergüenzan de sus antepasados ​​nazis?

Cómo tener privacidad digital donde pueda estar seguro de que se mantiene privada

Ya instalé Windows XP y deseo migrar a SO elemental, así que descargué el archivo ISO de SO elemental e hice un USB de arranque con UNetbootin, y también probé otros. ¿Por qué es cuando entro en la instalación en el arranque después de un corto tiempo que se cuelga en el escritorio del sistema operativo primario y luego no responde la instalación?

¿Es ilegal enviar un virus por correo electrónico a la computadora de alguien en California?

¿Cuál es la probabilidad de que alguien tenga correos electrónicos eliminados de Hillary Clinton?

Ciberguerra: ¿Alguien ha resultado herido o muerto como resultado de un ciberataque?

¿Qué es el ataque de arranque en frío, cómo sucede y cómo evitarlos?

¿Cómo funciona el cifrado?

¿Cuál es el mejor libro fácil de entender para enseñar seguridad de la información?

¿Cómo se puede ejecutar código remoto a través de Bash? ¿Cómo puedo aprovechar la vulnerabilidad de ejecución remota de código de Bash?

¿Existe algún software antivirus gratuito mejor que Norton?

¿A través de qué lenguaje informático podemos crear virus?

Cómo mejorar mi seguridad en línea