Cifrar archivos en OpenSSL

WiresharkWiresharkBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo utilizar OpenSSL para el cifrado y descifrado de archivos, una habilidad crucial en ciberseguridad. Practicará la generación de claves simétricas y la aplicación del cifrado AES para proteger datos sensibles a través de ejercicios prácticos.

El laboratorio lo guiará a través del proceso de instalación de OpenSSL, la creación de archivos de prueba y la realización de ciclos completos de cifrado y descifrado. Esta experiencia práctica le ayudará a comprender las técnicas fundamentales de protección de datos utilizadas en aplicaciones del mundo real.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/decrypt_ssl_tls("Decrypting SSL/TLS") subgraph Lab Skills wireshark/decrypt_ssl_tls -.-> lab-549935{{"Cifrar archivos en OpenSSL"}} end

Instalar OpenSSL

En este paso, instalará OpenSSL, que es una poderosa herramienta para implementar comunicaciones seguras. OpenSSL proporciona funciones criptográficas esenciales que utilizaremos para cifrar y descifrar archivos más adelante en este laboratorio. Es ampliamente utilizado para asegurar la transmisión y el almacenamiento de datos.

Antes de comenzar, es importante entender que OpenSSL generalmente está incluido por defecto en la mayoría de las distribuciones de Linux. Sin embargo, recorreremos el proceso de instalación para asegurarnos de que tenga la versión correcta y todos los componentes necesarios. Esto es lo que haremos:

  1. Primero, necesitamos actualizar la lista de paquetes. Esto asegura que su sistema sepa sobre las últimas versiones de software disponibles:

    sudo apt update
  2. Ahora instalaremos OpenSSL. La bandera -y confirma automáticamente la instalación, evitándole tener que escribir 'yes' durante el proceso:

    sudo apt install openssl -y
  3. Después de la instalación, verificaremos que funcione comprobando la versión. Este comando muestra qué versión de OpenSSL está actualmente activa en su sistema:

    openssl version

    Debería ver una salida similar a:

    OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
  4. Finalmente, revisaremos el menú de ayuda. Esto muestra todos los comandos disponibles de OpenSSL y confirma que la instalación está funcionando correctamente:

    openssl help

    La salida de la ayuda muestra las diversas operaciones criptográficas que OpenSSL puede realizar, las cuales exploraremos en los siguientes pasos de este laboratorio.

Crear un archivo de muestra

En este paso, creará un simple archivo de texto que servirá como nuestros datos de prueba para los ejercicios de cifrado y descifrado. Trabajar con un archivo de texto conocido ayuda a verificar que nuestro proceso de cifrado funcione correctamente, ya que podemos comparar fácilmente el contenido original y el descifrado.

Comencemos creando este archivo de muestra en su directorio de proyecto. Utilizaremos el editor de texto nano, que es amigable para principiantes, pero puede utilizar cualquier editor de texto con el que se sienta cómodo.

  1. Primero, navegue hasta su directorio de proyecto. Esto asegura que todos sus archivos se mantengan organizados en un solo lugar:

    cd ~/project
  2. Ahora cree y abra un nuevo archivo llamado sample.txt utilizando nano:

    nano sample.txt
  3. Cuando nano se abra, verá un espacio en blanco para editar. Escriba las siguientes dos líneas exactamente como se muestran:

    This is a sample text file for encryption testing.
    LabEx Cybersecurity Lab - AES Encryption Demo.
  4. Para guardar su trabajo en nano:

    • Presione Ctrl+O (la letra O, no el cero) para "Escribir" (guardar) el archivo
    • Presione Enter para confirmar el nombre de archivo sample.txt
    • Presione Ctrl+X para salir del editor
  5. Verifiquemos que el archivo se haya creado correctamente mostrando su contenido:

    cat sample.txt

    La terminal debe mostrar exactamente las dos líneas que ingresó. Si algo se ve diferente, es posible que deba editar el archivo nuevamente.

  6. Finalmente, verifique los detalles del archivo para confirmar que existe y tiene contenido:

    ls -l sample.txt

    Este comando muestra los permisos del archivo, el propietario, el tamaño y otros detalles. Un tamaño distinto de cero (por lo general, 80 - 100 bytes) confirma que su texto se guardó correctamente.

