Taller de Criptografía - Informe 22

Sobre el tamaño de clave I: planteamiento.


 

Fecha: 14 Agosto 2000


Una de las primeras cuestiones que el usuario novato de PGP (o, en general, de cualquier sistema de cifrado) se plantea es: ¿qué tamaño de clave debo elegir? Hay muchas recomendaciones pululando por ahí. Pero las pomposas declaraciones sobre "sistemas criptográficos inviolables" que a veces se oyen por ahí no deben engañarnos de un hecho fundamental: con una sola excepción (la llamada libreta de uso único, OTP), no existe un solo algoritmo criptográfico que sea inviolable. Incluso si no hay manera de efectuar ataques criptoanalíticos (es decir, si no podemos obtener información adicional sobre el cifrado mediante un análisis en profundidad), cualquier sistema de claves puede "reventarse" mediante el sencillo sistema de probar todas las claves posibles.

Es como una caja fuerte. Suponiendo que haya sido diseñada a prueba de ataques (sopletes, explosivos) y que no pueda adivinarse de ninguna manera la combinación (por ejemplo, con un estetoscopio o poniendo la oreja, como vemos en las películas), el ladrón no tendrá más remedio que probar todas las combinaciones. Con tiempo suficiente podrá lograr su objetivo ... aunque si le lleva un millón de años, "ese tiempo suficiente" resulta excesivo.

Elegir una clave demasiado larga puede ralentizar innecesariamente los proceso de cifrado y de descifrado, aunque con los ordenadores actuales no suele haber problema. Más peliagudo sería escoger una clave demasiado breve, ya que eso nos pondría a merced de potenciales atacantes. Los paranoicos de la seguridad, y en general aquellos que usan cifrado de datos para evitar que los malos de la película (reales o potenciales) accedan a sus secretillos, no verán con agrado que sus claves sean de longitud insuficiente.

¿Cómo conseguirlo? Pues razonando y haciendo algunos números. Y como estamos en un Taller de Criptografía y nos gusta comprobar las cosas por nuestra cuenta, vamos a sacar las herramientas y a destripar el asunto. Los lectores con fobia a las matemáticas pasarán un par de malos tragos, ya que es necesario hacer números, pero confío en no hacérselo demasiado duro de roer.

Este estudio se divide en dos partes. En el presente Informe plantearemos la situación al día de hoy. En el siguiente, intentaremos extrapolar los resultados hacia los próximos años.

Y ahora, llave inglesa, tenazas y al ataque.


Precedentes

En 1977 los creadores del algoritmo RSA propusieron un reto. Cifraron un texto con su nuevo sistema y retaron al mundo a que lo descifrase (dicho reto apareció en la revista Investigación y Ciencia de 1977, aunque no recuerdo el mes). Los autores creían que no se podría hacer en menos de 40.000 billones de años. En 1993 se consiguió, mediante un conjunto de cálculos que llevó unos ocho meses. !Diablos! Esto sí que es una metedura de pata. Bueno, supongamos que los autores estaban algo despistados; al fin y al cabo, era el primer uso de su algoritmo y no había datos experimentales sobre su resistencia a un ataque real. Pero ....

Pero una y otra vez se ha comprobado que el tiempo necesario para "destripar" un mensaje cifrado ha sido menor que el que se presuponía según la teoría. Eso se debe a dos factores fundamentales. El primero es la creciente capacidad de cómputo de los ordenadores modernos. La máquina con la que usted está leyendo este texto hubiera pasado hace dos décadas por un superordenador, y ciertamente sobrepasa con mucho las posibilidades de máquinas dedicadas en el pasado a tareas tales como poner un hombre en la luna o diseñar las primeras bombas de hidrógeno.

