Criptografía simétrica.
====================================================================
Cifrando que es gerundio - Parte I
Cifrando que es gerundio - Parte II
====================================================================
Cifrando que es gerundio - Parte I
Cifrando que es gerundio - Parte II
====================================================================
Vamos a aprender a cifrar un texto, en este caso usaremos CentOS. Vamos a hacerlo sencillo como siempre y paso a paso.
Lo primero que haremos será crear una carpeta y dentro un archivo de texto con el mensaje secreto a cifrar (usando vim).
Una vez creado el archivo, vamos a cifrarlo con clave simétrica.
sudo gpg --symmetric texto
Esto hará el cifrado sobre el archivo texto. Nos pide una contraseña y que la repitamos.
Automáticamente nos genera un fichero con la extensión .gpg y si intentásemos ver el contenido con el comando strings, no veríamos nada legible.
Ahora debemos eliminar el fichero texto ya que ese si que es legible. Podemos enviar el fichero texto.gpg en un pendrive, subirlo a un FTP etc.
Cuando llegue a su destino, lo único que tendrán que hacer para poder leerlo es
sudo gpg --decrypt texto.gpg
Nos pedirá la clave que habíamos usado al cifrar el archivo y ya podrán leer el texto.
En azul el texto que estaba cifrado |
Si queremos volcar el archivo a un documento de texto en lugar de verlo por pantalla (sería lo suyo por si tenemos a alguien detrás xD), bastaría con escribir:
sudo gpg --decrypt texto.gpg > texto2
Podemos usar el modificador -a ya que los ficheros .gpg no son adecuados para incluirlos por ejemplo en un correo electrónico. Lo que hace este modificador es generar un fichero cifrado pero solo compuesto por caracteres ASCII, de manera que ya no tendrían la extensión .gpg sino .asc.
Para descifrar el texto procedemos de la misma forma que antes:
sudo gpg --decrypt texto.asc
o
sudo gpg --decrypt texto.asc > texto2
Como podemos ver en la imagen, por defecto usa el algoritmo de cifrado 3DES, pero podríamos cambiarlo por ejemplo por AES con el comando cipher-alg quedando de la siguiente forma:
sudo gpg -a --symmetric --cipher-alg AES -o texto.aes texto
En este ejemplo uso el modificador -a para que el fichero esté en ASCII y el -o para indicar el fichero de salida (sería lo mismo que hacerlo con la salida estándar)
En el caso de querer descifrarlo, lo haríamos como siempre:
sudo gpg --decrypt texto.aes
Bien, visto esto, creo que cabe destacar que la criptografía simétrica tiene un problema principal, que es la forma en que circulan las claves, es decir, como conseguimos que tanto el emisor como el receptor tengan la clave.
No deberíamos usar el mismo canal inseguro con el que hemos enviado el mensaje, ya que si por ejemplo usamos un pendrive y dentro tenemos el fichero cifrado, no debemos meter en él la clave de cifrado también (es de cajón).
Esto nos lleva a tener que usar un segundo canal de comunicación, el cual deberíamos proteger también de algún modo.
Creo que esto es más engorroso y poco seguro, así que para solucionarlo tenemos la criptografía asimétrica, pero esto lo veremos en otra entrada.
No deberíamos usar el mismo canal inseguro con el que hemos enviado el mensaje, ya que si por ejemplo usamos un pendrive y dentro tenemos el fichero cifrado, no debemos meter en él la clave de cifrado también (es de cajón).
Esto nos lleva a tener que usar un segundo canal de comunicación, el cual deberíamos proteger también de algún modo.
Creo que esto es más engorroso y poco seguro, así que para solucionarlo tenemos la criptografía asimétrica, pero esto lo veremos en otra entrada.
Roberto García (@1GbDeInfo)