GnuPG al Bolsillo

Hace unos meses atrás, escribí tres entradas sobre criptología y firmas digitales, Introducción a la Criptología (I) , Introducción a la Criptologia (II) Protocolos y Firmas Digitales y Introducción a la Criptologia (III) Criptoanalisis , bonus 20 eBooks sobre Criptografía y Cifrado, que para esta entrada nos serán de utilidad, poniendo en practica con GnuPG (GPG), que es la versión libre de PGP.

Tanto PGP como GPG, usan el estándar IETF OpenPGP RFC 4880, el cual permite el envío seguro de ficheros y mensajes, también ofrece la verificación de quién escribió el mensaje usando la firma digital. Para su uso requiere la participación de los dos (emisor y receptor). Además puede ser usado para asegurar ficheros sensibles cuando están almacenados en sitios vulnerables, como dispositivos móviles o la nube.

Comúnmente ya esta implementado en sistemas como OpenBSD, FreeBSD y Gnu/Linux , pero gracias a aplicativos de terceros lo podemos utilizar en Windows (gpg4win),OS X (gpgtools , gpgosx) y Android (Guardian Project). Además de plugins en clientes de correo como Thunderbird (gracias a Enigmail) y Clawsmail (gracias a sus módulos PGP/Core, PGP/MIME y PGP/inline), además de estar integrado en Kmail, Evolution y Sylpheed. Vale recordar que desde la versión 2, GnuPG soporta S/MIME (Secure / Multipurpose Internet Mail Extensions) y Secure Shell (SSH). Creo que enteran que GPG es software libre, se puede utilizar, modificar y distribuir, bajo los términos de la licencia copyleft GPL.

Funcionamiento

GnuPG como PGP, cifran los mensajes/archivos usando un par de claves asimétricas (ya que las simétricas son menos seguras ), una privada y una publica. Las claves publicas son las que se pueden compartir con otros usuarios de distintas maneras, como por ejemplo vía un Servidor de Claves (KeyServers) para facilitar su difusión. Supongamos que la clave privada, es la llave de tu casa, la clave publica es la llave extra que entregamos ciertas personas de confianza (pero cualquiera podría robarla y adiós casa), para esto agregamos una firma digital al mensaje para corroborar que quien llega a casa es la persona que dice ser.

Algunos KeyServers recomendados para guardar su clave publica, MIT PGP Public Key Server , Servidor de claves públicas PGP – RedIRIS y SKS OpenPGP Public Key Server.

No esta demás, información complementaria para cifrar sus correos electrónicos, una entrada de la FSF que les puede servir, Email Self-Defense, de preferencia lean la versión en ingles, ya que es más completa que la versión en español.

Continuemos, primero vemos que versión de gpg tenemos en nuestro sistema, porque esto, a partir de la versión 2.1.0, el comando puede variar. Por ejemplo para versiones anteriores para generar  las claves, bastaría un:

$ gpg --gen-key

Pero para la versión igual o superior a 2.1.0, podemos usar:

$ gpg --full-gen-key

que nos brinda una amplitud mayor de configuraciones, como tamaño en bits de las claves, caducidad, etcétera, para conocer la versión

$ gpg --version

2016-04-29-174541_731x340_scrot.png

Elegimos la opción por defecto “1”, suele ser el cifrado habitual para un usuario, continuaran las preguntas, el tamaño de bits de las claves RSA (entre 1024 y 4096, a gusto de cada quien, aunque con 2048 es suficiente) fecha de caducidad (0 nunca caduca, “n” días, “n” semanas, “n” meses,  “n” años) además de una contraseña para la clave privada.

2016-04-29-175432_731x340_scrot

Al terminar la generación de claves (demora dependiendo de la longitud de bits elegido), finalizara a modo de resumen, donde apreciamos las claves pub (publica) y sub (privada), además dela fingerprint, la UID del usuario asignado y/o cuenta de correo.

Gestionar una Clave

Para visualizar cuando queramos nuestras claves, bastaría lanzar cualquiera de estos dos comandos:

$ gpg -k
$ gpg --list-public-keys

Les dejo de tarea averiguar la diferencia entre uno y otro. 😛

Si quieren saber cual es la fingerprint o huella de clave, usamos el comando:

$ gpg --fingerprint cuenta_ de_correo

así por cada cuenta de correo vinculada a una clave GPG, el fingerprint, es una abreviatura asignada a tu clave. Esto permite a otros confirmar si han recibido su clave pública actual sin ninguna manipulación.

2016-04-29-185458_981x33_scrot

la ID de la clave GPG, se compone de 8 digitos hexadecimales que identifican la clave publica, para mi sería 322A4731, si se solicitara la ID de la clave, se debe anteponer 0x322A4731 (cero,equis + ID).

En este punto no esta demás hacer una copia de seguridad de nuestras claves, para ello utilizamos el comando:

$ gpg --export-secret-keys --armor rogger.ortega0405@openmailbox.org > opmb-privkey.asc

Seguramente les pedirá la contraseña o palabra clave (es un cuadro de dialogo flotante), para luego de aceptar saltar a la siguiente linea, y claro luego guardar al mejor recaudo este archivo, que es su clave privada, que termina en un archivo ascii.

Para la clave publica, donde pubkey.asc , es un archivo ascii con el nombre pubkey (nombrado así a gusto de cada quien) y 322A4731 es la ID, lanzamos el comando:

$ gpg --armor --output pubkey.asc --export 322A4731

Dando como resultado un archivo en texto plano similar a esto:


-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2

