Un poco de seguridad: creación de llaves OpenPGP


Hace un par de posts atrás comentamos como resolver un problema con el thunderbird 3.0 y el add on enigmail 1.1, que es un add on que nos permite usar nuestras llaves GPG, a lo cual responderemos a la pregunta que se habrán hecho algunos en ese momento ¿qué es una llave GPG (u OpenPGP, pero, de aquí en adelante no referiremos como GPG) y para qué sirve?.

¿Alguna vez se han preguntado si el correo que han recibido de “X” persona realmente lo mandó dicha persona, o alguien que se robó su contraseña, o alguien pudo suplantar su identidad?, se que se lee paranoico, pero, a veces dar esa seguridad de “fulano me escribió, estoy 100% seguro” no es posible, cosa que permite las llaves GPG, o mejor dicho, las llaves GPG nos dan una relativa certeza de que no han suplantado la identidad de nuestro amig@ o conocido, recordemos que en el aspecto de seguridad informática no existe el 100% de efectividad, solo se puede conseguir cierta seguridad. Las llaves GPG no solo nos permiten garantizar a nuestros contactos que en efecto, somos nosotros los autores de dicho correo, también podemos codificar (encriptar) dicho correo, evitando que alguien que capture el correo lo lea, haciendo que solo la persona que nosotros queremos que lea dicho correo pueda hacerlo, también podemos encriptar todo tipo de archivos con dichas llaves, lo cual es muy útil para aquellos que trabajan en empresas que son muy rigurosas con sus secretos empresariales y no desean que algún dato caiga en manos de la competencia (o simplemente quieren esconder la porno XD). Con esto creo que queda claro las razones del por que usar llaves GPG, sin más paja, veamos como crear y usar dichas llaves, una cosa antes de …. la mayoría de las distribuciones de GNU/Linux hoy en día ya traen las herramientas básicas para trabajar con llaves GPG, por lo cual a veces no es necesario instalar algo, pero, si no trae la herramienta para crear las llaves, les sugiero revisar el sitio oficial de la distro y ver si tienen el paquete gnupg.

Para crear la llave necesitamos abrir una consola (terminal, linea de comandos, etc) eh introducimos el siguiente comando

  • gpg –gen-key

a continuación nos mostrará una serie de preguntas como las siguientes:

gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Por favor seleccione tipo de clave deseado:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sólo firmar)
(4) RSA (sólo firmar)
Su elección:

Elegiremos la opción 2, DSA and Elgamal, después nos mostrará algo como esto:

las claves DSA pueden tener entre 1024 y 3072 bits de longitud.
¿De qué tamaño quiere la clave? (2048)

Aquí ingresamos la longitud con la cual se encriptarán los archivos, la recomendación es que sea un número grande de bits para hacerle más difícil el trabajo a la persona que quiera desencriptar los archivos, recomendación, pues ingresen los 3072 bits, después nos muestra los siguiente:

Por favor, especifique el período de validez de la clave.
0 = la clave nunca caduca
= la clave caduca en n días
w = la clave caduca en n semanas
m = la clave caduca en n meses
y = la clave caduca en n años
¿Validez de la clave (0)?

Esto sirve para cuando se trabajan con proyectos, al finalizar los proyectos se revocan las llaves para evitar algún mal entendido, en este caso ingresaremos cero (0), ya que deseamos que la llave a crear sea como nuestra “huella digital”, después nos muestra esto:

La clave nunca caduca
¿Es correcto? (s/n) s

Necesita un identificador de usuario para identificar su clave. El programa
construye el identificador a partir del Nombre Real, Comentario y Dirección
de Correo Electrónico de esta forma:
“Heinrich Heine (Der Dichter) “

Nombre y apellidos:

Afirmamos que no caduca nuestra llave e ingresamos el nombre y apellido (paso nada complicado XD), continuemos:

