Introducción a GnuPG

Autor: Joel Barrios Dueñas y Gammexane
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org

Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas, © 2007 Gammexane. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.

Introducción

La protección de la privacidad y la seguridad en la comunicación digital es una necesidad cada vez más crucial. GnuPG (GNU Privacy Guard) es la herramienta fundamental para alcanzar estos objetivos, permitiendo cifrar información, verificar la autenticidad de los mensajes y firmar documentos digitalmente.

Este manual ofrece una guía práctica para comenzar a utilizar GnuPG en sistemas Linux modernos, enfocándose en los conceptos esenciales y los procedimientos de uso común. La base de este documento se remonta a una colaboración inicial de Pablo "Gammexane" Moia en 2007, que con el tiempo se amplió y actualizó para formar la guía que tiene en sus manos.

Criptografía de clave pública

GnuPG implementa criptografía de clave pública. En este sistema, cada usuario genera un par de llaves inseparable:

Este mecanismo resuelve dos problemas fundamentales: la confidencialidad (sólo el destinatario puede leer el mensaje) y la autenticidad (se puede verificar la identidad del remitente y que el mensaje no ha sido alterado).

Equipamiento lógico necesario

En las distribuciones modernas basadas en Red Hat Enterprise Linux, AlmaLinux, Rocky Linux y sus derivados, el paquete estándar y recomendado es gnupg2.

dnf -y install gnupg2

Tras la instalación, el binario principal disponible será gpg. En algunos sistemas puede coexistir un paquete heredado llamado gnupg1, el cual instala el binario gpg1. Este paquete existe únicamente por dependencias de compatibilidad de otros paquetes (como algunos entornos de desarrollo) y no es necesario para el uso general de GnuPG. El comando correcto y moderno es siempre gpg.

Para los usuarios que prefieran una interfaz gráfica, Seahorse es un excelente frente gráfico que simplifica la gestión de llaves. Su desarrollo continúa dentro del proyecto GNOME.

dnf -y install seahorse

Procedimientos

A continuación se presentan los pasos fundamentales para comenzar a utilizar GnuPG de manera efectiva. Estos procedimientos guiarán al usuario desde la creación de su primera pareja de llaves criptográficas hasta la realización de operaciones básicas de cifrado, firma y verificación, sentando las bases para una comunicación segura

Generación del par de llaves

El primer paso es crear su par de llaves (pública y privada). Desde el intérprete de mandatos, ejecute:

gpg --gen-key

El asistente le guiará solicitando la siguiente información:

  1. Tipo de llave: El valor predeterminado RSA es la opción recomendada.
  2. Tamaño de la llave: Para un equilibrio robusto entre seguridad y rendimiento, se recomienda utilizar 4096 bits. El valor predeterminado (2048 bits) también es seguro para la mayoría de los casos. Utilice 1024 bits sólo para pruebas rápidas.
  3. Caducidad: Puede definir una fecha de expiración (ej. 1y para un año) o elegir que la llave nunca expire (0). Una fecha de expiración es una buena práctica de seguridad.
  4. Datos de identificación: Su nombre real y una dirección de correo electrónico válida.
  5. Frase de acceso (passphrase): Éste es un elemento de seguridad crítico. Elija una frase larga, compleja y que sólo usted conozca. Una buena frase combina mayúsculas, minúsculas, números y símbolos, y evita palabras comunes.

El proceso puede tomar desde unos segundos hasta varios minutos, dependiendo del tamaño de la llave y de la disponibilidad de entropía (aleatoriedad) en el sistema. Mover el ratón o teclear en otras ventanas puede acelerarlo.

Listado y gestión básica de llaves

Para ver las llaves públicas que tiene en su anillo (incluyendo la suya), utilice:

gpg --list-keys

Para listar sus llaves privadas:

gpg --list-secret-keys

La salida mostrará información de identificación para cada llave. Un elemento clave es el ID de la llave (por ejemplo, F08846B8), una cadena alfanumérica que la identifica de manera única y que se utiliza en muchos mandatos.

La importancia del certificado de revocación

Genere un certificado de revocación inmediatamente después de crear sus llaves. Este archivo es vital: si olvida su frase de acceso o si su llave privada se ve comprometida, publicar este certificado informará a todos que su llave pública ya no es válida para cifrar nuevos mensajes.

gpg --output revocacion.asc --gen-revoke F08846B8

Guarde el archivo revocacion.asc en un lugar muy seguro y fuera de línea (como una memoria USB en una caja fuerte). No es necesario distribuirlo hasta que requiera revocar la llave.