VTUqW+f+DzDC/kbMf3uNVFgqtvbrmpzk5uTGvmWdPoNLAHHQ6jqNZr+ISDtkGNdr
3Kutn38VHDTf9EvHIx41QI1Ce30zJrbnPJD1hBe/eVbfClK75De6xIa6RwjPoVyE
cQWrMYQLgwDvUlP18CeoUpg8QPM/JliQfMpaLQbYG0M+oUPZepKyKPyO7miWjWzB
UzZrmMnGC67y4zlcXFnm+sQGs2DMijKLOwasCt8K9zKTihlHfhOKXI4J5wARAQAB
tFNSb2dnZXIgT3J0ZWdhIChodHRwczovL2g0Y2tzZWVkLndvcmRwcmVzcy5jb20v
KSA8cm9nZ2VyLm9ydGVnYTA0MDVAb3Blbm1haWxib3gub3JnPokCPQQTAQgAJwUC
VyPn9AIbAwUJAeEzgAULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgAAKCRAVBXNwMipH
MZy+EACEFOU39HIKw0M75MpzKjzlkpbc/zvQ2+4yJI9rBLctf7nhaNA8npVaGP5L
BNVZX/0k7pEVmgwUwqjDQpkKj2HgsHAh3hEYd2FLbGpJtr86l/ksLt4y1QkaXorY
wbD1xyVdwlb4Np6ixfBYsbaYo4kgC8R6XweCQ72Y0hSmi43fA2WMPob9SRnJzEDh
SGO34Cnbf8rLyVUV/Zwi+kYFts7Ku68ej/8U3VoMvhd9oWrpHpw40XsTZs+oamPo
s6hzdgmnk0lSY+9L19yzHEZSIaaICBFcmkfoeywNgyDSkROeVZ6Une+GSqZQypQb
q4z0wGkIivTukKSjhPf3nGkFb3sJ11T+TswM2XrFaqMbDMY1QniFaR7oAhoGGyz2
arY41/7vYt84IAKge7C5HZ3U55/jEXPb2IFPXel2RBSMeMDxCU54kGEUl/wahq7V
2L61F7xKKEhw4oS9stRyQrV1x+QunQkEQtC17qoApceUKBIvZ2EN85teQiexChFC
cz+WreXVnQEIkB/y1NY898/qnzCVrss+jMSWu8qzVAIGey48obQOE1l+rq+hOAjS
pXWJk9vy71TLCa5FgbUhyU1de9+rAfzfE8cY7pU78iqwf5CAjrbsnoOV3W0S3L4Q
7HqsqPViKyJNAljDKbIJUv6UYARzLQAL6kKu8x0Eof2n7Zl/qLkCDQRXI+f0ARAA
xaK6Zad7byXs6qIJjXNY84/dYGA0pGuv+8ClBCInkJhD14GgWR0VZv+297hwAPIP
5zeHkJqIuokThFTR8BaOfpVs6kb5rnqhOHIXO0KTuTmr0dVsHpl27opMAi3aJH/r
2+8LlS3GvPGOrG8TnqzlN8jOb62dlRPDTV3JER9EFuvp57Dp9xWLyjoT604UJkF2
TfsBCf//9Od+1mp1KPGv4GYA19aEVPO/1OTBLvhtb8KPdftyuy3IARW4uhbk6Foc
TbR3x+aAqVZJkIY9+EIFnLgRVoOnE/z5PkpJZBFli6YRvNysWCPW0a3WwHtA9Ct5
XYrZhL9MUcuO7k21RaJLq2v1kgBYsfVixIwiS/vmhsuAS/OFLmY1w4UJ75qnQywJ
Fn0RuKo1y9cAl2aVmv9TAtqDbBmPnkRSsOQevn06s3dhxQ4Fjry5tLkJglj0a9S9
fL1wLlnpI6QpGDnAess92T5oaiNzSKKcsqFljdqLRos4eQ3qXQ5X12xM/uyHdYTV
C+HpKp8YPVBeDrmQag1zOIAoGZDggDqqdxdbOBIh8IOu++HUjOHwUdsfpIRi0UWu
wjytiYF3L1jgwBB9edX58bk+XsKO6/d6sYVXadZrO5DkFvJb40FR5oG0eXh4z5aI
Ho0afMh2v7L4+59cSw==
=4bob
-----END PGP PUBLIC KEY BLOCK-----

Subimos nuestro clave publica a uno de los KeyServers recomendados, por ejemplo  con el comando:

$ gpg --keyserver pgp.mit.edu --send-keys 322A4731
$ gpg --keyserver pool.sks-keyservers.net --send-keys 322A4731
$ gpg --keyserver pgp.rediris.es --send-keys 322A4731

 dependiendo del servidor que eligieron.

Para firmar la clave publica, necesitaremos descargar la clave del KeyServer, ejecutamos el comando:

$ gpg --recv-keys 322A4731

 Seguido de un,

$ gpg --fingerprint 322A4731

Con este podremos comprobar si las huellas son las mismas, y no hay inconvenientes de suplantación con la llave publica descargada y que pertenece a esa persona.

Por ultimo firmamos la clave pública con:

$ gpg --sign-key 322A4731 

 y listo, tendríamos a pleno funcionamiento nuestra suite de cifrado.

Si quisiéramos editar los parámetros de nuestra clave publica, por ejemplo si queremos cambiar la fecha de expiración entre otras cosas, usamos el comando:

$ gpg --edit-key 322A4731

que nos mostrara la consola gpg, cambiando el prompt por gpg> , para variar escribimos help, para ver los comandos que podemos usar.

Si queremos cifrar un archivo, usamos:

$ gpg -e nombre_de_archivo

 para descifrar:

$ gpg -d nombre_de_archivo.pgp > archivo_salida

Pueda que me saliera algo extensa esta entrada, pero bien vale aprenderlo. Gracias por haber llegado hasta aquí.

Hasta otro post y buenas vibras lectores.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s