Descomposición de números clave contra ciertos códigos

Alberdi Celaya, Elisabete

Matematikan lizentziatua eta doktoregaia

Cuando una organización utiliza el sistema RSA para codificar los mensajes, utiliza en la base un número natural que es el producto de dos números primos. Este número es público, pero es tan grande que es casi imposible descomponerlo. La descomposición de este número nos ayudaría a descifrar todos los mensajes codificados que llegan a esa entidad. Idear un algoritmo eficaz de descomposición de números pondría patas arriba esta técnica de cifrado y descifrado, la RSA. Es decir, para poder poner nuestros datos en entornos seguros deberíamos buscar una nueva herramienta.
zenbakien-deskonposaketa-zenbait-koderen-aurkako-g
Ed. Fotolia ©

Si alguna vez has accedido a una página web "segura" --porque has comprado un viaje de avión a través de Internet, has accedido a ver las últimas operaciones de la cuenta corriente-, la comunicación se ha realizado a través de una plataforma segura, llamada SSL, que está dentro de un protocolo https (secure). En estos casos habrás podido comprobar que en la barra de tareas del navegador aparece un candado. Indica que para acceder a esta página se necesita clave o clave, que nadie que no tenga clave no puede acceder. Es decir, la comunicación es segura en la medida en que el destinatario es el único que descodifica el mensaje. Así que al comprar un billete en Iberia, Iberia cifra o codifica tu número de visa. El mensaje cifrado viaja por la red y al llegar a Iberia descifran o descodifican el mensaje cifrado. La comunicación es segura en la medida en que el único que sabe descifrar el mensaje es el destinatario.

La criptografía es un técnico que utiliza diferentes métodos para proteger un mensaje. Aunque inicialmente se situaba en el campo de las matemáticas, en la actualidad también se ha extendido la informática y la telemática. Sin embargo, el uso de las técnicas de criptografía es muy antiguo. Las primeras civilizaciones desarrollaron técnicas para enviar mensajes en campañas militares. Aunque el mensajero caía en manos del enemigo, conseguían que el enemigo no se apropiara del mensaje, ya que enviaban el mensaje cifrado con técnicas de criptografía. El destinatario del mensaje al recibirlo descifraba el mensaje codificado con la operación inversa. En el siglo V antes de Cristo, la herramienta utilizada para cifrar los mensajes era la llamada “Escital”. En un palo se enrolla una cinta de cuero en la que se escribía el mensaje. Una vez quitada la cinta del bastón, aparecían mezcladas las letras del mensaje y sólo el que tenía el bastón del mismo diámetro del escándalo podía descifrar el mensaje. En aquellos tiempos, estos bastones eran la fuerza de los pueblos, y desde entonces viene el palo que hoy se entrega a los alcaldes de los pueblos.

Métodos clásicos de cifrado

Imagen de un paciente. Fuente: http://es.wikipedia.org/wiki

Los métodos de cifrado de mensajes se dividen en dos grandes bloques: clásicos y modernos. Algunos de los métodos clásicos se basan en la sustitución. Estos métodos sustituyen cada letra del mensaje por otra letra o número. Un ejemplo de este tipo de métodos a. C. Es el cifrador que utilizaba Julio César en el siglo I, en el que cada letra se sustituía por una letra que en el alfabeto está tres espacios más a la derecha que ella. Así, la letra A se sustituía por D, la letra B por E, etc. Quien recibía un mensaje codificado con la técnica de César, sustituyendo cada letra por la que estaba alfabéticamente 3 espacios más a la izquierda, obtenía el mensaje inicial. Este método no era nada seguro.

El cifrador de César puede generalizarse sustituyendo cada letra por una letra b espacio más derecha que ella. En un alfabeto de veintisiete letras hay 26 formas de sustituir una letra por otra. Probando las veintiséis formas se obtiene el mensaje. Por tanto, este método generalizado también es muy débil. Además, la prueba con todas las formas de sustituir una letra cuando se utiliza este método no es la única manera de aclarar el mensaje codificado. También se puede aclarar el mensaje codificado conociendo el idioma en el que está escrito el mensaje y la frecuencia de las letras en ese idioma. Para ello, basta con sustituir la letra que más aparece en el mensaje codificado por la más frecuente en ese idioma, y la distancia entre ambas letras es la que nos indica la posición en la que debemos mover cada letra. Una vez conocido el valor de b, moviendo cada letra de mensaje cifrado a la izquierda el espacio b, obtendremos el mensaje completo. Es evidente que este método no es seguro.

Un cifrado más sofisticado es un cifrado afín; Ki = a . Con la operación Mi + b (mod27) se consigue codificar cada letra Mi del mensaje. Este resultado se obtiene asignando un número a cada letra y sustituyendo el número correspondiente a la letra por esta fórmula. A continuación, a . El valor Mi + b se divide por 27, siendo el residuo resultante el valor de Ki. Para finalizar se introduce la letra correspondiente a este número. Por ejemplo, H corresponde al número 7 y para a = 5, b = 7, Ki = 5 . Da 7 + 7 = 42 = 15 (mod27). Al número 15 le corresponde la letra O. Esto significa que, utilizando este cifrado, la letra H se convierte en O. Aunque este método parece más complejo que el anterior, cuando el mensaje codificado es largo, utilizando las frecuencias de las letras de una lengua, es fácil detectar el mensaje.

Métodos modernos de cifrado

Cifrador de César, donde M y K son mensajes codificados. Ed. Elisabete Alberdi