El segundo factor, que afecta muy especialmente a los algoritmos de clave asimétrica, es de tipo teórico. A lo largo de los años se han descubierto procesos algorítmicos cada vez más eficaces para la resolución de los problemas matemáticos en que se basan los sistemas de cifrado asimétrico. Especialmente destacados son los avances en la factorización de números primos (necesarios para atacar algoritmos asimétricos como el RSA). Un ejemplo. En 1994 se consiguió factorizar un número de 129 dígitos mediante la llamada criba cuadrática polinómica; cinco años más tarde, merced al nuevo sistema de criba de campo numérico, se factorizó un número de 140 dígitos ... con menos de la mitad de la potencia de cálculo.

Es quizá por ello que muchas predicciones del pasado han quedado en ridículo. Por desgracia, no podemos predecir cuándo aparecerá un algoritmo de factorización nuevo. Pero algo podremos hacer. También hemos de tener en cuenta el aumento en la potencia de cálculo de los ordenadores, que parece no tener fin. No es lo mismo atacar un algoritmo de clave asimétrica (como el RSA) que uno de clave simétrica (como DES o IDEA). Y por último, hemos de estimar la capacidad de ataque de nuestros supuestos enemigos.

Os creía que esto iba a ser fácil, ¿eh? Pues os equivocáis, amiguitos. Sin embargo, que no cunda el pánico. Planteemos los problemas uno por uno. El primero es obvio: si usamos cifrado de datos, es para protegernos; pero ¿de quién?


¿Quién es el enemigo?

La mayoría de nosotros tenemos pocos enemigos, pero supongamos que existen. Porque haberlos, haylos. Los hackers curiosos están a la orden del día. En el extremo opuesto, grandes hermanos como el ahora conocido sistema de espionaje electrónico Echelon nos acecha noche y día. Y entre medias, los directores o jefes de empresas pueden tener suspicacias respecto a sus competidores. Hay tantos enemigos como podamos imaginarnos.

El problema es que necesitamos saber de qué son capaces. Este es el primer escollo a la hora de determinar el grado de protección que necesitamos. Para solventarlo, aquí propongo cuatro tipos de ataque, con una estimación de su posible capacidad de cálculo. Supondremos que cada uno de ellos dispone de un conjunto de ordenadores o sistemas informáticos en general, y que están dispuestos a utilizarlos contra nuestros secretos sin importar el valor de éstos. Con ello me saltaré un principio de la seguridad, que establece que el grado de protección ha de estar en función de los bienes que protejamos. Es decir, no haré cuentas sobre lo que contiene nuestros mensajes cifrados. Puede ser la lista de la compra, la fórmula de la Coca-Cola o los números de la cuenta suiza de Bill Gates. No importa aquí; el caso es que los malos van a por todas.

Para empezar, algunas definiciones. Usaremos la capacidad de cálculo de cualquier sistema informático, y la expresaremos en diferentes unidades. La principal es la cantidad de operaciones (es decir, pasos sencillos como sumas o restas) que pueden efectuarse: las llamaremos operaciones o instrucciones. Como esta cantidad depende de cuánto tiempo estemos usando nuestras máquinas, tendremos en cuenta la "velocidad de cálculo": el número de operaciones por unidad de tiempo, que se denomina flop; se suele usar el múltiplo megaflop (Mflop: millón de operaciones por segundo). Podemos someramente establecer que un flop se corresponde a un paso del reloj del ordenador.

Es decir, un Pentium a 450 MHz (mega-ciclos) ejecutaría 450 millones de operaciones por segundo, con una velocidad de 450 Mflops. Para medir la cantidad de operaciones se utiliza también una unidad denominada Mflop-año, que es el número de operaciones ejecutadas en un año a una velocidad de un Mflop. Tomaremos el convenio de: 1 Mflop-año : 3*10^13 (3 por 10 elevado a trece) operaciones.

Y ahora vamos con nuestros atacantes. El primero lo denomino ataque pirata, y es el efectuado por el típico listillo de la informática que tiene a su disposición un par de ordenadores para hacer con ellos lo que quiera. Dos ordenadores a unos 500 MHz daría una velocidad de cómputo de unos 1.000 megaflops, o 10^9 operaciones por segundo. Es posible imaginar escenarios en los que podría acumular más capacidad de cálculo (con más ordenadores, o accediendo a los recursos informáticos de una universidad), pero para empezar me parece una cantidad razonable.

