Cómo cifrar y descifrar archivos usando el comando GPG
No hay seguridad absoluta en Internet ni a través de una red. Debido a que nuestro equipo está conectado regularmente a Internet y hay alguna comunicación, necesitamos proteger la información crítica que intercambiamos. El cifrado será una protección bienvenida para cuando usted, su familia o socios comerciales necesiten comunicar información confidencial de un lado del mundo al otro. El cifrado proporciona confidencialidad, aunque la firma vincula la identidad del origen del mensaje a este mensaje. Garantiza la integridad de los datos, la autenticación de mensajes y el no repudio por completo.
Los principios de cifrado y firma de mensajes
El cifrado de mensajes hace que todo el mensaje sea ilegible para cualquiera que no sea el propietario de la clave privada correspondiente. Cuando firma un mensaje, crea una huella digital para el mensaje solo para asegurarse de que el contenido no se haya alterado, pero no tiene ningún efecto en el mensaje en sí y el mensaje nunca se cifrará. La huella dactilar se puede verificar con una clave pública. Esto no hace que un mensaje sea ilegible para nadie, pero puede verificar que el mensaje realmente se originó en el remitente y no se modificó desde entonces. Por supuesto, esto requiere que confíe en la clave pública.
La seguridad está garantizada por claves públicas y privadas. Cualquier clave privada tiene una clave pública y cualquier clave pública tiene una clave privada, siempre es una asignación de uno a uno. Establecer una comunicación segura significa que ya ha intercambiado claves públicas con personas u organizaciones en las que confía. Por lo tanto, cada parte tiene su propia clave privada y la clave pública del otro usuario.
En nuestro escenario, hay dos personas que quieren comunicarse y ponen sus claves públicas en el servidor de claves:
- my_name@linoxide.com: ID_KEY BAC361F1
- reader@linoxide.com: ID_KEY B6D7943C
Esto significa que my_name @ linoxide debe importar la clave pública del lector y viceversa. Entonces para escribir a reader@linoxide.com, my_name@linoxide.com utilizará la clave pública del lector y viceversa.
$ gpg --keyserver pgp.mit.edu --search-keys reader@linoxide.com gpg: searching for "reader@linoxide.com" from hkp server pgp.mit.edu (1) reader <reader@linoxide.com> 4096 bit RSA key B6D7943C, created: 2017-04-01 $ gpg --keyserver pgp.mit.edu --recv-keys B6D7943C
El remitente de un mensaje (reader@linoxide.com) puede «firmar» el mensaje con su clave privada. El receptor (my_name@linoxide.com) utiliza la clave pública del remitente para verificar que la firma realmente la envía el usuario indicado. Esto puede evitar que un tercero «falsifique» la identidad de alguien. También ayuda a garantizar que el mensaje se transmita en su totalidad, sin daños ni corrupción de archivos.
Comando GPG para cifrar y descifrar archivos
El proceso de cifrado siempre crea un archivo con.gpg
o .asc extension
. Así que eche un vistazo enumerando la carpeta de contenido cuando finalice un comando de cifrado. No eliminará el archivo original, así que tenga cuidado. Al descifrar, si usamos --output
parámetro, el comando redirigirá el resultado en el archivo especificado que sigue a la opción. Sin el parámetro, creará el archivo descifrado con el mismo archivo cifrado pero sin extensión .gpg
Cifrar con una clave simétrica
Este método le pedirá que ingrese una frase de contraseña que le dará a su receptor para descifrar el archivo
$ gpg -c file_sym
Descifrar un cifrado simétrico
$ gpg --output file-content file_sym.gpg $ gpg file_sym.gpg $ gpg -d file_sym.gpg
- El primer comando crea un archivo descifrado llamado file-content
- el segundo comando crea un archivo descifrado file_sym con el resultado.
gpg -d
imprime el resultado en la consola.
Symmetric Decryption solicitará la frase de contraseña utilizada para cifrar el archivo y colocará el resultado del archivo descifrado
Cifrar con clave pública para un usuario en particular
El cifrado con clave pública significa que ya tienes las claves públicas de aquellos con los que te quieres comunicar. Por lo tanto, primero elegirá al destinatario enumerando las claves públicas en su anillo de claves para que utilice un valor de su uid
para cifrar el archivo. --armor
El parámetro se usa para mensajes blindados ASCI, inútil para enviar archivos por correo
$ gpg --encrypt --armor --recipient my_name@linoxide.com file_pub
Cifrar y firmar con clave pública
Cuando desea firmar un archivo para enviar, significa que su receptor y usted han generado claves públicas que ya han intercambiado. El remitente debe conocer su propia contraseña, lo que le da acceso a su clave privada que utilizará para firmar mensajes cifrados.
$ gpg --sign --encrypt --armor --recipient my_name@linoxide.com file_pub_sign You need a passphrase to unlock the secret key for user: "reader <reader@linoxide.com>"
Mira eso lector @ linóxido necesita su propia contraseña para firmar el archivo cifrado que enviará a my_name@linoxide.com
Cifre varios archivos con clave pública
Para cifrar varios archivos, utilizamos dos parámetros: --encrypt-files
o --multifile
(obligatorio seguido de –encrypt). Puedes ver que no usamos --sign
parámetro. Durante mi prueba, parece que no funciona en conjunto.
$ gpg --encrypt-files --armor --recipient my_name@linoxide.com course car
$ gpg --multifile --encrypt --armor --recipient my_name@linoxide.com course car
Descifrar con clave privada
Cuando encriptas un archivo con la clave pública de tu destinatario, se lo envías por una vía de comunicación. Para descifrar el archivo recibido, utilizará la clave privada (referenciada por su propia frase de contraseña) correspondiente a su propia clave pública que ha utilizado para cifrar el archivo. Para descifrar un archivo cifrado en contenido digital o no, el comando es el mismo que ve a continuación
$ gpg file_pub.asc You need a passphrase to unlock the secret key for user: "my_name (my-key-pair) <my_name@linoxide.com>" $ gpg file_pub_sign.asc You need a passphrase to unlock the secret key for user: "my_name (my-key-pair) <my_name@linoxide.com>" $ gpg --decrypt-files course.asc car.asc
El último comando descifra varios archivos
Encriptar correo electrónico
Para encriptar y firmar tu correo, puedes escribir el mensaje en un archivo, usar gpg para encriptarlo y firmarlo con los métodos que hemos visto y podrías enviarlo por la forma habitual. Su receptor debe tener su clave pública para poder descifrar su mensaje.
También puede instalar enigmail, que se puede utilizar para cifrar el correo electrónico de thunderbird utilizando la clave pública del destinatario que tiene
# apt-get install enigmail
Ejecute thunderbird, lanzará el asistente de configuración para enigmail:
- ¿Cómo le gustaría configurar enigmail? configuración extendida
- crear o importar claves de opengpg: importar claves públicas y secretas existentes
- importar claves de opengpg: elija su archivo de clave pública y privada ubicado en /home/username/.gnupg/. Escoger pubring y secuestrar archivos.
- selección de clave: seleccionar destinatarios quién recibirá el correo electrónico cifrado: reader@linoxide.com
Ahora que se completó la configuración, puede escribir un nuevo mensaje a su destinatario con thunderbird.
Verá que el cifrado se activará automáticamente cuando elija el mismo destinatario para el correo electrónico.
Conclusión
Ahora sabe cómo cifrar archivos y firmar un documento usando gpg en linux. Para mayor seguridad, debe verificar que la clave pública que recibe provenga exactamente de una persona que conoce antes de agregarla a su anillo de claves públicas.
Leer también: