¿GnuPG usa cifrado de clave pública simétrica + para archivos grandes?

6

Recientemente, tengo la necesidad de cifrar algunos archivos grandes. Tengo la opción de usar la utilidad de línea de comandos OpenSSL, sin embargo, prefiero usar GnuPG.

  1. ¿Cómo funciona GnuPG bajo el capó con la opción --encrypt ? ¿Genera primero una clave simétrica, luego la cifra con una clave pública? ¿O es solo un cifrado asimétrico, que tiene un alto rendimiento?

  2. Si primero genera una clave simétrica, que luego se encripta usando la clave pública más tarde (asimétrica), ¿qué algoritmo usa para cifrar los datos de manera simétrica?

El método de cifrado que pregunto (cifrado simétrico + asimétrico) a veces se denomina "cifrado híbrido" o con el uso de la "clave de sesión".

No he encontrado esa información en ninguna parte y es un dolor buscar en el código.

    
pregunta Mike Cors 14.06.2017 - 21:49
fuente

2 respuestas

6

OpenPGP siempre aplica el cifrado híbrido (sin importar qué tan pequeño sea el archivo / mensaje), por lo tanto, encripta el mensaje usando un cifrado simétrico y una clave de sesión, que de nuevo se encripta usando una o más claves públicas y criptografía asimétrica (una para cada destinatario ). De hecho, también se puede usar de nuevo el cifrado simétrico para la clave de sesión, si también agrega una frase de contraseña (puede cifrar combinando una frase de contraseña y las claves públicas al mismo tiempo, de manera que una frase de contraseña o la clave privada coincidente pueden descifrar el mensaje) ).

La estructura (muy simplificada) de un mensaje OpenPGP es más o menos

No hay diferencia entre encriptar archivos y mensajes en OpenPGP, tal vez aparte de los mensajes que no tienen un nombre de archivo adjunto. Los paquetes y algoritmos utilizados son exactamente los mismos.

Se discuten los algoritmos utilizados es un poco más complicado y depende de la versión de GnuPG, las preferencias establecidas en el cifrado de la computadora y las preferencias establecidas por el propietario de la clave del destinatario. La forma fácil de determinar qué se usa es ejecutar gpg --list-packets , que proporciona la estructura completa del paquete (la lectura del RFC 4880 ayuda a comprender la salida, y aprenderá mucho sobre cómo funciona OpenPGP detrás de escena), a menudo agregando uno o dos Las opciones de -v son suficientes y proporcionan un resultado textual más fácil de leer y entender.

    
respondido por el Jens Erat 14.06.2017 - 22:37
fuente
1

Esto es "cifrado híbrido".

El formato del archivo se llama "OpenPGP" y se describe en RFC 4880 . Es una estructura con subelementos llamados "paquetes". El cifrado masivo de datos utiliza cifrado simétrico , mientras que la clave simétrica se cifraría con la clave pública asimétrica del destinatario ( RSA, ElGamal ...) en un paquete de clave de sesión cifrada de clave pública .

Este esquema permite un cifrado eficiente con varios destinatarios: los datos se cifran una vez con una clave simétrica, y esa clave se cifra con cada clave pública del destinatario.

    
respondido por el Thomas Pornin 14.06.2017 - 22:10
fuente

Lea otras preguntas en las etiquetas