GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo cifrar y descifrar archivos/carpetas en Linux usando GnuPG

Recientemente, uno de nuestros lectores tuvo una pregunta:"¿Cómo cifrar y descifrar algunos archivos/carpetas en Linux, preferiblemente basado en CLI?"

Esta es la solución: Para cifrar y descifrar archivos utilizaremos GnuPG (GNU Privacy Guard), que es la herramienta de GNU para el cifrado y la firma. GnuPG es una implementación con licencia GPL del estándar OpenPGP (Pretty Good Privacy) tal como se define en RFC 4880. GnuPG en sí mismo es una herramienta de línea de comandos sin elementos gráficos. Es el verdadero motor criptográfico que se puede usar directamente desde un símbolo del sistema, desde scripts de shell u otros programas. Por lo tanto, puede considerarse como un backend para otras aplicaciones.

Ventajas de GnuPG:

  • Mejor funcionalidad que PGP y algunas mejoras de seguridad sobre PGP 2.
  • Descifra y verifica los mensajes PGP 5, 6 y 7.
  • Admite ElGamal, DSA, RSA, AES, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 y TIGER.
  • Fácil implementación de nuevos algoritmos usando módulos de extensión.
  • Admite fechas de caducidad de clave y firma.
  • Compatibilidad con los idiomas inglés, danés, holandés, esperanto, estonio, francés, alemán, japonés, italiano, polaco, portugués (brasileño), portugués (portugués), ruso, español, sueco y turco.

En este artículo veremos la instalación de GnuPG, el cifrado y descifrado de archivos mediante contraseña y par de claves.

Cómo instalar GnuPG

GnuPG se instalaría en la mayoría de las distribuciones de Linux. Para verificar, ejecute el siguiente comando:

[root@catest]# yum info gnupg

Si ya encuentra la instalación, entonces no necesita instalar, de lo contrario, instale usando yum (Sepa cómo configurar Yum).

[root@catest]#yum install gnupg

Cómo cifrar un archivo en Linux usando contraseña – GnuPG

Siga el siguiente comando para cifrar un archivo usando una frase de contraseña:

[root@catest]# gpg -c <filename>

Ejecutar el comando anterior por primera vez crearía .gnupg directorio en su directorio de inicio. En .gnupg Se crearían dos archivos en el directorio: gpg.conf, pubring.gpg y secring.gpg . gpg.conf es el archivo de configuración predeterminado que gpg consideraría en el cifrado y descifrado de los archivos, pubring.gpg es el conjunto de claves públicas y secring.gpg es el llavero secreto.

Aquí la opción -c haría que gpg encriptara el archivo con un cifrado simétrico usando una frase de contraseña. El cifrado simétrico predeterminado que se usa es CAST5, pero se pueden elegir otros con la opción –cipher-algo.

Para cifrar un archivo llamado sample.txt, ejecute el siguiente comando:

[root@catest]# gpg -c sample.txt
Enter passphrase:<YOUR-SECRET-PASSWORD>
Repeat passphrase:<YOUR-SECRET-PASSWORD>

El comando anterior solicitaría la frase de contraseña dos veces para confirmar y, en caso de éxito, crearía sample.txt.gpg conservando el archivo sample.txt original también. Es recomendable eliminar el archivo original sample.txt y tener solo el archivo encriptado.

Nota:si alguna vez olvida su contraseña, ¡sería imposible descifrar el archivo!

Cómo descifrar un archivo en Linux usando contraseña – GnuPG

Para descifrar un archivo ya encriptado, use el siguiente comando:

[root@catest ~]# gpg sample.txt.gpg
gpg: CAST5 encrypted data
Enter passphrase:

Ejecutar el comando anterior solicitaría la frase de contraseña para descifrar el archivo. Si tiene éxito, el archivo cifrado se descifrará.

Cómo generar un par de claves pública-privada – GnuPG

Antes de comenzar a encriptar usando un par de claves, en primer lugar se debe crear un par de claves pública/privada GPG usando el siguiente comando:

[root@catest ~]# gpg --gen-key

Sigue las instrucciones. Los valores predeterminados deberían ser suficientes para una primera prueba. Aparecerá algo como lo siguiente:

gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

