Gentoo Logo

Guía del usuario GnuPG de Gentoo

Contenido:

1.  Introducción

Lo que aprenderá con esta guía

Esta guía asume que está familiarizado con la criptografía de clave pública, cifrado y firmas digitales. Si no es el caso, lea el capítulo Criptografía de Clave Pública o eche una vistazo al capítulo 2 del Manual de GnuPG y luego regrese a esta guía.

Esta guía le enseñará cómo instalar GnuPG, cómo crear su par de claves, cómo agregar claves a su anillo de claves, cómo enviar su clave pública a un servidor de claves y cómo firmar, cifrar y verificar o decodificar los mensajes que recibe o envía. También aprenderá cómo cifrar archivos en su computadora local para prevenir que la gente vea el contenido.

Instalación del software requerido

En primer lugar, necesita ejecutar emerge gnupg. Muchas aplicaciones hoy en día tienen algún grado de soporte de gpg, así que tener crypt en su variable USE es, probablemente, una buena idea. Si desea tener un cliente de correo electrónico que sea capaz de usar gnupg, puede usar pine (emerge pinepgp), mutt (emerge mutt), Mozilla Thunderbird (emerge thunderbird), evolution (evolution es una aplicación del tipo Microsoft Outlook para GNOME) y KMail de KDE.

Kgpg puede interesarle si usa KDE. Este pequeño programa le permite generar pares de claves, importar claves desde archivos ASCII, firmar claves importadas, exportar claves y unas cuantas características más.

2.  Generar sus claves y agregar claves públicas a su anillo de claves

Crear sus claves

Para crear sus claves, tan solo ejecute gpg --gen-key. La primera vez que lo haga, el programa creará algunos directorios; ejecútelo de nuevo para crear las claves:

Listado de Código 2.1: Proceso de generación de claves

$ gpg --gen-key
gpg (GnuPG) 1.0.7; Copyright (C) 2002 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

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: 1

Aquí tiene la posibilidad de elegir el tipo de clave que quiere usar. La mayoría de los usuarios elegirán la predeterminada RSA y RSA. Lo siguiente a elegir es el tamaño de la clave, recuerde que cuanto más grande se la clave, mejor. No use un tamaño superior a 2048 con claves DSA/ElGamal. Normalmente 2048 es más que suficiente para mensajes de correo electrónico normales.

Después del tamaño viene la fecha de expiración. Aquí mientras más pequeño es mejor, sin embargo, la mayoría de los usuarios usan claves que nunca expiran o a lo sumo lo hacen en 2 ó 3 años.

Listado de Código 2.2: Eligir el tamaño de la clave

las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (2048) 2048
El tamaño requerido es de 2048 bits
Por favor, especifique el período de validez de la clave.
         0 = la clave nunca caduca
      <n>  = la clave caduca en n días
      <n>w = la clave caduca en n semanas
      <n>m = la clave caduca en n meses
      <n>y = la clave caduca en n años
¿Validez de la clave (0)?  0
La clave nunca caduca

Ahora es el momento de escribir su información personal. Si va a enviar su clave pública a otras personas tendrá que usar su dirección real de correo electrónico.

Listado de Código 2.3: Ingresar información del usuario

¿Es correcto? (s/n) s

GnuPG debe construir un ID de usuario para identificar su clave.

Nombre y apellidos: Juan Nadie
Dirección de correo electrónico: juan@ningunsitio.flick
Comentario: El autentico Juan Nadie
Ha seleccionado este ID de usuario:
"Juan Nadie (El autentico Juan Nadie) <juan@ningunsitio.flick>"

¿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

Ahora introduzca la contraseña de su clave dos veces. Es una buena idea usar una contraseña segura. Si alguien consigue acceder a su clave privada y obtiene su contraseña, podrá enviar mensajes de correo electrónico firmados con "su nombre", haciendo creer a todo el mundo que fue usted el que envió el mensaje.

A continuación, GnuPG generará su clave. Moviendo el ratón o reproduciendo un mp3 en segundo plano ayudará a acelerar el proceso porque esto genera datos aleatorios.

