¿Cuál es la diferencia entre MAC y hash

29

¿Cuál es la diferencia entre los dos algoritmos?
Una diferencia que conozco es que el MAC está codificado y el hash no.

    
pregunta user1157 25.01.2011 - 05:01
fuente

4 respuestas

6

Para hacerlo simple: generalmente un MAC es un valor Hash cifrado con una clave secreta. Por ejemplo, los atacantes pueden falsificar mensajes y calcular un nuevo hash, pero no puede hacerlo si el sistema requiere que el hash esté cifrado con una clave secreta.

    
respondido por el Aleksandr Reznik 25.01.2011 - 16:30
fuente
28

Una función hash criptográfica es una función hash determinista completamente pública que todos pueden calcular sobre entradas arbitrarias. Toma como entrada una secuencia de bits (cualquier secuencia de bits; algunas funciones de hash están formalmente limitadas a entradas de, digamos, menos 2 64 bits, también conocidas como "2 millones de terabytes") y generan valores en un espacio bastante pequeño, generalmente una secuencia de bits con un tamaño fijo (por ejemplo, siempre 160 bits con la función hash estándar SHA-1 ). Las buenas funciones de hash criptográficas respetan algunas condiciones que se reducen, de manera informal, a que combinan los datos de entrada tan a fondo que no podemos resolverlos posteriormente.

Un código de autenticación de mensaje es un algoritmo que toma como entrada un mensaje y una clave secreta y produce una salida de tamaño fijo que puede verificarse posteriormente para que coincida con el mensaje; La verificación también requiere la misma clave secreta. Contrariamente a las funciones hash donde todo se conoce y los atacantes luchan contra las matemáticas, MAC tiene sentido en modelos donde hay entidades con conocimiento de un secreto. Lo que esperamos de un buen MAC es imperdonable: no debería ser factible calcular un mensaje de par + valor MAC que se verifique con éxito con una clave dada K sin conocer K exactamente y en su totalidad.

Las funciones hash y MAC son, por lo tanto, distintos tipos de algoritmos con propiedades distintas y se utilizan en situaciones realmente distintas.

Algunos algoritmos MAC (pero ciertamente no todos) pueden considerarse como "funciones hash con una tecla", pero esta es una vista restrictiva. HMAC es una conocida construcción de MAC, que a su vez se basa en una función de hash subyacente de forma inteligente. De hecho, las propiedades de seguridad y los modelos para las funciones hash y MAC son lo suficientemente diferentes entre sí como para que la combinación de una función hash y una clave no necesariamente produzcan una MAC segura, incluso si la función hash es segura (ver el ataque de extensión de longitud que ilustra ese punto).

Hasta cierto punto, podemos afirmar que un algoritmo MAC que puede operar de manera segura sin un IV debe exhibir algunas propiedades similares a hash (esa es la razón por la que me gusta HMAC: sin una IV, es mucho más difícil equivocarse al implementarla). Sin embargo, el diablo está en los detalles.

    
respondido por el Thomas Pornin 09.02.2013 - 13:29
fuente
13

Son dos primitivas totalmente diferentes. Un MAC se utiliza para la autenticación de mensajes, y es una primitiva con clave simétrica. Una función hash se puede usar para muchos propósitos y no tiene una entrada clave especial. MAC es un acrónimo de "código de autenticación de mensaje".

No se confunda por el hecho de que algunos algoritmos MAC (por ejemplo, SHA1-HMAC) funcionan mediante el uso de una función de hash como una subrutina. Son bestias muy diferentes.

  • Algunos ejemplos de algoritmos MAC: CMAC, SHA1-HMAC, MD5-HMAC, UMAC, Poly1305-AES.
  • Algunos ejemplos de funciones hash criptográficas: SHA256, SHA1, MD5.
respondido por el D.W. 26.01.2011 - 07:03
fuente
1

Encontré esto en el punto de respuesta de otro foro.

Estos tipos de primitiva criptográfica se pueden distinguir por los objetivos de seguridad que cumplen (en el protocolo simple de "adjuntar a un mensaje"):

Integridad: ¿Puede el destinatario estar seguro de que el mensaje no se ha modificado accidentalmente?

Autenticación: ¿Puede el destinatario estar seguro de que el mensaje se origina en el remitente?

No repudio: Si el destinatario pasa el mensaje y la prueba a un tercero, ¿puede el tercero confiar en que el mensaje se originó en el remitente? (Tenga en cuenta que estoy hablando de no repudio en el sentido criptográfico, no en el sentido legal). También es importante esta pregunta:

Claves: ¿La primitiva requiere una clave secreta compartida o pares de llaves público-privadas? Creo que la respuesta corta se explica mejor con una tabla:

Cryptographic primitive | Hash |    MAC    | Digital
Security Goal           |      |           | signature
------------------------+------+-----------+-------------
Integrity               |  Yes |    Yes    |   Yes
Authentication          |  No  |    Yes    |   Yes
Non-repudiation         |  No  |    No     |   Yes
------------------------+------+-----------+-------------
Kind of keys            | none | symmetric | asymmetric
                        |      |    keys   |    keys

Recuerde que la autenticación sin confianza en las claves utilizadas es inútil. Para las firmas digitales, un destinatario debe estar seguro de que la clave de verificación realmente pertenece al remitente. Para los MAC, un destinatario debe estar seguro de que la clave simétrica compartida solo se ha compartido con el remitente.

Haga clic aquí para obtener más información

    
respondido por el kayle 15.06.2016 - 13:35
fuente

Lea otras preguntas en las etiquetas