GPG: cifra tus archivos y comunicaciones como un profesional
Tiempo de lectura: 8 minutos Categoría: Ciberseguridad · Linux Nivel: Intermedio
En un mundo donde las filtraciones de datos son noticia habitual, saber cifrar tus archivos y comunicaciones no es paranoia, es higiene digital básica. GPG es la herramienta de referencia para esto y en este artículo te explico cómo funciona y cómo usarla en el día a día.
¿Qué es GPG?
GPG son las siglas de GNU Privacy Guard, una implementación libre del estándar OpenPGP. Es la herramienta que usan periodistas para proteger sus fuentes, desarrolladores para firmar sus commits de Git, y cualquier persona que necesite cifrar comunicaciones o archivos de forma seria.
GPG usa criptografía asimétrica, lo que significa que trabaja con pares de claves. Tienes una clave pública que puedes compartir con todo el mundo y una clave privada que solo tú debes conocer. Lo que se cifra con tu clave pública solo se puede descifrar con tu clave privada, y viceversa.
Esto permite dos cosas fundamentales. El cifrado: alguien que quiera enviarte un mensaje o archivo que solo tú puedas leer lo cifra con tu clave pública. Y la firma digital: puedes firmar un archivo con tu clave privada para que cualquiera pueda verificar que fue creado por ti y no ha sido modificado.
Instalar GPG
GPG viene preinstalado en la mayoría de distribuciones Linux. Para verificarlo ejecuta gpg --version en la terminal. Si no está instalado, en Ubuntu y Debian se instala con apt, en Arch con pacman y en Fedora con dnf.
Generar tu par de claves
El primer paso es generar tu par de claves con el comando gpg --full-generate-key. El asistente interactivo te hará varias preguntas.
El algoritmo recomendado actualmente es ED25519 para la clave principal de firma y CV25519 para la subclave de cifrado. Son algoritmos de curva elíptica modernos que ofrecen una seguridad equivalente a RSA-4096 pero con claves mucho más pequeñas y operaciones más rápidas.
Para la caducidad de la clave te recomiendo poner un año. Puede parecer molesto tener que renovarla, pero si alguna vez pierdes el control de tu clave privada, la caducidad limita el daño. Siempre puedes extender la caducidad de una clave existente antes de que expire.
El nombre y el correo electrónico que introduzcas serán públicos y formarán parte de tu identidad en GPG. Elige un correo que uses realmente.
La contraseña de la clave privada es crucial. Protege tu clave privada de forma que aunque alguien obtenga el archivo de tu clave no pueda usarla sin la contraseña. Usa una contraseña larga y única que no uses en ningún otro sitio.
Exportar y compartir tu clave pública
Para que otros puedan enviarte mensajes cifrados o verificar tus firmas necesitan tu clave pública. Puedes exportarla a un archivo con gpg --export en formato ASCII usando el flag --armor, que produce un texto legible en vez de datos binarios.
También puedes subirla a un servidor de claves público como keys.openpgp.org para que cualquiera pueda encontrarla fácilmente buscando tu nombre o correo. El comando gpg --keyserver con la URL del servidor y --send-keys seguido del ID de tu clave lo hace automáticamente.
Cifrar y descifrar archivos
Para cifrar un archivo para que solo una persona específica pueda abrirlo necesitas su clave pública importada en tu llavero. El comando gpg --encrypt con el flag --recipient seguido del correo del destinatario y el nombre del archivo crea un archivo cifrado con extensión .gpg.
Para descifrar un archivo cifrado para ti usa gpg --decrypt. GPG automáticamente usa tu clave privada y te pide la contraseña si es necesario.
También puedes cifrar un archivo para ti mismo usando tu propia clave pública como destinatario. Esto es útil para guardar archivos sensibles como contraseñas de bases de datos, claves de API o documentos privados de forma que estén cifrados en disco.
Firmar archivos y verificar firmas
Firmar un archivo con GPG crea una prueba criptográfica de que ese archivo fue creado por el titular de esa clave y no ha sido modificado desde entonces. Muchos proyectos de software open source firman sus releases para que puedas verificar que descargaste el binario oficial y no uno modificado.
El comando gpg --sign crea un archivo firmado. Para una firma separada del archivo original usa --detach-sign, que crea un archivo .sig independiente.
Para verificar una firma usa gpg --verify con el archivo de firma y el archivo original. GPG te dirá si la firma es válida y qué clave la creó.
Firmar commits de Git con GPG
GitHub, GitLab y otros servicios soportan la verificación de commits firmados con GPG. Cuando configuras Git para usar tu clave GPG, cada commit que haces lleva tu firma digital, lo que permite a cualquiera verificar que ese commit fue realmente tuyo.
Para configurarlo necesitas decirle a Git qué clave usar con git config --global user.signingkey seguido del ID de tu clave, y activar la firma automática de commits con git config --global commit.gpgsign true.
En GitHub puedes añadir tu clave pública GPG en la configuración de tu cuenta y los commits firmados aparecerán con una insignia verde de "Verified".
Hacer backup de tu clave privada
Perder tu clave privada significa perder acceso a todos los mensajes y archivos cifrados para esa clave. Haz backup de ella en un lugar seguro como un USB cifrado guardado físicamente en un sitio seguro.
Exporta la clave privada con gpg --export-secret-keys y guarda el resultado. También genera un certificado de revocación con gpg --gen-revoke por si alguna vez necesitas invalidar la clave en caso de que la comprometan.
Conclusión
GPG tiene una curva de aprendizaje inicial que puede resultar frustrante, pero los conceptos fundamentales son simples: cifras con la clave pública del destinatario, descifras con tu clave privada, firmas con tu clave privada, verificas con la clave pública del firmante.
Una vez que tienes tus claves generadas y entiendes el flujo básico, GPG se convierte en una herramienta de uso diario para cualquier persona que se tome en serio su privacidad digital.
¿Usas GPG en tu flujo de trabajo? ¿Para firmar commits, cifrar archivos o comunicaciones? Cuéntamelo.