Tener este archivo de muestra listo es crucial para los siguientes pasos en los que lo cifraremos y descifraremos, lo que nos permitirá ver claramente cómo funciona el proceso de cifrado cuando recuperamos nuestro texto original después del descifrado.

Generar una clave simétrica

En este paso, generará una clave de cifrado simétrico utilizando OpenSSL que usaremos para cifrar nuestro archivo de muestra en el siguiente paso. El cifrado simétrico significa que se utiliza la misma clave tanto para bloquear (cifrar) como para desbloquear (descifrar) los datos, a diferencia del cifrado asimétrico que utiliza claves separadas. Esto hace que el proceso de generación de la clave sea particularmente importante para la seguridad.

Desglosemos lo que vamos a hacer: Crearemos una clave aleatoria segura utilizando las funciones criptográficas de OpenSSL, la almacenaremos de forma segura y verificaremos sus propiedades. La clave utilizará el cifrado AES-256, que actualmente se considera muy seguro para la mayoría de los fines.

Siga estos pasos cuidadosamente para generar una clave de cifrado AES-256 segura:

  1. Primero, asegúrese de estar en el directorio de trabajo correcto donde almacenaremos nuestro archivo de clave. Esto ayuda a mantener organizados los archivos de su proyecto:

    cd ~/project
  2. Ahora generaremos la clave real. El comando openssl rand crea datos aleatorios criptográficamente seguros. Estamos solicitando 32 bytes (256 bits) de datos aleatorios y los estamos formateando como hexadecimales (base-16) para facilitar la lectura:

    openssl rand -hex 32 > symmetric_key.hex
  3. Veamos la clave generada para confirmar que se creó correctamente. La clave debería aparecer como una larga cadena de caracteres aleatorios:

    cat symmetric_key.hex

    Debería ver una cadena hexadecimal de 64 caracteres (que representa 32 bytes) similar a:

    a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890
  4. Dado que esta clave puede desbloquear sus datos cifrados, necesitamos protegerla. El comando chmod 600 asegura que solo usted pueda leer o escribir este archivo:

    chmod 600 symmetric_key.hex
  5. Finalmente, verifiquemos las propiedades del archivo de clave para confirmar que todo está configurado correctamente:

    ls -l symmetric_key.hex

    La salida debería mostrar:

    • Su nombre de usuario como propietario
    • Permisos -rw------- (solo usted puede leer/escribir)
    • Tamaño de 65 bytes (64 caracteres + carácter de nueva línea)

Recuerde mantener este archivo de clave seguro: cualquiera que lo tenga puede descifrar sus archivos cifrados. En escenarios del mundo real, es posible que desee almacenarlo en un lugar más seguro que su directorio de proyecto.

Cifrar el archivo con AES

En este paso, utilizará la clave simétrica generada en el paso anterior para cifrar su archivo de muestra utilizando AES-256-CBC. AES (Advanced Encryption Standard, Estándar de Cifrado Avanzado) es un algoritmo de cifrado simétrico ampliamente utilizado que ofrece una fuerte seguridad. La longitud de la clave de 256 bits brinda una alta protección, mientras que el modo CBC (Cipher Block Chaining, Encadenamiento de Bloques de Cifrado) asegura que cada bloque de datos se procese de manera segura en secuencia.

Antes de comenzar, entendamos lo que vamos a hacer: tomaremos su archivo de texto legible original y lo transformaremos en una versión cifrada que parece datos aleatorios. Solo alguien con la clave correcta puede descifrarlo y volverlo a su forma original.

