viernes, 18 de julio de 2008

Numeros primos en la criptografia

Los Numeros Primos En La Criptografia




Una de las tareas que más tiempo ocupa a los grandes sistemas de ordenadores es el cálculo de números primos cada vez mayores. Su objetivo es poder obtener un número que sirva para cifrar mensajes y que luego sea muy complicado descifrarlos.

Vamos a ver cómo se podría cifrar un mensaje en función de un número primo. Cada letra en un mensaje tiene un número asociado que nunca varía. El número está establecido por el código denominado "American Standard Code for Information Interchange" (ASCII). El conjunto de caracteres ASCII define cada carácter con un número que va desde el 0 al 255. Por ejemplo, la letra "A" mayúscula tiene el código 65, la "z" minúscula tiene el código 122, etc. Cualquier texto escrito en un ordenador se puede trasladar a notación ASCII. Por ejemplo, en código ASCII la palabra "antivirus" es:

97 110 116 105 118 105 114 117 115

Así tenemos una cadena de números (que es como realmente se transmite la información digitalmente) que podríamos multiplicar por un número que sea la multiplicación de dos números primos. Si elegimos, por ejemplo, 14 (multiplicando 2 y 7), la cadena de números nos quedaría así:

1358 1540 1624 1470 1652 1470 1596 1638 1610

La persona que quiera leer lo que pone primero deberá averiguar cuál es el número que hemos utilizado para cifrar la información. Y para ello deberá adivinar cuáles son los dos factores que hemos utilizado para cifrar la información. Evidentemente, en este ejemplo es muy fácil, 14 es 7 por 2, no hace falta ninguna titulación en Matemáticas más allá de la obtenida cuando estábamos en primaria.

Sin embargo, si utilizamos números muy grandes, el problema se complica. Por ejemplo, si utilizamos el número 2.591.372.723, su descomposición en dos factores primos ya no es tan inmediata. A pesar de eso, en muy poco tiempo veríamos que es el producto de 97.453 y 26.591.

La longitud de estos números (lo que se llama el "tamaño de la clave") es primordial para que un cifrado sea más o menos efectivo. En el primer ejemplo, si pasamos a notación binaria el número 14 veríamos que se escribe 1110, un número de 4 bits. El segundo ejemplo, 2.591.372.723, se escribe en binario como 10011010011101010011010110110011, 32 bits. Y en los sistemas de cifrado actuales una clave de menos de 400 ó 500 bits se considera ridícula. Lo más normal es utilizar, como poco, ¡¡¡1.024 bits de longitud de clave!!!




Espero que les sirva como incentivo para seguir adelante en la criptografia.

Saludos

rufiopunkrock

2 comentarios:

Unknown dijo...

Wow, esto me ha impactado bastante, ya de por si me ha dejado paralizado eso de 32 bits, con los 32 numeros binarios, si hablamos de 1024 ya es acojonante. Sabia que se utilizaban numeros grandes, pero no tan descomunales. Muy buena informacion Rufio. Este articulo hace que me intrigue mas por la Criptografia.

Saludos, DN.

Unknown dijo...

NO acabo de entender muy bien tu explicación. Teoricamente, en tu ejemplo, 14 sería la clave pública, que es la que he usado para realizar la encriptación. Y dices que para descifrarlo sería necesario conocer los dos númeor primos 7 y 2, pero en el ejemplo que pones no sería necesario, bastaría con conocer la clave pública que es 14 y dividir por 14 para tener el mensaje descifrado. Seguro que algo se me escapa. ¿podrías aclararmelo?