Hubo un tiempo en el que el gobierno de los Estados Unidos consideraba toda tecnología de cifrado propia restringida para su exportación, en la misma categoría que el equipamiento militar. El razonamiento que se ofrecía era la posibilidad de que los algoritmos de cifrado cayesen en manos enemigas y estos dispusieran así de una herramienta que entorpecería el trabajo de las agencias de inteligencia.
El mundo estaba cambiando. Habíamos rasgado el telón de acero y el final de la guerra fría cerraba un ciclo que estuvo a punto de hacernos retroceder varios milenios en la historia. Hablamos de los primeros años 90, donde las puntocom y el Internet de entonces iban soplando aire a pleno pulmón en una burbuja que terminaría por reventar años después. El comercio electrónico despegaba y era necesario ganarse la confianza del cliente tradicional.
La industria necesitaba el cifrado, los lobbies no tardaron en echarse encima de los políticos y estos terminaron por capitular abriendo progresivamente las reglas del juego para que el cifrado permitiese poner un «candadito amarillo» en el navegador. Internet «ya era segura» (en efecto, las comillas denotan una gran ironía).
Decimos progresivamente porque no fue fácil. Estados Unidos permitía el cifrado, su exportación y uso, pero con serias limitaciones. En primer lugar, solo se permitía la exportación de algoritmos de cifrado en una versión «reducida«. Por ejemplo, dentro de Estados Unidos era posible obtener un navegador con una capacidad de cifrado mayor que su versión internacional, la cual usaría longitudes de claves muy inferiores, tan reducidas que era posible descifrar comunicaciones cifradas con dicho navegador de manera relativamente fácil. A esos conjuntos de cifrado se les marcaron con la pseudoetiqueta EXPORT.
Años después la situación fue cambiando poco a poco hasta el casi completo levantamiento de restricciones fronterizas. Los cifrados deliberadamente débiles fueron cayendo en desuso o sustituidos por mejores algoritmos y longitudes de claves mayores… pero no terminaron por desaparecer.
Todo esto nos permite ponernos en situación para entender un nuevo ataque. Consiste en una vulnerabilidad descubierta por un colectivo de investigadores bajo el nombre de SmackTLS. El fallo permitiría a un atacante en situación de interceptar las comunicaciones entre cliente y servidor renegociar la conexión segura y hacer que ambos usen uno de los cifrados de la categoría EXPORT, capturar dicho tráfico y descifrarlo con una capacidad computacional al alcance de cualquiera.
El ataque ha sido denominado por sus autores como FREAK (Factoring RSA Export Keys), tiene su propio dominio y web con capacidad para hacer pruebas. Tan solo le ha faltado un requisito (un icono representativo) para cumplir con todos los requisitos de esta tendencia mediática.
Como informan en la comentada web, tanto cliente como servidor han de soportar el conjunto de cifrados EXPORT. Concretamente servidor y cliente han de aceptar y ofrecer respectivamente un conjunto RSA_EXPORT o usar el cliente una versión vulnerable de la librería OpenSSL; algo que, entre otros productos, usan Android e iOS.
¿Qué hacemos?
Como se ha comentado, todo aquello que use una versión de OpenSSL anterior a las siguientes versiones es virtualmente vulnerable: 0.9.8zd, 1.0.0p, 1.0.1k. Especial mención a los servidores, como medida preventiva se ha de asegurar que no se esté ofreciendo soporte a cifrados EXPORT.
Desde la línea de comandos:
openssl s_client –connect servidor:puerto –cipher EXPORT
Un servidor vulnerable devolverá la salida del tipo (resumida):
New, TLSv1/SSLv3, Cipher is EXP-RC4-MD5
…
Cipher : EXP-RC4-MD5
Ese «EXP» es, por supuesto, una suite de cifrado que pertenece a EXPORT y es de un servidor vulnerable.
Otro ataque más a OpenSSL y una nueva técnica que pone en riesgo la privacidad de las comunicaciones.
Más información:
SmackTLS
FREAK
OpenSSL Security Advisory [08 Jan 2015]
DTLS segmentation fault in dtls1_get_record (CVE-2014-3571)
David García
Twitter: @dgn1729
Cortar y pegar la línea de openssl me generó este problema http://serverfault.com/questions/300842/openssl-keeps-giving-me-unknown-option-errors