Usando el comando GnuPG gpg puede generar claves públicas y privadas. En este tutorial, utilizaremos las claves generadas por el comando gpg para enviar y recibir archivos cifrados y firmar digitalmente un archivo.
Cifrar un archivo y enviarlo a un amigo
1. Importa la clave pública de tu amigo
Cuando desee enviar un archivo secreto a su amigo, lo primero que debe hacer es importar la clave pública de su amigo. Puede importar la clave pública de sus amigos desde un "servidor de claves" si él/ella ha exportado su clave pública a un servidor de claves.
Consulte la sección "Exportar sus claves públicas" en nuestro artículo Conceptos básicos de GnuPG para comprender cómo exportar su clave pública a un servidor de claves.
Para importar una clave pública desde un servidor de claves, haga lo siguiente. Puede importar utilizando cualquiera de los métodos anteriores. Proporcione el ID de clave o el ID de correo electrónico o el nombre real de su amigo para importar las claves correctamente.
$ gpg --search-keys --keyserver keyserver.ubuntu.com 'KEY-ID' or $ gpg --search-keys --keyserver keyserver.ubuntu.com 'E-Mail ID' or $ gpg --search-keys --keyserver keyserver.ubuntu.com 'Real Name'
Para importar una clave pública desde un archivo, haga lo siguiente. Si su amigo le envió por correo electrónico su clave pública, entonces puede importar esas claves usando el siguiente comando
$ gpg --import myfriends_pub_key.gpg
2. Verificar el servidor de claves importado
Puede verificar si ha importado con éxito la clave pública de su amigo usando la opción –list-keys
$ gpg --list-keys /home/lakshmanan/.gnupg/pubring.gpg ----------------------------------- pub 2048R/A7344E7D 2012-10-12 uid lakshmanan (My test GPG keys) sub 2048R/96F8EF9B 2012-10-12 pub 2048R/FB2744A8 2012-12-03 uid raman (Ram's test ID) sub 2048R/88EF55EE 2012-12-03
Ahora he importado la clave pública de mi amigo Raman.
3. Cifre un archivo secreto usando la clave pública de su amigo
Ahora que tiene la clave pública de su amigo, puede enviarle un archivo, que está encriptado con "La clave pública de su amigo", para que solo su amigo (que tiene la clave privada) pueda descifrarlo.
$ gpg --encrypt --recipient raman a.txt gpg: 88EF55EE: There is no assurance this key belongs to the named user pub 2048R/88EF55EE 2012-12-03 raman (Ram's test ID) Primary key fingerprint: FF32 7764 A0AE 1E85 AC4B CF17 8AED B292 FB27 44A8 Subkey fingerprint: D6A5 7107 77C8 6845 2F86 765C EEED DD85 88EF 55EE It is NOT certain that the key belongs to the person named in the user ID. If you *really* know what you are doing, you may answer the next question with yes. Use this key anyway? (y/N) y
Tenga en cuenta que hay una advertencia que dice que no hay garantía de que la "Clave pública" pertenezca a su amigo. Revisaremos esto cuando el tiempo lo permita. A partir de ahora, como confío en mi frito, he dado "Sí" para usar la clave.
Creará un archivo llamado "a.txt.pgp", cuando se abra con el editor, tendrá algunos datos binarios. Envía este archivo a tu amigo por cualquier medio.
Si no desea enviar un contenido binario, o si hay problemas al enviar binario, puede usar la opción –armor que crea un archivo ASCII como se muestra a continuación.
$ gpg --encrypt --armor --recipient raman a.txt
Descifrar un archivo
Ahora su amigo habría recibido su archivo encriptado. Para ver el contenido del archivo, necesita descifrar el archivo. Dado que la operación de descifrado se realizará utilizando la clave privada de su amigo, le solicitará la frase de contraseña proporcionada por su amigo al crear las claves.
$ gpg --decrypt a.txt.gpg > secret.txt
Ahora el archivo secret.txt contendrá el texto real escrito.
Enviar un archivo cifrado a varios destinatarios
También puede enviar un archivo a varios destinatarios utilizando el destinatario o -r
$ gpg -r raman -r steve -r gopi --encrypt a.txt
Una vez que se da el comando anterior, gpg utilizará la clave pública de todos los destinatarios para cifrar los datos de tal manera que cualquiera de sus claves privadas pueda descifrar los datos.
En nuestro próximo artículo de esta serie, explicaremos cómo firmar el mensaje con datos y marca de tiempo.