Exportación e importación de llaves públicas

Para compartir su llave pública, debe exportarla. Puede hacerlo en formato binario o en texto legible (ASCII), útil para enviar por correo electrónico.

# Exportar en formato binario
gpg --output fulano.gpg --export F08846B8

# Exportar en formato texto legible (ASCII)
gpg --output fulano.asc --armor --export F08846B8

Para añadir la llave pública de otra persona a su anillo y poder cifrar mensajes para ella, utilice el mandato de importación:

gpg --import zutano.asc

Firmar y verificar documentos

Firmar un documento demuestra que usted es el autor y garantiza que el contenido no ha sido modificado desde que lo firmó.

GnuPG ofrece tres tipos de firma, cada una útil para un escenario diferente[citation:2]:

Ejemplos prácticos de firma

# 1. Crear una firma estándar (binaria) de 'documento.txt'
gpg --sign documento.txt
# Resultado: documento.txt.gpg

# 2. Crear una firma en texto claro del mismo documento
gpg --clearsign documento.txt
# Resultado: documento.txt.asc (se puede abrir y leer)

# 3. Crear una firma separada (detached) para un archivo ISO grande
gpg --output mi-distro.iso.sig --detach-sig mi-distro.iso
# Resultado: mi-distro.iso (original) y mi-distro.iso.sig (firma pequeña)

Para verificar la autenticidad e integridad de un documento firmado:

# Verificar una firma estándar o en texto claro
gpg --verify documento.txt.gpg
gpg --verify documento.txt.asc

# Verificar una firma separada (DEBE especificar el documento original)
gpg --verify mi-distro.iso.sig mi-distro.iso

Cifrar y descifrar

Para enviar información confidencial, debe cifrarla utilizando la llave pública del destinatario.

gpg --output mensaje-secreto.gpg --encrypt --recipiente persona@ejemplo.org archivo.txt

El destinatario podrá descifrar el archivo utilizando su propia llave privada y la frase de acceso correspondiente.

gpg --output archivo-desclasificado.txt --decrypt mensaje-secreto.gpg

También puede cifrar usando sólo una contraseña (cifrado simétrico), sin necesidad de llaves PGP. Es útil para proteger archivos para uno mismo.

gpg --output backup-cifrado.tar.gz.gpg --symmetric backup.tar.gz

Procesamiento por lotes

Para operaciones con múltiples archivos, GnuPG ofrece la opción --multifile, compatible con --encrypt, --decrypt y --verify[citation:2]. Esta opción es muy útil para automatizar tareas.

# Cifrar todos los archivos .txt del directorio actual para un mismo destinatario
gpg --multifile --encrypt --recipiente socio@empresa.org *.txt

# Verificar todas las firmas separadas (.sig) en un directorio
gpg --multifile --verify *.sig

Respaldo seguro de las llaves

La pérdida de la llave privada implica la imposibilidad de descifrar cualquier mensaje futuro y de firmar documentos. Su respaldo es primordial.

  1. Identifique su llave con gpg --list-secret-keys y localice su ID (ej. F08846B8).
  2. Exporte la llave privada a un archivo, protegiéndola con una contraseña fuerte en el proceso:

    gpg --armor --export-secret-keys F08846B8 | gpg --armor --symmetric --output Respaldo_Llave_Privada.asc.gpg

    Este mandato crea un archivo (Respaldo_Llave_Privada.asc.gpg) que está cifrado con una contraseña que usted elija durante la ejecución. Guarde este archivo en múltiples medios físicos seguros y fuera de línea (ej. memorias USB en ubicaciones diferentes).

Para restaurar la llave desde este respaldo protegido:

gpg --decrypt Respaldo_Llave_Privada.asc.gpg | gpg --import

Conclusión

GnuPG es una herramienta poderosa e indispensable para cualquier persona que valore la privacidad, la seguridad y la autenticidad en sus comunicaciones digitales. Comience por integrar hábitos sencillos, como firmar sus correos electrónicos o verificar las firmas del software que descarga.

Este manual —que tuvo sus inicios en el trabajo de Gammexane hace dos décadas— es un testimonio de que la seguridad y el conocimiento compartido son pilares de la comunidad del software libre. La práctica constante es la clave para dominar GnuPG. Explore, experimente en un entorno seguro y contribuya a construir una red de confianza (Web of Trust) con sus contactos.

Para profundizar en la protección de sistemas y redes, considere la lectura de otros manuales complementarios como la Configuración de FirewallD y la Configuración de Squid.