gpg: directory `/home/ramyasanthosh/.gnupg' created
gpg: new configuration file `/home/ramyasanthosh/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/ramyasanthosh/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/ramyasanthosh/.gnupg/secring.gpg' created
gpg: keyring `/home/ramyasanthosh/.gnupg/pubring.gpg' created
Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 7
Key expires at Mon 30 Dec 2013 04:46:14 PM IST
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <[email protected]>"

Real name: ramyasanthosh
Email address: [email protected]
Comment: Testing
You selected this USER-ID:
"ramyasanthosh (Testing) <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

Enter passphrase:
Repeat passphrase:

Se le pedirá una frase de contraseña para la clave. Es muy recomendable usar uno fuerte. No es necesario para el cifrado de archivos de todos modos, pero se requiere durante el descifrado de archivos.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
.++++++++++....++++++++++.++++++++++++++++++++..+++++.+++++++++++++++++++++++++++++++++++..+++++.++++++++++++++++++++..+++++++++++++++..++++++++++>+++++.+++++......>+++++..+++++

Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 284 more bytes)

Una vez que haya suficientes bytes aleatorios disponibles, se generarán las claves. Pero poner a disposición suficientes bytes aleatorios no es una tarea fácil. entonces la solución es:

Solución a “No hay suficientes bytes aleatorios disponibles – GnuPG”

Todos sabemos que es bastante molesto crear entropía manualmente para la creación de una clave GPG. Entonces, al usar rngd, enviaremos datos aleatorios desde el dispositivo de hardware al dispositivo aleatorio del kernel como se muestra a continuación:

[root@catest .gnupg]# ls -l /dev/urandom
cr--r--r-- 1 root root 1, 9 Oct 11 11:14 /dev/urandom
[root@catest .gnupg]# which rngd
/sbin/rngd
[root@catest .gnupg]# rngd -r /dev/random

Luego cree su clave GPG y las claves se generarán como se muestra a continuación:

++++++++++.++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++.+++++.+++++++++++++++.+++++..+++++.+++++++++++++++.+++++++++++++++>+++++..+++++.+++++^^^^
gpg: /home/ramyasanthosh/.gnupg/trustdb.gpg: trustdb created
gpg: key 296A5510 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
pub   1024D/453697B4 2013-12-23
      Key fingerprint = 0511 6477 3F98 75AB 905D  0D05 BCBA 6C69 4536 97B4
uid                  ramyasanthosh (Testing) <[email protected]>
sub   2048g/D4EAC9A3 2013-12-23

Cómo exportar una clave pública – GnuPG

Ahora que se genera el par de claves, exportaremos la clave pública para usarla en otro servidor para el cifrado y luego transferiremos el archivo cifrado a nuestro servidor original para descifrarlo usando la clave privada. Para exportar la clave pública, ejecute el siguiente comando:

[root@catest .gnupg]# gpg --armor --output public-key.txt --export 'ramyasanthosh'

Aquí, "ramyasanthosh" es el uid utilizado durante la generación del par de claves.

Cómo cifrar un archivo usando un par de claves públicas – GnuPG

Ahora usaremos esta clave pública para cifrar el archivo en otro servidor, para lo cual primero debe importar la clave pública en ese sistema como se muestra con el siguiente comando:

Mon Dec 23>$ gpg --import file-enc-pubkey.txt

Luego puede ver la clave pública importada con el siguiente comando para enumerar todas las claves públicas disponibles.

Mon Dec 23>$ gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/453697B4 2013-12-23
uid                  ramyasanthosh (Testing) <[email protected]>
sub   2048g/D4EAC9A3 2013-12-23

Ahora usando esta clave pública cifraremos un archivo:

Mon Dec 23>$ gpg --encrypt --recipient 'ramyasanthosh' sample.txt
pub  2048g/D4EAC9A3 2013-12-23 ramyasanthosh (Testing) <[email protected]>
 Primary key fingerprint: 0511 6477 3F98 75AB 905D  0D05 BCBA 6C69 4536 97B4
      Subkey fingerprint: 25C1 48E1 073A 7F61 BFFD  9D14 3F7E 939F D4EA C9A3

Una vez hecho esto, encontrará el nombre del archivo sample.txt.gpg – Un archivo encriptado. Transfiera el archivo al servidor original donde generamos el par de claves.

Cómo descifrar un archivo usando una clave privada – GnuPG

Ahora descifraremos el archivo encriptado usando una clave privada con el siguiente comando. Se le pedirá que ingrese la frase de contraseña que usó para generar el par de claves.

[root@catest ~]# gpg --output sample.txt --decrypt sample.txt.gpg

You need a passphrase to unlock the secret key for
user: "ramyasanthosh (Testing) <[email protected]>"
2048-bit ELG-E key, ID D4EAC9A3, created 2013-12-23 (main key ID 453697B4)

Enter passphrase:

gpg: encrypted with 2048-bit ELG-E key, ID D4EAC9A3, created 2013-12-23
      "ramyasanthosh (Testing) <[email protected]>"

Eso se hace con el descifrado y encontraría el archivo original sample.txt.

Cómo hacer una copia de seguridad de su clave privada – GnuPG

¡Siempre es recomendable que haga una copia de seguridad de su clave privada y nunca olvide su frase de contraseña! Siga el siguiente comando para hacer una copia de seguridad de su clave privada:

[root@catest ~]# gpg --armor --output privatekey.asc --export-secret-keys 'ramyasanthosh'

Linux
  1. Cómo cifrar y descifrar archivos y directorios utilizando Tar y OpenSSL

  2. Uso de GPG para cifrar y descifrar archivos en Linux [práctica para principiantes]

  3. Cómo extraer archivos .gz y .tar.gz en Linux

  4. Cómo cifrar y descifrar un archivo usando GnuPG en Linux

  5. Cómo comprimir y descomprimir archivos .bz2 en Linux usando el comando bzip2

Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux

Cómo abrir archivos y carpetas como administrador en Nautilus File Manager en Linux

Cómo ocultar carpetas y archivos en Linux usando un archivo de texto

Cómo copiar archivos y directorios en la terminal de Linux

Cómo cifrar archivos en Linux

Cómo eliminar archivos y directorios usando la línea de comandos de Linux