mecanismo de encriptación

0

Quiero enviar datos a través de Internet de forma segura. Para eso, estoy usando una clave pública del receptor para cifrar los datos. En este caso, si un intruso en la red modifica los datos, como colocar los bits girando, ¿puedo descifrar los datos con éxito?

Y también estoy enviando datos a través de la red todo el tiempo. Si el intruso modifica los datos como mencioné en el método anterior, ¿cómo puedo enviarlos de forma segura?

Además, ¿este caso es aplicable a todo el cifrado simétrico?

    
pregunta user45475 26.07.2014 - 07:54
fuente

2 respuestas

1

Hablando sobre el cifrado en general, sin limitarlo a RSA, si un hombre en el medio modifica un mensaje cifrado, el mensaje no se descifra como el mismo mensaje que envió. Realmente depende del algoritmo de cifrado utilizado. Por ejemplo, si se usó un cifrado de bloque, solo el bloque con los datos alterados no podrá descifrar correctamente, el resto de los bloques se descifrarán bien, aunque no hay forma de saber qué se modificó. Otros tipos de cifrado simplemente no descifrarían un mensaje si se modificara un byte.

Dicho esto, el propósito principal del cifrado es proporcionar confidencialidad, ya que se utiliza para garantizar que la conversación entre usted y la otra parte no pueda ser interceptada ni leída por nadie más. Lo que parece que está pidiendo es una forma de asegurarse de que los datos que envió no se modificaron en tránsito. El cifrado puede ayudar con eso, desde el hashing básico simple hasta la utilización de DSA (algoritmo de firma digital). Si toma un hash de su mensaje, coloque el hash al final de su mensaje y lo cifrará todo, cuando el receptor reciba el mensaje y lo desencripta, puede volver a imprimir el mensaje y verificarlo con el hash proporcionado. Si son iguales, pueden decir casi con certeza que el mensaje no se modificó durante el tránsito.

Nota al margen: el RSA es lento y, por lo general, se reserva para usos de mensajes pequeños, como intercambiar una clave simétrica o "firmar" un hash de un mensaje. Normalmente no se usa para cifrar mensajes grandes.

    
respondido por el Sardoc 26.07.2014 - 08:16
fuente
1

Como regla general, el cifrado proporciona confidencialidad , no integridad . Dependiendo del algoritmo, el atacante puede tener más o menos control sobre lo que aparecerá después del descifrado.

En cualquier caso, estamos hablando de RSA, en el que el cifrado utiliza la clave pública del destinatario. Como su nombre lo indica, la clave pública es pública (y mantenerla en secreto puede ser difícil). Por lo tanto, un atacante puede intentar crear un elemento de datos por sí mismo, cifrarlo con la clave RSA del destinatario y enviarlo como si proviniera del cliente original. Si desea protegerse contra eso, entonces necesita alguna forma de distinguir un mensaje enviado por el remitente legítimo, de un mensaje falso enviado por el atacante. Esto requiere autenticación .

En su mayoría, existen dos métodos mediante los cuales puede lograr ese tipo de autenticación, y ambos se basan en los protocolos y el software existentes (y eso es algo muy bueno, porque implementar su propio criptografía es un mala idea que ha inducido repetidamente el desastre):

  1. Asegúrese de que los remitentes también posean pares de claves públicas / privadas, y el remitente signos el mensaje que envía. Al verificar la firma, el destinatario puede asegurarse de que el mensaje recibido sea el correcto, exacto y correcto hasta el último bit. Este es el modelo de "correo electrónico firmado", por lo que apunta al estándar OpenPGP . Las implementaciones de soporte están disponibles (por ejemplo, GnuPG ).

  2. Establezca un túnel seguro entre el remitente y el destinatario. Dentro de ese túnel, el destinatario autentica al remitente (por ejemplo, con una contraseña); luego el cliente envía el mensaje dentro del túnel. El túnel utiliza la criptografía para mantener su integridad incluso contra los atacantes activos. Este es el modelo Web / HTTPS, el túnel es SSL / TLS . El código de soporte SSL está ampliamente disponible tanto en el software del cliente como del servidor, y también existen bibliotecas independientes (por ejemplo, OpenSSL ).

respondido por el Thomas Pornin 28.07.2014 - 17:29
fuente

Lea otras preguntas en las etiquetas