3) RSA EN LA PRÁCTICA

En este punto enlazamos con los lectores que se han saltado el desarrollo matemático. Les pongo en antecedentes. Acabamos de demostrar que

C^d mod n = M^(ed) mod n = M

Lo que significa que, en aritmética modular, elevar a la potencia e y elevar a la potencia d son dos pasos inversos:

—Para cifrar, tomamos e y hacemos C = (M^e) mod n

—Para descifrar, tomamos d y hacemos M = (C^d) mod n

Para aplicaciones prácticas, les recuerdo que (n,e) son números conocidos por todos, y forman la clave pública; d es la clave privada.

La seguridad del sistema se basa en varios factores. El número e puede ser pequeño, pero si combinamos un valor muy pequeño de e con un mensaje M de longitud muy corta, un atacante puede descifrarlo con cierta facilidad. Para ello, basta con imponer a M una longitud mínima, añadiendo bits aleatorios de relleno si fuese necesario. Hay claves en uso que utilizan valores de e tan pequeños como 3. Sin embargo, la gran mayoría de las claves RSA utilizadas hoy día usan un valor e=65537. El motivo es que ese número, en notación binaria, se escribe como 10000000000000001, y tener tan pocos unos facilita mucho el cálculo.

También es necesario que d sea grande, y hay otros ataques criptoanalíticos que hacen recomendable algunas restricciones adicionales. Pero el elemento básico que garantiza la seguridad del algoritmo RSA es sencillo y contundente: la inviabilidad de pueda factorizar n. Si consiguiese extraer sus factores primos (p,q) podría construir F=(p-1)(q-1) y también la clave de descifrado d. Debemos, por tanto, escoger números primos lo bastante grandes como para que no puedan ser factorizados en un intervalo de tiempo razonable.

Sin embargo, el concepto de “lo bastante grandes” ha cambiado sensiblemente con el tiempo. En 1977, Ron Rivest afirmó que factorizar un número de 125 dígitos (unos 415 bits) requeriría unos 40 000 billones de años. El número que propuso como ejemplo tenía 129 dígitos, y fue factorizado en 1994.

El problema fundamental consiste en que, con los años, nos hemos vuelto muy hábiles factorizando números primos. Por un lado, se han ido descubriendo algoritmos de factorización cada vez más eficientes. Por otro, la potencia de cálculo de los ordenadores ha aumentado de forma espectacular desde los años setenta. Los sistemas informáticos son no solamente más potentes sino también más baratos, lo que significa que cualquiera puede acceder a una gran potencia de cálculo. El primer ordenador capaz de pasar la barrera del gigaflop (mil millones de operaciones aritméticas por segundo) fue el Cray-2, puesto en marcha en 1985. Un iPad actual supera esa velocidad.

Para ver cómo de grande es “un número primo lo bastante grande,” lo ideal sería disponer de un conjunto de números n=p*q y ver en cuánto tiempo y con qué recursos pueden ser factorizados. Y eso es precisamente lo que hizo la empresa RSA Laboratories. Durante años retó a todos los criptólogos del mundo al RSA Factoring Challenge. Aunque el desafío no está activo, siguen mostrando ejemplos de números que no han sido factorizados[4]. Para que se hagan ustedes una idea, he aquí la lista vigente de los números factorizados hasta la fecha:

Número----Bits--Fecha

RSA-140---463---1999

RSA-155---512---1999

RSA-160---530---2003

RSA-576---576---2003

RSA-640---640---2005

RSA-200---663---2005

RSA-768---768---2009

El esfuerzo no es poca cosa, ya que todos estos ataques requirieron redes de ordenadores y grandes cantidades de tiempo y memoria. Pero incluso usted puede convertirse en un destructor de primos. El primer número de 512 bits (RSA-155), factorizado en 1999, necesitó una capacidad de cálculo enorme: casi un cuarto de trillón de operaciones. Impresionante en términos absolutos, pero un ordenador de sobremesa moderno podría hacerlo en un par de meses.

Usuarios con acceso a mayor potencia de cálculo pueden hacerlo aún mejor. Mientras escribo estas palabras, participo en un proyecto científico de la Red Española de Supercomputación. Me ha sido asignada una potencia de cálculo que se aproxima al teraflop (un billón de operaciones aritméticas por segundo). A esa velocidad, podría factorizar RSA-155 en apenas tres días. Y mi proyecto dura cuatro meses.

A tenor de la potencia de cálculo desplegada incluso por pequeños usuarios, no es de extrañar que las recomendaciones de los expertos apunten a claves RSA de al menos 2048 bits. Incluso hoy día, factorizar una clave de 1024 se considera tarea titánica, pero puesto que ya ha caído una de 768 bits, es mejor ir a lo seguro.

Las preferencias de los usuarios, influidos seguramente por las recomendaciones de los expertos, reflejan también esta preocupación. Las claves RSA se utilizan principalmente en comunicaciones seguras por Internet, tanto en navegación web (certificados X.509) como en correo electrónico (PGP). Un estudio realizado en 2012 sobre más de seis millones y medio de claves RSA muestra que solamente el 2.5% de los usuarios usa claves de 768 bits o menos. Los tamaños más comunes son 1024 (73,9%) y 2048 bits (21,7%)[5]. En sintonía con esta idea de que más vale prevenir que lamentar, Microsoft emitió un aviso de seguridad en agosto de 2012, según el cual ya no se aceptarían certificados digitales que utilizasen claves de menos de 1024 bits[6].