En segundo lugar, está el ataque corsario. Con esto quiero denotar un atacante con mayores recursos, como una red de computación u ordenadores especialmente construidos para reventar claves. Este ataque requiere un esfuerzo organizado y costoso. Como "atacante corsario" tomaré un ejemplo: el de la EFF (Electronic Frontier Foundation). Esta entidad construyó un "reventador" de claves DES para demostrar la creciente vulnerabilidad de dicho algoritmo frente a atacantes decididos. A un coste de unos 40 millones de pesetas, su DES-cracker consiguió descifrar un mensaje (cifrado con DES) en un ataque combinado con una red de ordenadores de todo el mundo (coordinados bajo el nombre de Distributed.net). El número de claves posibles en el algoritmo DES, junto con el tiempo necesario para probar cada clave, concuerda con una velocidad de cálculo de unos 10^14 flops, unos cuatro órdenes de magnitud superior a las posibilidades del atacante pirata. Este "corsario" era benigno, pero no resulta descabellado imaginar esfuerzos similares para obtener secretos bancarios o comerciales.

En tercer lugar, tenemos el ataque mafioso. Lo imagino como un esfuerzo tipo "corsario", pero a mayor nivel, hecho por un atacante con grandes recursos (un grupo mafioso, un gran banco o empresa) capaz de gastarse varios miles de millones de pesetas en un gran ataque. A un coste por flop similar al del corsario, podemos suponerle una capacidad de cálculo por unidad de tiempo de unos 10^14 flops. Téngase en cuenta que esta es, aproximadamente, la velocidad de cálculo del mayor ordenador del mundo en la actualidad; sin embargo, es posible obtener velocidades similares en sistemas específicamente diseñados basados en hardware. Es decir, una máquina específicamente construida para descifrar mensajes puede tener la misma velocidad de cálculo que un ordenador multiuso mucho más caro.

Y, por último, presentamos el Ataque MIB. Es la abreviatura en inglés de Hombres de Negro (Men in Black), y lo uso para designar al atacante definitivo, con fondos casi ilimitados en material y dinero. El atacante MIB más poderoso existente es posiblemente la Agencia de Seguridad Nacional (NSA) norteamericana, dedicada al espionaje electrónico y la ruptura de claves, que dispone de un presupuesto del orden del billón de pesetas. Supongamos que no tienen nada mejor que hacer que construir un superdescifrador y lanzarlo contra nuestros secretos. De acuerdo, resulta difícil imaginar un escenario semejante, pero eso nos dará una cota superior a la potencia de cálculo disponible en un ataque (descartando, eso sí, un "ataque alienígena"). Aumentemos la capacidad de los Hombres de Negro en dos órdenes de magnitud respecto al ataque mafioso: tendremos así un total de 10^18 operaciones por segundo (flops).

La capacidad total de cálculo dependerá tanto de la potencia del atacante como del tiempo que esté dispuesto a dedicar sus esfuerzos. ¿Se pasarán un siglo atacando, o tendrán bastante con una semana? De nuevo supongo que los atacantes no tienen nada mejor que hacer, de manera que pueden dedicarse un buen rato a su tarea. Pero tampoco pueden estar un siglo en ello (bueno, poder pueden, pero ¿a quién le importan sus mensajes secretos después de muerto). Así que daré esta regla para los ataques:

  • Diremos que un atacante ha tenido éxito cuando dispone de la capacidad de cálculo suficiente para conseguir su propósito en menos de un año.

