MAC vs cifrado

9

Entiendo la diferencia entre MAC (por ejemplo, hmac_sha256, etc.) y el cifrado simétrico (por ejemplo, rc4, etc.), pero mi pregunta es ¿qué ventaja soluciona MAC que el uso de la encriptación no?

Sé que el MAC se usa para verificar que el mensaje proviene de la fuente deseada y que no se alteró mediante la transmisión mediante el hashing del mensaje con una clave secreta.

Si encripta el mensaje con rc4 (o cualquier otro algoritmo, la fuerza al lado del punto), si esto no logra el mismo resultado, el receptor aún necesitará saber la clave secreta para descifrar el mensaje.

La única diferencia que se me ocurre es que con MAC, el mensaje en sí es texto sin formato, por lo que la autenticación del mensaje es muy rápida. Entonces, ¿el rendimiento es la única diferencia? ¿O es el hecho de que los contenidos del mensaje no son confidenciales y solo desea validar si es genuino o no?

Cualquier información sobre estos dos conceptos sería muy apreciada.

    
pregunta Matthew 11.05.2012 - 01:22
fuente

2 respuestas

12

El cifrado proporciona confidencialidad, un MAC proporciona integridad. El uso del cifrado solo hace que sus mensajes sean vulnerables a un ataque de solo texto cifrado .

Un ejemplo lo hará más claro. Digamos que envías un mensaje que dice:

M = "transfer 100$ to account 591064"

El remitente, con la clave simétrica, puede cifrar el mensaje y enviar E(M) . Nadie debe poder enviar un mensaje válido que no sea el titular de la clave. Tienes la confidencialidad cubierta.

Pero un atacante podría alterar el texto cifrado para que diga algo más cuando se descifre. Obviamente, cuanto más grande sea el mensaje y más estructura tenga, más difícil será llevarlo a la práctica.

Ahora, si usa un MAC junto con el cifrado, podrá detectar cambios en el texto cifrado porque el MAC no se computará. En nuestro ejemplo, si usa la misma clave para cifrado y MAC, puede cambiar su mensaje a:

M = "transfer 100$ to account 591064|a46c0db15acdd36b4e92a82e5dc6c14f"

y encriptarlo, de nuevo enviando E(M) . El hash está cifrado (ese es su MAC), el mensaje está cifrado (por confidencialidad). De esa manera, hace que sea computacionalmente imposible alterar el texto cifrado y generar un mensaje válido, incluso si su mensaje es un byte único y aleatorio.

Elegir el mejor hash, el cifrado y la longitud de la clave es otra historia.

En conclusión:

  • El cifrado no proporciona integridad por sí mismo
  • MAC (integridad) no proporciona confidencialidad por sí misma

A menudo, tiene que combinar primitivas criptográficas para lograr muchas propiedades de seguridad.

    
respondido por el ixe013 11.05.2012 - 04:42
fuente
10

@ ixe013 lo explica bien. El cifrado y los MAC tienen un propósito diferente.

Si necesita integridad, necesita usar un MAC. El cifrado no proporciona integridad.

Si necesita confidencialidad, debe usar el cifrado tanto como un MAC. Podría pensar que el cifrado sería suficiente en este caso (no es necesario un MAC), pero estaría equivocado. Consulte No utilice cifrado sin autenticación de mensajes .

Dicho esto, en la práctica no debes rodar tu propio criptográfico . Eso significa que, entre otras cosas, no debe intentar crear una combinación de primitivas criptográficas para satisfacer las necesidades de su aplicación: no debe pensar en el nivel de algoritmos de cifrado y códigos de autenticación de mensajes. Hacerlo es propenso a errores, y rara vez es necesario. En su lugar, debe usar un sistema criptográfico bien evaluado existente (TLS, GPG, SSH, OpenVPN, IPSec, etc.) para proporcionar un canal de comunicación seguro o un sistema de almacenamiento seguro. Si lo hace, el sistema criptográfico existente se hará cargo de estos detalles por usted. Los criptógrafos han esclavizado estos detalles, por lo que no es necesario.

    
respondido por el D.W. 11.05.2012 - 06:58
fuente

Lea otras preguntas en las etiquetas