Criptografía: ¿Cuál es la diferencia entre el resumen del mensaje y el código de autenticación del mensaje?

Message Digest es como un diccionario para los hash que se generarán, mientras que el código de autenticación de mensajes (MAC) genera un valor hash del mensaje sin procesar utilizando el resumen del mensaje y luego lo concatena con datos sin procesar para proporcionar integridad de datos a través de la red.

Creo que estarías totalmente confundido con la línea anterior. Tomemos un ejemplo para explicarlo mejor.

Digamos que reemplazo cualquier alfabeto con 2 incrementos en serie que:

A = C
B = D
C = E,
D = F
E = G, y así sucesivamente

Lo anterior hará que mi mensaje se compense (diccionario que usaré en el futuro) para mi texto. Espero que esto tenga sentido ahora para el resumen del mensaje

Ahora digamos que mi mensaje fue

ACE TU EXAMEN

Si aplico mi resumen en este texto, esto se convertiría en

CEG AQWT GZCO

El valor es el hash de mi texto que no puede ser fácilmente comprensible a menos que conozca la lógica detrás de su generación.

Ahora, cuando quiero enviar el texto a mi compañero que está sentado al otro lado de la red y quiero que se asegure de que no haya alteración de los datos originales, le enviaré el texto original con el hash

Entonces él recibiría

ACE THE EXAM CEG AQWT GZCO

Lo anterior se conoce como MAC.

¿Cómo es eso útil?

En el otro extremo mi compañero recibe

FALLAR EL EXAMEN CEG AQWT GZCO

Podrá comprender que el mensaje original está alterado, ya que trataría de generar el Hash localmente utilizando la misma lógica y obtendría

HCKN WJG GZCO que no coincide con CEG AQWT GZCO que fue enviado por el remitente. Esto ayuda a proteger la integridad de los datos. Espero que esto tenga sentido ahora.

Es posible que tenga dudas de que si el Hacker conoce el código y también cambia el valor HASH. No se preocupe, esta lógica simple que se muestra en el ejemplo tardará al menos algún tiempo en romperse. Piense si la computadora está usando MD5 o SHA 256 (protocolos muy complejos) y eso es con Salt (induciendo algunos números aleatorios al hash), esto sería muy difícil de romper, si no imposible.

Por favor, hágame saber sus comentarios y si se requiere alguna mejora para responder.

El resumen del mensaje simplemente asegura que el mensaje A corresponde al resumen H (A). Esto es suficiente cuando solo desea identificar mensajes o asegurarse de que se transmiten sin error. Sin embargo, en presencia de actores maliciosos, esto se vuelve inútil.

Un atacante podría interceptar el paquete con A y H (A) y reemplazarlo con M y H (M), donde M es su propio mensaje malicioso.

Con un HMAC, como ya han dicho otros, la clave privada del remitente se combina con el Hash del mensaje. Por lo tanto, si Alice envía un mensaje a Bob, y suponiendo, por supuesto, que tanto Alice como Bob hayan intercambiado la clave pública del otro de antemano, Bob puede verificar de inmediato que no solo no se modificó el mensaje (accidental o intencionalmente) sino que también fue Alice. quien envió ese mensaje.

En términos generales, un resumen de mensaje es el resultado de ejecutar una función hash en un mensaje de cualquier longitud. Como su nombre lo indica, un resumen del mensaje es un resumen criptográfico (de longitud fija) de los datos originales expresados ​​en texto claro. Se utiliza un resumen de mensaje para verificar la integridad de un mensaje, es decir, asegurarse de que el mensaje no haya sido alterado durante el intercambio de mensajes entre una parte que envía (por ejemplo, Bob) y una parte que recibe (por ejemplo, Alice). Esto significa que si ejecuta una función hash en el mismo mensaje, el resumen resultante será el mismo.

Nota: Una función hash es unidireccional, es decir, asegura que es computacionalmente imposible revertir el proceso de resumen del mensaje y descubrir los datos originales.

Aquí hay un ejemplo simple en Ruby usando el algoritmo de resumen de mensajes SHA:

requiere ‘digest / sha1’

pone Digest :: SHA1.hexdigest “Este es mi texto”

El resultado hexadecimal que obtendría se vería así:

2a29c5a983236a8f5c0fde5c48b7d15a5cb7d47b

Tenga en cuenta que SHA1 está en desuso por ser demasiado débil (por lo tanto, rompible) y se reemplaza por SHA2 (generalmente una longitud de 256 bits).

Un Código de autenticación de mensaje (MAC), por otro lado, toma un mensaje más una clave secreta como entrada y genera un código de autenticación que garantiza tanto la autenticidad como la integridad del mensaje enviado originalmente.

Por ejemplo, Bob ejecuta un mensaje a través de un algoritmo MAC (por ejemplo, SHA256) usando su clave secreta como entrada para producir una etiqueta de datos MAC. El mensaje y la etiqueta MAC se envían a Alice (posiblemente a través de SSL). Luego, Alice ejecuta el mensaje a través del mismo algoritmo MAC usando la misma clave secreta que la de Bob, produciendo una segunda etiqueta de datos MAC (supongo que Bob y Alice conocen esa clave secreta, pero esa es otra discusión). Finalmente, Alice compara la primera etiqueta MAC recibida en la transmisión con la segunda etiqueta MAC que generó. Si son idénticos, Alice puede asumir con seguridad que (1) el mensaje realmente proviene de Bob (autenticidad) y (2) que el mensaje no fue alterado durante la transmisión (integridad).

Espero que esto ayude.

Supongo que por MAC te estás refiriendo específicamente a MAC que se construyen a partir de funciones hash. La diferencia es que los MAC incluirán algún tipo de clave para la verificación, mientras que para los resúmenes de mensajes, no se implica ninguna clave secreta. Así que, básicamente, en MACs solo concatenas tu clave secreta a la entrada. De esa manera, necesita la clave secreta para verificar / recalcular el resumen. En los resúmenes de mensajes, cualquiera puede volver a calcular y verificar la suma de verificación.