Generar un certificado de revocación

Importante: Esta parte es muy importante y debe hacerla AHORA.

Después de crear sus claves debería crear un certificado de revocación. Haciendo esto le permite revocar su clave en caso que algo desagradable le ocurra (por ejemplo, que alguien obtenga su clave privada/contraseña).

Listado de Código 2.4: Generar un certificado de revocación

$ gpg --list-keys
/home/humpback/.gnupg/pubring.gpg
---------------------------------
pub  1024D/75447B14 2002-12-08 Juan Nadie (El autentico Juan Nadie) <juan@ningunsitio.flick>
sub  2048g/96D6CDAD 2002-12-08

$ gpg --output revoke.asc --gen-revoke 75447B14

sec  1024D/75447B14 2002-12-08   Juan Nadie (El autentico Juan Nadie) <juan@ningunsitio.flick>

¿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? 1
Introduzca una descripción opcional; acábela con una línea vacía:
> Alguien obtuvo mi clave y contraseña
>
Razón para la revocación: La clave ha sido comprometida
Alguien obtuvo mi clave y contraseña
¿Es correcto? (s/N) s

Introduzca frase contraseña para desbloquear la clave secreta del
certificado OpenPGP:
"Juan Nadie (El autentico Juan Nadie) <juan@ningunsitio.flick>"
1024-bit DSA key, ID 75447B14, creada el 2002-12-08

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!

La orden gpg --list-keys muestra las claves en su anillo de claves públicas. Puedes usarlo para ver el ID de su clave y poder crear el certificado de revocación. Ahora es un buen momento para copiar todo el directorio .gnupg y el certificado de revocación (en escudo ASCII - revoke.asc) a un medio seguro (dos disquetes o un CD-R que guarde en un lugar seguro). Recuerde que puede usar revoke.asc para revocar sus claves y hacerlas inutilizables en el futuro.

Nota: Si tiene varias direcciones de correo electrónico que quiera usar con esta clave, puede ejecutar gpg --edit-key SU_ID y luego usar la orden adduid. Le preguntará por el nombre, e-mail y un comentario para la segunda ID que usará.

Exportar claves

Para exportar su clave, teclee gpg --armor --output juan.asc --export juan@ningunsitio.flick. Casi siempre puede usar el ID de la clave o algo que identifique la clave (aquí usamos una dirección de e-mail). Juán tiene ahora un archivo juan.asc que puede enviar a sus amigos, o poner en su sitio web para que la gente se comunique de forma segura con él.

Importar claves

Para agregar archivos a su anillo de claves públicas, primero debe importarlas, luego comprobar la huella digital de la clave. Y después de verificar la huella digital debe validarla.

Nota: Sea cuidadoso cuando verifique las claves. Este es uno de los puntos débiles de la criptografía de clave pública.

Ahora agregaremos la clave pública de Luis Pinto (un amigo mío) a nuestro anillo de claves públicas. Luego de haberlo llamado por teléfono y de haberle preguntado por su huella digital, comparo la huella con la salida de la orden fpr. Como la clave es auténtica, la agrego al anillo de claves públicas. En este caso particular, la clave de Luis expira el 2003-12-01 entonces se me preguntará si quiero que mi firma en su clave expire en el mismo día.

Listado de Código 2.5: Importar y firmar claves

$ gpg --import luis.asc
gpg: clave 462405BB: clave pública importada
gpg: Cantidad total procesada: 1
gpg:               importadas: 1  (RSA: 1)
$ gpg --list-keys
/home/humpback/.gnupg/pubring.gpg
---------------------------------
pub  1024D/75447B14 2002-12-08 Juan Nadie (El autentico Juan Nadie) <juan@ningunsitio.flick>
sub  2048g/96D6CDAD 2002-12-08

pub  1024D/462405BB 2002-12-01 Luis Pinto <lmpinto@student.dei.uc.pt>
uid                            Luis Pinto <lmpinto@dei.uc.pt>
sub  4096g/922175B3 2002-12-01 [caduca: 2003-12-01]

