Intercambiar claves públicas con gpg --export y gpg --import
En este paso, aprenderás a intercambiar claves públicas con otras personas. Para cifrar un archivo para otra persona, necesitas su clave pública. Del mismo modo, si alguien quiere enviarte un archivo cifrado, necesita tu clave pública. Este proceso implica exportar tu clave pública a un archivo e importar las claves públicas que recibas de otros en tu llavero GPG.
Primero, exportemos tu propia clave pública. Utilizarás el comando gpg --export. Se recomienda utilizar la opción --armor, que crea una versión de la clave en formato de texto (ASCII), lo que facilita copiarla y pegarla en correos electrónicos u otros canales de comunicación basados en texto. La guardaremos en un archivo llamado labex.pub.
En tu terminal, ejecuta el siguiente comando. Sustituye labex por el ID de usuario que utilizaste durante la generación de la clave.
gpg --export --armor -o labex.pub labex
Puedes verificar que el archivo se ha creado utilizando ls:
ls
Deberías ver labex.pub en la lista de archivos. También puedes ver su contenido:
cat labex.pub
La salida será un bloque de texto que comienza con -----BEGIN PGP PUBLIC KEY BLOCK-----. Esta es tu clave pública, que ahora puedes compartir con otros.
A continuación, simularás la recepción de una clave pública de otro usuario y su importación a tu llavero. En un escenario real, recibirías la clave pública de otra persona a través de un canal seguro. Para este laboratorio, crearemos un par de claves temporal para Alice y luego exportaremos su clave pública para simular este proceso.
Primero, generemos temporalmente un par de claves para Alice. Utilizaremos un modo por lotes para automatizar este proceso sin avisos interactivos:
cat > alice-key-params << 'EOF'
Key-Type: RSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: Alice
Name-Email: alice@example.com
Expire-Date: 2y
%no-protection
%commit
EOF
Ahora genera el par de claves de Alice utilizando el archivo de parámetros:
gpg --batch --generate-key alice-key-params
Deberías ver una salida que confirme la generación de la clave:
gpg: key <KEY_ID> marked as ultimately trusted
public and secret key created and signed.
Ahora exporta la clave pública de Alice a un archivo, simulando cómo la recibirías de ella:
gpg --export --armor -o alice.pub alice@example.com
Para esta demostración de laboratorio, también eliminaremos la clave secreta de Alice del llavero, ya que en la realidad solo tendrías su clave pública:
gpg --delete-secret-keys alice@example.com
Cuando se te solicite, confirma la eliminación escribiendo y y presionando Enter.
gpg --delete-keys alice@example.com
De nuevo, confirma la eliminación escribiendo y y presionando Enter.
Ahora tienes la clave pública de Alice en el archivo alice.pub, simulando cómo la recibirías de otro usuario.
Limpia el archivo temporal de generación de claves:
rm alice-key-params
Ahora que tienes la clave pública de Alice en un archivo, impórtala a tu llavero GPG utilizando el comando gpg --import.
gpg --import alice.pub
Deberías ver una salida confirmando que la clave ha sido importada:
gpg: key <KEY_ID>: public key "Alice <alice@example.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
Para confirmar que la clave de Alice está ahora en tu llavero, enumera de nuevo todas tus claves públicas.
gpg --list-keys
La salida mostrará ahora tanto tu clave (labex) como la clave recién importada (Alice).
/home/labex/.gnupg/pubring.kbx
------------------------------
pub rsa3072 2025-07-01 [SC] [expires: 2027-07-01]
<FINGERPRINT_LABEX>
uid [ultimate] labex <labex@example.com>
sub rsa3072 2025-07-01 [E] [expires: 2027-07-01]
pub rsa2048 2025-07-01 [SC] [expires: 2027-07-01]
<FINGERPRINT_ALICE>
uid [ unknown] Alice <alice@example.com>
sub rsa2048 2025-07-01 [E] [expires: 2027-07-01]
Observa que la clave de Alice está marcada con confianza [ unknown]. Aprenderás a gestionar la confianza de las claves en el siguiente paso.