GNU/Linux >> Tutoriales Linux >  >> Linux

Introducción a las herramientas de cifrado de línea de comandos en Linux

1 Introducción

El cifrado es el proceso de codificar mensajes o información de tal manera que solo las partes autorizadas puedan leerlos. Casi sin privacidad en esta generación digital nuestra, el cifrado de nuestros datos es una de las herramientas más requeridas. La mayoría de las aplicaciones como Gmail encriptan nuestros datos, pero los datos en su sistema aún no están seguros y hay piratas informáticos o usuarios no autorizados esperando para acceder a ellos. Una forma de minimizar el riesgo de robo de datos es cifrar los datos que están presentes incluso en nuestro sistema local.

Este tutorial demuestra varios métodos para cifrar los datos en sistemas Linux utilizando herramientas de línea de comandos.

2 Cifrado usando GPG

2.1 Introducción a GPG

GPG significa GNU Private Guard, que es una utilidad de línea de comandos que se utiliza para cifrar y descifrar archivos o carpetas de datos mediante el cifrado de clave pública o simétrica. GPG es una alternativa con licencia GPL al paquete de software criptográfico PGP. GPG también es utilizado por sistemas compatibles con OpenPGP.

2.2 Cifrado mediante clave simétrica

Aquí tengo un archivo llamado "test.txt" que cifraré y luego descifraré con una clave simétrica e imprimiré el texto descifrado en otro archivo llamado "output.txt".

Ejecute el siguiente comando para cifrar el archivo test.txt con una clave simétrica. La opción "-c" indicaba la GPG para usar claves simétricas.

gpg -c test.txt

El resultado de esto se verá como la imagen de abajo. La primera vez que se ejecuta GPG, se crea una carpeta .gnupg. Contiene los archivos que son necesarios para el proceso de cifrado. Luego le pide que ingrese una frase de contraseña dos veces. Asegúrese de ingresar una frase de contraseña segura y de recordarla, ya que la necesitará en el futuro para descifrar sus archivos.

Entonces, una vez que la frase de contraseña se ingresa correctamente, un archivo llamado "test.txt.gpg" es creado. Este es el archivo encriptado. La siguiente imagen muestra el archivo antes y después del cifrado. Puede ver que el texto cifrado tiene un formato ilegible.

Utilice el siguiente comando para descifrar el archivo cifrado

gpg -o output.txt test.txt.gpg

Se le pedirá que ingrese la frase de contraseña utilizada para cifrar. Una vez que lo ingrese correctamente, se creará el archivo "output.txt" con el mismo contenido que el de "test.txt". El resultado del descifrado puede parecerse a la imagen a continuación:

2.3 Cifrado de clave pública

Aquí cifraremos un conjunto de archivos utilizando el mecanismo de cifrado de clave pública/privada de GPG. Implica la creación de una clave privada que nunca debe compartirse con nadie y una clave pública que debe compartirse con las personas que desean enviarle datos cifrados.

Primero, tendremos que empaquetar los archivos en una carpeta comprimida. Aquí tengo un directorio llamado "enctest" con tres archivos test1.txt a test3.txt. Comprimiremos este archivo tar.gz del directorio. Usaré el siguiente comando para crear el archivo tar.gz comprimido:

tar czf files.tar.gz ~/enctest

Esto crea un archivo "files.tar.gz" . Ahora tenemos que generar el par de claves pública/privada. Ejecute el siguiente comando para generar la clave:

gpg --gen-key

Recuerde, esto debe hacerse solo una vez y cualquier cantidad de archivos y carpetas se pueden cifrar con esta clave. Una vez que escriba este comando, se le harán varios conjuntos de preguntas. Las preguntas serán:

  • ¿Qué tipo de cifrado usar? Seleccioné 1 que es RSA y RSA.
  • ¿Cuál debería ser el tamaño de la clave? Elegí 2048, puedes elegir cualquier tamaño en el rango de 1024 y 4096.
  • ¿Cuándo debería caducar la clave? Seleccioné 0, lo que significa que la clave nunca caduca. Pero puede proporcionar días, semanas o años si desea que caduque en un momento determinado.

Se le pedirán otras cosas como la frase de contraseña, se le pedirá que la ingrese dos veces. Asegúrese de usar uno fuerte y de recordar la frase de contraseña. También se utilizarán sus credenciales. Las credenciales que he usado aquí (que se proporcionan a continuación) son solo para pruebas. Se recomienda que use sus credenciales genuinas como nombre, ID de correo electrónico y proporcione algún comentario.

El siguiente contenido muestra mi respuesta y cómo será el resultado:

gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
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: John Doe
Email address: [email protected]
Comment: tis is key generation
You selected this USER-ID:
    "John Doe (tis is key generation) <[email protected]>"

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

Una vez que ingresa la frase de contraseña, comienza a generar la clave. Te pedirá que hagas algo de trabajo. Se recomienda mover el mouse o escribir algo o usar las unidades para abrir algunos archivos. Utilizará este trabajo para generar bits aleatorios. Es posible que tengas que hacer esto varias veces. El resultado para mí se muestra a continuación:

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 187 more bytes)
+++++
...+++++
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 92 more bytes)
.....+++++

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

+++++

Una vez hecho esto, la clave ha sido generada. Se verá similar al contenido a continuación:

gpg: /home/akshay/.gnupg/trustdb.gpg: trustdb created
gpg: key FA2314B6 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:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/FA2314B6 2015-04-02
      Key fingerprint = 5A02 5D77 3E0A 8B69 8086  3032 DE51 6EA5 FA23 14B6
uid                  John Doe (tis is key generation) <[email protected]>
sub   2048R/6F78E642 2015-04-02

