Estas aquiContenido / Afinando el algoritmo de hash en Thunderbird

Afinando el algoritmo de hash en Thunderbird


PorFernando Acero- Publicado el04 Octubre 2009

Por Fernando Acero

Cuando apareció la noticia de la reducción de la complejidad del SHA-1 que había logrado el equipo australiano, dejándola en un precario valor de 2^52 y con la amenaza de reducirla a 2^51 en breve, decidí configurar mi Mozilla Thunderbird 2.0.0.23 (20090812), que también tiene instalado el complemento Enigmail 0.96.0, para que usase por defecto el algoritmo de resumen SHA-256 en lugar del omnipresente SHA-1, como recomiendan muchos expertos en este momento...

Yo tengo configurado Mozilla Tunderbird / Enigmail con la opción "Descifrar/verificar automáticamente” del menú OpenPGP. Así cuando abro un correo que tiene firma GPG/PGP, el programa se limita a mostrarme si la firma es válida o no en la parte superior de la ventana. Es decir, no muestra en la pantalla los códigos de la firma GPG/PGP, ni las marcas de inicio ni final del mensaje firmado, ni tampoco, el código de HASH utilizado para realizar la firma. Si no hubiera tenido configurada esta opción por omisión, en la cabecera de los mensajes vería lo siguiente:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

La opción "OpenGPG | Descifrar/verificar automáticamente" es una opción cómoda que nos informa de la validez de la firma del correo usando un visual código de colores, pero sin mostrar información que puede relevante cara a la seguridad, como por ejemplo, el algoritmo de HASH utilizado para la firma, que bien podría ser un inseguro MD5, dando la firma como correcta.

Así que cuando abría un mensaje generado por mí, por ejemplo, de los que aparecen la carpeta de Enviados de Thunderbird, en la parte superior del panel del mensaje me aparecía este tranquilizador mensaje con un llamativo fondo verde:

“La firma de Fernando Acero Martín (4096) (Clave de gran tamaño)  es correcta”

En este caso, el fondo del mensaje de aviso cambia de color según las circunstancias. Por ejemplo, el fondo es amarillo cuando no disponemos en nuestro anillo de la clave pública del remitente para verificar la firma, lo que no significa que la firma sea incorrecta, solamente que no la podemos verificar. El código de colores nos permite comprobar de una ojeada y rápidamente el estado de la firma del mensaje, pero no nos dice nada de otros parámetros de la firma, por lo que puede que esta información no sea suficiente en muchos casos. De nuevo, vemos que la comodidad puede estar reñida de algún modo con la seguridad.

Hace unos días envié un mensaje desde casa a mi cuenta corporativa. Dicha cuenta usa como cliente de correo Lotus Notes, por lo que no maneja de forma automática las firmas GPG/PGP como Thunderbird y para mi sorpresa, descubrí que a pesar de que había configurado Thunderbird para que usase SHA256, mi mensaje y todos los anteriores a partir de determinada fecha, según comprobé cuando llegué a casa, estaban firmados con el algoritmo SHA-1.

Haciendo memoria recordé que hacía unos días me saltó el mensaje de que había disponible una actualización para Enigmail y la instalé, junto con el paquete de idioma para Enigmail de esa versión, que se denomina Enigmail es-ES 0.96.0. Hay que señalar, que si instalamos el paquete de Enigmail y no instalamos el paquete de idioma correspondiente al que usamos en la interfaz de Thunderbird, Enigmail no funcionará correctamente.

Dicho de otro modo, la actualización de Enigmail a la versión 0.96.0 modificó la configuración de seguridad establecida en mi sistema y sin avisar de ello, lo que puede ser un problema en algunos casos y ahora nos podríamos preguntar ¿es una buena idea mantener por compatibilidad descendente algoritmos completamente rotos como el MD5, o a punto de caer como el SHA-1? Bueno, lo cierto es que son muy utilizados y pueden servir para comprobar mensajes antiguos y además, se pueden utilizar conjuntamente, para mejorar la seguridad sin tener que recurrir a algoritmos nuevos. El caso es que me tocó volverlo a configurar y aquí está, paso a paso, el procedimiento para hacerlo, por si a alguien le interesa.

A partir de ahora, supondremos que tenemos gpg instalado, que disponemos de nuestras claves privadas y que nuestros corresponsales están en el anillo de claves públicas. En caso contrario deberemos instalar GPG, crear nuestra pareja claves, e intercambiarla de forma segura con nuestros corresponsales, lo que es algo más largo de lo que pretendo explicar en este artículo.

Lo primero que tenemos que ver, es si la versión de GPG que estamos usando en nuestro sistema soporta SHA-256. Para ello, abriremos una consola y escribiremos gpg --help. Nos debería aparecer algo como esto:

gpg --help
gpg (GnuPG) 1.4.9
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Algoritmos disponibles:
Clave pública: RSA, RSA-E, RSA-S, ELG-E, DSA
Cifrado: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Resumen: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compresión: Sin comprimir, ZIP, ZLIB, BZIP2

Si entre los algoritmos de resumen de nuestra versión no aparece el SHA-256, tendremos que actualizar nuestra versión de gpg, aunque también es una buena idea, mantener el GPG lo más actualizado posible. Para ello, seguiremos los siguientes pasos:

a) Nos bajamos la última versión de GPG, que en este momento es la 1.4.10, de la página del proyecto. Versión que además, tiene una serie de mejoras más que interesantes en relación con el uso del SHA-256 y con el soporte de otros algoritmos de cifrado nuevos, como el CAMELLIA.

