Hay que exigir más bits!

José M. Piquer

``Muchos años tuvieron que transcurrir para que pudiera sobrepasar las defensas exteriores. Y así, paulatinamente, con una fuerza tan grande y paradojal como las que en las pesadillas nos hacen marchar hacia el horror, fui penetrando en las regiones prohibidas donde empieza a reinar la oscuridad metafísica, vislumbrando aquí y allá, al comienzo indistintamente, como fugitivos y equívocos fantasmas, luego con mayor y aterradora precisión, todo un mundo de seres abominables."gif

En el mundo actual, se está volviendo habitual que se vendan y se distribuyan productos recién salidos de los laboratorios, antes de haber sido probados en serio. Por ello, vale la pena fijarse en la discusión que ha habido en Internet sobre la seguridad de enviar datos confidenciales usando las capacidades de encriptación de Netscape Navigator, usualmente conocido como Netscape.

Básicamente, Netscape provee una solución de encriptación basada en RSA, un algoritmo sólido y probado, que funciona solamente si el servidor es también provisto por Netscape, y soporta el protocolo. Cada vez hay más servidores de este tipo, que proponen conexiones seguras, donde se pueden enviar datos confidenciales, como passwords o los datos de la tarjeta de crédito.

La pregunta entonces es, qué tan segura es una conexión segura?

Varios artículos en la red han mostrado fallas en la implementación que permiten desencriptar documentos, pero se estima que esos errores serán corregidos rápidamente. De alguna forma el mensaje parece ser: esperemos un poco antes de usar estas funcionalidades. Uno de estos errores proviene de una conocida falla de la función gets de C, que no recibe el largo del string a leer, permitiendo escribir sobre direcciones de memoria erróneas. Este mismo error fue explotado por el famoso gusano de Internet en el '88. Hoy en día está prohibido usar gets en cualquier programa en C, sin embargo los malos hábitos no se curan tan fácilmente, y los programadores adoran escribir menos.

Un problema más serio es el que concierne las restricciones de exportación de RSA. El gobierno americano considera que la encriptación es una "munición", por lo que su exportación está reglamentada (lo que es completamente inútil, puesto que cualquiera puede implementar el protocolo, que es conocido y público). RSA es un algoritmo de encriptación cuya solidez radica en una clave (secuencia de bits) secreta, que nunca se transmite y sólo conoce su dueño. Por lo tanto, la seguridad está basada en que es "difícil" descubrir esa clave y eso es proporcional al número de bits de ésta última. El gobierno americano restringe la exportación de RSA a sistemas que usen 40 bits en las claves privadas. Esto se basa en la teoría que es suficientemente sólido para resistir ataques de amateurs, pero también suficientemente débil como para ser decodificado por el gobierno americano (vía super computadores masivamente paralelos, si encuentran a alguien que pueda hacerlos funcionar).

Dejando fuera la discusión sobre lo confiable que es el gobierno americano, hace poco tiempo un investigador del INRIA en Francia tomó una sesión http encriptada con 40 bits por Netscape y logró encontrar la clave en una semana, utilizando unas 100 estaciones de trabajo de buena performance. El algoritmo era una simple búsqueda secuencial en el espacio de números posibles, y llevaba un poco más de la mitad del total de posibilidades al encontrarla. O sea, en el peor caso, habría tomado dos semanas el decodificarlo.

Si eso es suficiente seguridad, depende de la aplicación de la que estemos hablando. Interceptar un Fax o un teléfono celular es probablemente más fácil que decodificar un documento RSA 40 bits. En todo caso, ya no envío mis datos de tarjeta de crédito usando Netscape seguro, y la pregunta es: cómo se los envío?.





Jose' Piquer
Sun Mar 24 10:25:47 CST 1996