AES, RSA y hombre en el medio

0

Por lo tanto, el usuario A tiene un gran texto que debe cifrarse y enviarse al usuario B. El usuario A crea una clave simétrica para AES y cifra los mensajes con esa clave AES. Luego, el usuario A cifra la clave AES con la clave RSA pública del usuario B y las envía al usuario B. El usuario B descifra la clave AES con la clave RSA privada y luego descifra el texto con la clave AES descifrada. Ahora, ¿cómo debe el usuario A firmar el mensaje / clave AES para que el usuario B verifique que el mensaje realmente lo envió? Si el usuario A firma la clave AES cifrada, ¿sería posible que el usuario B descifre la clave AES firmada? con la clave RSA pública del usuario A y luego descifrar la clave AES con su clave RSA privada?

    
pregunta Ivaylo Ivanov 02.08.2017 - 21:46
fuente

2 respuestas

1

La firma utilizando RSA se realiza aplicando primero un hash criptográfico y luego "encriptándolo" con la clave privada del remitente (es decir, A). "Descifrar" la firma utilizando la clave pública del remitente solo se traduce en el valor hash, pero no en la clave AES. Dado que la función hash es unidireccional, la entrada original (es decir, la clave AES) no puede derivarse del valor hash.

En su lugar, la validación de la firma por el destinatario se realiza al volver a calcular el valor hash de la entrada (que se conoce después del descifrado) y luego compararlo con el valor hash devuelto al "descifrar" la firma con la clave pública de el remitente. Si coinciden la firma es válida.

    
respondido por el Steffen Ullrich 02.08.2017 - 22:44
fuente
0

Si el usuario A y el usuario B conocen la misma contraseña utilizada para AES (sin enviarla a través de la red), es suficiente agregar una suma de comprobación al final del mensaje y cifrar [ mensaje + suma de comprobación] . El hombre en el medio no puede descifrar el mensaje sin conocer la clave. Si intenta enviar sus propios datos encriptados con una clave incorrecta (no conoce la clave correcta), el usuario B recibirá un montón de tonterías después de intentar descifrarlos con la clave adecuada y la suma de comprobación obviamente será incorrecta, lo que confirma que el mensaje tiene se ha forjado Por otro lado, si la clave AES se envía a través de una conexión no segura, el cifrado del mensaje no tiene sentido.

Para crear una clave compartida sin acordar de antemano y sin que se pierda la conexión insegura durante el intercambio, se puede utilizar el protocolo de enlace Diffie-Hellman . Ambos usuarios crean un par de claves privadas y públicas para el saludo de Diffie-Hellman. Las claves públicas se firman y envían a través de una conexión no segura. Luego se genera un secreto compartido (busque el saludo de Diffie-Hellman en wikipedie para obtener más información). Básicamente, incluso si todo lo que se envía a través de la conexión es visible para el hombre en el medio, no podrá recuperar el secreto compartido a menos que haya participado en su creación. Y las firmas se asegurarán de que no falsifique el saludo inicial.

Otra forma de crear una conexión segura es firma RSA + . El usuario A encripta el mensaje con la clave pública del usuario B y lo firma (antes o después del cifrado, no importa. Firmar después del cifrado permitiría a la persona en el medio verificar que A es el aughtor, que no es un secreto y permite al usuario B) para eliminar el mensaje falsificado con una firma incorrecta sin tener que descifrarlo primero). Luego se envía [mensaje + firma + suma de comprobación] al usuario B. La suma de comprobación debe agregarse antes de cifrar. El usuario B verifica la firma, descifra el mensaje y verifica la suma de comprobación.

Por lo que dijiste, me atrevería a dar a entender que tienes un malentendido de cómo funciona la firma. La firma no cambia el mensaje. Crea un bloque adicional de datos (la firma). Luego envía mensaje + firma al usuario B. El usuario B combina su clave pública, el mensaje en sí y la firma para verificar.

    
respondido por el MadCake 02.08.2017 - 22:48
fuente

Lea otras preguntas en las etiquetas