miércoles, 23 de febrero de 2011

Correo seguro con GnuGPG, Thunderbird y Enigmail

Muchos ya lo conoceis, se trata de Gnu Privacy Guard GnuGPG o simplemente GPG  la alternativa software libre a PGP (Pretty Good Privacy), un programa  inventado por Phil Zimmermann para securizar para el envío de correo electrónico.

Pretty Good Privacy (PGP). Fundamentos

PGP se basa en el uso de la criptografía asimétrica para el intercambio de claves y criptografía simétrica para el cifrado de los datos, en este caso RSA e IDEA respectivamente. Es decir, se parece bastante a una PKI salvo por la no existencia de jerarquía de CAs, entidades anejas y certificados. Para la "confianza" una comunidad de usuarios hace disponibles sus claves públicas y firman las claves públicas de quienes confían bien intercambiándolas directamente entre sí, o  bien dejándolas disponibles en un sitio "web de confianza" conocido como servidor de claves .
Para transmitir la confianza y la verificación de la autenticidad de las claves públicas se hace uso de la firma electrónica. Por ejemplo, si Marcos confía en Juan, firmará la clave pública de Juan. Por otro lado, Ana que confía en Marcos, recibe un correo de Juan. Ana recupera la clave pública  de Juan (recibida o desde repositorio) y verifica que está firmada   correctamente por Marcos (comprueba la firma con la clave pública de Marcos). Entonces, por transitividad, Ana sabe que Juan es de confianza y le manda su clave pública para iniciar el intercambio de mensajes cifrados.

Básicamente PGP es un proceso de : "Yo no sé quien eres tú, pero mi amigo al que quiero mucho y confío en él me dice que tú eres un tipo majete y yo me lo creo".

De esta forma se van creando circuitos de confianza en la comunidad. El problema está en la "actualización", que al contrario que en una PKI tradicional no está centralizada por un certificado en la CA y por lo tanto si Juan pierde o renueva  su clave debe notificar al resto ,publicándola en la web de confianza, mandándola de nuevo, que la ha cambiado. Y esto no garantiza que llegue a todos los usuarios forzosamente. Conclusión: Es un sistema que es apropiado y seguro para un pequeño grupo de usuarios pero que no debe implantarse para grandes comunidades por el motivo referenciado. Asimismo, se ha de ser muy cuidadoso al compartir y al confiar la claves.


GnuGPG. El reemplazo

GPG deriva directamente de PGP con la diferencia de que se trata de software libre .
GPG utiliza el estándar del IETF denominado OpenPGP. Es estable, calificado como un software para el uso en producción y es comúnmente incluido  con todas las distribuciones GNU/Linux.
Aunque básicamente el programa tiene una interfaz de consola, actualmente hay varias aplicaciones gráficas que utilizan recursos de GPG. Vamos a hablar en este caso de Enigmail  un plugin  que se integra con Mozilla y Thunderbird y que trabaja en Windows, GNU/Linux y otros sistemas operativos.

Disclaimer: Un plugin no forma parte de GPG, se trata de desarrollo que hacen uso de él y por lo tanto debemos tener en cuenta que pueden presentar vulnerabilidades que hacen recomendable tener las aplicaciones convenientemente parcheadas y actualizadas.

Una vez explicado el funcionamiento de GPG vamos a ver una aplicación práctica.


Firma y cifrado con GPG y Enigmail


Instalación

En primer lugar, debes descargar e instalar GnuPG, disponible para los sistemas operativos más usados. Esto generalmente en Linux no es necesario puesto que ya viene con la distribución.

En segundo lugar, debes instalar la extensión Enigmail en tu cliente de correo, la cual puedes obtener en Mozilla Addons, entre otros sitios.

Una vez instalado el puglin recomiendo abrir el menú OpenPGP y editar las preferencias, donde puedes configurar a tu gusto el comportamiento , los servidores de claves etc. Esto es recomendable porque las opciones por defecto no simpre son las más seguras. 


Generación del par de claves
Fuente: Mozilla-Doc

Abre Thunderbird y verás una nueva opción en el menú superior a la izquierda de Herramientas titulado OpenGPG. Selecciona OpenPGP > Administración de claves. Se abrirá una ventana; selecciona en el menú Generar > Nuevo par de claves.


En el diálogo que aparece puedes especificar varias preferencias de la clave:
  • La cuenta/identificación que quieres usar para el par de claves.
  • La contraseña o frase clave del par de claves. La contraseña sirve para proteger tu clave privada contra un uso fraudulento; si alguien consigue robar tu clave privada, aún necesitará conocer la contraseña asociada para poder utilizarla.
  • El tiempo de expiración de la clave, es decir, el tiempo durante el cual la clave que generes será válida. Puedes hacer pruebas con una clave con un tiempo de expiración bajo, pero más tarde puedes generar una clave que no expire nunca sin problemas, pues siempre puedes utilizar un certificado de revocación para invalidar tu clave.
  • En la pestaña Avanzadas, el tamaño y el tipo de clave. Asegúrate de que seleccionas un tipo de clave DSA y El Gamal. Cuanto más grande sea la clave, más segura será, pero también requerirá más recursos el cifrado y descifrado lícito de mensajes.

