Variádico

Cómo usar GPG

13 de agosto de 2016

GPG se puede usar para cifrar y verificar datos. Por ejemplo, si quieres asegurarte que solo cierta persona pueda abrir un archivo secreto, puedes usar GPG para cifrar el archivo antes de enviarlo. Otro uso es, verificar descargas de internet. Puedes usar GPG para verificar que la versión de descargaste es la versión que autorizó el autor.

En el articulo anterior, hablé sobre cómo crear llaves GPG. En este articulo, voy a hablar sobre el uso de esas llaves.

Usar servidores de llaves

Estos servidores almacenan llaves públicas de mucha gente alrededor del mundo. En estos servidores, puedes encontrar la llave pública de muchos usuarios y organizaciones.

Descargar una llave

Típicamente, los servidores de llaves tienen características de búsqueda. Allí puedes buscar la llave de un amigo u organización. Un servidor popular es pgp.mit.edu. Existen otros, este es solamente uno.

Para buscar una llave, da clic en pgp.mit.edu y introduce “root@linuxmint.com” en el campo de búsqueda. Después de la petición, el servidor mostrará varias llaves que se identifiquen con el correo “root@linuxmint.com”.

Puedes descargar una desde la terminal con este comando.

gpg --keyservers pgp.mit.edu --recv-keys 0x300f846ba25bae09

Subir tu llave

También puedes subir una llave a estos servidores con este comando.

gpg --keyservers pgp.mit.edu --send-keys 0x200f964ba25cae10

Algo que deberías saber es que después de subir una llave, no prodrás eliminarla. Si te equivocaste al escribir tu nombre o correo—y la subiste—ni modo. Así se va a quedar.

Para hacer una corrección o caducar una llave, tienes que agregar esa información a la llave, pero no puedes, borrar los detalles erróneos. También es posible marcar ciertos datos como anulados. Los datos se quedan en la llave, pero otros verán que los detalles son anulados.

Cifrado

El cifrado es una forma de proteger datos para que sólo la persona indicada pueda leer un mensaje. GPG puede cifrar y descifrar datos en una forma segura.

Cifrar

Para cifrar un archivo, necesitas obtener la llave pública de la persona a quien le quieres enviar un archivo cifrado.

# Descargar una llave pública.
gpg --keyservers pgp.mit.edu --recv-keys 0x0BB80DEC15D22350

# Cifrar un archivo para el usuario 0x0BB80DEC15D22350.
gpg --recipient 0x0BB80DEC15D22350 --encrypt foto.jpg

Esto creará un archivo cifrado llamado foto.jpg.gpg. Solamente la persona que tenga la llave privada de 0x0BB80DEC15D22350 podrá descifrar este archivo. Ni tú podrás descifrar el archivo si no indicas que eres destinatario.

Para especificar varios destinatarios, tienes que pasar --recipient las veces necesarias.

gpg --recipient 0x0BB80DEC15D22350 --recipient 0x0CB80EDC15A25351 --encrypt foto.jpg

Descifrar

Para descifrar un archivo, se usa la llave privada. Aquí el comando.

gpg --decrypt foto.jpg.gpg > foto.jpg

Para completar la acción, necesitarás que introducir la contraseña de la llave privada.

Autenticación

Autenticación quiere decir que puedes verificar la identidad digital de alguien. GPG se puede usar para verificar la identidad del autor de un mensaje.

Esto funciona básicamente al revés del cifrado anterior.

Firmar

Para firmar un archivo, ciframos un archivo con nuestra llave privada (en lugar de la llave pública). De esta forma, otras personas podrán descifrar el archivo usando la llave pública.

gpg --sign foto.jpg

Esto crea el archivo foto.png.gpg. Personas con nuestra llave pública podrán descifrar este mensaje.

Verificar

Para verificar una archivo firmado, usa estos comandos.

# Descargar una llave pública.
gpg --keyservers pgp.mit.edu --recv-keys 0x0BB80DEC15D22350

# Verificar
gpg --decrypt foto.jpg.gpg > foto_verificada.jpg

Si el archivo foto.jpg.gpg no se puede descifrar con la llave del usuario 0x0BB80DEC15D22350 o si el archivo fue alterado en ruta a tu computadora, entonces el descifrado fallará.

Usos prácticos

Cifra tus respaldos

No tienes que aprender como usar una aplicación especial para crear respaldos seguros. ¡Hazlos con tar y gpg! 😊

# Comprime la carpeta datos, cifra la salida,
# y guarda la versión cifrada como datos_respaldo.gpg.
tar -cz datos | gpg --recipient 0x0BB80DEC15D22350 --encrypt > datos_respaldo.gpg

# Descifra el archivo datos_respaldo.gpg y descomprímelo.
gpg --decrypt datos_respaldo.gpg|tar -x

Firmar confirmaciones de Git

Si quieres que GitHub te ponga “Verified” para tus confirmaciones, puedes usar tu llave privada con Git.

git config --global user.signingkey 0x0BB80DEC15D22350
git commit --gpg-sign --message="equis"

Firmar llaves de amigos

Cualquier persona en el mundo puede hacer una llave con tu nombre y correo. Para darle más confiabilidad a tu llave pública, puedes decirle a un amigo que afirme tu identidad. Para hacer esto, tu amigo tendrá que firmar tu llave pública con su llave privada. Después de firmar tu llave pública, la tiene que subir a un servidor de llaves o enviártela a ti para que tú la subas.

gig --sign-key 0x0BB80DEC15D22350

# Subir la llave firmada a un servidor de llaves.
gpg --keyservers pgp.mit.edu --send-keys 0x0BB80DEC15D22350

# Exportar la llave a un archivo para enviarlo.
gpg --export 0x0BB80DEC15D22350 > llave_firmada.gpg

Muy largo; no leí

Descarga una llave así.

gpg --keyservers pgp.mit.edu --recv-keys 0x300f846ba25bae09

Cifra un archivo así.

gpg --recipient 0x0BB80DEC15D22350 --encrypt foto.jpg

Para descifrar un archivo que te enviaron, hazlo así.

gpg --decrypt foto.jpg.gpg > foto.jpg

Para firmar un archivo, así.

gpg --sign foto.jpg

Para verificar la firma, así.

gpg --decrypt foto.jpg.gpg > foto_verificada.jpg