La básico

De ChuWiki

Lo básico de criptografía[editar]

Insisto en que no tengo ni idea de este tema. Esto que cuento aquí no es más que una especie de resumen de la idea que me he hecho al leer el Criptonomicón.

La idea básica es la siguiente. En primer lugar y para simplificar, suponemos que hay 26 letras y cada una corresponde a un número. La A es el 1, la B el 2, etc.

Para codificar un texto, lo que se hace es sumar a cada letra un número. Eso se hace "módulo 26", es decir, si al sumar nos pasamos de 26, damos la vuelta y seguimos por el uno. Si al sumar sale 27, el resultado sería 1, si sale 28 sería 2 y así sucesivamente. Las letras correspondintes a los resultados sería el código encriptado.

¿Qué sumamos a cada letra?. Aquí es donde viene el truco.

Si sumamos a todas las letras un número fijo (por ejemplo 1, que sería reemplazar cada letra por la siguiente del alfabeto y la Z con una A), el código es bastante tonto. Cualquier criptoanalista (o como se llame) lo saca en un pis pas sin necesidad de pensarlo mucho. Basta con saber, por ejemplo, que la E es la letra que más se repite. En nuestro código encriptado la F sería la que más se repite, así que probablemente las F sean E. En fin, que se saca rápido.

Para complicar el asunto, lo mejor es sumar a cada letra cada vez un número distinto. Cuanto más aleatoria sea la secuencia de números que sumamos, según el criptonomicón, más dificil es de desencriptar. De hecho, según la novela, si elegimos el número a sumar en cada ocasión con un bombo (números totalmente aleatorios), el texto es imposible de descifrar si no contamos con alguna otra pista.

Esto genera un problema. A la persona a la que enviamos el mensaje hay que enviarle también la secuencia de números aleatorios que hemos obtenido con el bombo. Eso no deja de ser peligroso. Si alguien intercepta el mensaje también es posible que intercepte la secuencia de números aleatorios, aunque vaya por otro lado.

Para solucionar ese problema lo que se hace es un algoritmo que genere números aleatorios. A ese algoritmo se le mete un número inicial (semilla) que puede ser la fecha del mensaje. A partir de ahí el algoritmo genera la secuencia de números. El receptor del mensaje sólo tiene que apliar el mismo algoritmo con la fecha del mensaje para obtener la secuencia de números aleatorios que permite desencriptar el mensaje.

En la guerra los alemanes usaron la máquina enigma. Una aparato de varios rotores que a cada letra la transformaba en otra de forma más o menos aleatoria. Tanto el emisor del mensaje como el receptor debían saber la posición inicial de los rotores.

Nuevamente se presenta un problema. Según el criptonomicón, es muy compliado encontrar algoritmos que generen números aleatorios de verdad. Siempre son números pseudo-aleatorios. Teniendo bastante texto encriptado e idea de matemáticas/criptografía y ordenadores potentes es posible desencriptar el texto. Es más fácil cuanto menos aleatoria sea le secuencia.

De hecho, la máquina enigma se consiguió desencriptar. Actualmente se usan ordenador y algoritmos matemáticos.