miércoles, 2 de diciembre de 2015

GPG (GnuPG): Cifrado simétrico sobre Linux







Hoy en día el cifrado de las comunicaciones en el ámbito empresarial es de vital importancia ya que cualquiera con pocos conocimientos podría estar a la escucha de nuestras comunicaciones y estar leyendo o captando todas nuestras comunicaciones. El cifrado GPG nos permitirá que aunque se capten estas comunicaciones solo el destinatario o alguien con la clave ( cifrado simétrico) pueda mostrar el contenido de las comunicaciones en definitiva es un poner una capa más de seguridad en nuestras comunicaciones que muchas veces contienen información sensible ( datos bancarios, identidades, etc..).

GPG o GnuPG es un herramienta de cifrado con soporte simétrico y asimétrico que viene a ser un reemplazo a PGP. Lo usos que le podemos dar GPG son mediante el terminal o aplicaciones gráficas pero también es aplicable para cifrar emails mediante pluggins en navegadores y gestores de correo. GPG viene implementado en múltiples sistemas como OpenBSD, GNU/Linux, etc.


Su funcionamiento es sencillo:



GPG cifra los mensajes usando pares de claves individuales asimétricas generadas por los usuarios. Las claves públicas pueden ser compartidas con otros usuarios de muchas maneras, un ejemplo de ello es depositándolas en los servidores de claves. Siempre deben ser compartidas cuidadosamente para prevenir falsas identidades por la corrupción de las claves públicas. También es posible añadir una firma digital criptográfica a un mensaje, de esta manera la totalidad del mensaje y el remitente pueden ser verificados en caso de que se desconfíe de una correspondencia en particular.
GnuPG también soporta algoritmos de cifrado simétricos, por ejemplo CASTS.
GPG no usa algoritmos de software que están restringidos por patentes, entre estos se encuentra el algoritmo de cifrado IDEA que está presente en PGP casi desde sus inicios. En su lugar usa una serie de algoritmos no patentados como ElGamalCAST5Triple DES (3DES), AES y Blowfish. También es posible usar IDEA en GPG descargando un plugin extra, sin embargo este puede requerir una licencia para usuarios de algunos países en donde esté patentada IDEA.
GPG es un software de cifrado híbrido que usa una combinación convencional de criptografía de claves simétricas para la rapidez y criptografía de claves públicas para el fácil compartimiento de claves seguras, típicamente usando recipientes de claves públicas para cifrar una clave de sesión que es usada una vez. Este modo de operación es parte del estándar OpenPGP y ha sido parte del PGP desde su primera versión.



Y después de un poco de teoría una practica simple de cifrado simétrico con GPG sobre Kali Linux, como dato importante los datos cifrados simetricamente son atacables mediante fuerza bruta, conviene introducir una contraseña alfanumérica robusta.

Lo primero que haremos es crear el fichero con su texto y comprobamos que se puede leer el texto creado mediante la orden cat:

echo "texto cifrado" > texto_cifrado.txt
cat texto_cifrado.txt

Ahora procedemos a hacer un cifrado simétrico nos pedirá que le asignemos una única contraseña y se nos genera un txt que sera texto_cifrado.txt.gpg y comprobamos que no se puede leer como antes medienate la orden cat:

gpg -c texto_cifrado.txt
cat texto_cifrado.txt.gpg

Por último desciframos el mensaje cifrado simétricamente mediante la contraseña anteriormente asignada:

gpg -d texto_cifrado.txt.gpg 

Como dato final hacemos lo mismo con una contraseña mal puesta y comprobamos que no se descifra. En la siguiente imagen esta descrito todo el proceso.





Como dato final las claves simétricas tienen dos problemas la retransmisión de las claves entre el emisor y receptor. Para solucionar esto se puede organizar sistemas de distribución seguros de claves simétricas. Por otro lado es muy importante la robustez de la contraseña ya que los ataques de fuerza bruta han evolucionado forma increíble usando sistemas de Cloud Computing para descifrar las claves en menos tiempo.