$ gpg --edit-key lmpinto@dei.uc.pt
gpg (GnuPG) 1.0.7; Copyright (C) 2002 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.


pub  1024D/462405BB  creado: 2002-12-01 caduca: 2003-12-01 uso: SC
                     confianza: desconocido   validez: desconocido
sub  4096g/922175B3  creado: 2002-12-01 caduca: 2003-12-01
(1)  Luis Pinto <lmpinto@dei.uc.pt>
(2). Luis Pinto <lmpinto@student.dei.uc.pt>

gpg> fpr
pub  1024D/462405BB 2002-12-01 Luis Pinto <lmpinto@dei.uc.pt>
 Huella de clave primaria: F056 3697 ADE3 CF98 B80B  8494 0AD3 E57B 4624 05BB
gpg> sign
¿Firmar realmente todos los IDs de usuario? (s/N) s

pub  1024D/462405BB  creado: 2002-12-01 caduca: 2003-12-01 uso: SC
 Huella de clave primaria: F056 3697 ADE3 CF98 B80B  8494 0AD3 E57B 4624 05BB

    Luis Pinto <lmpinto@dei.uc.pt>
    Luis Pinto <lmpinto@student.dei.uc.pt>

Esta clave expirará el 2003-12-01.

¿Quiere que su firma caduque al mismo tiempo? (S/n) s
¿Cómo de cuidadosamente ha verificado que la clave que está a
punto de firmar pertenece realmente a la persona arriba nombrada? Si no
sabe que contestar, introduzca "0".

   (0) No contesto. (default)
   (1) No lo he comprobado en absoluto.
   (2) He hecho una comprobación informal.
   (3) Lo he comprobado meticulosamente.

¿Su elección? (escriba '?' si desea más información): 3
¿Está realmente seguro de querer firmar esta clave
con su clave: "Juan Nadie (El autentico Juan Nadie) <juan@ningunsitio.flick> (96D6CDAD)?

He comprobado esta clave meticulosamente.

¿Firmar de verdad? (s/N) s

Necesita una frase contraseña para desbloquear la clave secreta
del usuario: "Juan Nadie (El autentico Juan Nadie) <juan@ningunsitio.flick>"
clave DSA de 1024 bits, ID 75447B14, creada el 2002-12-08

gpg> check
uid  Luis Pinto <lmpinto@dei.uc.pt>
sig!3       462405BB 2002-12-01   [autofirma]
sig!3       75447B14 2002-12-08   Juan Nadie (El autentico Juan Nadie) <juan@nowhe
uid  Luis Pinto <lmpinto@student.dei.uc.pt>
sig!3       462405BB 2002-12-01   [autofirma]
sig!3       75447B14 2002-12-08   Juan Nadie (El autentico Juan Nadie) <juan@nowhe

3.  Intercambiar claves con servidores de claves

Enviar claves a servidores de claves

Ahora que tiene su clave, es buena idea enviarla a un servidor de claves. Hay un montón de servidores de claves en el mundo y muchos de ellos intercambian claves entre ellos. Vamos a enviar la clave de Juan Nadie al servidor subkeys.pgp.net. Usaremos HTTP, por lo que si necesita usar un proxy para el tráfico HTTP, no olvide configurarlo (export http_proxy=http://proxy_host:puerto/). La orden para enviar la clave es: gpg --keyserver subkeys.pgp.net --keyserver-options honor-http-proxy --send-key 75447B14 donde 75447B14 es el ID de la clave. Si no necesita un proxy HTTP puede quitar la opción --keyserver-options honor-http-proxy.

Puede también enviar las claves de otras personas que ha firmado al servidor de claves. Podríamos enviar la clave de Luis Pinto al servidor. De esta forma alguien que confía en tu clave puede usar la firma que pusimos ahí para confiar en la clave de Luis.

Obtener claves desde los servidores de claves

Ahora buscaremos la clave de Gustavo Felisberto y agregarla al anillo de claves de Juan Nadie (solo en el caso que no se haya enterado que Gustavo Felisberto es la persona que escribió esta guía :) ).

Listado de Código 3.1: Buscar claves en los servidores de claves

