Generación y Gestión de Claves GPG: Una Guía Práctica
GPG es la implementación de código abierto del estándar OpenPGP, y te proporciona las herramientas para cifrar archivos, firmar versiones de software y verificar la identidad del remitente. Esta guía cubre la generación de claves, las mejores prácticas de gestión y los patrones de uso en el mundo real. Tanto si eres nuevo en GPG como si buscas perfeccionar tu flujo de trabajo, encontrarás pasos concretos para construir una configuración criptográfica sólida y duradera.
En esta página
GNU Privacy Guard (GPG) es la implementación de código abierto del estándar OpenPGP, y te proporciona privacidad criptográfica y autenticación para tus comunicaciones. Ya sea que firmes versiones de software, cifres archivos sensibles o verifiques el origen de un mensaje, GPG es una herramienta fundamental para cualquiera que se tome la seguridad en serio. Esta guía recorre la generación de claves, su gestión y patrones de uso real que te ayudarán a construir una identidad criptográfica sólida y duradera.
GPG y su Rol en la Seguridad
GPG utiliza criptografía asimétrica: un par de claves matemáticamente vinculadas, compuesto por una clave pública y una clave privada. Tu clave pública puede compartirse libremente; otros la usan para cifrar mensajes dirigidos a ti o para verificar tus firmas. Tu clave privada permanece en secreto, y la usas para descifrar mensajes o firmar datos.
Este modelo es el núcleo de la filosofía que OpenPGP formaliza en su guía completa de cifrado PGP. GPG la extiende con una red de confianza (web of trust), que permite a los usuarios avalar la identidad de otros sin depender de una autoridad certificadora centralizada.
En la práctica, usarás GPG para firmar y verificar commits de Git, cifrar archivos y correos electrónicos, autenticar paquetes de software (algo habitual en los gestores de paquetes de Linux) y proteger comunicaciones sensibles entre equipos.
Generación de tu Clave GPG
Elección del Tipo y Longitud de Clave
La práctica recomendada actualmente es usar Ed25519 para claves de firma y Cv25519 para subclaves de cifrado. Estos algoritmos de curva elíptica ofrecen una seguridad robusta con claves más cortas y operaciones más rápidas que RSA-4096. Si necesitas interoperabilidad con sistemas más antiguos, RSA-4096 sigue siendo una opción válida.
gpg --full-generate-key
Cuando se te pregunte el tipo de clave, selecciona (9) ECC and ECC y luego elige Curve 25519. Establece una fecha de caducidad: uno o dos años es un valor razonable por defecto. La caducidad obliga a una revisión periódica y limita tu exposición en caso de que la clave quede comprometida.
Establecimiento de una Contraseña Robusta
Tu clave privada se almacena en disco cifrada mediante una contraseña. Una contraseña débil se convierte en un único punto de fallo. Usa una contraseña aleatoria de al menos 20 caracteres, idealmente generada por un gestor de contraseñas. Esa contraseña es tu primera línea de defensa ante escenarios de robo de identidad donde un atacante obtiene acceso al sistema de archivos.
Verificación de la Clave Generada
gpg --list-keys --keyid-format LONG
Ejemplo de salida:
pub ed25519/3AA5C34371567BD2 2024-01-15 [SC] [expires: 2026-01-15]
Key fingerprint = 1234 ABCD 5678 EF01 2345 6789 ABCD EF01 3AA5 C343
uid [ultimate] Alice Example <[email protected]>
sub cv25519/4BB6D45482678CE3 2024-01-15 [E] [expires: 2026-01-15]
Las marcas [SC] indican que la clave primaria puede Firmar (Sign) y Certificar (Certify). La subclave [E] se encarga del Cifrado (Encryption). Esa separación es intencionada e importante.
“Security is always excessive until it's not enough.”
— Robbie Sinclair
Arquitectura de Claves: Clave Primaria y Subclaves
Por Qué Importan las Subclaves
Una configuración madura de GPG separa la clave primaria (usada únicamente para certificación) de las subclaves que utilizas en el día a día. La clave primaria puede residir offline o en un token hardware. Las subclaves pueden rotarse o revocarse sin perder tu identidad, y una subclave comprometida no afecta a tus certificaciones en la red de confianza.
Para añadir subclaves a una clave existente:
gpg --edit-key [email protected]
gpg> addkey
# Seleccionar tipo de clave y establecer caducidad
gpg> save
Distribución de Claves Recomendada
| Tipo de clave | Uso | Almacenamiento | Caducidad |
|---|---|---|---|
| Clave primaria | Certificar (C) | Offline / token hardware | 5+ años o indefinida |
| Subclave de firma | Firmar (S) | Máquina de trabajo | 1–2 años |
| Subclave de cifrado | Cifrar (E) | Máquina de trabajo | 1–2 años |
| Subclave de autenticación | Autenticar (A) | Token hardware | 1–2 años |
Esta distribución es la base para usar GPG con llaves de seguridad hardware. Para equipos que necesiten almacenamiento de claves respaldado por hardware, la guía de llaves de seguridad hardware: YubiKey cubre cómo transferir las subclaves GPG a una YubiKey, lo que hace que la extracción de la clave privada sea físicamente imposible.
Exportación, Copia de Seguridad y Distribución de Claves
Exportación de tu Clave Pública
# Exportar con armadura ASCII para compartir
gpg --armor --export [email protected] > alice_public.asc
# Subir a un servidor de claves
gpg --keyserver hkps://keys.openpgp.org --send-keys 3AA5C34371567BD2
Copia de Seguridad de tu Clave Privada
# Exportar la clave privada — guardar offline, solo en almacenamiento cifrado
gpg --armor --export-secret-keys [email protected] > alice_private_backup.asc
# Exportar solo las subclaves privadas (para configurar la máquina de trabajo)
gpg --armor --export-secret-subkeys [email protected] > alice_subkeys.asc
Guarda la exportación completa de la clave privada en una unidad USB cifrada en un lugar físicamente seguro. Nunca la subas a servicios en la nube ni la incluyas en un repositorio. La exportación solo de subclaves es la que importarás en tu estación de trabajo para el uso cotidiano.
Generación de un Certificado de Revocación
Hazlo inmediatamente después de generar la clave, antes de que lo necesites:
gpg --output alice_revoke.asc --gen-revoke [email protected]
Guárdalo junto con tu copia de seguridad de la clave privada. Si tu clave queda comprometida o la pierdes, importar este certificado a los servidores de claves indica a todos que esa clave ya no debe considerarse de confianza.
Uso Práctico: Firma, Cifrado y Verificación
Firma de Archivos y Commits de Git
# Firma separada (detached) para un archivo
gpg --armor --detach-sign release-v1.0.tar.gz
# Genera release-v1.0.tar.gz.asc
# Verificar una firma
gpg --verify release-v1.0.tar.gz.asc release-v1.0.tar.gz
# Firmar un commit de Git
git config --global user.signingkey 3AA5C34371567BD2
git config --global commit.gpgsign true
git commit -S -m "Versión firmada"
Los commits de Git firmados aparecen en GitHub y GitLab con una insignia "Verified", lo que da confianza a los usuarios de que los commits provienen del titular legítimo de la clave. Es una defensa directa contra ataques a la cadena de suministro de software.
Cifrado y Descifrado de Archivos
# Cifrar un archivo para un destinatario
gpg --armor --encrypt --recipient [email protected] sensitive.txt
# Genera sensitive.txt.asc
# Cifrar para múltiples destinatarios
gpg --armor --encrypt \
--recipient [email protected] \
--recipient [email protected] \
sensitive.txt
# Descifrar
gpg --decrypt sensitive.txt.asc > sensitive_decrypted.txt
Comparativa de Operaciones de Gestión de Claves
| Operación | Comando | Notas |
|---|---|---|
| Listar claves públicas | gpg --list-keys | Muestra todas las claves del anillo |
| Listar claves privadas | gpg --list-secret-keys | Confirma disponibilidad de la clave privada |
| Importar una clave | gpg --import key.asc | La añade al anillo local |
| Eliminar una clave pública | gpg --delete-key <fingerprint> | Hay que eliminar primero la clave privada |
| Actualizar desde servidor | gpg --refresh-keys | Descarga actualizaciones de revocación |
| Editar confianza de clave | gpg --edit-key → trust | Establecer como ultimate para claves propias |
Rotación, Caducidad y Revocación de Claves
Gestión de la Caducidad
Extender la fecha de caducidad antes de que venza es sencillo y no invalida las firmas existentes:
gpg --edit-key [email protected]
gpg> expire
# Seguir las indicaciones para establecer la nueva caducidad
gpg> save
# Volver a publicar la clave actualizada
gpg --keyserver hkps://keys.
Preguntas frecuentes
¿Qué es una clave GPG y para qué la necesito?
Una clave GPG es un par de claves criptográficas — una pública y una privada — que se usan para cifrar, descifrar y firmar datos o mensajes. La necesitas para verificar tu identidad, firmar tus commits de Git o intercambiar archivos y correos electrónicos de forma segura con otras personas. Piensa en tu clave pública como un candado que compartes libremente, y en tu clave privada como la única llave que lo abre.
¿Cómo genero mi primera clave GPG?
Ejecuta gpg --full-generate-key en tu terminal y sigue las instrucciones — tendrás que elegir un tipo de clave (RSA 4096 es una opción sólida por defecto), una fecha de vencimiento y una frase de contraseña para proteger tu clave privada. La frase de contraseña es fundamental: es la última línea de defensa si alguien consigue acceso a tu archivo de clave. Una vez generada, puedes ver tus claves con gpg --list-secret-keys.
¿Qué hago si pierdo mi clave privada GPG o olvido mi frase de contraseña?
Lamentablemente, no hay forma de recuperar una clave privada perdida ni una frase de contraseña olvidada — el cifrado está diseñado precisamente para que eso sea imposible. Por eso debes exportar y hacer una copia de seguridad de tu clave privada en un lugar seguro (gpg --export-secret-keys > backup.gpg) y guardarla en un sitio protegido, como una unidad cifrada. También deberías generar un certificado de revocación desde el principio con gpg --gen-revoke, para poder invalidar públicamente la clave si alguna vez se ve comprometida o la pierdes.
Recursos en vídeo
Fuentes y lecturas adicionales
- GnuPG Documentation — Manuals and how-tos for GPG key management and encryption.
- Wikipedia: Pretty Good Privacy — Background on PGP, OpenPGP and the web of trust.
- EFF Surveillance Self-Defense — Threat-model based guides from the Electronic Frontier Foundation.
- EFF — Digital rights organisation with security explainers.
- OWASP — Open standards and cheat sheets for application security.
- NIST Cybersecurity Framework — Reference framework for identifying, protecting and responding to threats.
- CISA — US cybersecurity agency guidance for individuals and organisations.