image4.jpg

Conceptos básicos de seguridad de Linux: cómo cifrar y firmar archivos con GnuPG

Linux viene con la utilidad de autenticación y cifrado GNU Privacy Guard (GnuPG o GPG). Con GnuPG, puede crear su par de claves pública y privada en su sistema Linux, cifrar archivos con su clave y firmar digitalmente un mensaje para autenticar que es suyo. Si envía un mensaje firmado digitalmente a alguien que tiene su clave pública, el destinatario puede verificar que usted firmó el mensaje.

Comprender el cifrado de clave pública

La idea básica detrás del cifrado de clave pública es usar un par de claves, una privada y la otra pública, que están relacionadas pero que no se pueden usar para adivinar una de la otra. Todo lo cifrado con la clave privada solo se puede descifrar con la clave pública correspondiente y viceversa. La clave pública es para distribuirla a otras personas; guarde la clave privada en un lugar seguro.

Puede utilizar el cifrado de clave pública para comunicarse de forma segura con otros. Probemos con un ejemplo. Suponga que Alice quiere enviar mensajes seguros a Bob. Cada persona genera pares de claves públicas y privadas, después de lo cual intercambian sus claves públicas. Cuando Alice quiere enviar un mensaje a Bob, encripta el mensaje usando la clave pública de Bob y le envía el mensaje encriptado. Ahora el mensaje está protegido contra escuchas, porque solo la clave privada de Bob puede descifrar el mensaje, y solo Bob tiene esa clave. Cuando Bob recibe el mensaje, usa su clave privada para descifrar el mensaje y leerlo.

En este punto, podría decir: “¡Espera un minuto! ¿Cómo sabe Bob que el mensaje realmente vino de Alice? ¿Qué pasa si alguien más usa la clave pública de Bob y envía un mensaje como si viniera de Alice? ” Esta situación es donde entran las firmas digitales.

Entender las firmas digitales

El propósito de las firmas digitales (electrónicas) es el mismo que el de las firmas con lápiz y tinta, pero la forma de firmar digitalmente es diferente. A diferencia de una firma con lápiz y tinta, su firma digital depende del mensaje que está firmando. El primer paso para crear una firma digital es aplicar una función matemática al mensaje y reducirlo a un resumen de mensaje de tamaño fijo (también llamado hash o huella digital ). No importa qué tan grande sea su mensaje, el resumen del mensaje suele ser de 128 o 160 bits, dependiendo de la función hash.

El siguiente paso es aplicar el cifrado de clave pública. Simplemente cifre el resumen del mensaje con su clave privada y obtendrá la firma digital del mensaje. Por lo general, la firma digital se agrega al final del mensaje y, listo, obtienes un mensaje firmado electrónicamente.

¿De qué sirve la firma digital? Bueno, cualquiera que quiera verificar que el mensaje está realmente firmado por usted, toma su clave pública y descifra la firma digital. Lo que obtiene esa persona es el resumen del mensaje (el hash cifrado) del mensaje. Luego, aplica la misma función hash al mensaje y compara el hash calculado con el valor descifrado. Si los dos coinciden, nadie ha manipulado el mensaje. Debido a que su clave pública se usó para verificar la firma, el mensaje debe haber sido firmado con la clave privada que solo usted conoce, por lo que el mensaje debe ser de usted.

LEER  Cómo agregar una nueva cuenta a Windows 8.1 Metro Mail

En el escenario teórico en el que Alice envía mensajes privados a Bob, Alice puede firmar digitalmente su mensaje para asegurarse de que Bob pueda saber que el mensaje es realmente de ella.

Así es como Alice envía su mensaje privado a Bob con la seguridad de que Bob puede saber que es de ella:

  1. Alice usa un software para calcular el resumen del mensaje y luego encripta el resumen usando su clave privada, su firma digital para el mensaje.
  2. Alice encripta el mensaje (nuevamente, usando algún software conveniente y la clave pública de Bob).
  3. Ella envía tanto el mensaje cifrado como la firma digital a Bob.
  4. Bob descifra el mensaje utilizando su clave privada.
  5. Bob descifra la firma digital, utilizando la clave pública de Alice, que le da el resumen del mensaje.
  6. Bob calcula el resumen del mensaje del mensaje y lo compara con lo que obtuvo al descifrar la firma digital.
  7. Si los dos resúmenes de mensajes coinciden, Bob puede estar seguro de que el mensaje realmente proviene de Alice.