Hay dos cosas importantes aquí:proporcione una frase de contraseña segura y asegúrese de recordar su frase de contraseña

Ahora que las claves están generadas, ahora tendremos que exportar el archivo de clave pública para importarlo en otros sistemas o enviarlo por correo electrónico. Para iniciar la exportación, use el siguiente comando:

gpg --armor --output file-enc-pubkey.txt --export 'John Doe'

Reemplace 'John Doe' con el nombre que usó al generar la clave.

También se recomienda realizar una copia de seguridad de la clave privada. Podemos usar gpg para hacer eso. Para realizar la copia de seguridad, utilice el siguiente comando:

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'John Doe'

Aquí el archivo "file-enc-privkey.asc" mantendrá la copia de seguridad de la clave privada de forma segura. Una vez que se completa la exportación y la copia de seguridad de la clave, ahora podemos cifrar y descifrar el archivo .tar.gz. Utilice el siguiente comando para cifrar:

gpg --encrypt --recipient 'John Doe' files.tar.gz

Recuerde cambiar 'John Doe' en el comando anterior por el nombre que le dio durante la generación de claves, de lo contrario, el cifrado fallará. Cuando el comando se ejecuta con éxito, un archivo encriptado llamado "files.tar.gz.gpg" se creará.

Ahora podemos descifrar el archivo tar.gz usando el siguiente comando. Utilizará la clave privada junto con la frase de contraseña para descifrar y proporcionar la carpeta descifrada. Use el siguiente comando para descifrar:

gpg --output output.tar.gz --decrypt files.tar.gz.gpg

El comando anterior solicitará la frase de contraseña y luego descifrará el archivo cifrado y creará un archivo comprimido llamado "output.tar.gz" que luego se puede extraer a la carpeta con tar para recuperar los archivos. La siguiente imagen muestra el resultado de los comandos de cifrado y descifrado:

2.4 ¿Por qué GPG?

GPG admite tanto el cifrado de clave pública como el cifrado simétrico, lo que proporciona una gran flexibilidad y se puede utilizar para una amplia gama de aplicaciones. No es necesario proporcionar ningún tipo de información confidencial y, además, gpg puede tener cualquier cantidad de codificadores mediante el uso de la clave pública. Se le da al usuario la opción de seleccionar entre múltiples algoritmos de encriptación. Estas razones lo convierten en una herramienta de seguridad muy útil para el cifrado de archivos y carpetas o datos.

3 Cifrado usando OpenSSL

3.1 Introducción a OpenSSL

El proyecto OpenSSL es un esfuerzo de colaboración para desarrollar un conjunto de herramientas robusto, de grado comercial, con todas las funciones y de código abierto que implementa los protocolos Secure Sockets Layer (SSL v2/v3) y Transport Layer Security (TLS), así como un sistema general completo. biblioteca criptográfica de propósito. OpenSSL está disponible para la mayoría de los sistemas operativos similares a Unix y se basa en SSLeay. OpenSSL también es compatible con muchas aplicaciones SSH, SFTP y SCP. Aquí usamos OpenSSL para cifrar datos haciendo uso del cifrado asimétrico y el cifrado AES. El cifrado simétrico se puede utilizar para cifrar archivos o datos más grandes.

3.2 Generando las claves Publica y Privada

Lo primero que tenemos que hacer es generar las claves pública y privada. Primero generamos la clave privada. Para hacerlo, use el siguiente comando:

openssl genrsa -out private_key.pem 1024

El comando anterior le indica a OpenSSL que use RSA para generar una clave privada con un tamaño de 1024 bytes. Luego, la clave se almacena de forma segura en un archivo llamado "private_key.pem" . El resultado de este comando se verá similar a la siguiente imagen:

Una vez que se genera la clave privada (la secreta), podemos usarla para generar la clave pública para que formen un par. Utilice el siguiente comando para generar la clave pública:

openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout

Se verá como la imagen de abajo:

3.3 Cifrado de datos

Ahora podemos usar la clave pública para cifrar datos. Aquí cifraremos el archivo "test.txt" y almacenaremos el texto cifrado en el archivo encrypt.dat. Ejecute el siguiente comando:

openssl rsautl -encrypt -inkey public_key.pem -pubin -in encrypt.txt -out encrypt.dat

Las siguientes imágenes muestran el archivo de texto antes y después del cifrado:

3.4 Descifrado de datos

Aquí usamos la clave privada para descifrar el archivo. Ejecute el siguiente comando:

openssl rsautl -decrypt -inkey private_key.pem -in encrypt.dat -out decrypt.txt

El archivo decrypt.txt contendrá los datos descifrados. La ejecución del comando anterior y también el contenido del archivo se muestra en la siguiente imagen:

4 Conclusión

Los métodos que se muestran arriba son altamente seguros cuando se usan con cuidado y permiten múltiples cifrados y niveles de seguridad para adaptarse a diferentes niveles de seguridad. Por lo tanto, cualquiera de estos se puede usar en varios escenarios para cifrar archivos/carpetas y datos sin procesar.

5 Enlaces

  • Abrir SSL
  • Abrir PGP

Linux
  1. Introducción a los cortafuegos de Linux

  2. Primeros pasos con el comando tac de Linux

  3. Comenzando con PiFlash:Arrancando su Raspberry Pi en Linux

  4. Primeros pasos con el comando cat de Linux

  5. Primeros pasos con PostgreSQL en Linux

Primeros pasos con el sistema operativo Linux

Tutorial de Vagrant:Primeros pasos con Vagrant en Linux

Primeros pasos con Docker Compose en Linux

Comenzando con VirtualBox en Linux – Parte 1

Primeros pasos con Flutter en el escritorio de Linux

¿Empezando con Linux Mint? Concéntrese en estas tres herramientas