sábado, 18 de enero de 2014

Cifra archivos 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.

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.

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
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.

0 comentarios:

Publicar un comentario

Buscar este blog

mrgansomer. Con tecnología de Blogger.