Los modernos métodos de cifrado pueden utilizar clave privada o clave pública. Los usuarios de clave privada pueden ser de bloque o de flujo. Los cifradores del bloque aplican el algoritmo varias veces en un conjunto de caracteres de la información utilizando la misma clave. Ejemplos de cifradores en bloque son DES (Data Encryption Standard) y AES (Advanced Encryption Standard). En ambos métodos, el algoritmo es conocido y el clave, desconocido (privado). En los de flujo, cada carácter se cifra mediante una clave aleatoria larga en la que también se desconoce.

Pero la modernidad tampoco ha liberado estos métodos de los dedos de la inseguridad. La principal desventaja del cifrador DES es el pequeño tamaño de la clave (56 bits). Esto significa que hay 256 = 72.057.594.037.927.936 opciones para elegir la clave, y en el mundo de los ordenadores ese número queda pequeño. Un ejemplo de ello es que en un DES challenge organizado en enero de 1998 se consiguió romper la clave en 56 horas, ya que se utilizaron ordenadores que evaluaban 90.000 claves por segundo. Por tener una clave más larga, de 112 bits, actualmente se utiliza más el triple DES, ya que ofrece 2112 opciones para la clave. La clave del método AES también es más larga: de 128, 129 y 256 bits. La desventaja de los de flujo es que el cifrado individual de los caracteres hace que la relación entre los caracteres del mensaje codificado sea débil.

Entre los métodos que utilizan la clave pública se encuentra la conocida como RSA (Rivest, Shamir, Adleman). Es un método hasta ahora seguro, pero ¿cómo se puede conseguir la certeza con una clave conocida para todos? La clave está en la difícil operación de descifrado.

Ejemplo de un mensaje escrito en euskera cifrado con un método de sustitución. Las letras más frecuentes en euskera son A y E. Ed. Elisabete Alberdi

Descomposición de números

Los seres humanos empezamos a descomponer los números desde muy niño. Uno de los conceptos que aprendemos primero es el del número primero: El número a es el primero, sólo si se puede dividir por ±a y ±1. Así, los números 2, 3, 5, 7... son los primeros. Cuando queremos descomponer un número, empezamos a dividir por números primos menores que él. Por ejemplo, el número 15 se descompone como el producto de los números primos 3 y 5. Cuando un número no está dividido por números primos menores que aquel, se dice que es el primero. Por lo tanto, vamos añadiendo a la lista de números primos que hemos indicado anteriormente la relación de los siguientes primeros números: 11, 13, 17, 19, 23,...131, 137,... O bien: 244497-1, 213466917-1,... Sí, no hay números menores que ellos que los puedan dividir.

Aunque los números pequeños dan trabajo, podemos decir con bastante facilidad si son los primeros o no. ¿Pero qué podemos decir del número 94550!-1? ¿Es la primera? En matemáticas hay varias herramientas para decir si un número es el primero o no. Y si un número no es el primero, ¿cómo se descompone?

Aunque existen algoritmos eficaces para descomponer ciertos números, la descomposición de cualquier número sigue siendo un misterio matemático y el sistema RSA aprovecha este misterio para construir su codificación. Utilizando la RSA, el destinatario del mensaje hace públicos dos números: e y n El primer número, e, es el que el remitente utilizará para codificar el mensaje. Es decir, si x es un mensaje, el remitente realizará la siguiente operación: x - e ; y ese será el mensaje codificado que irá por la red. El destinatario, para descifrar el mensaje codificado que ha recibido, utilizará el número e ', que calculará reconociendo el número n y que cumple ( x - e ) e' = x -. De este modo, el destinatario recuperará el mensaje inicial. En el sistema RSA, el número n se elige como el producto de dos números primos, y el misterio que rodea la descomposición de los números hace que el número n sea prácticamente indescomponible. En consecuencia, el número e ' necesario para la operación a realizar para aclarar el mensaje puede ser obtenido por quien sabe casi exclusivamente descomponer n, es decir, por quien ha creado el número.

Ed. Elisabete Alberdi

Conclusiones

Al igual que en su día los métodos de sustitución quedaron atrás, a medida que las velocidades de los ordenadores aumentaban, las técnicas de criptografía que utilizan las claves cortas se han ido quedando atrás e irán, ya que la clave larga actual puede ser corta mañana. Aunque el sistema RSA no tiene este tipo de desventajas, depende de la descomposición de los números; si se encontrase un algoritmo eficaz de descomposición de números, sería el final del sistema RSA que hasta ahora hemos tenido como seguro. Si esto ocurriera, necesitaríamos un nuevo sistema de codificación. ¿Quién dará el algoritmo eficaz para la descomposición de números? ¿Y quién creará un sistema seguro de cifrado que no puede dominar la velocidad de los ordenadores?

Bibliografía

Menezes, Alfred J.; Van Oorschot, Paul C.; Vanstone, Scott A.:
Handbook of applied cryptography.
CRC Press LLC, 1997.
Vera López, Antonio; Vera López, Francisco:
Introducción al álgebra.
Editorial Ellacuría, 1991.
Vera López, Antonio:
Introducción al álgebra.
Tomo II. Editorial Ellacuría, 1986.
Stinson, Douglas R.
Crytography. Theory and practice.
CRC Press, 1995.
Libro electrónico de Jorge Ramió Aguirre: http://www.criptored.upm.es/guiateoria/gt_m001a.htm
http://en.wikipedia.org/wiki/Letter_frequency
http://primes.utm.edu/largest.html.