Es decir, si en un año entero dedicados a la tarea no ha obtenido nada, apaga y vámonos. Puede el lector suponer que es un plazo demasiado largo o corto. Yo me quedo en un término medio. Esto significa que para obtener la capacidad de cómputo total habrá que multiplicar la velocidad de cálculo (en operaciones por segundo, o flops) por el número de segundos que tiene un año. Hagamos números redondos: 1 año = 30.000.000 segundos (más o menos).

Con ello, los ataques quedan configurados de la siguiente manera:

Tabla I. Estimación de posibles atacantes.


Atacante

Velocidad
de cálculo
(flops)

Capacidad
en un año
(operaciones)

Capacidad
en un año
(Mflops-año)

Presupuesto
(aproximado, en pts.)

Pirata

10^10

3*10^17

10.000

Menos de 250.000

Corsario

10^14

3*10^21

10^8

50 millones

Mafioso

10^16

3*10^23

10^10

5.000 millones

MIB

10^18

3*10^25

10^12

Inmenso: ¿un billón?



Téngase en cuenta que solamente nos preocupa la capacidad de calcular. Habrá otros requerimientos como los de memoria, de los que no nos ocuparemos pero que pueden llegar a ser enormes (!imagínense el gasto en corriente eléctrica!)

También es necesario tener en cuenta que esta es la situación presente. En el futuro, los chips se harán cada vez más pequeños, los ordenadores más potentes y los atacantes tendrán mayores presupuestos (aunque sea solamente por la inflación). De eso nos ocuparemos más adelante.

Finalmente, una consideración sobre la filosofía del ataque. Hemos supuesto que los atacantes cuentan con máquinas especialmente diseñadas para descifrar claves. Para desgracia de ellos, no se pueden usar más que para un tipo de algoritmo, es decir, un chip diseñado para atacar el algoritmo de cifrado DES no servirá para el algoritmo IDEA; pero eso no es nuestro problema. Sin embargo, un ataque basado en software (programación) en lugar de hardware (circuitería) resulta mucho más versátil. ¿No resultaría factible utilizar miles de ordenadores en un ataque distribuido por la Red?

