Archive for junio 2016

No hace mucho suele suceder que se sube información sensible a Internet, como es el caso de bases de datos y claves de acceso en texto plano.

Esto permite que la información sea robada fácilmente y nuestros datos o de nuestros usuarios estén expuestos a quien sabe quien.



Con el uso de nubles para almacenamiento de archivos esto se ha vuelto común y el robo de información ha sido mucho más fácil.

Es por ello que hoy vamos a cifrar un respaldo de base de datos para posteriormente subirlo a cualquier nube que deseemos, para ello realizaremos lo siguiente:

  1. Generaremos la llave asimétrica (privada y publica)
  2. Crearemos una llave simétrica para cifrar el respaldo
  3. Cifraremos el respaldo con la llave simétrica
  4. Cifraremos la llave simétrica con  la llave asimétrica pública

Paso 1: Generaremos la llave asimétrica (privada y pública)

Para ello en la terminal crearemos nuestra llave asimétrica de 2048 bits. La llamamos asimétrica ya que la llave pública sirve para cifrar lo que sea y la podemos compartir con quien queramos nos envíe información cifrada. Mientras que la llave privada sirve para descifrar y no debemos compartirla.

#openssl genrsa -out clave.pem 2048



Esto nos genera el par de llaves (publica y privada en un solo archivo)

Para cifrar los archivos solo utilizaremos la llave pública, por ello la extraeremos del archivo de la siguiente manera.

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




Paso 2: Crearemos una llave simétrica para cifrar el respaldo


#openssl rand -base64 48 -out key.txt





Paso 3: Cifraremos el respaldo con la llave simétrica



#openssl enc -aes-256-cbc -pass file:key.txt -in respaldo.sql   -out respaldo.sql.encrypted



Como vemos el respaldo esta cifrado ahora



Paso 4: Cifraremos la llave simétrica con  la llave asimétrica pública


Finalmente  cifraremos la llave simétrica, a fin de almacenar el archivo cifrado y la llave simetrica cifrada utilizando la llave pública.

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




Hasta aquí todo el proceso, por lo que para cifrar cualquier archivo sólo necesitamos 3 archivos:

  1. Archivo a cifrar
  2. Llave simetrica sin cifrar (key.txt)
  3. Lave publica asimétrica para cifrar la llave simétrica (clave.pub.pem)

Proceso de descifrado


Para descifrar nuestro archivo debemos obtener en claro la llave simetrica.

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



Ya con la llave simétrica desciframos nuestro archivo.

#openssl enc -aes-256-cbc -d -pass file:key.txt -in respaldo.sql.encrypted -out respaldo.sql

 


Finalmente lo que podemos subir a nuestra nube es:
  1. La llave simétrica cifrada (key.enc)
  2. El archivo cifrado (respaldo.sql.encrypted)
De esta manera conserva localmente la llave asimétrica privada (clave.pem) en un lugar seguro, fuera de Internet para poder descifrar tu archivo.

De esta manera mantendrás tu información segura o más segura que a un clic de distancia.


Welcome to My Blog

Popular Post

Blogger templates

Páginas

Con tecnología de Blogger.

Sobre el blog

En este blog muestro la vida de un administrador de sistemas en especial con tareas de soporte técnico, administración de servidores, redes y seguridad informática.

- Copyright © K3y1and -Robotic Notes- Powered by Blogger - Designed by Johanes Djogan -