jueves, 28 de mayo de 2009

Criptografía XV

Como veo que no ha habído muchas ideas al respecto de la pregunta que formulaba en el anterior capítulo, vamos a intentar explicar la respuesta. Como siempre hay un cerebrito detrás de estos misterios , en esta ocasión se llama Whitfield Diffie. Diffie se sintió cautivado por el problema de la distribución de claves y quiso pasar a la historia como uno de los mejores criptógrafos de todos los tiempos, y así se puso manos a la obra.
Como muchos sabréis en los años 60 apareció la red ARPA utilizada por el gobierno de EEUU para conectar ordenadores militares a grandes distancias y descentralizar la información. Esta red derivó en Internet en 1982. Diffie antes de esto ya había imaginado el futuro, con gente corriente con ordenadores en sus casas enviando información por todo el mundo. Y claro, esto requería privacidad, pero si el gobierno tenía problemas para mantenerla, no digamos la gente de a pie.
Empezó con una la sencilla pregunta: ¿cómo podría una persona enviar un e-mail que contuviera detalles codificados de su tarjeta de crédito de modo que sólo ese vendedor en particular pudiera descifrarlos? Las dos partes necesitarían compartir una clave, pero ¿cómo intercambiarla de forma segura?
Diffie conoció a otro genio preocupado por el mismo problema, Martin Hellman, y juntos abordaron el problema.
El problema de la distribución de claves radica en su círculo vicioso: para que dos personas se comuniquen un secreto (el mensaje codificado), deben ya compartir un secreto (la clave).
Como ejemplo voy a seguir el que nos muestra Simon Singh en su libro Los códigos secretos, de donde saco la mayoría de la información.

Imaginemos a Alicia, Benito y Eva.
Alicia quiere enviar un mensaje a Benito o viceversa, y Eva está tratando de enterarse. Alicia envía los mensajes secretos a Benito codificando cada uno de ellos antes de enviarlo, utilizando una clave distinta cada vez. Por eso Alicia tiene que transmitir las claves a Benito de manera segura para que este pueda descifrar los mensajes. Una manera es dárselos en persona, por ejemplo las claves de todo un mes o una semana suficientes para cubrir todos los posibles mensajes que enviarán. Este sistema es seguro pero si por ejemplo uno de los dos enferma se viene todo al traste, y si viven lejos pues es un gasto enorme. La alternativa son los mensajeros, pero ya perdemos seguridad y como ya vimos anteriormente a grandes cantidades de envíos el sistema se vuelve incontrolable. Este axioma permaneció invariable durante 2000 años hasta que llegaron estos dos y...

Imaginemos que Alicia y Benito viven en un país dónde el sistema postal es inmoral y los empleados leen todo lo que cae en sus manos. Alicia quiere enviar un mensaje personal a Benito. Lo mete en una caja de hierro, la cierra y le pone un candado. Pone la caja cerrada con candado en el corrreo y se queda con la llave. Cuando Benito recibe la caja no puede abrirla porque no tiene la llave. Alicia podría meter la llave en otra caja, pero si Benito no tiene la llave de esa segunda caja no puede tener acceso a la llave de la primera así que no sirve. La manera de evitar el problema es que Alicia haga una copia de la llave y se la lleve personalmente a Benito para posteriores envíos. Pero estamos como antes, hay que realizar el traspaso de llaves (claves) personalmente. Esto no tiene solución pensaréis, volvemos a la pescadilla que se muerde la cola.

Imaginemos ahora que al igual que antes Alicia quiere enviar el mensaje personal a Benito. Mete su mensaje en una caja de hierro, la cierra con candado y se la envía a Benito. Cuando llega la caja, Benito añade su propio candado y vuelve a enviar la caja a Alicia. Cuando Alicia recibe la caja, ésta tiene ahora dos candados. Ella quita su candado y deja sólo el de Benito cerrando la caja. Ahora vuelve a enviar la caja a Benito....y ahora Benito sí puede abrir la caja, pues está cerrada con su propio candado y él sí tiene la llave.

Este sencillo ejemplo demuestra que se puede mandar un mensaje secreto de manera segura entre dos personas sin que tengan que intercambiarse la clave. Por primera vez parece que se echa por el suelo el puntal sobre el que giraba la criptografía: el intercambio de claves.
Alicia usa su propia clave para codificar un mensaje para Benito, el cual lo vuelve a codificar con su propia clave y lo devuelve. Alicia al recibirlo elimina su clave y lo devuelve a Benito, que entonces puede retirar su propia codificación y leer el mensaje.

Pero tiene un punto por resolver. La doble codificación requiere un orden: lo último que se pone es lo primero que se quita. En este caso codifica Alicia, luego codifica Benito, Alicia quita su codigo y luego Benito quita el suyo. Esto no resulta posible , pues el orden debería ser: Alicia codifica, luego codifica Benito, luego debería descodificar Benito y luego Alicia.
Para entendernos, si primero te pones los calcetines y luego los zapatos, para deshacerlo primero te tienes que quitar los zapatos y al final los calcetines. Y aquí primero se quitan los calcetines y luego los zapatos, cosa imposible.
El ejemplo de los candados funciona porque podemos poner los candados que queramos a una caja y quitarlos en el orden que queramos, al final quedará abierta, pero si codificamos con una cifra monoalfabética y luego con otra y descodificamos sin seguir la norma obtendremos un galimatías.
Vamos a dejar aquí a Diffie y Hellman discutiendo sobre como afrontar matemáticamente el escalón que les ha surgido. Leer más...