$ gpg --keyserver subkeys.pgp.net --keyserver-options honor-http-proxy --search-keys humpback@felisberto.net
gpg: buscando "humpback@felisberto.net" de hkp servidor subkeys.pgp.net
(1)Gustavo Felisberto (apt-get install anarchy) <humpback@felisberto.net> 1024
  created 2002-12-06, key B9F2D52A
(2)Gustavo Felisberto <humpback@altavista.net> 1024
  created 1999-08-03, key E97E0B46
(3)Gustavo A.S.R. Felisberto <humpback@altavista.net> 1024
  created 1998-12-10, key B59AB043
(4)Gustavo Adolfo Silva Ribeiro Felisberto <humpback@altavista.net> 1024
  created 1998-08-26, key 39EB133D
(5)Gustavo Adolfo Silva Ribeiro Felisberto <humpback@altavista.net> 1024
  created 1998-06-14, key AE02AF87
Keys 1-6 of 6 for "humpback@felisberto.net".  Introduzca número(s), O)tro, o F)in > >1
gpg: solicitando clave B9F2D52A de hkp servidor subkeys.pgp.net
gpg: clave B9F2D52A: clave pública "Gustavo Felisberto <humpback@felisberto.net>" importada
gpg: Cantidad total procesada: 1
gpg:               importadas: 1

Como puede ver desde la respuesta del servidor tiene un par de claves enviadas al servidor de claves, pero actualmente solo usa B9F2D52A. Ahora Juan Nadie podrá obtenerla y firmarla si confía en ella.

4.  Usar un Agente GPG

¿Qué es un Agente GPG?

Hay casos cuando se está trabajando con ciertas aplicaciones donde usa su clave GPG muy frecuentemente, lo que significa debe tipear su contraseña muchas veces. Diversas aplicaciones solían ofrecer un mecanismo de caching de la contraseña para facilitar la vida de los usuario, esto sin embargo, inhabilitaba el compartir este caché con otros programas (¿cuán seguro sería esto?) y forzaba a las aplicaciones a reinventar la rueda una y otra vez.

Un agente GPG es una aplicación separada que GPG usa para mantener en caché la contraseña de forma estándar y segura. Permite a las aplicaciones usar GPG concurrentemente: si ingresa su contraseña mientras trabaja en una aplicación, otra puede trabajar con GPG sin pedir reiteradamente la contraseña para acceder a la clave - si el agente GPG se configura para eso, por supuesto.

Gentoo proporciona algunas aplicaciones de agentes GPG. El paquete app-crypt/gnupg se puede considerar como referencia, y será el que usaremos en este documento.

Configurar gpg-agent y pinentry

GnuPG incluye gpg-agent y pinentry. El paquete pinentry es la herramienta de ayuda que utiliza gpg-agent para solicitar la contraseña en una ventana gráfica. Se puede utilizar de tres formas: Puede mostrar una ventana utilizando gtk+, Qt, o la librería curses (dependiendo de sus ajustes USE en /etc/portage/make.conf).

Si instaló pinentry con más de un tipo de gestión de la ventana, puede elegir entre ellas utilizando eselect-pinentry:

Listado de Código 4.1: Cambiar el tipo de ventana emergente

# eselect pinentry list
Available pinentry implementations:
  [1]   pinentry-gtk-2 *
  [2]   pinentry-curses
  [3]   pinentry-qt4

# eselect pinentry set 1

A continuación, cree un archivo llamado ~/.gnupg/gpg-agent.conf e ingrese las siguientes líneas que definen el timeout por defecto de la contraseña (por ejemplo, 30 minutos) y la aplicación que será llamada cuando la contraseña sea recuperada la primera vez (por ejemplo, la versión gtk+ de pinentry).

Listado de Código 4.2: Editar ~/.gnupg/gpg-agent.conf

pinentry-program /usr/bin/pinentry-gtk-2
no-grab
default-cache-ttl 1800

Ahora configure GnuPG para que use un agente cuando sea apropiado. Edite ~/.gnupg/gpg.conf y agregue la siguiente línea:

Listado de Código 4.3: Configurar GnuPG para usar un Agente GPG

use-agent

Ahora su sistema está (casi) listo para usar el agente GPG.

Iniciar automáticamente el agente GPG

Si su entorno gráfico es KDE, edite el fichero /etc/kde/startup/agent-startup.sh si quiere que afecte a todo el sistema, o el fichero ~/.kde4/env/gpg-agent.sh para que afecto solo al usuario local y añada la siguiente orden para que KDE inicie automáticamente el agente GPG:

Listado de Código 4.4: Configurar KDE para inicie automáticamente el agente GPG

eval "$(gpg-agent --daemon)"

Elimine las siguientes líneas comentadas del fichero /etc/kde/shutdown/agent-shutdown.sh (para todo el sistema), o añádalas al fichero ~/.kde4/shutdown/gpg-agent.sh (para el usuario local):

Listado de Código 4.5: Hacer que KDE apague el agente GPG

if [ -n "${GPG_AGENT_INFO}" ]; then
  kill $(echo ${GPG_AGENT_INFO} | cut -d':' -f 2) >/dev/null 2>&1
fi

Si utiliza otro entorno gráfico, coloque la línea mencionada arriba en ~/.xinitrc (si usa startx) o ~/.xsession (si usa XDM/GDM/KDM/...).

5.  Trabajar con documentos

Cifrar y firmar

Digamos que tiene un archivo que quiere enviar a Luis. Puede cifrarlo, firmarlo, o cifrarlo y firmarlo. Cifrarlo significa que solo Luis podrá abrirlo. La firma le dice a Luis que fue realmente Ud. quien creó el archivo.

Las tres órdenes siguientes harán solo eso, cifrar, firmar y cifrar/firmar.

Listado de Código 5.1: Cifrar y firmar los archivos

$ gpg --output doc.gpg --encrypt --recipient lmpinto@dei.uc.pt documento_a_cifrar
$ gpg --output doc.gpg --sign --recipient lmpinto@dei.uc.pt documento_a_firmar
$ gpg --output doc.gpg --encrypt --sign --recipient lmpinto@dei.uc.pt documento_a_cifrar_y_firmar

Esto creará archivos binarios. Si desea crear archivos ASCII, solo agregue el parámetro --clearsign al principio de la orden

Descifrar y verificar firmas

Suponga que ha recibido un archivo que está cifrado, la orden para descifrarlo es gpg --output document --decrypt documento_cifrado.gpg. Esto descifrará el documento y verificará la firma (si es que hay una).

Cifrar y descifrar sin claves

Es posible cifrar archivos usando contraseñas en vez de claves. La contraseña funcionará como clave y será utilizada como cifrado simétrico. Se puede cifrar el archivo usando el parámetro --symmetric de la orden gpg; el descifrado usa la misma orden.

Listado de Código 5.2: Cifrar archivos con una contraseña

$ gpg --output document.gpg --symmetric document
(GnuPG pedirá una una contraseña y su verificación)

Características avanzadas

Hay algunas agradables características avanzadas en GnuPG. Para encontrarlas, abra el archivo ~/.gnupg/gpg.conf.

Listado de Código 5.3: ~/.gnupg/gpg.conf

#keyserver x-hkp://subkeys.pgp.net
#keyserver-options auto-key-retrieve include-disabled include-revoked

Busque las dos líneas anteriores y elimine los comentarios. Con esto, cada vez que GnuPG necesite comprobar una firma y no encuentre la clave pública en el anillo de claves local, contactará al servidor de claves en subkeys.pgp.net e intentará obtenerla allí.

Otra orden a tener en cuenta es gpg --refresh-keys. Esto contactará con el servidor de claves definido en el archivo de opciones y actualizará las claves públicas de su anillo de claves local a partir de ahí, buscando claves revocadas, nuevos identificadores, nuevas firmas en claves. Probablemente debería ejecutar esto una o dos veces al mes así puede saber si alguien revocó su clave.

6.  Interfaces GnuPG

Acerca de las firmas de correo electrónico

