Cifra archivos de gran tamaño de forma sencilla con OpenSSL

Cada día existen más amenazas que ponen en peligro nuestros datos. Siempre hemos insistido en la importancia de tener una copia de seguridad en un lugar seguro para poder recuperar los archivos en caso de pérdida. Cuando nuestros datos son personales es conveniente realizar también un cifrado de estos para evitar que puedan caer en malas manos. Existen muchas formas de cifrar archivos. En este artículo os vamos a hablar de una forma sencilla de cifrar archivos con OpenSSL.

¿Qué es OpenSSL?

OpenSSL es la librería criptográfica por excelencia en todos los sistemas operativos, tanto Windows y Linux, como también en los dispositivos móviles basados en Linux. Esta librería dispone de un robusto paquete de herramientas de administración relacionadas con el cifrado o encriptado de los datos, esta librería se encarga de proporcionar todas las funciones criptográficas a protocolos tan importantes como TLS o HTTPS, además, también se encarga de hacer funcionar los servidores y clientes SSH como OpenSSH, por supuesto, también es ampliamente usado en los navegadores web, e incluso en los protocolos de transferencia de ficheros seguros como SFTP y FTPES, ya que estos dos protocolos hacen uso del cifrado de datos para poder transferir los archivos.

Logo OpenSSL

Aunque a lo largo del tiempo se han descubierto vulnerabilidades muy graves en esta librería, lo que supuso poner Internet en peligro tal y como lo conocemos, la verdad es que sigue siendo ampliamente utilizado por todo el mundo. No obstante, a raíz de estos fallos de seguridad, aparecieron diferentes proyectos con la finalidad de sustituir a OpenSSL, pero de momento ninguno de ellos lo ha conseguido todavía.

Estamos ante una potente herramienta, la cual no permite realizar un cifrado de archivos de forma integral, para la cual usa diferentes métodos de seguridad. Hoy en día, tener toda nuestra información cifrada puede ser muy importante a la vez que muy beneficioso, de forma que si cae en malas manos, no se pueda ver el contenido. La seguridad en todos nuestros datos, debe ser una prioridad fundamental, y más si se trata de una empresa u otra institución, a mayores de tener un control de los accesos al contenido que tenemos cifrado.

Además de estar presente en los principales protocolos, y que nos permitirá crear diferentes claves públicas/privadas y mucho más, también nos va a permitir cifrar archivos de forma individual a través de la consola, y es que vamos a tener una gran versatilidad.

Generar las claves de cifrado

En primer lugar vamos a generar las claves de cifrado con las que se cifrarán los documentos. Para ello ejecutamos un terminal desde Linux y tecleamos:

openssl genrsa -out clave.pem 2048

Con este paso ya hemos creado una clave pública y privada dentro de un mismo archivo. La clave será de 2048 bits, pudiendo modificar este parámetro por el valor con el que queramos proteger nuestro archivo.

A continuación extraeremos la clave pública del fichero anterior tecleando:

openssl rsa -in clave.pem -out clave.pub.pem -outform PEM -pubout

Con esto ya tenemos la clave pública en un archivo independiente.

OpenSSL_cifrado_foto_1

Cifrar un archivo con la clave de OpenSSL

El sistema de claves públicas y privadas no puede cifrar archivos de gran tamaño, por lo que hay que dar un rodeo para cifrar los archivos. Para cifrar un archivo grande utilizando este método debemos, en primer lugar, cifrar el archivo con un cifrado simétrico. La clave del cifrado simétrico se calculará de forma aleatoria con OpenSSL y será dicha clave la que cifraremos con la clave pública calculada anteriormente.

Para descifrar un archivo debemos realizar el proceso anterior. En primer lugar tendremos que descifrar la clave aleatoria con nuestra clave pública y una vez tengamos la clave aleatoria aplicársela al archivo cifrado anteriormente.

En primer lugar, vamos a crear una clave aleatoria para cifrar el archivo.

openssl rand -base64 48 -out key.txt

Una vez creada la clave, cifraremos el archivo con la anterior clave aleatoria calculada.

openssl enc -aes-256-cbc -pass file:key.txt -in [archivo original] -out [archivo cifrado].encrypted

Para finalizar cifraremos la clave aleatoria con la que hemos cifrado el archivo anterior con la llave pública generada anteriormente.

openssl rsautl -encrypt -in key.txt -out key.enc -inkey clave.pub.pem -pubin

Con estos pasos tendremos 2 archivos cifrados y una clave. La estructura de cifrado sería similar a la siguiente:

Archivo original > Clave aleatoria > Clave pública

OpenSSL_cifrado_foto_2

Podemos ver como dispondremos ahora de varios archivos. Los que debemos guardar son:

  • archivo.encrypted
  • key.enc
  • clave.pem

Descifrar archivos cifrados con OpenSSL

El proceso de descifrado es el inverso al de cifrado tal como hemos explicado en el apartado anterior.

En primer lugar debemos descifrar el archivo «key.enc» que contiene la clave aleatoria. Para ello tecleamos:

openssl rsautl -decrypt -inkey ./clave.pem -in key.enc -out key.txt

Con este proceso obtenemos el archivo key.txt que contiene la clave aleatoria con la que ha sido cifrado el fichero. A continuación descifraremos el archivo con:

openssl enc -aes-256-cbc -d -pass file:key.txt -in [archivo cifrado].encrypted -out [archivo original]

Este proceso nos devolverá nuestro archivo a su forma original para poder volver a trabajar con él.

¿Qué usos le podemos dar?

Lo primero que podemos decir, es que con OpenSSL podemos cifrar cualquier archivo, por lo cual no hay una finalidad en concreto para usar esta herramienta. Más bien se basa en una serie de recomendaciones, las cuales sí puede tener mucho sentido tener cifradas, como pueden ser las copias de seguridad, de forma que si intentamos dar uso de alguna, no podremos a no ser que tengamos la contraseña. Otro uso que se le puede dar, es para realizar envíos de archivos de cualquier tipo, pero especialmente si estos contienen información sensible como pueden ser datos personales, médicos o contraseñas.

En caso de tratar de acceder a un archivo cifrado sin la correspondiente contraseña, recibiremos un mensaje de error. Por otro lado, como también es posible realizar una lectura forzada del contenido, podemos decir que no es tan sencillo como simplemente forzar la lectura, en cambio una vez dentro, el contenido se mostrará de una forma la cual no tendrá sentido, por lo cual no se podrá leer o ver directamente. El contenido aparecerá como si fueran un montón de códigos y símbolos. En definitiva, el archivo será ilegible.

4 Comentarios