Nombre y apellidos: guanatux
Dirección de correo electrónico: guanatux@gmail.com
Comentario: esta llave es para explicar la creación y uso de las llaves GPG
Está usando el juego de caracteres `utf-8′.
Ha seleccionado este ID de usuario:
“guanatux (esta llave es para explicar la creación y uso de las llaves GPG) “

¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V
Necesita una frase contraseña para proteger su clave secreta.

Introduzca frase contraseña:

Una vez introducimos nuestro nombre, nos pide nuestro e-mail y un comentario que acompañará a la llave, si esta todo correcto afirmamos los datos e introducimos una contraseña, para asegurar que nadie más usará esa llave, continuemos con el tuto:

Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.
gpg: WARNING: some OpenPGP programs can’t handle a DSA key with this digest size
+++++.+++++++++++++++.+++++.++++++++++++++++++++..+++++.+++++.+++++++++++++++….+++++++++++++++++++++++++..+++++..++++++++++..+++++…++++++++++.+++++.++++++++++.+++++.+++++…+++++>…+++++.+++++.+++++.++++++++++..++++++++++++++++++++>.+++++>….+++++..>.+++++………………………………….+++++……………………………………………………………………………………………………………………+++++
Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.
+++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++….++++++++++.+++++..++++++++++…++++++++++.++++++++++.+++++….+++++.+++++.+++++.+++++..+++++..+++++.++++++++++>….+++++..++++++++++..+++++++++++++++…………..>+++++……………………..>+++++….+++++………………………………………………………………………………….+++++…………………………………<..+++++……………….+++++………………………….>…+++++………………………….<+++++……………………..+++++………………………………………………………………………………………………………………..+++++^^^
gpg: clave BE2DD4B8 marcada como de confianza absoluta
claves pública y secreta creadas y firmadas.

gpg: comprobando base de datos de confianza
gpg: 3 dudosa(s) necesarias, 1 completa(s) necesarias,
modelo de confianza PGP
gpg: nivel: 0 validez: 10 firmada: 1 confianza: 0-, 0q, 0n, 0m, 0f, 10u
gpg: nivel: 1 validez: 1 firmada: 0 confianza: 1-, 0q, 0n, 0m, 0f, 0u
pub 3072D/BE2DD4B8 2010-08-19
Huella de clave = DA8C 9DA4 78D8 6E7E 87F1 14C8 D279 4375 BE2D D4B8
uid guanatux (esta llave es para explicar la creación y uso de las llaves GPG)
sub 3072g/0956CD75 2010-08-19

Una vez introducimos la contraseña y la reintroducimos, para asegurarnos de que es la contraseña correcta, solo queda esperar para que la llave se genere (como se muestra un par de lineas arriba), voalá, la llave esta creada, o mejor dicho, tenemos dos llaves creadas, la llave pública (que es la que entregamos a nuestros amigos para que desencripten los archivos/correos) y una llave privada (con la que encriptamos). Nuestra llave tiene un número único que la identifica, en este ejemplo el número de la llave recién creada es BE2DD4B8, con esto se pueden guiar para saber cual es el número de llave que uds. creen.

Ahora a ver la/s llave/s que tenemos, para eso, usamos el siguiente comando:

  • gpg –list-keys

nos tiene que mostrar algo como esto:

pub 2048D/CBF514A1 2010-08-11
uid Rene Antonio Flores Cruz (5mentarios)
uid [jpeg image of size 5119]
sub 2048g/4E3FA579 2010-08-11

pub 3072D/BE2DD4B8 2010-08-19
uid guanatux (esta llave es para explicar la creación y uso de las llaves GPG)
sub 3072g/0956CD75 2010-08-19

como pueden observar, tengo registradas dos llaves, la de un amigo, y la que acabamos de crear.

Antes de terminar, ya que por lo visto el post me a salido un poco largo, vamos a hacer dos cosas más, exportar nuestra llave pública, privada, y crear el certificado de revocación, esto lo hacemos para evitar accidentes, tales como daño permanente en nuestro disco duro, al importar las llaves podemos guardarlas en una USB, en un CD/DVD o en nuestro correo, con el fin de evitar la perdida de dicha llave.

Exportando la llave pública:
gpg –armor –output nombredelarchivo –export tullavepublica

con este comando tenemos que sustituir la parte donde dice nombredelarchivo por el nombre que quieran ponerle a la llave pública, y la parte de tullavepublica, hay que sustituirla por el número de la llave pública creada, o el correo que se le introdujo.

Exportando la llave privada:
gpg –armor –output nombredelarchivo –export-secret-key tullaveprivada

Al igual que con la llave pública, sustituimos los campos con los datos que usamos para exportar la llave privada.

Certificado de revocatoria: este es importante, ya que si perdemos nuestra llave pública o simplemente queremos eliminarla, con el certificado realizamos dicha acción

gpg –output nombredelarchivo –gen-revoke tullavepublica

Como en los dos casos anteriores, solo sustituimos los campos por los datos que necesitamos, en esta parte, el programa nos hará un par de preguntas para crear dicho certificado, mostrando algo como esto:

gpg –output revocatoria –gen-revoke guanatux

sec 3072D/BE2DD4B8 2010-08-19 guanatux (esta llave es para explicar la creación y uso de las llaves GPG)

¿Crear un certificado de revocación para esta clave? (s/N) s
Por favor elija una razón para la revocación:
0 = No se dio ninguna razón
1 = La clave ha sido comprometida
2 = La clave ha sido reemplazada.
3 = La clave ya no está en uso
Q = Cancelar
(Probablemente quería seleccionar 1 aquí)
¿Su decisión? 0
Introduzca una descripción opcional; acábela con una línea vacía:
> esto es un ejemplo
>
Razón para la revocación: No se dio ninguna razón
esto es un ejemplo
¿Es correcto? (s/N) s

Necesita una frase contraseña para desbloquear la clave secreta
del usuario: “guanatux (esta llave es para explicar la creación y uso de las llaves GPG) “
clave DSA de 3072 bits, ID BE2DD4B8, creada el 2010-08-19

çse fuerza salida con armadura ASCII.
Certificado de revocación creado.

Por favor consérvelo en un medio que pueda esconder; si alguien consigue
acceso a este certificado puede usarlo para inutilizar su clave.
Es inteligente imprimir este certificado y guardarlo en otro lugar, por
si acaso su medio resulta imposible de leer. Pero precaución: ¡el sistema
de impresión de su máquina podría almacenar los datos y hacerlos accesibles
a otras personas!

Y con esto terminamos esta parte de las llaves GPG, con lo cual, nos queda un par de post donde se explicará más sobre el uso de las llaves entre otros tópicos.

Antes de finalizar el post, todo esto se puede realizar con herramientas gráficas, tales como: seahorse, kgpg, gpa, wija y xpa.

Saludos a todos!.

Anuncios

2 pensamientos en “Un poco de seguridad: creación de llaves OpenPGP

  1. Pingback: Cifrando correos con GnuPG | Guanatux

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

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