Usando GPG en un sistema Linux

GPG incluye las herramientas que necesita para utilizar el cifrado de clave pública y las firmas digitales. Puede descubrir cómo usar GPG gradualmente a medida que comienza a usar el cifrado. La siguiente información muestra algunas de las tareas típicas que puede realizar con GPG.

Generando el par de claves en Linux

Los pasos para generar los pares de claves son los siguientes:

  1. Escriba gpg –gen-key. 

    Si está utilizando GPG por primera vez, crea un .gnupgdirectorio en su directorio de inicio y un archivo nombrado gpg.confen ese directorio. Luego pregunta qué tipo de claves desea:

    Seleccione el tipo de clave que desea:
    (1) DSA y ElGamal (predeterminado)
    (2) DSA (solo firmar)
    (4) RSA (solo signo)
    ¿Tu seleccion?
  2. Presione Entrar para la opción predeterminada, que es lo suficientemente buena. 

    GPG le solicita el tamaño de la clave (la cantidad de bits).

  3. Presione Entrar nuevamente para aceptar el valor predeterminado de 2048 bits. 

    GPG le pregunta cuándo caducan las claves. El valor predeterminado es no caducar nunca.

  4. Si el valor predeterminado es lo que desea (¿y por qué no?), Presione Entrar.
  5. Cuando GPG le pregunte si realmente desea que las claves nunca caduquen, presione la tecla Y para confirmar. 

    GPG le solicita su nombre, su dirección de correo electrónico y un comentario para facilitar la asociación del par de claves con su nombre.

  6. Escriba cada pieza de información solicitada y presione Entrar.
  7. Cuando GPG le da la oportunidad de cambiar la información o confirmarla, confirme escribiendo oy presionando Enter. 

    GPG le solicita una frase de contraseña que protege su clave privada.

  8. Escriba una frase larga que incluya letras minúsculas y mayúsculas, números y signos de puntuación (cuanto más largos, mejor) y luego presione Entrar. 

    Tenga cuidado de elegir una frase de contraseña que pueda recordar fácilmente.

    GPG genera las claves. Es posible que le pida que realice algún trabajo en la PC para que el generador de números aleatorios pueda generar suficientes números aleatorios para el proceso de generación de claves.

LEER  Cómo desactivar el brillo adaptable en su tableta con Windows 8

Intercambiar claves usando Linux

Para comunicarse con otros, debe darles su clave pública. También debe obtener claves públicas de aquellos que pueden enviarle un mensaje (o cuando alguien que pueda firmar un archivo y usted quiera verificar la firma). GPG mantiene las claves públicas en su llavero. (El llavero son simplemente las claves públicas almacenadas en un archivo, pero el nombre suena bien porque todos tienen un llavero en el mundo real, y estas claves son llaves de algún tipo). Para enumerar las claves en su llavero, escriba

gpg --list-keys

Para enviar su clave pública a alguien o colocarla en un sitio web, debe exportar la clave a un archivo. La mejor manera es poner la clave en lo que la documentación de GPG llama formato ASCII-blindado, con un comando como este:

gpg --armadura --exportar kdualney@insightbb.com & gt; kdulaneykey.asc

Este comando guarda la clave pública en formato blindado ASCII (que parece texto ilegible) en el archivo llamado kdulaneykey.asc. Reemplaza la dirección de correo electrónico con su dirección de correo electrónico (la que usó cuando creó la clave) y reemplaza el nombre del archivo de salida con algo diferente.

Después de exportar la clave pública a un archivo, puede enviar ese archivo por correo a otras personas o colocarlo en un sitio web para que lo utilicen otras personas.

Cuando importa una clave de alguien, normalmente también la obtiene en formato ASCII-blindado. Si tiene una clave pública GPG us-cert@us-cert.gov en un archivo con nombre uscertkey.asc, impórtela al llavero de claves con el siguiente comando:

gpg --importar uscertkey.asc

Utilice el gpg --list-keyscomando para verificar que la clave esté en su llavero. Esto es lo que puede ver al escribir gpg –list-keys en el sistema:

/home/kdulaney/.gnupg/pubring.gpg
-----------------------------
pub 1024D / 7B38A728 2018-08-28
uid Kristin Dulaney & lt; kdulaney@insightbb.com>
sub 2048g / 3BD6D418 2018-08-28
pub 2048R / F0E187D0 2019-09-08 [expira: 2019-10-01]
uid Clave de operaciones de US-CERT & lt; us-cert@us-cert.gov>