b) Comprobamos que el hash del archivo que nos hemos bajado es el correcto.Para ello, abrimos una consola y usamos el mandato sha1sum gnupg-1.4.10.tar.bz2 desde el directorio en el que se encuentra el archivo. El hash correcto para esta versión es fd1b6a5f3b2dd836b598a1123ac257b8f105615d. Hay que señalar, que la utilidad sha1sum está en el paquete coreutils, que es recomendable mantener actualizado a la última versión.

c) Descomprimimos el archivo mediante el mandato bzip2 -dc gnupg-1.4.10.tar.bz2 | tar -xv, o si usamos una versión reciente de la utilidad tar, mediante tar jvxf gnupg-1.4.10.tar.bz2.

d) Entramos en el directorio gnupg-1.4.10 mediante el mandato cd gnupg-1.4.10 y compilamos GPG mediante la secuencia de mandatos:

./configure prefix=/usr/

make

make check

La salida de este último mandato, deberá ser:

===================
All 27 tests passed
===================

e) Instalamos la nueva versión, mediante el mandato siguiente, que también nos pedirá la contraseña del usuario:

sudo make install

NOTA: debemos tener configurado sudo en nuestro sistema, en caso contrario, debemos realizar la instalación desde una consola como root.

Si ahora escribimos gpg --help en una consola, deberá aparecer en pantalla la información de la nueva versión.

gpg --help
gpg (GnuPG) 1.4.10
Copyright (C) 2008 Free Software Foundation, Inc.

Y lo más interesante para nosotros, es que entre los algoritmos disponibles en la nueva versión encontramos los siguientes:

Clave pública: RSA, RSA-E, RSA-S, ELG-E, DSA
Cifrado: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
Resumen: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compresión: Sin comprimir, ZIP, ZLIB, BZIP2

Para configurar Thunderbird y Enigmail de forma que usen por omisión SHA-256, debemos hacer lo siguiente:

a) Arrancaremos Thunderbird de la forma habitual.

b) Seleccionamos la secuencia de mandatos Editar | Preferencias y en el cuadro de diálogo que aparece en pantalla, hacemos clic sobre el icono Avanzadas y seleccionamos la pestaña General.

En la parte inferior derecha de la pantalla, pulsamos el botón Editor de configuración. Hay que señalar que hay que tener cuidado con lo que hagamos dentro del Editor de configuración. Antes de cambiar nada, debemos saber lo que estamos haciendo, ya que de otro modo, podremos hacer que el programa deje de funcionar correctamente.

c) En la línea de entrada Filtro escribimos la cadena extensions.enigmail.mimeHashAlgorithm y hacemos doble clic sobre la opción en el recuadro inferior. En el cuadro de diálogo que nos aparece en la pantalla, escribimos el valor 3 y pulsamos el botón Aceptar.

NOTA: Los valores disponibles para esta opción son:

VALOR	ALGORITMO
+++++++++++++++++++++++
1 		SHA-1,
2 		RIPEMD-160"
3 		SHA-256
4 		SHA-384
5 		SHA512
6 		SHA-224

Con ello, podemos probar otras opciones, aunque también es cierto, que no todos los usuarios dispondrán en sus sistemas de soporte para algoritmos de hash superiores, como el SHA-512, por lo que no podrían verificar nuestra firma si no actualizan su versión de GPG, o de PGP con la que es compatible este programa.

d) Cerramos todas las ventanas y reiniciamos Thunderbird para que acepte los cambios.

e) Para comprobar que todo es correcto, podemos enviarnos un mensaje a nosotros mismos y comprobar que la firma está realizada con el algoritmo SHA-256. Si no tenemos activada la opción "OpenPGP | Descifrar/verificar automáticamente", nos aparecerá lo siguiente en el panel del mensaje:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Finalmente, recordar que si realizamos alguna actualización de Thunderbird o de Enigmail, cabe la posibilidad de que se modifique nuestra configuración de seguridad, por lo que será conveniente comprobarlo.

"Copyleft 2009 Fernando Acero Martín. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved"

Etiquetas

Comentarios

Selecciona arriba tu forma preferida de visualizar los comentarios y pulsa el botón para guardar tu elección para próximas visitas (sólo si eres usuario registrado).

Gracias por compartir.
Claro.
Sencillo.

Sirve de aprendizaje - ( a mi por lo menos ).

Un saludo

Gargamel

ID: 9841AC9E

Hola Fernando.

Habitualmente uso Ubuntu ( hardy 8.03 - 686) . En ese sistema siguiendo al pie de la letra este pequeño manual..., funciona perfectamente.

Ahora en Jaunty 64 ...
make: *** [install-recursive] Error 1

Y no puedo seguir...

Gracias

Gargamel

ID: 9841AC9E

Pues el caso es que no he sido usuario de Jaunty 64, aunque también es cierto que hay gente que se queja de este error en los foros. Prueba con una versión de GPG compilada para Jaunty 64 o comprueba que tienes instaladas todas las herramientas de compilación necesarias. ¿habías logrado compilar algo con Jaunty 64 anteriormente?

Un saludo, Fernando Acero

"Copyleft 2009 Fernando Acero Martí­n. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved".

Hace unos meses me cambie de thunderbird a evolution por algún problema que ya no recuerdo. El asunto es que con evolution solo puedo firmar con "SHA1".

Por si sirve de ayuda uso Ubuntu 8.04, Evolution 2.22.3.1 y gpg (GnuPG) 1.4.6

¿Alguien me puede iluminar? Gracias.

"Sólo hay un bien, el conocimiento; sólo hay un mal, la ignorancia." __Sócrates__

Evolution solamente soporta SHA1.

"Sólo hay un bien, el conocimiento; sólo hay un mal, la ignorancia." __Sócrates__

Patrocinadores

Kriptópolis alojado en
Zilos-Veloxia Network

Tu mejor defensa:
Bufet Almeida