Qué es PGP, por qué importa y cómo usarlo

PGP (Pretty Good Privacy) es una herramienta de cifrado y firma digital que protege la seguridad y autenticidad de los datos. Permite que solo el destinatario pueda leer un mensaje y verificar que proviene del remitente legítimo.
No se limita a correos: PGP también se usa para firmar scripts, binarios y paquetes (gestores como apt, pacman o pkg lo usan para validar autenticidad), verificar descargas y demostrar autoría de archivos.
Además, permite cifrar y descifrar mensajes o archivos, garantizando confidencialidad, integridad y autenticidad en todo el sistema.
En esta guía veremos cómo generar claves desde la terminal, cifrar y firmar mensajes y archivos, y cómo integrarlo en Thunderbird.
Claves asimétricas y cómo funciona PGP
PGP se basa en criptografía de clave pública (asimétrica), que utiliza dos claves relacionadas:
- Clave pública: se comparte para cifrar mensajes o verificar firmas.
- Clave privada: nunca se comparte; sirve para descifrar mensajes y firmar archivos o mensajes.

Funcionamiento práctico
- Cifrado: el remitente usa la clave pública del destinatario; solo la clave privada del destinatario puede descifrarlo.
- Firma digital: el remitente usa su clave privada; cualquiera con la clave pública correspondiente puede verificar la autoría y que no se ha alterado el contenido.
Este sistema garantiza confidencialidad, integridad y autenticidad, y es la base de todos los usos de PGP: correos, archivos, paquetes y descargas.
GNUPG
GnuPG es el agente de PGP que se utiliza en Linux para gestionar cifrado y firmas digitales. Incluye gpg-agent, que mantiene tus claves privadas en memoria y las pone a disposición del sistema, de modo que otras aplicaciones o APIs puedan utilizarlas sin solicitar la contraseña cada vez.
Cuando el agente necesita acceder a una clave privada, utiliza Pinentry para pedir la contraseña de forma segura. Existen varias versiones de Pinentry: para terminal, para entornos GTK o integradas en distintos escritorios, según el entorno en el que trabajes. Con esto listo, ya puedes empezar a crear y gestionar tus claves PGP de forma segura en Linux.
GnuPG suele venir preinstalado en la mayoría de distribuciones Linux, y en los casos en que no lo esté, se puede instalar fácilmente desde los repositorios oficiales con gestores como apt, pacman, dnf o pkg.
Crear un par de claves PGP
Una vez teniendo el paquete GnuPG instalado contaremos de gpg(1) que es el propio programa que usaremos para gestionar todo lo que tenga que ver con PGP.
Para crear las claves será tan sencillo como el proceso que van a ver a continuacion:
|
|
Luego te pedirá la contraseña por pinentry:

Hemos usado ECC con Curve25519 como tipo de clave porque es compatible con la mayoría de sistemas y clientes PGP. Aunque Curve448 ofrece mayor seguridad teórica, aún no tiene tanta compatibilidad y puede dar problemas en algunas herramientas, por eso Curve25519 suele ser la elección práctica para usuarios normales y avanzados.
Hemos elegido que la clave nunca caduque porque, en la práctica, esto facilita mucho la gestión y evita tener que renovar constantemente tus claves, siempre que la protejas bien y no la pierdas.
Con esto ya tienes tu par de claves PGP listo: la clave privada se queda segura bajo tu contraseña y la pública se puede compartir para que otros te envíen mensajes cifrados o verifiquen tus firmas.
Listar claves PGP
Antes de cifrar o firmar, conviene ver qué claves tenemos en el llavero:
|
|
stdout:
|
|
Aquí vemos clave pública (pub), ID, usuario y subclave de cifrado (sub).
Importar clave pública
Para cifrar mensajes necesitamos la clave pública del destinatario. Si no la tenemos, la importamos:
|
|
Por defecto la salida la toma STDIN asi que podriamos jugar con tuberias y hacer algo como
|
|
Tras importar, conviene verificar la huella para asegurarnos de que pertenece a quien dice:
|
|
stdout:
|
|
Esto evita que cifremos para un impostor.
Exportar claves
Si quieres compartir tu clave pública:
|
|
También se puede por nombre o ID:
|
|
Para exportar la clave privada (solo para backup o mover a otra máquina, nunca compartirla):
|
|
⚠️ La clave privada nunca se comparte. Solo la pública.
✅ Flujo natural: generar → listar → importar/verificar → exportar → usar para cifrar o firmar.
Cifrar archivos con PGP
Para cifrar un archivo necesitamos la clave pública del destinatario. Supongamos que queremos mandar documento.txt a prueba@correo.com:
|
|
Esto generará un archivo llamado documento.txt.gpg que solo el usuario “prueba@correo” podrá descifrar con su clave privada.
También puedes poner varios destinatarios de la siguiente manera:
|
|
Esto genera un solo archivo cifrado, pero cualquiera que tenga su clave privada correspondiente podrá descifrarlo.
Puedes añadir tantos destinatarios como quieras, cada uno con su --recipient.
Lógicamente, nada te impide cifrar el archivo para ti mismo usando tu propia clave pública.
Desencriptar archivos
Para leer un archivo cifrado necesitas tu clave privada. GnuPG es inteligente y detecta automáticamente qué clave privada usar para descifrarlo. Por ejemplo, con documento.txt.gpg:
Con documento.txt.gpg sería:
|
|
Esto mostrará el contenido por terminal. Si quieres guardarlo en un archivo:
|
|
Firmar archivos y mensajes con PGP
Firmar un archivo permite demostrar que tú eres el autor y que el contenido no ha sido modificado. Se usan tus claves privadas para esto, y cualquiera con tu clave pública puede verificar la firma.
Firmar un archivo
Para crear una firma separada del archivo:
|
|
Esto genera un archivo documento.txt.gpg que contiene el archivo y la firma, o si quieres solo la firma por separado:
|
|
Esto crea documento.txt.sig, que se puede enviar junto con el archivo original.
Verificar una firma
Para verificar que un archivo fue firmado por alguien y no fue modificado:
|
|
Si todo está correcto, GnuPG te dirá que la firma es válida y a quién pertenece la clave que la firmó.
Firmar y cifrar al mismo tiempo
También puedes hacer ambas cosas en un solo paso: cifrar el archivo y firmarlo:
|
|
Esto genera un archivo que solo el destinatario podrá descifrar y verifica que tú lo firmaste.
Instalación en Thunderbird
PGP es un estándar muy extendido, así que muchísimos clientes de correo lo soportan, tanto de escritorio como basados en web o incluso apps tipo Electron. Esto significa que, en general, puedes enviar y recibir correos cifrados y firmados en casi cualquier plataforma que uses.
En el caso de Thunderbird, hace unos años necesitabas Enigmail para manejar GPG, pero desde Thunderbird 78 ya está integrado por defecto. Esto quiere decir que no hace falta instalar nada adicional: con GnuPG instalado en tu sistema, Thunderbird detecta tus claves y permite cifrar y firmar correos directamente.
Para activarlo y configurarlo, solo tendrás que seguir las imágenes a continuación, que muestran paso a paso cómo habilitar la funcionalidad y usar tus claves dentro del cliente.

Cuando vayas a redactar un correo en Thunderbird, verás que ahora aparece la opción de PGP en la ventana de redacción. Podrás:
-
Firmar el correo digitalmente con tu clave privada.
-
Cifrar el correo usando la clave pública del destinatario.
-
Incluso hacer ambas cosas a la vez.
Todo esto se hace de manera transparente: Thunderbird usa GnuPG detrás de escena, así que solo tienes que marcar las casillas de cifrado o firma y enviar.
Básicamente, tu correo ahora es seguro y verificable sin pasos extra complicados.