Pregunta sobre MAC y encriptación

3

Estaba leyendo la respuesta elegida a la siguiente pregunta -

"MAC vs cifrado"

Dicen que solo usando el cifrado, "un atacante podría alterar el texto cifrado para que diga algo más cuando se descifre", y luego dice que al escribir el mensaje, agregándolo al final y cifrando todo el contenido, esto proporciona integridad. / p>

Mi pregunta es, si el atacante puede alterar el texto cifrado incluso cuando está encerrado, ¿no puede el atacante también alterar el hash adjunto al final del mensaje para que coincida con el texto modificado?

Gracias de antemano.

    
pregunta RJSmith92 18.10.2015 - 08:17
fuente

3 respuestas

2

El atacante puede modificar ciertos bits del texto sin formato (modificando el texto cifrado), pero el atacante no sabe no cuál fue originalmente el texto sin formato completo. Por lo tanto, el atacante no sabe qué bits del hash cambiarán debido a sus alteraciones del texto sin formato. Para modificar correctamente el hash y el texto plano, el atacante debería saber la diferencia entre el hash original y el hash del texto simple modificado. El atacante no conoce esta diferencia, lo que evita que el atacante cambiando el hash para que coincida con el texto sin formato modificado.

Ahora, todo esto se basa en la idea de que el destinatario debe descifrar los datos y luego verificar su autenticidad. Si bien se puede hacer esto, también es posible proteger la integridad del texto cifrado , lo que permite al destinatario verificar que el mensaje no haya sido manipulado antes de intentar descifrarlo. Obviamente, solo el hash del texto cifrado y su adición al final no funciona, porque el atacante podría modificar ese hash. En cambio, hay dos formas de hacer esto, según el tipo de criptografía en uso. Ambos están basados en hash, , pero tienen una seguridad adicional más allá del simple hash:

  • Si usa criptografía asimétrica, como la forma habitual de usar HTTPS o SSH, entonces firma digital el hash. Sin entrar en las matemáticas de cómo funcionan los esquemas de firma digital, la idea básica es que tiene dos claves: una clave privada que solo usted conoce y una clave pública de la que todos pueden obtener una copia. La clave privada se utiliza para firmar el hash, y la clave pública se utiliza para verificar la firma. Debido a que el atacante no tiene su clave privada, si modifican el mensaje y vuelven a calcular el hash, no podrán volver a crear una firma que pueda verificarse con su clave pública. Por lo tanto, cualquier persona podrá usar su clave pública para indicar que el mensaje que recibieron no es el que usted firmó.
  • Si usa solo criptografía simétrica, como un archivo .ZIP cifrado o la mayoría de las otras formas de cifrado de contraseña, creará un Hash Código de autenticación de mensaje basado en una base (o HMAC ). Nuevamente, sin entrar en detalles, la idea de un HMAC es que cuando se calcula el hash del mensaje, también se adhieren algunos datos adicionales que se basan en una clave (que podría ser la clave utilizada para cifrar el mensaje). podría ser otro) que también tiene el destinatario del mensaje cifrado. Esta información adicional agregada a la entrada de la función hash modifica la salida (el resumen ) de tal manera que si un atacante modifica el mensaje, el atacante no podrá averiguar qué debería hacer el nuevo HMAC. porque el atacante no conoce la clave y, por lo tanto, cuando el destinatario la usa para calcular el HMAC del mensaje modificado, no coincidirá y el destinatario sabrá que el mensaje fue manipulado.
respondido por el CBHacking 18.10.2015 - 08:45
fuente
2

Quizás una vista no tan técnica ayude a entender el problema ... Solo piense en un sobre que contenga el mensaje y el hashsum. Puede perforar el sobre y voltear ciertos bits del mensaje. También puede perforar donde está el hashsum y cambiar los bits de él. Sin embargo, como no puede mirar dentro del sobre, tiene (casi) ninguna posibilidad de voltear el hashsum de manera que se obtenga el valor correcto para el mensaje modificado.

Cuando el receptor abre el sobre, ve un mensaje y un hashsum que no coinciden: una clara indicación de que se modificó algo, el mensaje, la suma de comprobación o ambos.

Editar:

Ok, más técnico ... :-)

Considere el siguiente mensaje M, que transfiero en texto sin formato.

  

Por favor transfiera 100 $ a mi cuenta.

su hash (SHA1) es 5f7e22d270ca9da68543e3f97f30f1859e20a88a. El MAC resultante es

  

f56c10e4264a5173aa97660f7438fc0e12618d1e

Este MAC es el hashsum que cifré con una contraseña secreta. Puede modificar libremente el mensaje y el MAC, pero no puede descubrir cómo modificar el MAC para que, cuando lo descifre, entregue el hashsum correcto, que coincida con su mensaje modificado. En consecuencia, cuando descifre, me daré cuenta de que el hashsum no coincide con el mensaje y se modificó algo.

De eso se trata un MAC, detectar modificaciones.

    
respondido por el fr00tyl00p 18.10.2015 - 13:38
fuente
1

Al crear un HMAC (Código de autenticación de mensajes hash), el mensaje es solo una parte del hash. Tiene que haber una clave también. Esta clave es conocida solo por el servidor.

En python:

import hmac
from hashlib import sha256

msg = "The cow jumped over the moon."
key = "My key."

print hmac.HMAC(key, msg, sha256).hexdigest()

Sin la clave, cualquiera podría modificar el hash. Por eso es importante tener una llave fuerte. Una vez que se filtra o adivina la clave, el HMAC se vuelve inútil.

    
respondido por el user79537 18.10.2015 - 08:40
fuente

Lea otras preguntas en las etiquetas