viernes, 26 de junio de 2015

Secreto (casi) Perfecto Hacia Adelante

En nuestro día a día hacemos un número creciente de comunicaciones a través de canales seguros, principalmente a través del protocolo TLS. Esto implica que la información que viaja por las redes lo hace cifrada, de forma que si alguien intenta pinchar nuestras comunicaciones solo obtendrá datos sin sentido. Sin embargo, hay fuertes indicios de que este tipo de intromisiones se están llevando a cabo en la práctica.

Antes de seguir, haremos una breve descripción del modo en el que dos ordenadores se comunican a través de un canal seguro. En general, el proceso consta de dos fases. La primera consiste en negociar una clave única y secreta (denominada clave de sesión), y la segunda es la comunicación propiamente dicha, usando la clave recién acordada. Quien desee penetrar en nuestras comunicaciones, necesitará por tanto romper el método de cifrado de la segunda fase (algo extremadamente difícil, si se usa una buena técnica), o bien atacar de alguna forma el método de negociación de clave que se produce al principio.

En general, hay dos tipos de métodos para lograr este propósito. Ambos usan información pública, a disposición de todo el mundo, e información secreta propia de cada uno de los interlocutores, que deberá ser mantenida en secreto.

Uno de los dos métodos anteriormente citados haría uso de las claves públicas y privadas de los interlocutores para acordar la clave de sesión. Este método tiene un grave inconveniente: nuestras claves privadas pueden ser comprometidas en el futuro, y permitir a un atacante que hubiera tenido la precaución de grabar nuestras conversaciones cifradas, recuperar entonces las claves de sesión correspondientes y acceder al contenido de las comunicaciones.

El otro tipo de métodos, cuyo principal ejemplo es el algoritmo de Diffie-Hellman, hace uso de una información secreta generada expresamente para cada comunicación, que luego es eliminada, volviendo imposible recuperar las claves de sesión en el futuro a partir de grabaciones. Esta propiedad es lo que se conoce como Secreto Perfecto Hacia Adelante (Perfect Forward Secrecy). Obviamente, aunque es mucho más recomendable emplear este método en nuestras comunicaciones, recientes revelaciones nos hacen sospechar que en la práctica no está resultando tan seguro como se esperaba.

El problema no está en el método en sí, sino en que, por razones de eficiencia, la información pública que se usa se reduce a un número pequeño de valores distintos. Los métodos para deducir la información secreta (que sí es diferente en cada caso) emplean una fase de cálculos previos bastante costosos, pero que depende únicamente de la información pública, por lo que un atacante con los suficientes recursos (¿hace falta que diga quién?) podría dedicarse a realizar esos cálculos para ese conjunto de valores públicos más usados y así espiar las comunicaciones.

Si a esto unimos la posibilidad que brindan los protocolos de emplear valores menos seguros, es decir, que requieren menos cálculos para ser rotos, incluida en su día para cumplir con la legislación de hace un par de décadas, que prohibía la exportación de software criptográfico fuerte fuera de los EE.UU., tenemos la tormenta perfecta. Un grupo de investigadores ha publicado un interesante artículo donde explican un método para engañar a los ordenadores, obligándoles a usar esas claves menos seguras, y han estimado el índice de éxito que obtendría una organización con los suficientes recursos a la hora de pinchar las comunicaciones. Por si esto fuera poco, lo expuesto en el artículo es coherente con determinadas filtraciones que se han producido recientemente.

¿Significa esto que el Secreto Perfecto Hacia Adelante no existe o es inútil? En absoluto. De hecho, los principales productos que emplean estos métodos ya han sido (o están siendo) parcheados tanto para no permitir el uso de valores públicos considerados poco seguros, como para emplear en el futuro un abanico mayor de valores, y además más seguros.