Blog sobre seguridad informática, privacidad, anonimato, hacking ético, programación y sistemas operativos en general.

martes, 27 de septiembre de 2016

Cifrado y descifrado de archivos usando GPG (GNU Privacy Guard)



GNU Privacy Guard (GPG): Como hemos visto en nuestro post anterior, existen diferentes metodos de cifrado y cada uno de ellos tiene ventajas y desventajas. Ahora es momento de colocarlo en practica y experimentar cada uno de los metodos de cifrado. Para lograr esto usaremos la herramienta de cifrado GPG que es la version de codigo abierto de PGP y esta disponible para todas las plataformas entre las cuales estan GNU/Linux, Windows, Mac OS, BSD Systems. GPG puede ser descargado desde su sitio oficial de descargas. GPG utiliza el estándar del IETF denominado OpenPGP. Durante todo este post estaré usando un sistema GNU/Linux, así que lo que haga aqui se hará de la misma manera en cualquier otro sistema de la familia GNU/Linux. Si tienes algun problema sobre el uso de GPG en otro sistema pueden buscar referencias en internet.

Para empezar con nuestro experimento, necesitamos un archivo cualquiera, yo en este caso usaré un archivo que contiene las siguientes lineas de texto: "Este es un ejemplo para enseñar a encriptar archivos haciendo uso de GPG, y la llevará a cabo el equipo de Security Hack Labs.", el archivo se llamará gpgtest, y se podra descargar desde aquí. 

Nota: El sha1sum se usa para verificar la integridad de un fichero mediante la suma de comprobación del hash SHA-1 de un archivo. Es unico, con la mas minima modificación cambiará, con eso nos asesoraremos de que los archivos descargados son los correctos y que no se ha tocado su integridad ni han sido editados, es una medida extra de seguridad por parte de nosotros, aclaramos que el sha1sum de un archivo al copiar/pegar cambia, asi contenga lo mismo que otro. Nosotros usaremos las suma SHA1 de todos los archivos que publiquemos para que ustedes puedan comprobar la integridad de ellos si desean.

1) Encriptacion usando cifrado simétrico: Es la manera mas sencilla de cifrar un archivo, pero tambien la menos segura. Para ello solo basta con teclear en la terminal de comandos lo siguiente: gpg -c gpgtest, te pedira dos veces la clave de encriptacion, y el archivo resultante de dicho comando tiene terminacion .gpg. En este ejemplo usamos la contraseña sechacklabs, así que si alguien desea confirmar lo escrito en este post lo puede hacer usando esa contraseña y descargando el archivo encriptado el cual esta disponible para descargar aquí. Su suma SHA1 es fba1397fee6ff5d1f516dd06112c99c4f34e4883.


* Contenido del archivo.


* Proceso de encriptación y creacion del archivo .gpg


Finalmente para desencriptar el archivo se usa el siguiente comando: gpg -d [archivo.gpg], nos pedira la contraseña, la cual como dije anteriormente es sechacklabs.

* Desencriptación del archivo.



2) Encriptación usando cifrado Asimétrico: Para poder cifrar asimétricamente primero tenemos que crear la pareja de claves (pública[pub] y privada[sub]) con el comando gpg --gen-key. A medida que vayas avanzando te irá pidiendo datos como nombres, apellidos, email y algunas otras más. Al final te mostrara un mensaje donde te dice que la generación de claves ha sido existosa, sera algo como esto: "claves pública y secreta creadas y firmadas". Si durante el proceso de creación de claves tienes problema con la generación de entropía, puedes instalarte el Daemon haveged el cual esta diseñado para crear entropía dentro del sistema.

** Generar las claves



   ** GPG nos permite elegir el tipo de clave que queremos usar, hay opciones que solo permiten firmar y otras que permiten firmar y cifrar, en este caso usaremos RSA y RSA.
** GPG nos permite elegir la longitud de la clave, entre mayor sea la longitud, mayor encriptación tendrá. Nosotros elegimos 4096 bits.
** Despues de un tiempo de la generación de claves...


2.1) Cuando hayamos creado las claves podemos verlas con el comando gpg -k


IMPORTANTE Nuestra clave pública siempre sera la que inicia con pub. En nuestro caso el ID de nuestra clave publica es 7A1530B4.