El 95 % del tiempo usará GnuPG con el correo, firmando/cifrando sus mensajes salientes y leyendo mensajes firmados/cifrados. Así que es justo que hablemos acerca de lo primero.

Existen dos formas de firmar/cifrar un correo electrónico con GnuPG, la antigua y nueva forma :). En la antigua, los mensajes aparecían en texto plano sin formateo posible y los archivos adjuntos estaban sin firmar o sin cifrar, a continuación hay un ejemplo de un mensaje firmado a la antigua:

Listado de Código 6.1: Una firma en texto plano

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Test message

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use

iQA/AwUBP8461jMX0745gR7AEQIEOwCg011GbufXO3ED3FkLWXmfzg7xm1cAoJD0
0EU3Kd2EKNCqataEqM5qjpPs
=LchZ
-----END PGP SIGNATURE-----

Mensajes como este no son buenos en el mundo de hoy, donde tenemos agradables interfaces de usuario gráficas y lectores de correo que entienden HTML.

Para solucionar esto se creó un extensión a MIME (Extensiones de Correo de Internet Multipropósito). Esto añade un campo al correo que le notifica al programa lector que el contenido completo del mensaje está firmado y/o cifrado. El problema con esto es que no todos los lectores de correo lo soportan. Y en algunos casos desordena el contenido, el programa Microsoft Outlook es famoso por no funcionar con esto.

Kgpg

kgpg es una agradable GUI para GnuPG. En la pantalla principal puede pegar el texto que desea firmar o cifrar, y también puede pegar el texto con armadura ASCII que desea descifrar.


Ilustración 6.1

Fig. 1: Pantalla principal de kgpg

En esta imagen puede ver la ventana principal de Kpgp con el texto con armadura ASCII y texto cifrado pegado en ella. Desde aquí puede descifrarlo (tendrá que suministrar su contraseña), cifrar otros archivos, pegar nuevo texto para firmar ...


Ilustración 6.2

Fig. 2: Ventana de administración de claves kgpg

Ahora puede ver la ventana de administración de claves. Desde aquí podemos ver nuestra clave correcta para Juan Nadie. Las dos claves de confianza de Gustavo y Luis, y la clave sin confianza de Daniel Robbins (sigo sin llamarlo para preguntarle su huella de la clave :) ).

Seahorse

Seahorse apunta a ser una interfaz GUI de GnuPG para el escritorio Gnome. El software ha evolucionado rápido, pero aún carece de muchas características importantes que pueden ser encontradas en Kgpg o en la versión de línea de comandos.

KMail

Si tiene configurada la bandera USE crypt, KMail será compilado con soporte gpg y será capaz de cifrar y descifrar correos PGP "inline" así como cifrar correos OpenPGP/MIME. Si quiere también descifrar correos OpenPGP/MIME (probablemente sí) necesita tener un agente GPG funcional (vea Usar un Agente GPG).

Puede verificar si KMail está configurado apropiadamente yendo a Settings, Configure KMail, Security, Crypto Backends. Debería ver un entorno basado en GpgME y ser capaz de marcar la casilla OpenPGP. Si está listada pero en color gris, haga clic en Rescan. Si el entorno permanece grisáceo significa que KMail no está funcionando correctamente.

Si aún es incapaz de hacer funcionar correctamente KMail, por favor vea el KMail PGP HowTo para más información.

Claws-Mail

Este lector de correos es muy rápido con buzones de correo grandes, tiene todas las agradables característica que uno quiere en un programa de este tipo y funciona bastante bien con gpg. El único problema es que no funciona con las firmas PGP de antaño, así que cuando recibe correos de ese tipo tiene que chequear manualmente las firmas.

Para usar su clave gpg con Claws-Mail solo vaya a la configuración de la cuenta y seleccione la pestaña "privacy". Una vez ahí, elija qué clave va a usar, la mayoría de los usuarios probablemente irá por la clave por defecto.

7.  Criptografía de clave pública

Criptografía de clave pública básica