Haz clic en el botón "Generar clave". El proceso puede llegar a tardar varios minutos, como indica la nota al pie del diálogo.

Cuando haya acabado, se te preguntará si quieres generar un certificado de revocación, el cual necesitarás si pierdes tu clave privada o te la roban. Haz clic en Sí y guarda el certificado en alguna carpeta que no sea de acceso público. También puedes guardarla en un lápiz USB, en un CD-ROM o en un disquete.

Una vez guardado el certificado de revocación en un lugar seguro podrás ver tu nueva clave en la lista de claves conocidas en negrita, y, en el campo Tipo, "pub/sec", que significa "pública/secreta", es decir, que posees tanto la clave pública como la clave privada.


Configuración de las claves

Fuente: Mozilla-Doc

Puedes utilizar tu nueva clave para firmar los correos que envíes. Para ello, abre el diálogo de configuración de las cuentas y en la sección Seguridad OpenPGP selecciona "Activar el soporte OpenGPG (Enigmail) para esta identidad".




Si sólo tienes la clave que acabas de generar, utiliza la opción "Usar la dirección de correo de esta identidad para identificar la clave OpenPGP", pero, si tienes más de una, puedes utilizar la opción "Usar un ID de clave OpenPGP específico" para elegir la que quieres usar.

Más abajo puedes activar el firmado y/o cifrado de los mensajes por defecto. Si no lo activas, siempre puedes hacerlo mientras estés redactando un correo a través del menú OpenPGP o los botones OpenPGP y S/MIME de la ventana de redacción, que se muestran por defecto tras instalar Enigmail.

Si sólo tienes tu clave privada y pública no puedes cifrar mensajes, sólo firmarlos, ya que necesitas la clave pública del usuario al que quieres enviar el mensaje cifrado para poder hacerlo. Si el usuario al que quieres enviar mensajes cifrados ya tiene clave pública, pídele que te la proporcione; si no, pídele que genere un par de claves de la misma manera que tú lo hiciste.

Subir la clave pública a un servidor de claves

Fuente: Mozilla-Doc

A pesar de que las claves públicas (nunca las privadas) se pueden distribuir por correo electrónico, mediante un lápiz USB, etc., lo más común es usar los llamados servidores de claves, que no son otra cosa que repositorios en Internet de claves públicas, de acceso libre, normalmente. Para publicar tu clave en uno de estos servidores, no tienes más que hacer clic derecho en ella en la ventana de administración de claves de Enigmail y seleccionar la opción Subir claves públicas al servidor de claves. En la lista de servidores que aparece, selecciona uno, por ejemplo, pgp.mit.edu (acuérdate de la dirección) y pulsa el botón Aceptar.


El usuario al que quieras enviar correo cifrado deberá realizar el mismo proceso (o el equivalente con su gestor de claves GPG) para subir su clave pública a un servidor de su elección, cuya dirección te deberá proporcionar. En la ventana del administrador de claves de OpenPGP, selecciona en el menú Servidor de claves > Buscar claves. En el diálogo que aparece, introduce la dirección del servidor de claves que te proporcionó el otro usuario y el nombre o identidad con que registró su clave. Pulsa Aceptar y aparecerá una ventana con las claves encontradas en el servidor que coinciden con tu criterio de búsqueda. Selecciona la que quieras importar y pulsa Aceptar, tras lo cual podrás ver la clave pública del contacto en la lista de claves disponibles, esta vez con el tipo "pública" presente en la columna Tipo.

Firmar y/o cifrar mensajes

Firmar y cifrar mensajes desde la ventana de redacción es muy sencillo.

Si quieres firmar tu mensaje, selecciona en el menú superior OpenPGP > Firmar mensaje, o pulsa el botón OpenPGP de la barra de herramientas y marca la opción. Al enviar el mensaje se te pedirá la contraseña o frase de paso de tu clave privada, si la protegiste de esta manera, y se generará un código a partir del contenido de tu mensaje que se adjuntará a éste y permitirá al destinatario verificar que el cuerpo del mensaje no ha sido alterado en su trayecto.

Si quieres cifrar tu mensaje, selecciona en el menú superior OpenPGP > Cifrar mensaje, o pulsa el botón OpenPGP de la barra de herramientas y marca la opción. Como ya se comentó, para enviar un mensaje cifrado a alguien necesitas su clave pública. Las claves de los destinatarios especificados en los campos «Para:» se buscarán en tu anillo de claves en función de su dirección de correo electrónico. Si al enviar el mensaje no se encuentra alguna clave o no es de confianza, se abrirá una ventana pidiéndote seleccionar las claves públicas que se usarán para cifrar, desde la que puedes también descargarte las claves que te falten desde los servidores de claves.

Imagen:Enigmail-firmar.png

Fuente: Mozilla-Doc

Otro día veremos como se usa y gestiona directamente GPG: Desde el interfaz de comandos }:-)

1 comentario: