Al firmar un correo electrónico con GPG, ¿cómo funciona la verificación por parte del receptor?

6

Uso GPG para firmar mis correos electrónicos salientes.

Entiendo cómo funciona cuando cifro el correo para enviarlo a otra persona. Entonces necesito su clave pública, cifrada con eso, y solo él puede desencriptarla usando su clave privada.

Lo que entiendo de firmar mi correo saliente, uso mi clave privada para hacer esto. El receptor no necesita usar GPG (para leer el correo), y no necesito su clave pública. Supongo que mi clave pública es utilizada por el receptor para verificar si la firma es legítima, pero tal vez no entiendo bien.

¿Cómo pueden usar mi clave pública para verificar que mi firma sea válida?

    
pregunta SPRBRN 25.02.2015 - 12:24
fuente

2 respuestas

10

Existe una asociación única entre las claves públicas y privadas. Es decir, si el remitente utiliza una determinada clave privada para firmar un mensaje y usted verifica la firma utilizando el público correspondiente, la verificación de la firma solo tendrá éxito si el mensaje no se ha modificado .¹

El procedimiento de verificación y la naturaleza de la asociación entre lo público y lo privado varían con el sistema de cifrado que está considerando (RSA, DSA, etc.), pero la declaración anterior es válida para cualquier esquema asimétrico.

Lo que realmente importa es que el remitente es el único que puede producir una firma válida porque él / ella es el único que conoce lo privado, pero cualquiera conoce al público, por lo que cualquiera puede verificar la firma .

Al firmar, GPG agrega un token al mensaje de texto que se puede usar para verificar que el mensaje no se haya modificado en tránsito: esa es la firma. No necesita GPG para leer el mensaje porque el texto en sí no está cifrado , solo hay un token adicional, que puede ser un blob codificado con radix64 al final del mensaje o un texto archivo adjunto con una estructura similar.

GPG no firma directamente el mensaje², firma un hash criptográfico (SHA-1 o SHA-2 generalmente). Lo que sucede después de la verificación es que la firma se verifica mediante la clave pública del remitente para asegurarse de que el hash recibido realmente fue originado por el remitente. Si el hash calculado por el remitente se considera auténtico, se compara con el hash calculado por el destinatario. Si ambas fases tienen éxito, entonces el mensaje está correctamente firmado.

[¹] en realidad, existe una posibilidad teórica de romper esta regla al generar un llamado hash collision . Es decir, un mensaje diferente con el mismo hash (ver el último párrafo). Se han generado colisiones para MD5, mientras que encontrar una para SHA-3, SHA-2 y SHA-1 se considera inviable, aunque el margen de seguridad sobre el último se está reduciendo tanto que es recomendable dejar de usarlo ahora.

[²] para algunos sistemas criptográficos, como DSA, la firma de un hash es la única posibilidad.

    
respondido por el Stefano Sanfilippo 25.02.2015 - 13:27
fuente
1

La firma de datos es para demostrarle a otra persona que se originó en usted. Al firmar con su clave privada (que solo usted tiene) usted se asegura de que cualquier persona con su clave pública pueda verificar el mensaje. No usas su clave pública, pero tienen la tuya.

La firma en sí misma es un hash criptográfico del mensaje completo que se firma con su clave privada. Cualquier cambio en el mensaje generaría un hash incorrecto. Dado que el remitente debe ser el único con la clave privada, cualquiera que esté en medio de la comunicación no debe poder reproducir esa firma. El receptor utiliza calcula su propio hash, luego lo compara con el que fue firmado.

Esto es seguro porque si el mensaje se modificara y firmara con una clave privada diferente, el receptor aún intentaría usar la clave pública del remitente original para descifrar. Esto generaría un valor incorrecto y el mensaje no se verificará.

    
respondido por el RoraΖ 25.02.2015 - 13:27
fuente

Lea otras preguntas en las etiquetas