El concepto de criptografía de clave pública fue originalmente ideado por Whitfield Diffie y Martin Hellman in 1976. Cuando escuché por primera vez las palabras "clave pública" y "criptografía" en la misma oración en el '93, pensé a mi mismo que sería imposible hacer aquello. En ese entonces no había Internet (bueno había, pero no para mí) así que fui a la biblioteca pública y pregunté por libros acerca de Criptografía. Debo decir que tenía 16 años así que el encargado me miró con asombro y me trajo un libro para niños sobre cifradores por substitución (esos en que uno cambia una letra por otra como el famoso Cifrador de César o ROT-13 (Tragbb rf yb zrwbe, l fnor dhr rf ohrab cbedhr rfgn yrlraqb rfgr qbphzragb., (instale rotix si es que no puede leer el texto anterior)). Me enojé mucho por esta situación y empecé la búsqueda de más información al respecto. Es bueno tener matemáticos en la familia, porque tan pronto hablé con uno de ellos, me vi metido en un nuevo mundo.

Ahora, veamos un poco de matemáticas:

Listado de Código 7.1: Conceptos matemáticos

Definiciones:

1- Un número primo es un número entero positivo mayor que 1 que es solo
divisible por 1 y por sigo mismo (El resto de la división es 0).
Los primeros 8 números primos son 2,3,5,7,11,13,17,19.

Teorema (No se demuestra aquí)
1- Para cualquier número no primo entero positivo es posible separarlo como el
producto de números primos, y aquel producto es único.
4=2*2
6=2*3
8=2*4=2*2*2
10=2*5
12=2*6=2*2*3

"Hechos":
1- Es matemáticamente fácil multiplicar dos enteros grandes.
2- Es difícil encontrar los factores primos dado un entero positivo.

Si le doy el número 35 y le digo que este número es el producto de dos números primos, es fácil encontrar que son el 5 y 7. Pero si le digo lo mismo para el número 1588522601 gastará un montón de tiempo (o ciclos de CPU) para encontrar que era 49811*31891. Y si este número es realmente grande la tarea se vuelve "imposible". Así que ahora si le digo al mundo el número más grande que conozco y que es el producto de dos primos sé entonces algo acerca de ese número que nadie más conoce.

Esta es la base de las implementaciones de hoy en día de Criptografía de Clave Pública (PKC en inglés). Como ejemplo, no realista, le doy a alguien mi número y que aquella persona usará para cifrar un mensaje para mi. Cualquier persona puede ver el mensaje cifrado porque soy el único que sabe un atajo para leerlo, cualquier otra persona tendría primero que "dividir" el número grande para ser capaz de leer el mensaje, y es un "hecho" que es imposible de hacer eso en un periodo corto de tiempo (los métodos actuales y las computadoras más rápidas del mundo tomarían miles de años en hacerlo). En esta configuración los dos números primos grandes serían llamados la "CLAVE PRIVADA" y el número grande no primo es la "CLAVE PÚBLICA".

En la práctica esto no es un 100% acorde a la realidad, pero le dará una buena idea al neófito. Puede encontrar más información en Wikipedia sobre el protocolo de Diffie-Hellman. Si está interesado, vaya a una biblioteca pública y obtenga una copia del libro "Handbook of Applied Cryptography" escrito por Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone, este libro también está disponible en línea sin costo alguno en el sitio mencionado anteriormente.

Como consecuencia de lo descrito más arriba, si cifra un mensaje para mi y pierde el mensaje original no cifrado no será capaz de recuperarlo a partir de la versión cifrada.

Firmas

Ya vimos cómo alguien puede enviarnos un mensaje cifrado si tiene su clave pública. Pero, ¿Cómo sabemos que el autor del mensaje es realmente quien dice ser?. En otras palabras: Si recibo un mail suyo, ¿Cómo se que es realmente suyo y no otra persona que trata de suplantarlo?

¿Recuerda que le mencioné que la PKC no era tan simple como había dicho? La idea es que cuando cifre un mensaje dirigido a mi, tiene que firmarlo con su clave privada para que, cuando lo reciba pueda usar su clave pública para verificar su firma y luego usar mi clave privada para descifrar el mensaje. Como puede ver, no podríamos hacer eso con la configuración descrita arriba.

