Finales de 1997
"A pocos podremos convencer de que no es nada fácil inventar un método de escritura secreta que resista investigación cuidadosa. No obstante, puede afirmarse rotundamente que el ingenio humano es incapaz de preparar una clave que el ingenio humano no pueda resolver." Si Edgar Allan Poe viviese hoy, se sorprendería de lo bien que encajan sus palabras en el mundo en el que vivimos. De hecho, servirían de eslógan para criptógrafos y contra-criptógrafos, empeñados en descubrir lo que hacen los demás, y al mismo tiempo en que los demás no descubran lo que hacen ellos. La lucha de ingenios que llamamos criptografía ha experimentado un relanzamiento sin precedentes a causa de la existencia y popularización de la computación a todos los niveles. En la actualidad, la red Internet ha hecho que la criptografía salte de las manos de militares y espías a las de ese elemento extraño de la sociedad llamado "el ciudadano medio." ¿Cómo sirven los ordenadores a los criptógrafos de hoy?
A finales de 1977, los profesores del MIT Ronald L. Rivest, Adi Shamir y Leonard M. Adleman presentaron un nuevo sistema criptográfico en la revista Investigación y Ciencia (Octubre
1977, pp. 96-100) basado en números primos. Parecía que la criptografía, tal como se entendía hasta entonces, había muerto. Había aparecido un sistema nuevo, invulnerable a las pautas tradicionales (repetición de palabras, frecuencias...) e inatacable en la práctica. El autor del artículo, Martin Gardner, profetizaba: "Los computadores y la teoría de complejidad están llevando a la criptografía a una etapa excitante, que quizás adquiera tintes tristes. Repartidos por todo el mundo se encuentran hombres y mujeres de gran inteligencia, algunos de ellos geniales, que han dedicado sus vidas al dominio del análisis criptográfico moderno. A partir de la Segunda Guerra Mundial, incluso aquellas claves gubernamentales y militares que no son de uso único se han hecho tan difíciles de descifrar que el talento de estos expertos va siendo cada vez menos útil. Estas personas se encuentran ahora encima de trampillas a punto de abrirse y sumirlos en las profundidades del olvido."
Apenas si necesito mencionar que, veinte años después, las trampillas de Gardner siguen sin abrirse y esos expertos talentosos trabajan a todo ritmo. ¿Qué ha pasado? ¿Por qué no han sepultado los ordenadores y los nuevos sistemas criptográficos a esta buena gente? Existen dos motivos. El primero es que los ordenadores han aumentado enormemente de potencia y, lo que es más importante, se han extendido entre el público en general. En el artículo de Gardner, los autores RSA retaban a descifrar un mensaje que, según ellos, no podría descifrarse antes de 40.000 billones de años. En
1993 se logró hacer: requirió del orden de cien mil billones de instrucciones de ordenador, pero la colaboración de cientos de voluntarios por toda la Internet y el empleo de un método llamado criba múltiple cuadrático-polinómica permitió realizar la tarea en ... ocho meses. No hay motivo para alarmarse: el sistema RSA sigue siendo válido, sin más que elegir claves de longitud adecuada; pero es un buen recordatorio de que la palabra "humildad" es divisa obligada en este mundillo.
El segundo motivo para mantener a tanto criptógrafo en nómina es que cualquier sistema de cifrado de datos tiene puntos débiles, y los modernos (RSA, Diffie-Hellman, PGP, criptografía de curva elíptica...) no se escapan a esta regla. En ocasiones un sistema es mal implementado en la práctica, de modo que las posibles ventajas quedan anuladas por el mal hacer de un programador descuidado. Por ejemplo, casi todos los códigos actuales requieren cadenas de dígitos elegidos aleatoriamente, para lo cual se utilizan generadores de números aleatorios o pseudoaleatorios. Pero si dichos números no son realmente aleatorios, las claves así generadas son vulnerables. Un fallo de implementación de dicho tipo hizo que las comunicaciones "seguras" utilizando el navegador Netscape Navigator 1.1 pudiesen ser leídas en segundos: el sofisticado protocolo SSL resultaba en la práctica inútil porque utilizaba números no tan aleatorios. Cualquier programa de cifrado de datos es susceptible a mil y una fallas de seguridad.
Muy bien, elijamos un sistema de claves de gran longitud, contratemos programadores hábiles y revisemos el programa mil veces para eliminar cualquier fallo de implementación. ¿Podemos despedir ya a todos los criptógrafos? La respuesta sigue siendo no. Incluso un protocolo criptográfico bien implementado puede contener imperfecciones que permitan un ataque más eficiente que el de fuerza bruta. Sistemas tan popularizados como el Estándar de Cifrado de Datos (DES) estan basados en los viejos métodos de trasposición, sustitución y similares. Resulta muy difícil diseñar un algoritmo de cifrado de datos que resulte realmente robusto, esto es, que no pueda violentarse más que mediante un ataque de "fuerza bruta". Sutiles detalles pueden hacer, por ejemplo, que algunas claves sean más probables que otras, lo que permitiría montar un ataque estadístico con ciertas garantías de éxito sin
necesidad de probar todas las posibles claves. Por ejemplo: el código de cifrado conocido como LOKI tiene una clave de 64 bits de longitud, lo que hace un número total de 2^64 claves, pero un criptoanálisis diferencial ha demostrado que solamente hace falta probar 2^56 claves.
La situación suele empeorar si el atacante tiene acceso a mensajes cifrados y/o sin cifrar, al igual que en los viejos tiempos de la criptografía sin ordenadores. Al mismo tiempo, la creciente potencia de los ordenadores hace cada vez más vulnerables los ataques de fuerza bruta contra sistemas con claves pequeñas. DES, utilizado desde los años setenta, es uno de los protocolos de cifrado más usados y a la vez más resistentes a ataques criptoanalíticos, pero su clave de sólo 56 bits la hace vulnerable a ataques de fuerza bruta.
El problema principal con un sistema de cifrado es que no hay manera de probar de antemano si es robusto y fiable. Como los castillos medievales, parecen fuertes desde fuera, pero sólo mediante repetidos ataques podrán exponer puntos débiles. Un protocolo descubierto hoy puede que sea fiable o puede que no, pero no se sabrá hasta que se haya "ganado los galones" ante la comunidad criptográfica. Desafortunadamente, algunos de los algoritmos más fiables han resultado no serlo tanto. En una época donde la seguridad puede ser la única barrera para convertir Internet en una verdadera Aldea Global, no se puede sortear este problema a la ligera. Veamos algunos de los algoritmos de cifrado más comunes hoy día, junto con sus posibles vulnerabilidades conocidas.
Algoritmos simétricos
Los algoritmos simétricos, o de clave secreta, se caracterizan por ser altamente eficientes (en relación al tamaño de su clave) y robustos. Se les llama así porque se emplea la misma clave para cifrar y para descifrar.
DES (Data Encription Standard) es un algoritmo diseñado por IBM y utilizado habitualmente desde los años 70. Es un método de cifrado altamente resistente frente a ataques criptoanalíticos diferenciales. Por desgracia, su tamaño de clave (56 bits) la hace vulnerable a ataques de fuerza bruta. Un reciente ataque, "patrocinado" por la empresa de seguridad RSA Data Security Inc. contra un mensaje con cifrado DES requirió el uso de cientos de ordenadores durante 140 días. Sin embargo, hay diseños de máquinas que, con un costo de un millón de dólares, podrían descifrar mensajes DES en cuestión de minutos. Quizá por eso el gobierno de EEUU lo utiliza solamente para cifrar datos no clasificados. En la actualidad ofrece protección contra el pirata informático habitual, pero no contra un esfuerzo masivo por parte de un usuario con grandes recursos.
Blowfish fue creado por Bruce Schneier, autor del libro Applied Criptography (considerado por muchos como la "biblia" en cuestiones de criptografía). Utiliza claves de hasta 448 bits y, hasta el momento, ha resistido con éxito todos los ataques. Por ello y por su estructura se le considera uno de los algoritmos más seguros, a pesar de lo cual no se utiliza masivamente. Tal vez se deba a su relativa juventud (la del algoritmo, no la de Schneier). Su autor no ha patentado el método para que pueda ser empleado sin limitaciones.
CAST (Carlisle Adams y Stafford Tavares) tiene estructura similar a la de Blowfish. Parece ser un buen algoritmo, aunque tampoco lleva el tiempo suficiente como para haber sido atacado hasta la saciedad. De momento, sus posibilidades son buenas. Se conocen ataques criptoanalíticos contra la versión de clave 64 bits, aunque distan mucho de ser eficaces (requieren 2^17 textos sin cifrar y 2^48 cálculos diferentes). No se conocen ataques contra la versión de 128 bits. Ha sido patentado por Entrust Technologies, quienes permiten el uso libre de este algoritmo.
IDEA (International Data Encription Algorithm) ha sido desarrollado por Xuejia Lay y James Massey. A pesar de que solamente lleva unos años en uso, es probablemente el mejor algoritmo de bloques existente. Utiliza clave de 128 bits y se cree que es resistente al criptoanálisis. Se encuentra bajo patente de Ascom-Tech, aunque se permite su uso gratuito para aplicaciones no comerciales.
RC2 es un cógido protegido bajo secreto comercial (aunque no patentado) por RSA Data Security Inc. Existen ataques criptoanalíticos que, aunque requieren de gran cantidad de texto cifrado, muestran las vulnerabilidades de RC-2. Existen versiones mejoradas, y hoy día RC2 tiende a utilizarse cada vez menos en
beneficio de su "hermano mayor" RC4.
RC4 es un intento de reemplazar RC2 por un algoritmo más sólido. También es un secreto comercial, aunque (al igual que RC2) su código fuente ha sido publicado en grupos de discusión. No se conocen ataques contra él. Forma una parte vital del sistema de cifrado en capas SSL, ampliamente utilizado en navegadores de Internet tales como Netscape Navigator y Microsoft Internet Explorer. Por desgracia, la versión exportable de RC4 tiene una clave de solamente 40 bits, lo que lo hace altamente vulnerable a ataques de fuerza bruta. La versión EEUU, con clave de 128 bits, es segura.
RC5 fue diseñado por Ron Rivest y se encuentra bajo patente de RSA Data Security Inc. Es relativamente nuevo, y se conocen ciertos tipos de ataques contra él. Asimismo existe un cierto número (pequeño) de claves débiles que no deben utilizarse. A pesar de ello, se le considera un sistema seguro.
SAFER es un algoritmo diseñado por Robert Massey (uno de los creadores de IDEA). Tiene claves de hasta 128 bits y, a pesar de algunas debilidades en la primera versión y de ciertos ataques, parece un algoritmo seguro. Este programa fue desarrollado para la empresa Cylink, que algunos ligan a la no muy querida Agencia de Seguridad Nacional norteamericana (NSA); por ello, hay quien no se fía.
Algoritmos asimétricos
Al contrario que los anteriores, los algoritmos asimétricos tienen claves distintas para cifrado y descifrado. Por ello, también se les llama algoritmos de clave pública. Se han hecho muy populares, entre otras cosas porque elimina un gran inconveniente: cómo hacer llegar al remitente la clave de cifrado. En el caso de los algoritmos asimétricos se usan una clave pública (para cifrar) y una secreta (para descifrar). De esa manera, una intercepción de la clave pública es inútil para descifrar un mensaje, puesto que para ello se requiere la clave secreta. Como desventaja, las claves han de ser de mayor tamaño para ofrecer una seguridad comparable a la de los algoritmos simétricos. También resultan más lentos y producen mensajes cifrados de mayor tamaño.
RSA (Rivest, Shamir, Adleman) es el algoritmo de clave pública más utilizado, y uno de los más populares. En principio utiliza claves de cualquier longitud; en la actualidad se emplean claves de 1024 bits, consideradas lo bastante largas como para resistir ataques de fuerza bruta. Su seguridad se basa en la dificultad de factorizar números primos de gran tamaño. En principio se puede deducir la clave secreta conocida la clave pública, pero solamente por medio de la factorización de números de gran longitud (centenares de cifras). Está patentado en EEUU hasta el año 2000; es de uso libre en el resto del mundo. Es vulnerable a ciertos ataques (un atacante puede deducir la clave secreta si consigue que el creador de dicha clave "firme" digitalmente textos cuidadosamente elegidos), pero si se utiliza adecuadamente es un algoritmo seguro.
Un detalle, no obstante, debe tenerse en cuenta. La dificultad intrínseca de factorizar grandes números es un tema abierto. Actualmente el método de factorización más rápido conocido es la Criba Numérica Especial de Campo (Special Number Field Sieve), pero no está demostrado que no haya otro mejor. Si se descubre un método de tiempo polinómico (esto es, cuyo tiempo de ejecución dependa del número N de cifras como N^a), cualquier producto de números primos podrá factorizarse con relativa facilidad. Es un tema sin resolver dentro de la llamada teoría de la complejidad. Mientras tanto, no obstante, todo parece indicar que el algoritmo RSA continuará siendo poco menos que invulnerable.
Diffie-Hellman es un algoritmo de intercambio de claves. Una variante conocida como ElGamal funciona como algoritmo de clave pública; por abuso del lenguaje, se suele conocer dicho algoritmo como Diffie-Hellman (o DH, variante ElGamal). Se basa en llamado problema de los logaritmos discretos, que se cree es computacionalmente tan complejo como el de la factorización de números primos (y, al igual que su primo RSA, no está demostrado que el problema de logaritmos discretos no se pueda resolver mediante herramientas matemáticas más poderosas en el futuro). Está siendo utilizado cada vez con más frecuencia, entre otras cosas por cuestiones de patentes (la patente D-H ha expirado). Aunque el algoritmo DH es más antiguo que el RSA, es más reciente en su utilización. Se ignora si suplantará a RSA o coexistirán.
Criptosistemas de curva elíptica. Son los más recientes dentro del campo de los sistemas de clave pública. En general se creen que son bastante seguros, pero no ha sido demostrado. Existe un tipo de curvas que recientemente se ha revelado extremadamente vulnerable, por lo que éstas no deben usarse en criptografía. Existen muchos otros tipos de curvas, pero han de ser cuidadosamente examinadas para comprobar su idoneidad como base para un código de cifrado de datos. La valía de los sistemas de curvas elípticas permanece hoy por hoy bajo dudas.
Existen otros tipos de algoritmos, pero estos son los más utilizados. Presentes o futuros, su validez está constantemente en entredicho. Mientras tanto, se aplica la regla de "valen mientras no se demuestre lo contrario." Y, por supuesto, no despida todavía a los criptógrafos, señor Gardner.
© Arturo Quirantes
2005. Correo electrónico: aquiran arroba
ugr.es
Vuelta a la sección Informes del Taller de Criptografía