Exportar y enviar la clave pública.


La finalidad de crear este par de claves, es que cualquier persona pueda enviarnos un mensaje cifrado el cual solo podemos conocer nosotros, conociendo que el mensaje cifrado con la clave publica, solo puede ser descifrado con su clave privada.

* Difusión de la clave usando un archivo.

Para compartir claves publicas por medio de un archivo, necesitamos primero exportar nuestra clave publica de GPG a un archivo .gpg, para esto usamos el comando gpg --output [archivo de salida.gpg] --export [ID de la clave pública], como se muestra a continuacion:


Como podemos ver hemos generado nuestro archivo SHLPub.gpg, donde se encuentra nuestra clave pública, ahora podemos difundir ese archivo a alguien que desee enviarnos un archivo o mensaje cifrado. La clave generada anteriormente puede ser descargada desde aquí y su sha1sum es 2ef5f4966a3f3af016aaf7e05abde1f92b1588c7.

* Difusión de la clave usando un servidor de claves.


Los servidores de claves suelen ser de acceso público (al no haber problema por difundir una clave pública) y en este caso subiremos una clave a los servidores del MIT (pgp.mit.edu) usando el comando gpg --send-keys --keyserver [Dirección del servidor] [ID de la clave pública]. La clave que hemos subido pueden encontrarla aquí.

   ** Envío de claves al servidor publico mediante la linea de comandos.

   ** Busqueda de la clave en pgp.mit.edu usando "securityhacklabs".

Importar clave pública desde archivo o desde el servidor de claves.

Desde archivo: Lo hacemos usando este comando gpg --import [Archivo.gpg].A mi me aparece "sin cambios" por que estoy importando mi propia clave, la cual ya existe dentro del directorio de GPG.


Desde Servidor de Claves: Lo hacemos usando este comando: gpg --keyserver [Dirección del servidor] --recv-keys [ID de la clave]. A mi me aparece "sin cambios" por que estoy importando mi propia clave, la cual ya existe dentro del directorio de GPG.


Cifrando archivos usando la clave pública.

Para cifrar archivos usando nuestra clave pública lo hacemos usando este comando: gpg --encrypt --recipient [ID de la clave] [Archivo], se nos creara un archivo .gpg.






Descifrando archivos usando nuestra clave privada.

Se realiza usando usando el comando gpg -d [archivo.gpg]. Durante este proceso nos pedira la contraseña para desbloquear la clave privada, esta contraseña e la que usamos cuando generamos el par de clave con gpg --gen-key.


Como podemos ver al final nos muestra el mensaje que estaba encriptado dentro del archivo. Teniendo ya nuestro archivo encriptado podemos enviarlo por email o cualquier otro medio de difusión, pero se recomienda usar medios seguros para la difusion de archivos, los cuales los explicamos en un post anterior. En otro post mas adelante estaremos explicando cuales y porque son los mejores servidores de Email que mantienen nuestros datos seguros y encriptados.

Recomendaciones.

Como ya es habitual al final de cada post damos nuestras recomendaciones, para el día de hoy nuestras recomendaciones son:

1) En lo mas posible use el cifrado mediante cifrado asimetrico (clave publica).
2) Use servidores de confianza a la hora de almacenar una clave publica como lo son: pgp.mit.edu, keyserver.pgp.com, www.keyserver.net.
3) Una buena clave (en caso de usar cifrado simetríco) siempre te brinda mayor seguridad.
4) Usa procolocos seguros de comunicacion en caso de usar una clave simétrica o envío de tu clave publica mediante archivo.


Con esto damos por terminado este post acerca de la manera de cifrar, encriptar y firmar datos con GPG. Si tienes algo que decirnos, deja tu comentario.

Si te ha gustado este post y te sirvió regálanos un Like en Facebook y síguenos en Twitter =D

1 comentario:

  1. Harrah's Casino and Resort - Jordan20 Retro
    At ㅇㄱㅂㄹ 후기 Harrah's Resort, you'll find where can i buy air jordan 18 retro yellow plenty air jordan 18 retro red suede online store of room and suite options and you'll enjoy the casino floor new air jordan 18 retro men as the casino hotel is located right on jordan 18 white royal blue store the waterfront.

    ResponderBorrar