También es muy importante lo siguiente, para firmar mensajes no tiene que cifrarlos antes. Así que puede crear mensajes que pueden ser leídos por cualquiera pero que vengan con su "marca". Y si algún carácter cambió en el mensaje, éste puede (y será) detectado.

Servidores de claves y claves firmadas

Digamos que no tenga contacto previo con Ud. hasta que me envía un mensaje, la pregunta es ¿Cómo obtengo su clave pública? y ¿Cómo se que realmente es suya?

Para resolver este problema se crearon los Servidores de claves. Cuando crea su par de claves (pública y privada), debería enviar su clave pública al servidor de claves. Luego de esto, cualquier persona puede recuperarla desde ahí. Esto resuelve el problema de encontrar la clave. Pero ¿Cómo sé realmente que la clave corresponde a la clave del autor del mensaje? Para esto, se introduce otro concepto, y es el de firmado de claves:

Firmar una claves significa que, si tiene la clave pública de otra persona, y sabe con seguridad que realmente es la clave de la persona (es su amigo personal, alguien que conoce en la vida real, etc.) puede firmar la clave pública y enviarla a los servidores de claves, de esa manera estará diciéndole al mundo: "Esta clave realmente pertenece a la persona que dice ser". Así, las personas que tengan su clave pública puede usar esa "confianza" para, valga la redundancia, confiar en otras claves.

Esto algunas veces puede causar confusión, así que veamos una situación real:

Imaginemos una situación en que participan 3 personas: Juan, María y Lisa. Juan es un buen amigo de María pero no conoce a Lisa; Lisa es buena amiga de María pero no conoce a Juan. Un día Lisa le envía a Juan un correo firmado. Juan recuperará la clave pública de Lisa desde algún servidor de claves y chequeará el mensaje, si todo marcha bien él verá que quien haya creado el mensaje también creó la clave. Pero, ¿Cómo sabe que es realmente la persona que dice ser?

Juan entonces ve que la clave está firmada por María, puede chequearlo porque ya tiene la clave de María y confía en esa clave. Con este anillo de confianza, Juan puede concluir que el correo que recibió realmente fue escrito por Lisa.

Ahora está listo para usar esta guía, vuelva al Capítulo 1 y aprenda a cómo usar gpg.

8.  Consideraciones finales y créditos

Algunos problemas

Tuve algunos problemas con fotos en las claves. Verifique la versión que está usando. Si tiene la versión GnuPG 1.2.1-r1 o mayor probablemente no tenga problemas, versiones más viejas pueden tenerlos. A muchos servidores de claves tampoco le gustan mucho las claves con fotos.

Las últimas versiones de gnupg no parecen funcionar con la orden gpg --send-keys que se usó para enviar todas las claves de su anillo al servidor de claves.

¿Qué es lo que no hay aquí?

gpg es una herramienta muy compleja, le permite hacer mucho más de lo cubierto aquí. Este documento es para el usuario que es nuevo en GnuPG. Para más información, deberá leer el sitio Web de GnuPG.

No se escribió de otras herramientas como pgp4pine, gpgpine, evolution o tal vez herramientas para Windows, probablemente se extienda este documento en el futuro.

Créditos

El Manual de GnuPG de John Michael Ashley es muy buen libro para los principiantes.

Swift (Sven Vermeulen) por motivarme a reescribir esta guía.

A todos los integrantes del canal de IRC #gentoo-doc.

Gracias a Tiago Serra por apoyarme en el estudio de la privacidad.



Imprimir

Página actualizada 20 de enero, 2013

Sumario: Esta pequeña guía le enseñará lo básico del uso de GnuPG, una herramienta para el cifrado seguro.

Gustavo Felisberto
Autor

John P. Davis
Editor

Sven Vermeulen
Editor

Joshua Saddler
Editor

José Alberto Suárez López
Traductor

John Christian Stoddart
Traductor

Andrés Pereira
Traductor

Manuel Peral González
Traductor

Sergio D. Rodríguez Inclan
Traductor

José María Alonso
Traductor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.