¿Es Seguro el RSA?

El algoritmo RSA (Rivest, Shamir, Adleman) se viene usando desde hace varios años en las aplicaciones criptográficas y es uno de los que gozan de mayor prestigio. Publicado por primera vez en 1977 RSA se basa en el simple hecho de "que es fácil multiplicar dos grandes números primos, pero es muy dificil factorizar ese producto" pues no existen algoritmos conocidos para ello. Muchísimas aplicaciones de criptografía usan el RSA y el propio PGP en sus versiones antiguas lo usaba para generar las claves (hoy usa CAST por defecto, pero también se puede especificar IDEA o Triple DES).

Sin embargo desde hace algunos años se han logrado abrir algunas claves públicas encriptadas con RSA y se hacen concursos ofreciendo dinero (y sobre todo fama) a quien logre obtener la clave privada a partir de una clave pública. Durante el último RSA Challengue en agosto de 1999 se logró factorizar un dígito de 512 bit, es decir que una clave pública de 512 bits ya no sería invulnerable, pero ¿a que costo?

Para lograr esta factorización se requirió de 35.7 años de CPU, distribuyendo el trabajo en 292 estaciones de trabajo de alta velocidad, más una masiva capacidad de almacenamiento para los resultados intermedios. Para cada clave RSA de 512 bits que se pretenda crakeas debería invertirse todo este esfuerzo que significó el trabajo de 292 equipos durante 3,7 meses.

Lo bueno de RSA es que se puede escalar la seguridad en varios órdenes de magnitud (10, 100, 1000 veces o más) simplemente aumentando el largo de las claves, así, las claves usadas hoy de 1024 o 2048 bits son prácticamente invulnerables pues no hay capacidad computacional en el presente en condiciones de llevar a cabo esa tarea.

Así tenemos que por el momento, y durante los próximos años RSA seguirá siendo un algoritmo seguro. Hay que tener en cuenta que todo algoritmo es posible de romper usando la fuerza bruta, pero esa es la teoría, que supone que se dispone de un tiempo y capacidad de proceso infinitos. Los límites prácticos sin embargo, existen y seguirán existiendo siempre, no importa cuanto avance la capacidad de los computadores todavía estamos lejos de generar el "Quijote de la Mancha" intentando con todas las posibles combinaciones de letras de naturaleza similar es el problema de romper una clave RSA por fuerza bruta (y ese es el único medio conocido hasta ahora)

La factorizacion de números grandes es un problema complejo que existe desde la época de los antiguos matemáticos griegos. Desde entonces nadie ha encontrado un algoritmo que permita resolver este problema sin usar métodos de prueba y error o de fuerza bruta. En los varios siglos de desarrollo matemático que han pasado desde que se conoce este problema nadie ha sido capaz de encontrar una solución y es muy probable que esto se mantenga así durante muchos años más.

¿Qué tamaño debe tener una clave segura?, en el presente estado de desarrollo de la computación una clave de 1024 bits es perfectamente segura para la mayoría de las personas, si queremos multiplicar nuestra seguridad basta escoger una de 2048 bits que será invulnerable a cualquier poder de cálculo conocido en el presente y en el futuro cercano.  Sin embargo el largo de la  clave no es el único factor de inseguridad, como sabemos existen muchos otros como:

  • La implementación de la aplicación de seguridad específica puede tener muchas fallas no atribuibles al algoritmo. Al propio PGP se le encuentran vulnerabilidades de implementación de tiempo en tiempo.

  • El acceso a nuestra clave privada por medio de nuestra contraseña es sin duda la mayor debilidad. Determinar el párrafo secreto es piece of cake comparado con un ataque directo al algoritmo.

  • La posibilidad de que nos roben el archivo donde está guardada nuestra clave secreta también introduce debilidad, aunque no es cosa de llegar y desencriptarla, alguien que disponga de ese archivo en su propio equipo tiene todo el tiempo del mundo para probar ataques.

  • Finalmente se ha establecido que RSA, al igual que otros algoritmos de encriptación debe ser usado bien para firmar (no repudiación) o bien para encriptar (confidencialidad) pero nunca para ambas cosas al mismo tiempo

En resumen RSA es todavía muy seguro y lo será por mucho tiempo, especialmente por el hecho de que su uso es amplio y está siendo atacado constante y públicamente