miércoles, 29 de abril de 2009

Criptografia XIV

Bueno, después de tanto tiempo seguro que pensábais que os había olvidado. Pues no, y vuelvo al ataque con la criptografía, pero ahora entrando de lleno en la era informática.
¿Cuáles son las principales diferencias entre los sistemas mecánicos y los eléctricos de codificacion y criptoanálisis?
La primera es la limitación física que impone el sistema mecánico, pues hay que construir la máquina, mientras que un ordenador puede emular cualquier hipotética máquina.
La segunda es la velocidad de codificación o decodificación.
Y la tercera es que los ordenadores modifican números en lugar de letras (más exactamente unos y ceros)
Un ordenador sólo lee unos y ceros, o sea, sólo operan en sistema binario. Por eso cualquier mensaje que quiera ser codificado primeramente debe ser convertido a binario. El estandar más usado es el ASCII, en el que cada letra corresponde a 8 dígitos binarios. Sólo hay 256 maneras de combinar 8 dígitos binarios (2^8), lo cual nos da 256 caracteres, con lo que tenemos más que suficiente para letras mayúsculas, minúsculas, signos, números, puntuación, etc...
De todas formas el sistema de codificación sigue siendo básicamente el mismo desde el comienzo de la criptografía: sustitución y trasposición.
AL prinicipio sólo los gobiernos y ejércitos poseían ordenadores, pero en 1953 IBM lanzó su primer ordenador, y 4 años despues apareció el Fortran, un lenguaje de programación para la gente "corriente". Poco a poco y gracias al circuito integrado (1959) las empresas empezaron a tener ordenadores y los podían usar para codificar su información. Aquí empezó el problema de la estandarización. Internamente cada empresa podía codificar como le viniera en gana, pero cuando intentaba comunicarse con otra debían acordar el sistema, y esto era un caos.
En 1973 se creó un estándar para este fin.
El primer candidato fue la codificación Lucifer, que consistía basicamente en lo siguiente: el algoritmo coge le mensaje escrito y lo convierte a una larga serie de números binarios. Esta serie se divide en bloques de 64 dígitos, y realiza la codificación separadamente por cada bloque. Ahora, centrándonos en uno sólo de los bloques, los 64 dígitos se revuelven y luego se dividen en dos semibloques de 32, llamanodos Izquierdaº y Derechaº. Los dígitos de Derechaº se sometena a una funcion de deformación que cambia los dígitos según una compleja sustitución. La Derechaº deformada se añada a la Izquierdaº para crear un nuevo semibloque de 32 dígitos denominado Derecha1 . La Derechaº original se denomina ahora Izquierda1. Estas operaciones se denominana "rondas". Se repite el proceso entero en una segunda ronda pero comenzando con los nuevos semibloques Izquierda1 y Derecha1 y acabando con Izquierda2 y Derecha2. Esto se repite hasta un total de 16 rondas.
En el fondo es como amasar un bloque de masa en el que hay escrito un mensaje. Cortar, unir, doblar, pegar, estirar, vovler a cortar, unir, doblar, pegar, estirar...
Las calves utilizadas para codificarlo podían ser un simple número (cuando más grande mayor, por supuesto).
Pero este tipo de codificación no gustó a la NSA (La agencia Nacional de Seguridad de EEUU), pues se les acababa lo de meter las narices en todas partes, así que antes de aceptarla como estandar obligaron a debilitarla. Se limitó el número de claves a 100.000.000.000.000.000 ( 56 bits, un total de 56 dígitos cuando se escribe en binario). En aquel entonces ningun civil podía descifrar una clave así en un timpo razonable, en cambio la NSA sí.
Ahora las empresas podían enviarse información codificada tranquilamente, pues ninguna otra empresa podía descodificar su información. Ahora sólo queda un GRAN problema: la distribución de claves.
Imaginemos que una empresa quiere enviar datos confidenciales, pero no puede hacerlo por teléfono por si alguien ajeno está a la escucha. La empresa elige una clave y codifica el mensaje con Lucifer (a partir de ahora DES, que fué como se denominó. Data Encryption Standard). El cliente para descodificar necesita, aparte de una copia de DES, la clave. ¿Cómo informa la empresa de la clave a su cliente? La única opción es enviando a un mensajero de confianza para entregarla en mano. Así se hizo durante años, mediante mensajeros (con antecedentes investigados) que iban por todo el globo entregando claves. Pero cuando el volumen de clientes fue demasiado grande el gasto en mensajería se convirtió en excesivo.
El problema de la distribución de claves era algo que no había tenido solución desde el inicio de la criptografía. Los alemanes debían distribuir el libro de claves mensualmente por todos sus operadores Enigma a lo largo y ancho de Europa. Imaginaros el problema logístico y la fragilidad del sistema. Para mantener un mensaje secreto entre dos personas, hacía falta una tercera para distribuir la clave. Era el eslabón débil de la cadena. Pero todas las opiniones afirmaban que era un problema sin solución.
Sin embargo alguien encontró una solución brillante, considerada el mayor logro criptográfico desde la invención de la cifra monoalfabética, hace de eso ya más de 2000 años.
¿Alguna idea? Leer más...