El siguiente paso es verificar la huella digital de la nueva clave. Escriba el siguiente comando para obtener la huella digital de la clave US-CERT:

gpg - huella dactilar us-cert@us-cert.gov

GPG imprime la huella digital de la siguiente manera:

pub 2048R / F0E187D0 2018-09-08 [expira: 2019-10-01]

Huella digital de la llave = 049F E3BA 240B 4CF1 3A76 06DC 1868 49EC F0E1 87D0

uid Clave de operaciones de US-CERT & lt; us-cert@us-cert.gov>

En este punto, debe verificar la huella digital de la clave con alguien de la organización US-CERT.

Si cree que la huella dactilar de la clave es buena, puede firmar la clave y validarla. Este es el comando que usa para firmar la clave:

gpg - clave de firma us-cert@us-cert.gov

GPG solicita confirmación y luego le solicita su frase de contraseña. Después de eso, GPG firma la llave.

Debido a que la verificación y firma de claves son posibles eslabones débiles en GPG, tenga cuidado con las claves que firma. Al firmar una clave, dice que confía en que la clave es de esa persona u organización.

LEER  Cómo copiar archivos a un CD o DVD en Windows 10

Firmar un archivo en Linux

Puede que la firma de archivos sea útil si envía un archivo a alguien y desea asegurarle al destinatario que nadie manipuló el archivo y que, de hecho, lo envió. GPG facilita la firma de un archivo. Puede comprimir y firmar un archivo nombrado messagecon el siguiente comando:

gpg -o message.sig -s mensaje

Para verificar la firma, escriba

gpg --verify message.sig

Para recuperar el documento original, escriba

gpg -o mensaje --decrypt message.sig

A veces, no le importa mantener un mensaje en secreto, pero desea firmarlo para indicar que el mensaje es suyo. En tal caso, puede generar y agregar una firma de texto sin cifrar con el siguiente comando:

gpg -o message.asc --clearsign message

Este comando agrega una firma de texto sin cifrar al mensaje de texto. Aquí hay un bloque de firma de texto claro típico:

----- COMENZAR FIRMA PGP -----
Versión: GnuPG v1.4.2 (GNU / Linux)
iD8DBQFDEhAtaHWlHHs4pygRAhiqAJ9Qj0pPMgKVBuokDyUZaEYVsp6RIQCfaoBm
9zCwrSAG9mo2DXJvbKS3ri8 =
= 2uc /
----- FIN DE FIRMA PGP -----

Cuando un mensaje tiene una firma de texto sin cifrar adjunta, puede usar GPG para verificar la firma con el siguiente comando:

gpg --verify message.asc

Si de hecho firmó el mensaje, la última línea del resultado dice que la firma es buena.

Cifrar y descifrar documentos en Linux

Para cifrar un mensaje destinado a un destinatario, puede utilizar el comando --encrypt(o -e) GPG. A continuación, le mostramos cómo puede cifrar un mensaje para US-CERT utilizando su clave GPG:

gpg -o mensaje.gpg -e -r us-cert@us-cert.gov mensaje

El mensaje está encriptado con la clave pública US-CERT (sin firma, pero puede agregar la firma con el -scomando).

Cuando US-CERT recibe el message.gpgarchivo, el destinatario debe descifrarlo utilizando la clave privada de US-CERT. Este es el comando que puede usar alguien en US-CERT:

gpg -o mensaje --decrypt message.gpg

Luego, GPG solicita la frase de contraseña para desbloquear la clave privada US-CERT, descifra el mensaje y guarda la salida en el archivo nombrado message.

Si desea cifrar un archivo que nadie más tiene que descifrar, puede utilizar GPG para realizar un cifrado simétrico. En este caso, proporcione una frase de contraseña para cifrar el archivo con el siguiente comando GPG:

gpg -o secreto.gpg -c algún archivo

GPG te solicita la contraseña y te pide que la repitas (para asegurarte de que no escribiste nada mal). Luego, GPG encripta el archivo, usando una clave generada a partir de la frase de contraseña.

Para descifrar un archivo cifrado con una clave simétrica, escriba

gpg -o myfile --decrypt secret.gpg

GPG le solicita la frase de contraseña. Si ingresa la frase de contraseña correcta, GPG descifra el archivo y guarda la salida (en este ejemplo) en el archivo llamado myfile.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *