¿Cómo hacer cumplir la confidencialidad manteniendo la autenticidad?

1

A continuación se muestra una ilustración del proceso de firma digital.

Según Wikipedia :

  

Una firma digital es un mecanismo de autenticación que permite la   el creador del mensaje para adjuntar un código que actúa como una firma .

Supongamos que el remitente genera private key 1 y public key 1 para generar la firma.

Creo que el remitente básicamente envía el original Data + Certificate (which contains public key 1) + signature al receptor.

Entonces el receptor puede:

  1. extraiga el public key 1 del certificado
  2. use la clave pública 1 para descifrar el hash del mensaje de signature
  3. Use el hash para verificar el original Data .

¿Pero qué pasa si alguien en el medio intercepta el mensaje? Puede hacer todo lo mismo que el receptor. Así se expondrá el original Data . ¿Cómo se previene esto? ¿Se evita utilizando otro par de claves para cifrar el original Data ? Si es así, ¿cómo se entrega la clave pública al receptor sin ser interceptada?

Creo que es peligroso enviar la clave pública junto con el mensaje . Pero incluso si no envía la clave pública junto con el mensaje, el interlocutor puede interceptar la clave pública y conservarla para su uso posterior.

Entonces, ¿cómo mantener la confidencialidad y en un canal público, y que todas las comunicaciones sucedan solo en ese canal?

    
pregunta smwikipedia 05.09.2018 - 04:33
fuente

3 respuestas

2

Este es un mal diagrama. La operación básica no es intrínsecamente errónea, al menos para RSA, pero pensar en firmar como "cifrar" y verificar como "descifrar" conducirá exactamente al tipo de confusión que está expresando aquí. Es mucho mejor pensar de esta manera:

  • Una clave pública se puede usar para dos cosas: cifrar y verificar .
  • Una clave privada se puede usar para dos cosas: descifrar y firmar .

O, equivalentemente, puedes decir lo siguiente:

  • Puede usar su clave privada para descifrar un mensaje que alguien haya cifrado con su clave pública.
  • Puede usar su clave privada para firmar un mensaje, de modo que cualquier persona que tenga su clave pública pueda verificar que el mensaje es suyo.
  • Puede enviar su clave pública a todos, para que puedan enviarle mensajes cifrados y verificar sus mensajes.
  • A menos que te estés enviando un mensaje secreto o verificando que en realidad fuiste tú quien escribió un mensaje, nunca usas tu clave pública.

En la pregunta que hiciste, el MitM no necesita descifrar nada, ¡porque el mensaje nunca fue cifrado en absoluto! El mensaje (o, más bien, un hash de él) se firmó, por lo que MitM no puede modificar el mensaje sin romper la firma, pero el mensaje en sí está en texto sin formato.

Si desea tanto cifrar (proporcionar confidencialidad) como firmar (proporcionar autenticidad), necesita su clave privada (para la firma) y el destinatario clave pública (para el cifrado). Es decir, antes de que Alice pueda enviar un mensaje seguro a Bob, no solo necesita generar su propio par de llaves (para firmar), necesita que Bob haya generado su propio par de llaves y (verificadamente) le envió su clave pública (Alice) . Este es el patrón utilizado por numerosos esquemas de mensajería segura, como OpenPGP (incluyendo GPG) y S / MIME (los cuales se centran principalmente en la seguridad de correo electrónico de extremo a extremo).

Otra opción es, por supuesto, cifrar utilizando una clave simétrica que ha intercambiado previamente con el destinatario (una "clave precompartida") y luego generar un código de autenticación de mensaje (MAC) usando esa clave u otra que tenga. También se intercambia. Este MAC puede estar basado en hash (un HMAC, que combina una clave secreta compartida con un algoritmo de hash seguro como un miembro de las familias SHA2 o SHA3), o puede derivarse del cifrado simétrico en sí mismo, como una etiqueta de autenticación. de un cifrado de bloque en modo Galois / contador (GCM). Sin embargo, las claves simétricas no tienen un componente público (nunca es seguro hacer cosas como ponerlas en un certificado público), por lo que el intercambio de claves es un poco más fácil (¡aunque aún es muy costoso!) Cuando se usan claves públicas / privadas (asimétricas) en su lugar.

    
respondido por el CBHacking 05.09.2018 - 09:40
fuente
2
  

¿Se evita usando otro par de claves para cifrar los datos originales?

Sí, puede usar un conjunto de claves para firmar y un conjunto de claves para cifrado.

  

¿Cómo se previene esto? ¿Se evita utilizando otro par de claves para cifrar los datos originales? Si es así, ¿cómo se entrega la clave pública al receptor sin ser interceptada?

El problema de distribución de claves es fundamental. En la práctica, este problema se resuelve utilizando un tercero de confianza llamado Autoridad de Certificación (CA).

La CA es de confianza implícita (porque el fabricante instaló su certificado raíz en su computadora) y la CA puede firmar un certificado de servidor web (por ejemplo, google.com) para probar que el certificado pertenece al servidor web.

A continuación, puede verificar la firma de CA en el certificado. Esto elimina el ataque MITM porque el MITM no puede obtener un certificado firmado por la CA que dice que el MITM es, por ejemplo, google.com.

    
respondido por el hft 05.09.2018 - 05:11
fuente
1

La autenticación es solo una parte de lo que quiere lograr. Para cifrar un mensaje (y así mantener la confidencialidad) a través de un canal público, puede usar algo como clave Diffie-Hellmann intercambio . Tenga en cuenta que este intercambio no tiene autenticación inherente, pero puede lograrlo "firmando" los mensajes utilizados de la forma que mencionó.

    
respondido por el Florian 05.09.2018 - 08:31
fuente

Lea otras preguntas en las etiquetas