En efecto, lo es. Las posibilidades de Internet son enormes: cientos de millones de ordenadores, con una velocidad combinada inmensa ... quizá 10^20 flops, cien veces superior a las posibilidades de los hombres de negro. De hecho, ya hay algunos proyectos de computación distribuida, algunos de ellos para descifrar claves en los denominados "Challenges" de la empresa RSA Security (pueden verse en http://www.rsasecurity.com/rsalabs/challenges). Son proyectos en los que voluntarios de todo el mundo prestan sus ciclos de ordenador para la tarea común. Sin embargo, como dichos voluntarios son limitados en número y sus ordenadores no están disponible todo el tiempo, los resultados, sin ser despreciables, tampoco resultan tan espectaculares como cabría esperar.

Un ejemplo. El tercer desafío DES fue ganado, como dije anteriormente, por la EFF en menos de 24 horas gracias a una máquina especialmente diseñada. El primer reto, mediante computación distribuida, requirió 140 días (a una velocidad de unos 10^12 flops, a mitad de camino entre los ataques pirata y corsario). En la actualidad los dos mayores esfuerzos de computación distribuida son:

  • Proyecto RC5 Organizado por distributed.net para descifrar un mensaje cifrado con clave RC5 de 64 bits. Hasta el momento este proyecto ha efectuado un total de aproximadamente 10^19 operaciones, a una velocidad actual de 1.2*10^13 flops.

  • Proyecto Seti@home para el tratamiento de datos obtenidos mediante radiotelescopios que buscan señales de procedencia extraterrestre inteligente. Más de 2.2 millones de colaboradores han contribuido con un total de 3.4*10^20 operaciones, y la velocidad actual de procesamiento es de unos 1.5*10^13 flops.

Como puede verse, a pesar del gran número de ordenadores que contribuyen, las capacidades y velocidades de cálculo no llegan a las de un ataque corsario. Resulta difícil imaginar esfuerzos coordinados en Internet a nivel voluntario, de manera que los ataques criptográficos que se puedan efectuar por medio de Internet no requieren un tratamiento especial: los incluiremos en la modalidad de ataques corsario... o, en un caso extremo, un ataque mafioso. En cualquier caso, esfuerzos distribuidos como los mencionados apoyan mi hipótesis de que un año de ataque no es descabellado: el proyecto RC5 lleva funcionando sin interrupción desde hace casi tres años.


Los objetos del deseo (I): claves simétricas

Ya sabemos cómo son los atacantes. Ahora, veamos qué van a hacer con tanta potencia de computación. Vamos a examinar la fortaleza de algoritmos en clave simétrica y asimétrica. Y comenzaremos con los primeros. Los algoritmos en clave simétrica son aquellos que utilizan la misma clave para cifrar que para descifrar. Ejemplos: DES, IDEA, CAST, 3-DES (o Triple-DES), Blowfish, RC2, RC4, RC5.

En la mayoría de los algoritmos en clave simétrica utilizados no hay ataques criptoanalíticos dignos de ese nombre, es decir, no hay atajos. Eso significa que no hay más remedio que probar todas las posibles claves, en busca de la correcta. El tamaño de las claves de los algoritmos se da en bits. Por ejemplo, las claves del algoritmo IDEA son de 128 bits, lo que significa que hay un total de 2^128 claves posibles ... que tendremos que comprobar, una por una.

En principio, no habría más que tomar la capacidad de cálculo C y tomar su logaritmo en base dos. Ese número nos dará la longitud máxima de clave que podemos tratar. El motivo es que un algoritmo con clave de longitud x tiene 2^x claves posibles; así, si igualamos el número de claves al número de operaciones (2^x = C) tenemos que x=Log2(C). Esto presupone que basta una operación (es decir, un ciclo del reloj del ordenador) para comprobar una clave.

Lo ilustraremos con un ejemplo. El atacante pirata tiene un total de 3*10^17 operaciones. El logaritmo en base dos de esta cantidad es aproximadamente 58. Eso significa que podrá reventar, en un año de esfuerzo, claves con longitud de hasta 58 bits. En efecto, a una tasa de una operación por clave, necesitaríamos 2^58 operaciones para probar todas las claves. Y 2^58 es aproximadamente igual a 3*10^17. ¿Lo vais pillando? Los demás atacantes podrían reventar sistemas de claves simétricas con longitud máxima de 71 (~=log2(3*10^21)), 78 (~=log2(3*10^23)) y 85 (~=log2(3*10^25)); el símbolo ~= significa "aproximadamente igual a", y eliminamos las cifras decimales redondeando por exceso.

En realidad, he hecho trampa. He supuesto que cada clave puede comprobarse en un solo ciclo de reloj, de forma que nº operaciones = nº de claves comprobadas. En realidad no es así. El número de ciclos (operaciones) por clave varía entre los 144 del veloz algoritmo Blowfish y los 864 del lento Triple-DES, pasando por los 288 de DES (véase por ejemplo esta tabla de Bruce Schneier. Como es una cifra que varía de un algoritmo a otro, haremos una pequeña simplificación: supondremos que cada algoritmo precisa de 200 operaciones por clave.

¿Por qué 200? Es una cantidad razonable, promedio aproximado de diversos algoritmos. En realidad, el más lento de los algoritmos usados habitualmente (TripleDES) es unas seis veces más lento que el rápido Blowfish. Esto significa que preocuparse por uno u otro importa relativamente poco: el esfuerzo computacional para reventar una clave TripleDES de x bits es similar al de una clave Blowfish de x+2.6 bits. Así tomaremos un valor promedio y despreciaremos de las diferencias entre los diversos algoritmos. Añadiré que 200 ciclos/clave corresponde bastante bien con los datos obtenidos en un experimento de "reto" (challenge) denominado DES Challenge III. En ese caso, basta rehacer los cálculos anteriores, sólo que haciendo no el logaritmo en base 2 de C (capacidad de cálculo) sino de C/200. Con esta corrección, los atacantes pirata, corsario, mafioso y MIB tendrán a su alcance el reventar claves de hasta 51, 64, 71 y 77 bits, respectivamente. Cuando el número de bits no sea un número entero, redondearemos por exceso.

A ver, ¿quién se ha perdido? Uf, cuantas manos levantadas. Bueno, no os preocupéis. Lo importante es que, basándonos en el potencial de los diversos atacantes, podemos calcular la cantidad máxima de claves que pueden comprobar y, en consecuencia, la longitud mínima que ha de tener nuestra clave simétrica.

Como conclusión de los cálculos anteriores, el tamaño mínimo de clave (x) que nos garantiza seguridad frente a un atacante con capacidad de cálculo C viene dado por la expresión x = Log2(C/200). Haremos unos cuantos cálculos en breve, y los sintetizaremos en una tabla. Pero antes vamos a ocuparnos de la gran estrella en la criptografía moderna: las claves asimétricas.


Los objetos del deseo (II): claves asimétricas

En el caso de la criptografía asimétrica (o de clave pública), la situación es mucho más compleja. Cada algoritmo es diferente de los demás y exige un tratamiento especial. Felizmente, los dos algoritmos más usados (RSA y Diffie-Hellman, o D-H) son semejantes en fortaleza. Esto quiere decir que un ataque a un algoritmo RSA precisaría de una capacidad de cálculo similar al de un ataque a un algoritmo D-H con idéntica longitud de clave. Eso nos permitirá centrarnos en el algoritmo RSA, cuya resistencia yace en la dificultad de factorizar (descomponer en factores primos) números grandes. Vamos, pues, a examinar el estado actual de la guerra de la factorización.

Pero antes, un aviso importante. Se cree que el problema de atacar claves RSA está regido por la dificultad en factorizar números grandes, pero NO ha sido demostrado y NO podemos descartar que existan ataques (desconocidos hasta ahora, pero posibles) más sencillos y rápidos. También se cree que los algoritmo RSA y DH son similares en fortaleza (como mencioné en el párrafo anterior), pero tampoco ha sido demostrado. A falta de otra cosa, compartiremos las suposiciones de la comunidad criptográfica. Avisados quedáis.

Muy bien, ¿cómo esta la cuestión de la factorización de un número N? Este número será la base del algoritmo de cifrado RSA; la clave será ese número N (no exactamente, pero casi), y diremos que esa clave es de "x bits" cuando ese número es del orden de 2^x; fijaos que digo "del orden" para no meternos en más profundidades. Nos saltaremos los detalles matemáticos y diremos simplemente que la factorización del número N, con el algoritmo más rápido conocido en la actualidad (la Criba de Campo Numérico, CCN) nos permitiría la factorización usando una cantidad de cálculos que denominaremos L(N) y que es aproximadamente igual a:

L(N) = A*exp [ 19229*[LnN^(1/3)]*[Ln(LnN)]^(2/3) ]



donde LnN es el logaritmo neperiano (en base e) de N y A es una constante numérica. Es lo que se denomina una fórmula heurística, es decir, que más o menos funciona en el límite de números N muy grandes. Es posible que haya leves diferencias entre esta fórmula y situaciones reales, y eso es lo que ha sucedido en los dos últimos "retos" de factorización, en los que el número de operaciones reales ha sido inferior al dado por nuestra fórmula. Por ejemplo, el número llamado RSA155, de 155 dígitos (512 bits), requirió en 1999 para su factorización un total de 2.4*10^17 operaciones, si bien L(10^155) = 1.8*10^19 cuando se supone A=1. Para igualar ambos resultados, escogeremos adecuadamente el valor de A. Puede comprobarse fácilmente que L(10^155) es igual a 2.4*10^17 cuando A=0.01369. Esta es el valor de A que utilizaremos.

Aquí no resulta fácil "despejar" para, partiendo de una capacidad de cálculo C dada, obtener el valor de N (o mejor, del número entero x, donde N es del orden de 2^x). Pero se puede determinar el valor de x que cumple L(2^x)~=C mediante ensayos sucesivos. Así, la capacidad del ataque pirata permitiría romper claves asimétricas de hasta 518 bits, ya que L(2^518) = C(pirata) = 3*10^17. Los ataques corsario, mafioso y MIB tendrián éxito con claves de hasta 792, 956 y 1138 bits, respectivamente. En la Tabla II pueden verse estos datos junto con los obtenidos para ataques contra cifrado simétrico.

Tabla II: Tamaño mínimo de clave (en bits) para protección contra diversos ataques

Tipo clave

Pirata

Corsario

Mafioso

MIB

Clave simétrica

51

64

71

77

Clave asimétrica

518

792

956

1138



Vemos que el atacante pirata se atreve tanto con una clave simétrica de 51 bits como con una clave asimétrica de 518 bits, ya que ambas requieren una capacidad de cálculo similar. Eso significa que ambas claves son computacionalmente equivalentes, entendiendo por ello que requieren un mismo esfuerzo. Esto puede hacerse para cualquier tamaño. Es decir, para una clave asimétrica de x bits podemos obtener una clave asimétrica de n bits computacionalmente equivalentes. Esto matemáticamente significa que 200*2^x = L(2^n) (el término 200 del lado izquierdo de la ecuación se debe a que hemos supuesto que cada clave requiere unos 200 ciclos u operaciones.

Vamos a dar algunas equivalencias entre claves simétricas y asimétricas en la Tabla III

Tabla III: Equivalencias computacionales entre claves simétricas y asimétricas

Clave simétrica

40

50

56

64

73

90

103

125

128

143

Clave asimétrica

350

512

624

800

1024

1536

2048

3072

3240

4096



Recordemos que los cuatro atacantes que hemos aquí considerado pueden con claves de 51, 65, 71 y 77 bits). De las tablas II y III se pueden sacar conclusiones interesantes. En primer lugar, consideremos las claves simétricas. Lo primero que podemos comprobar es que las claves de 40 bits (usadas por ejemplo en comunicaciones "seguras" en ciertos navegadores) son a todas luces insuficientes para proporcionar una protección adecuada (véanse los Informes 1, 4 y 5). Incluso nuestro piratilla puede con claves once bits mayores, lo que significa que podría montar un ataque con éxito en poco más de cuatro horas. Al atacante corsario le bastaría con dos segundos.

La clave de 56 bits, usada por el algoritmo DES en múltiples aplicaciones comerciales (por ejemplo, comunicaciones bancarias, entre cajeros automáticos y en ciertos navegadores) tiene más aguante, pero no mucho. Al ser cinco bits superior a las capacidades del ataque pirata, éste tendría que dedicar 2^5 = 32 años a la tarea. Pero el atacante corsario le bastaría con día y medio, al mafioso con un cuarto de hora y al MIB con un cuarto de segundo.

El siguiente tamaño de clave, de entre los más usados en los algoritmos de clave simétrica, es el de 128 bits. Aquí sí que tenemos seguridad, ya que incluso el atacante MIB necesitaría 2^(128-77), es decir, más de 10^15 años.

¿Y qué hay de las claves asimétricas más empleadas? Podemos evaluarlo considerando la equivalencia con claves simétricas. Las claves asimétricas de 512 (usadas, por ejemplo, en comunicaciones "seguras" de navegadores) tienen una fortaleza equivalente a la de una clave simétrica de 50 bits, lo que significa 2^6 = 32 veces más débiles que el algoritmo DES. Eso significa que el pirata obtendría el éxito tras escasamente un año de trabajo, pero los demás atacantes lo tendrían más fácil: media hora, 15 segundos y 0.2 segundos, respectivamente.

Evidentemente, claves asimétricas de 512 bits son insuficientes. ¿Qué hay de las de 1.024 bits? Son una longitud muy usada en navegadores de alta seguridad y en el programa PGP. Pues para desesperación de los usuarios, ya se encuentran a tiro de los atacantes MIB, puesto que precisarían de unas tres semanas para obtener el éxito. Los demás atacantes solamente pueden soñar por el momento (al mafioso le llevaría cuatro años, y al corsario cinco siglos).

Resulta descorazonador concluir que incluso las claves de 1.024 bits son vulnerables, aunque hay que ponerlo todo en su justa medida: estamos hablando de un atacante que dirigiese un esfuerzo de cientos de miles de millones de pesetas solamente en fastidiarnos la vida. Y hay que recordar que la capacidad de cálculo no es el único factor determinante. Solamente en uno de los pasos (reducción matricial) para factorizar un número de 512 dígitos en 1999 se necesitaron 3.2 gigabytes de memoria... y dicho paso no puede ser distribuido entre diversos ordenadores (esto es, no se puede paralelizar), por lo que requiere de un superordenador.

Con todo, los paranoicos de la seguridad preferirán la seguridad de los números, así que sigamos adelante. Las claves asimétricas de 1.536 bits ya comienzan a ser verdaderamente seguras, puesto que ni nuestros queridos Hombres de Negro podrían atacarla en menos de ocho milenios. Para claves de mayor tamaño, la situación se les pone aún peor: nada menos que 67 millones de años (esto es, 2 elevado a (103-77)) para claves de 2048 bits, trescientos billones de años para claves de 3.072 bits ... ¿hace falta seguir adelante?

De hecho, nuestros cálculos indican que las claves simétricas de 128 bits son equivalentes a las claves asimétricas de 3.240 bits, bastante cerca del valor dado por Zimmermann y citado a menudo (3.100 bits).

También es útil la comparación entre claves simétricas y asimétricas porque los sistemas de comunicación con cifrado (navegadores, PGP) utilizan un sistema "híbrido", una combinación de clave simétrica y asimétrica. Para no extendernos: el mensaje se cifra con una clave simétrica, y esta clave simétrica es cifrada a su vez con una clave asimétrica. Esto significa que la clave asimétrica ha de ser cuando menos tan robusta como la simétrica.

De la Tabla III se sigue que las claves asimétricas de 512 han de usarse con claves simétricas de como mucho 50 bits. Para claves de 1.024 y 2048, las claves simétricas equivalentes serán como mucho de 103 y 125 bits, respectivamente. Las claves simétricas de 128 bits (como las que se usan en PGP, por ejemplo) precisarán claves asimétricas de 3072 bits. Claro que, como hemos visto, claves simétricas de más de 90 bits, o asimétricas de más de 1.536, proporcional seguridad más que suficiente ... por ahora.


Pero el tiempo pasará...

... y hemos cometido el mismo error que cometieron los creadores del algoritmo RSA hallá por 1977. ¿Recuerdan? Estamos menospreciando el paso del tiempo, y suponiendo que la potencia de cálculo de los ordenadores, la eficiencia de los algoritmos de factorización y los medios de los atacantes van a permanecer constantes a lo largo del tiempo. Es como si Rivest, Shamir y Adleman hubiesen esperado ordenadores de tarjetas perforadas en nuestro tiempo. Incluso mi venerable Pentium 133 MHz es, un par de años después de su compra, una antigualla en comparación con los modelos actuales.

De manera que, si creíais que habíamos acabado, os equivocáis. Los datos que os habéis tragado hasta ahora corresponden a los datos de hoy. Pero hay que hacer ahora de vidente y estimar en cuánto habrán engordado nuestros atacantes de aquí a unos años. Es tarea arriesgada, pero por probar que no quede. Nos ocuparemos de ello en el siguiente Informe.


© Arturo Quirantes 2005.  Correo electrónico: aquiran arroba ugr.es


 

Vuelta a la sección Informes del Taller de Criptografía