¿Cuál es la principal diferencia entre los Códigos de autenticación de mensajes (MAC) y la función hash?
¿Hay alguna diferencia con respecto a sus dominios de uso?
¿Cuál es la principal diferencia entre los Códigos de autenticación de mensajes (MAC) y la función hash?
¿Hay alguna diferencia con respecto a sus dominios de uso?
La diferencia principal entre hash y MAC es que cualquiera puede calcular el primero, pero solo aquellos con la clave secreta pueden calcular el último. Por ejemplo, en el protocolo HTTPS, se establece una clave compartida entre el servidor y el cliente, y con esa clave, se puede calcular un MAC sobre los datos transferidos. Nadie más puede calcular el MAC por sí mismo y, por lo tanto, no pueden modificar los datos sin ser detectados. Supongamos que HTTPS usa SHA256 en su lugar, entonces cualquiera puede simplemente inyectar sus propios datos y el hash correspondiente. El hash solo sería útil para defenderse contra la corrupción accidental.
MAC proporciona integridad de datos y autenticación
Las funciones hash solo toman el texto sin formato en sí mismo
MAC es un algoritmo que se basa en una clave privada secreta (para lograr la autenticación, esta misma clave también se usa para la verificación) además de un mensaje.
Las salidas de ambos algoritmos son de un tamaño fijo.
Un ejemplo de cada uno:
Un código de autenticación de mensaje (MAC), como su nombre indica, se usa para autenticar un mensaje, es decir, para demostrar a un destinatario que el mensaje fue generado por alguien que conocía una determinada clave secreta (compartida por el destinatario).
En términos de uso, * los MAC son similares a firmas digitales ; La principal diferencia es que los MAC son una forma de criptografía simétrica, por lo que requieren que el remitente y el destinatario conozcan la misma clave secreta. Las firmas digitales, por otro lado, utilizan criptografía asimétrica (clave pública) : esto permite al remitente conservar su poseer una clave de firma privada, mientras que le da a otros una clave pública separada que les permite verificar la firma, pero no generar nuevas firmas válidas.
(A veces, la naturaleza simétrica de los MAC puede ser una característica. Por ejemplo, los MAC proporcionan automáticamente autenticación denegable : cualquiera quién puede verificar que MAC también puede falsificarlo. Sin embargo, más comúnmente, la razón para usar MAC en lugar de firmas es que son significativamente más pequeñas, más simples y más rápidas de generar.)
*) Sin embargo, las técnicas criptográficas subyacentes utilizadas para construir MAC y firmas digitales son generalmente muy diferentes.
Una función hash criptográfica , por otro lado, es una forma de asignar mensajes largos a corto (por ejemplo, 128 a 512 bits) cadenas de bits de una manera que se aproxima a un oracle aleatorio . En particular, con una función hash segura, no debería ser factible para nadie:
Mientras que las funciones criptográficas de hash a veces se usan directamente como sumas de comprobación para verificar la integridad de los datos o para verificar la exactitud de una clave o contraseña sin tener que almacenar la clave / contraseña en sí, no están seguras contra la falsificación deliberada: un hash La función no tiene una clave secreta, por lo que cualquier persona puede calcular un hash válido para cualquier mensaje.
Más bien, el uso criptográfico principal de las funciones hash es como bloques de construcción para otros esquemas criptográficos, incluidos MAC y firmas digitales:
La mayoría de los algoritmos de firma digital pueden firmar directamente solo mensajes cortos. Por lo tanto, en la práctica, se utilizan comúnmente al hacer un primer hash del mensaje real en un hash corto y luego firmar el hash.
Un uso muy común para las funciones hash es la construcción HMAC , que permite que un hash sea se utiliza como MAC al combinar la entrada con una clave secreta (de una manera particular) antes de modificarla.
Las funciones de hash también se usan comúnmente para derivación de clave : permiten que varias claves aparentemente aleatorias se deriven de manera determinista a partir de un solo secreto maestro, de una manera que mantiene seguro el secreto maestro incluso si algunas de las subclaves están comprometidas.
En resumen, si bien existen ciertas similitudes técnicas en la forma en que se construyen (algunos) MAC y funciones hash, y si bien hay formas de usar una función hash para implementar un MAC, los casos de uso (directos) para estas dos construcciones son bastante diferentes.
Lea otras preguntas en las etiquetas authentication integrity