Cómo identificar claves privadas generadas por openSSL comprometidas

La gente de Ubuntu ha sacado un paquete llamado openssl-blacklist disponible como instalable desde sus repositorios de software que permite verificar si las claves privadas que tengamos generadas con openSSL están comprometidas o no por el fallo de implementación del generador de números aleatorios del paquete openssl distribuido por Debian y derivados.

Se instala directamente con apt, aptitude, synaptic o con dpkg y descargando el paquete:

sudo apt-get update && sudo apt-get install openssl-blacklist

Su uso es muy sencillo, bastará con ejecutar el comando openssl-vulnkey. Toma como parámetros de entrada los ficheros con las claves privadas en formato PEM.

sudo openssl-vulnkey /etc/apache2/ssl/apache.test.pem
COMPROMISED: 9c4d589707a08ed65508032b41a999a810173592 /etc/apache2/ssl/apache.test.pem

Lo que no me queda muy claro es qué pasa cuando tiene una “validez desconocida”…

sudo openssl-vulnkey /etc/apache2/ssl/apache-ssl-key.pem
Key has unknown validity: /etc/apache2/ssl/apache-ssl-key.pem

Este pequeño comando complementa estupendamente al ssh-vulnkey que verifica en el formato con el que almacena las claves openSSH si alguna de las claves del servidor o los clietnes SSH está comprometida.

Para instalar el paquete en Debian, por ahora se puede descargar directamente desde http://xillion.org/openssl-blacklist/ el paquete y sus firmas digitales para verficarlo.

openSSL, Debian y la línea comentada de md_rand.c

Correción del fallo de la llamada al aleatorizador "bueno" de openSSL

El Error de openSSL en Debian subsanado dos años después

Menuda que se ha montado con el fallo detectado en el empaquetado del paquete openssl para distribuciones Debian y derivados, como Ubuntu. Al parecer tuvieron a bien comentar una inocente línea de código hace dos años que les daba unos errores molestos en código “no relacionado”, como bien comenta uno de los empaquetadores en el cambio en abril de 2006…

openssl (0.9.8a-9) unstable; urgency=low
[…]
* Don’t add uninitialised data to the random number generator. This stop
valgrind from giving error messages in unrelated code.
(Closes: #363516)

— Kurt Roeckx Thu, 6 Apr 2006 20:34:07 +0200

Esta cosa tan inocente consistía en comentar una llamada a una función de código que al parecer les daba un mensaje de error en alguna otra parte de código “no relacionado.” El caso es que justamente esta llamada es necesaria para que el proceso interno de generación de números aleatorios en la creación de claves asimétricas tipo RSA sea realmente aleatorio.

Continue reading