Siga estos pasos para cifrar su archivo:

  1. Primero, asegúrese de estar en el directorio de trabajo correcto donde se encuentra su archivo de muestra. Esto es importante porque OpenSSL necesita encontrar tanto su archivo de entrada como el archivo de la clave:

    cd ~/project
  2. Ahora utilizaremos el comando de cifrado de OpenSSL. -aes-256-cbc especifica el algoritmo, -in apunta a nuestro archivo de entrada, -out especifica dónde guardar la versión cifrada y -pass file: le dice a OpenSSL dónde encontrar la clave de cifrado:

    openssl enc -aes-256-cbc -in sample.txt -out sample.enc -pass file:symmetric_key.hex
  3. Después de ejecutar el comando de cifrado, verifiquemos que el archivo cifrado se haya creado correctamente. El archivo cifrado debe ser ligeramente más grande que el original debido a que el proceso de cifrado agrega algunos datos adicionales:

    ls -l sample.enc

    La salida debe mostrar:

    • Su nombre de usuario como propietario
    • Un tamaño de archivo mayor que el original (debido a la sobrecarga del cifrado)
  4. Para confirmar que el cifrado funcionó, intentemos ver el contenido cifrado. A diferencia de su archivo de texto original, esto debería aparecer como datos binarios aleatorios porque ahora está cifrado de manera segura:

    cat sample.enc

    Debería ver datos binarios que parecen aleatorios, lo que confirma que el cifrado fue exitoso.

  5. Para una verificación adicional, podemos comprobar cómo el sistema identifica el tipo de archivo. El comando file examina el contenido del archivo para determinar su tipo:

    file sample.enc

    La salida debe indicar que es "data" (no "ASCII text" como el original), lo que es lo que esperamos de un archivo cifrado.

Descifrar y verificar el archivo

En este último paso, descifrará el archivo cifrado utilizando la clave simétrica y verificará que el contenido descifrado coincida con el archivo original. Esto completa el ciclo de cifrado/descifrado y valida que nuestras operaciones criptográficas funcionaron correctamente. El descifrado es esencialmente el proceso inverso del cifrado: toma los datos desordenados y los transforma de nuevo a su forma original utilizando la misma clave que se utilizó para el cifrado.

Siga estos pasos para descifrar y verificar su archivo:

  1. Primero, asegúrese de estar en el directorio de trabajo correcto donde se almacenan su archivo cifrado y la clave:

    cd ~/project
  2. Descifre el archivo cifrado utilizando la misma clave simétrica. La bandera -d le dice a OpenSSL que estamos descifrando, mientras que otros parámetros coinciden con los utilizados durante el cifrado:

    openssl enc -d -aes-256-cbc -in sample.enc -out sample.dec -pass file:symmetric_key.hex
  3. Verifique que se haya creado el archivo descifrado. El comando ls -l muestra información detallada del archivo, incluyendo su tamaño y fecha de creación:

    ls -l sample.dec
  4. Compare el archivo descifrado con el original. El comando diff comprueba si hay diferencias entre los archivos línea por línea:

    diff sample.txt sample.dec

    Si los archivos son idénticos (como deberían ser), no habrá salida de este comando. Cualquier salida indicaría una discrepancia entre el contenido original y el descifrado.

  5. Vea el contenido descifrado para confirmar que coincide con el original. El comando cat muestra todo el contenido del archivo en su terminal:

    cat sample.dec

    Debería ver exactamente el mismo texto que en su archivo original sample.txt. Esta confirmación visual es importante para verificar que el descifrado funcionó correctamente.

  6. Para una verificación adicional, compruebe el tipo de archivo. El comando file examina el contenido del archivo para determinar su tipo:

    file sample.dec

    La salida debe indicar que es "ASCII text" como el original, lo que confirma que el descifrado restauró con éxito el archivo a su formato de texto original.

Resumen

En este laboratorio, has aprendido cómo cifrar y descifrar archivos utilizando OpenSSL a través de la práctica. Los ejercicios cubrieron la instalación de OpenSSL, la creación de archivos de prueba y la realización de operaciones de cifrado/descifrado con claves simétricas AES.

El laboratorio demostró el flujo de trabajo completo desde la generación de la clave hasta la verificación del cifrado y descifrado de archivos. Esta experiencia práctica ayuda a consolidar la comprensión de las operaciones criptográficas fundamentales en aplicaciones de ciberseguridad.