6. Alicia y Benito hacen pública su clave
Durante la segunda guerra mundial, los descifradores británicos se impusieron a los codificadores alemanes principalmente porque los hombres y mujeres de Bletchley Park, siguiendo los pasos de los polacos, desarrollaron parte de la primera tecnología del desciframiento. Además de las bombas de Turing, que se utilizaron para romper la cifra de la Enigma, los británicos inventaron también otro artefacto de descodificación, el Colossus, para combatir una forma aún más potente de codificación, a saber, la cifra Lorenz alemana. De los dos tipos de máquinas descifradoras, fue el Colossus el que determinaría el desarrollo de la criptografía durante la segunda mitad del siglo XX.
La cifra Lorenz se utilizaba para codificar las comunicaciones entre Hitler y sus generales. La codificación la llevaba a cabo la máquina Lorenz SZ40, que funcionaba de manera similar a la máquina Enigma, pero la Lorenz era mucho más complicada, y presentó a los descifradores de Bletchley un desafío aún mayor. Sin embargo, dos de los descifradores de Bletchley, John Tiltman y Bill Tutte, descubrieron un punto débil en la manera en que se usaba la cifra Lorenz, un fallo al que Bletchley pudo sacar partido y, por consiguiente, leer los mensajes de Hitler.
Descifrar la cifra Lorenz requirió una mezcla de búsquedas, combinaciones, análisis estadísticos y decisiones cuidadosas, todo lo cual estaba más allá de las habilidades técnicas de las bombas. Las bombas podían llevar a cabo una tarea específica a gran velocidad, pero no eran lo suficientemente flexibles para enfrentarse a las sutilezas de la Lorenz. Los mensajes codificados con la Lorenz tenían que ser descifrados a mano, lo que costaba semanas de esfuerzo minucioso, y para entonces los mensajes eran ya en gran medida demasiado viejos. Finalmente, a Max Newman, un matemático de Bletchley, se le ocurrió una manera de mecanizar el criptoanálisis de la cifra Lorenz. Inspirándose enormemente en el concepto de la máquina universal de Alan Turing, Newman diseñó una máquina capaz de adaptarse a diferentes problemas, lo que hoy llamaríamos un ordenador programable.
Se consideró que poner en práctica el diseño de Newman era técnicamente imposible, de modo que los altos oficiales de Bletchley dieron carpetazo al proyecto. Afortunadamente, Tommy Flowers, un ingeniero que había tomado parte en las discusiones sobre el diseño de Newman, decidió ignorar el escepticismo de Bletchley y procedió a construir la máquina. En el centro de investigación de la Oficina de Correos de Dollis Hill, en el norte de Londres, Flowers tomó el proyecto original de Newman y pasó diez meses convirtiéndolo en la máquina Colossus, que entregó en Bletchley Park el 8 de diciembre de 1943. Constaba de 1.500 válvulas electrónicas, que eran considerablemente más rápidas que los lentos conmutadores electromagnéticos de transmisión utilizados en las bombas. Pero aún más importante que la velocidad del Colossus era el hecho de que era programable. Fue esto lo que convirtió al Colossus en el precursor del ordenador digital moderno.
El Colossus, como todo lo que había en Bletchley Park, fue destruido después de la guerra, y a los que trabajaron en él se les prohibió que hablaran de ello. Cuando se ordenó a Tommy Flowers que se deshiciera del proyecto original del Colossus, obedientemente, lo llevó a la caldera y lo quemó. Los planos del primer ordenador del mundo se perdieron para siempre. Este secreto significó que otros científicos obtuvieron el crédito por la invención del ordenador. En 1945, J. Presper Eckert y John W. Mauchly, de la Universidad de Pensilvania, terminaron el ENIAC (Electronic Numerical Integrator And Calculator, Integrador y calculador numérico electrónico), que constaba de 18.000 válvulas electrónicas y era capaz de realizar 5.000 cálculos por segundo. Durante décadas, el ENIAC, y no el Colossus, fue considerado como la madre de todos los ordenadores.
Habiendo contribuido al nacimiento del ordenador moderno, después de la guerra los criptoanalistas continuaron desarrollando y usando la tecnología de los ordenadores para descifrar todo tipo de cifras. Ahora podían sacar partido a la velocidad y la flexibilidad de los ordenadores programables para probar todas las claves posibles hasta encontrar la correcta. A su debido tiempo, los criptógrafos comenzaron a contraatacar, sacando partido al poder de los ordenadores para crear cifras cada vez más complejas. En resumen, el ordenador desempeñó un papel crucial en la posguerra en la batalla entre los codificadores y los descifradores.
Utilizar un ordenador para codificar un mensaje es, en gran medida, muy similar a las formas tradicionales de codificación. En realidad, sólo hay tres diferencias significativas entre la codificación por ordenador y el tipo de codificación mecánica que constituía la base de cifras como la Enigma. La primera diferencia es que una máquina de cifras mecánica tiene la limitación de lo que se puede construir prácticamente, mientras que un ordenador puede imitar una hipotética máquina de cifras de complejidad inmensa. Por ejemplo, se podría programar un ordenador para imitar la acción de cien modificadores, algunos girando en el sentido de las agujas de un reloj, otros en sentido contrario, otros desapareciendo después de cada diez letras, otros girando cada vez más rápido según avanza la codificación. Una máquina mecánica semejante sería imposible de construir en la práctica, pero su equivalente computerizada «virtual» proporcionaría una cifra de alta seguridad.
La segunda diferencia es simplemente una cuestión de velocidad. La electrónica puede funcionar muchísimo más rápidamente que los modificadores mecánicos: un ordenador programado para imitar la cifra Enigma podría codificar un mensaje extenso en un instante. De manera alternativa, un ordenador programado para llevar a cabo una forma de codificación muchísimo más compleja podría aún realizar la tarea en un tiempo razonable.
La tercera diferencia, y quizá la más importante, es que un ordenador modifica números en vez de las letras del alfabeto. Los ordenadores sólo operan con números binarios: secuencias de unos y ceros conocidos como dígitos binarios, o bits, para abreviar. Por tanto, antes de la codificación, hay que convertir cualquier mensaje en dígitos binarios. Esta conversión se puede realizar según varios protocolos, como el American Standard Code for Information Interchange (Código americano estándar para el intercambio de información), conocido familiarmente por el acrónimo ASCII, pronunciado «as-qui[20]». ASCII asigna un número binario de 7 dígitos a cada letra del alfabeto. Por ahora, es suficiente considerar un número binario simplemente como un patrón de unos y ceros que identifica únicamente a cada letra (Tabla 24), igual que el código Morse identifica cada letra con una serie única de puntos y rayas. Hay 128 (27) maneras de ordenar una combinación de 7 dígitos binarios, de modo que ASCII puede identificar hasta 128 caracteres diferentes. Esto ofrece aún mucho espacio para definir también todas las letras minúsculas (p. e., a =1100001), toda la puntuación necesaria (p. e., ! = 0100001), además de otros símbolos (p. e., &= 0100110). Una vez que el mensaje se ha convertido en binario, puede comenzar la codificación.
Aunque estamos tratando con ordenadores y números, y no con máquinas y letras, la codificación todavía se lleva a cabo mediante los principios milenarios de sustitución y trasposición, en los que unos elementos del mensaje son sustituidos por otros elementos, o se cambian sus posiciones, o ambas cosas. Toda codificación, no importa lo compleja que sea, se puede descomponer en combinaciones de estas simples operaciones. Los dos ejemplos siguientes demuestran la simplicidad esencial de la codificación por ordenador mostrando cómo un ordenador podría realizar una sencilla cifra de sustitución y una sencilla cifra de trasposición.
Primero, imagine que deseamos codificar el mensaje HELLO («HOLA»), utilizando una simple versión informatizada de una cifra de trasposición. Antes de poder comenzar la codificación, debemos traducir el mensaje a ASCII según la Tabla 24:
![](/epubstore/S/S-Singh/Los-Codigos-Secretos/OEBPS/Images/imagen109.jpg)
Texto llano = HELLO = 1001000 1000101 1001100 1001100 1001111
Una de las formas más sencillas de cifra de trasposición sería intercambiar los dígitos primero y segundo, los dígitos tercero y cuarto, y así sucesivamente. En este caso, el dígito final permanecería sin cambiar porque hay un número impar de dígitos. Para ver la operación más claramente he quitado los espacios que separan los bloques ASCII en el texto llano original para generar una única serie y luego la he situado junto al texto cifrado resultante para poder comparar:
Texto llano= 10010001000101100110010011001001111
Texto cifrado= 01100010001010011001100011000110111
Un aspecto interesante de la trasposición a nivel de los dígitos binarios es que la trasposición puede suceder dentro de la letra. Además, algunos bits de una letra pueden cambiar de lugar con bits de la letra vecina. Por ejemplo, intercambiando los números séptimo y octavo, el 0 final de la H se cambia con el 1 inicial de la E. El mensaje codificado es una serie única de 35 dígitos binarios, que se puede transmitir al receptor, que entonces invierte la trasposición para recrear la serie original de dígitos binarios. Finalmente, el receptor reinterpreta los dígitos binarios con ASCII para regenerar el mensaje HELLO.
A continuación, imagine que deseamos codificar el mismo mensaje, HELLO, esta vez empleando una simple versión computerizada de la cifra de sustitución. De nuevo, comenzamos convirtiendo el mensaje en ASCII antes de la codificación. Como de costumbre, la sustitución se basa en una clave que ha sido acordada entre el emisor y el receptor. En este caso, la clave es la palabra DAVID traducida a ASCII, y se usa de la siguiente manera. Cada elemento del texto llano se «añade» al elemento correspondiente de la clave. Añadir dígitos binarios puede entenderse en función de dos reglas simples. Si los elementos del texto llano y de la clave son los mismos, el elemento del texto llano se sustituye por 0 en el texto cifrado. Pero si los elementos del mensaje y de la clave son diferentes, el elemento del texto llano se sustituye por 1 en el texto cifrado:
Mensaje HELLO
Mensaje en ASCII 10010001000101100110010011001001111
Clave = DAVID 10001001000001101011010010011000100
Texto cifrado 00011000000100001101000001010001011
El mensaje codificado resultante es una única serie de 35 dígitos binarios que se pueden retransmitir al receptor, que usa la misma clave para invertir la sustitución, recreando así la serie original de dígitos binarios. Finalmente, el receptor reinterpreta los dígitos binarios con ASCII para regenerar el mensaje HELLO.
La codificación por ordenador estaba restringida a los que tenían ordenadores, lo que al principio significaba al gobierno y al ejército. Sin embargo, una serie de avances científicos, técnicos y de ingeniería hicieron que los ordenadores, y la codificación por ordenador, fueran muchísimo más asequibles para el público en general. En 1947, los laboratorios de la compañía AT&T Bell inventaron el transistor, una alternativa barata a la válvula electrónica. La computación comercial comenzó a hacerse realidad en 1951, cuando compañías como Ferranti comenzaron a hacer ordenadores por encargo. En 1953, IBM lanzó su primer ordenador, y cuatro años después introdujo Fortran, un lenguaje de programación que permitía que la gente «corriente» escribiera programas de ordenador. Después, en 1959, la invención del circuito integrado anunció una nueva era informática.
Durante los años sesenta, los ordenadores se volvieron más potentes, y al mismo tiempo más baratos. Cada vez había más empresas que podían permitirse tener ordenadores y los podían usar para codificar comunicaciones importantes como transferencias de dinero o delicadas negociaciones comerciales. Sin embargo, según más y más empresas iban comprando ordenadores, y se extendía la codificación entre empresas, los criptógrafos tuvieron que afrontar nuevos problemas, dificultades que no habían existido cuando la criptografía era del dominio de los gobiernos y del ejército. Una de las preocupaciones primarias era el tema de la estandarización. Una compañía podía usar un sistema de codificación en particular para garantizar la seguridad de las comunicaciones internas, pero no podía enviar un mensaje secreto a una organización externa a no ser que el receptor usara el mismo sistema de codificación. Finalmente, el 15 de mayo de 1973, la Oficina Nacional de Estándares norteamericana planeó resolver el problema y solicitó formalmente propuestas para un sistema de codificación estándar que permitiera que las empresas se comunicaran secretamente entre sí.
Uno de los algoritmos de cifra más establecido, y uno de los candidatos para el estándar, fue un producto de IBM conocido como Lucifer. Lo había desarrollado Horst Feistel, un emigrante alemán que había llegado a Estados Unidos en 1934. Estaba a punto de convertirse en ciudadano norteamericano cuando Estados Unidos entró en la guerra, lo que significó que fue puesto bajo arresto domiciliario hasta 1944. Después de eso, durante algunos años reprimió su interés en la criptografía para evitar despertar las sospechas de las autoridades estadounidenses. Cuando finalmente comenzó a investigar las cifras, en el Centro de Investigación de las Fuerzas Aéreas de Cambridge, no tardó en verse en dificultades con la NSA, la organización responsable de mantener la seguridad de las comunicaciones militares y gubernamentales, y que trata también de interceptar y descifrar las comunicaciones extranjeras. La NSA emplea a más matemáticos, compra más hardware de ordenadores e intercepta más mensajes que ninguna otra organización en el mundo. Es el líder mundial en lo referente a fisgonear.
La NSA no ponía reparos al pasado de Feistel; simplemente, quería tener el monopolio de la investigación criptográfica, y parece ser que dispusieron que se cancelase el proyecto de investigación de Feistel. En los años sesenta, Feistel se fue a la Mitre Corporation, pero la NSA continuó presionando y lo obligó a abandonar su trabajo por segunda vez. Feistel fue a parar finalmente al Laboratorio Thomas J. Watson de la IBM, cerca de Nueva York, donde durante varios años pudo realizar su investigación sin ser acosado. Fue entonces, al principio de los años setenta, cuando desarrolló el sistema Lucifer.
Lucifer codifica los mensajes según la siguiente operación de modificación. Primero, se traduce el mensaje a una larga serie de dígitos binarios. Segundo, la serie se divide en bloques de 64 dígitos, y se realiza la codificación separadamente para cada uno de los bloques. Tercero, centrándose en uno solo de los bloques, los 64 dígitos se revuelven y luego se dividen en dos semibloques de 32, denominados Izquierda0 y Derecha0. Los dígitos de Derecha0 se someten entonces a una «función de deformación», que cambia los dígitos según una compleja sustitución. La Derecha0 «deformada» se añade entonces a la Izquierda0 para crear un nuevo semibloque de 32 dígitos denominado Derecha1. La Derecha0 original se denomina ahora Izquierda1. Esta serie de operaciones se llama una «ronda». Se repite el proceso entero en una segunda ronda, pero comenzando con los nuevos semibloques, Izquierda1 y Derecha1, y acabando con Izquierda2 y Derecha2. Este proceso se repite hasta que haya habido 16 rondas en total. El proceso de codificación se parece un poco a amasar un trozo de masa de hacer pan. Imagine un trozo largo de masa con un mensaje escrito en ella. Primero, el trozo largo se divide en bloques de 64 cm de longitud. Luego, se coge la mitad de uno de los bloques y se aplana, se dobla, se añade a la otra mitad y se extiende para hacer un nuevo bloque. Seguidamente se repite el proceso una y otra vez hasta que el mensaje se haya entremezclado completamente. Tras 16 rondas de amasado, se envía el texto cifrado, que entonces es descifrado al otro lado invirtiendo el proceso.
Los detalles exactos de la operación de deformación pueden variar, y los determina una clave acordada entre el emisor y el receptor. En otras palabras, el mismo mensaje se puede codificar de una miríada de maneras dependiendo de la clave que se elija. Las claves utilizadas en la criptografía por ordenador son simplemente números. Por eso, el emisor y el receptor tienen meramente que acordar un número para decidir la clave. Después de eso, la codificación requiere que el emisor introduzca el número de la clave y el mensaje en Lucifer, que se ocupará de producir el texto cifrado. La descodificación requiere que el receptor introduzca el mismo número de la clave y el texto cifrado en Lucifer, que se ocupará de producir el mensaje original.
Se consideraba generalmente que Lucifer era uno de los más potentes productos de codificación disponibles comercialmente, y, por consiguiente, era usado por diferentes tipos de organizaciones. Parecía inevitable que este sistema de codificación fuera adoptado como el estándar americano, pero una vez más la NSA interfirió con el trabajo de Feistel. Lucifer era tan potente que ofrecía la posibilidad de una codificación estándar que probablemente estaba más allá de la capacidad de desciframiento de la NSA; evidentemente, la NSA no quería ver una codificación estándar que ella no pudiera descifrar. Por eso, se rumorea que la NSA presionó para que se debilitara un aspecto de Lucifer, el número de claves posibles, antes de permitir que se adoptase como estándar.
El número de claves posibles es uno de los factores cruciales que determinan la solidez de cualquier cifra. Un criptoanalista que intenta descifrar un mensaje codificado podría tratar de probar todas las claves posibles, y cuanto mayor sea el número de claves posibles, más tiempo le costará encontrar la correcta. Si sólo hay 1.000.000 de claves posibles, un criptoanalista podría usar un ordenador potente para encontrar la correcta en cuestión de minutos, y con ello descifrar un mensaje interceptado. Sin embargo, si el número de claves posibles es lo suficientemente grande, encontrar la clave correcta deja de ser práctico. Si Lucifer iba a convertirse en la codificación estándar, la NSA quería asegurarse de que sólo funcionaría con un número restringido de claves.
La NSA alegó a favor de limitar el número de claves a unas 100.000.000.000.000.000 (que se describe técnicamente como 56 bits, ya que este número consta de 56 dígitos cuando se escribe en binario). Parece que la NSA creía que semejante clave ofrecería seguridad dentro de la comunidad civil, porque ninguna organización civil tiene un ordenador lo suficientemente poderoso para probar todas esas claves posibles en un período de tiempo razonable. Sin embargo, la propia NSA, que tiene acceso a los mayores recursos informáticos del mundo, sí podría entrar en los mensajes. La versión de 56 bits de la cifra Lucifer de Feistel fue adoptada oficialmente el 23 de noviembre de 1976, y fue denominada DES (Data Encryption Standard, Estándar de cifrado de datos). Un cuarto de siglo después, DES sigue siendo el estándar oficial norteamericano para la codificación.
La adopción de DES resolvió el problema de la estandarización, alentando a las empresas a usar la criptografía para su seguridad. Además, DES era lo suficientemente potente para garantizar la seguridad frente a los ataques de rivales comerciales. De hecho, era imposible que una compañía con un ordenador civil entrara en un mensaje codificado con DES, porque el número de claves posibles era demasiado grande. Por desgracia, a pesar de la estandarización y a pesar de la potencia de DES, las empresas aún tenían que afrontar otro gran tema, el problema de la distribución de claves.
Imagine que un banco quiere enviar algunos datos confidenciales a un cliente a través de la línea telefónica, pero le preocupa que pueda haber alguien que intervenga la línea. El banco elige una clave y utiliza DES para codificar los datos del mensaje. Para descodificar el mensaje, el cliente no sólo necesita tener una copia de DES en su ordenador, sino también saber qué clave ha sido usada para cifrar el mensaje. ¿Cómo informa el banco al cliente acerca de la clave? No puede enviar la clave a través de la línea telefónica, porque sospecha que hay un fisgón en la línea. La única forma verdaderamente segura de enviar la clave es entregarla en persona, lo que obviamente es una tarea que requiere mucho tiempo. Una solución menos segura pero más práctica es enviar la clave mediante un mensajero. En los años setenta, los bancos trataron de distribuir las claves empleando mensajeros especiales cuyos antecedentes habían sido investigados y que estaban entre los empleados en los que la compañía tenía más confianza. Estos mensajeros recorrían todo el mundo con maletines cerrados con candado, distribuyendo claves personalmente a todos los que iban a recibir mensajes del banco la semana siguiente. Según fue creciendo el tamaño de las redes de negocios y se enviaban más mensajes, y había que entregar más claves, los bancos vieron que este proceso de distribución se convertía en una horrible pesadilla logística y los gastos generales se volvieron prohibitivos.
El problema de la distribución de claves ha acosado a los criptógrafos a lo largo de la historia. Por ejemplo, durante la segunda guerra mundial, el Alto Mando alemán tenía que distribuir el libro mensual de claves del día a todos sus operadores de la Enigma, lo que suponía un enorme problema logístico. Asimismo, los submarinos, que tendían a pasar extensos períodos lejos de la base, tenían que obtener de alguna manera un suministro regular de claves. Anteriormente, los usuarios de la cifra Vigenère tenían que encontrar una forma de hacer que la palabra que constituía la clave llegara del emisor al receptor. No importa lo segura que sea una cifra en teoría, en la práctica puede ser socavada por el problema de la distribución de claves.
En cierta medida, el gobierno y el ejército han logrado afrontar el problema de la distribución de claves invirtiendo dinero y medios para solucionarlo. Sus mensajes son tan importantes que harán cualquier cosa para garantizar la distribución segura de la clave. Las claves del gobierno de Estados Unidos y su distribución corren a cargo de COMSEC, abreviatura de Communications Security (Seguridad de las comunicaciones). En los años setenta, COMSEC era el responsable de transportar toneladas métricas de claves cada día. Cuando los barcos que llevaban material del COMSEC llegaban a puerto, los criptoguardianes entraban a bordo, recogían montones de tarjetas, cintas de papel, disquetes o cualquier otro soporte en que se hubieran almacenado las claves y luego las distribuían a los receptores deseados.
La distribución de claves podría parecer un tema anodino, pero se convirtió en el problema primordial para los criptógrafos de la posguerra. Si dos partes querían comunicarse de manera segura tenían que recurrir a una tercera parte para distribuir la clave, y éste se convirtió en el eslabón más débil de la cadena de la seguridad. El dilema para las empresas era evidente —si los gobiernos, con todo el dinero que tenían disponible, habían de luchar para garantizar la distribución segura de las claves, ¿cómo iban las compañías civiles a esperar conseguir alguna vez una distribución fiable de las claves sin arruinarse?
A pesar de las afirmaciones de que el problema de la distribución de claves no tenía solución, un equipo de personas independientes triunfó contra todo pronóstico y propuso una solución brillante a mediados de los años setenta. Crearon un sistema de cifrado que parecía desafiar toda lógica. Aunque los ordenadores transformaron la aplicación de las claves, la mayor revolución de la criptografía del siglo XX ha sido el desarrollo de técnicas para superar el problema de la distribución de claves. De hecho, este avance está considerado el mayor logro criptográfico desde la invención de la cifra monoalfabética, hace más de dos mil años.
Dios premia a los tontos
Whitfield Diffie es uno de los criptógrafos más exuberantes de su generación. Su mero aspecto ofrece una imagen llamativa y en cierta medida contradictoria. Su impecable traje refleja el hecho de que durante la mayor parte de los años noventa ha estado trabajando para una de las compañías gigantes de ordenadores de Estados Unidos; actualmente el título oficial de su trabajo es ingeniero distinguido de Sun Microsystems. Sin embargo, su melena hasta los hombros y su larga barba blanca delatan el hecho de que su corazón todavía está anclado en los años sesenta. Pasa mucho tiempo ante una terminal de ordenador, pero parece que se sentiría igual de a gusto en un ashram de Bombay. Diffie es consciente de que su ropa y su personalidad pueden causar mucha impresión a los demás, y comenta: «La gente siempre piensa que soy más alto de lo que realmente soy, y me han dicho que es el “efecto Saltarín”. No importa lo que pese en kilos y gramos, siempre parece más grande a causa de los botes que da».
![](/epubstore/S/S-Singh/Los-Codigos-Secretos/OEBPS/Images/imagen110.jpg)
Diffie nació en 1944, y pasó la mayor parte de su infancia en Queens, Nueva York. De niño se fascinó con las matemáticas y leyó libros que iban del Manual de tablas matemáticas de la Compañía de goma química al Curso de matemática pura de G. H. Hardy. Después fue a estudiar matemáticas en el MIT (Massachusetts Institute of Technology), graduándose en 1965. Entonces ejerció una serie de empleos relacionados con la seguridad informática, y para comienzos de los años setenta se había convertido en uno de los pocos expertos en seguridad verdaderamente independientes, un criptógrafo por libre, no empleado por el gobierno o por alguna de las grandes compañías. En retrospectiva, fue el primer cifropunk, o punk de las cifras[21].
Diffie estaba particularmente interesado en el problema de la distribución de claves y se dio cuenta de que quien lograra encontrar una solución pasaría a la historia como uno de los mejores criptógrafos de todos los tiempos. Se sentía tan cautivado por el problema de la distribución de claves que lo convirtió en la anotación más importante de su cuaderno especial, titulado «Problemas para una Teoría Ambiciosa de la Criptografía». Parte de la motivación de Diffie provenía de su visión de un mundo interconectado. En los años sesenta, el Departamento de Defensa de Estados Unidos comenzó a financiar una vanguardista organización de investigación llamada ARPA (Advanced Research Projects Agency, Agencia de Proyectos Avanzados de Investigación), y uno de los proyectos más avanzados de ARPA era encontrar una manera de conectar los ordenadores militares a través de grandes distancias. Esto permitiría que un ordenador que se hubiera deteriorado transfiriera sus responsabilidades a otro de la red. El objetivo principal era fortalecer la infraestructura informática del Pentágono ante la posibilidad de un ataque nuclear, pero la red permitiría también que los científicos intercambiaran mensajes y realizasen cálculos sacando partido a la capacidad de espacio de ordenadores remotos. ARPANet nació en 1969, y para finales de ese año había cuatro emplazamientos conectados. ARPANet creció constantemente, y en 1982 generó Internet. A finales de los años ochenta, se dio acceso a Internet a usuarios no académicos y no gubernamentales, y a partir de entonces el número de usuarios se disparó. Hoy día, más de cien millones de personas utilizan Internet para intercambiar información y enviar mensajes de correo electrónico, o e-mail.
Cuando ARPANet estaba todavía en pañales, Diffie tuvo la suficiente visión de futuro para pronosticar la llegada de la superautopista de la información y la revolución digital. Un día, la gente corriente tendría su propio ordenador, y estos ordenadores estarían interconectados mediante las líneas telefónicas. Diffie creía que si la gente usaba entonces sus ordenadores para intercambiar e-mails, merecía el derecho a cifrar sus mensajes para garantizar su privacidad. Sin embargo, el cifrado requería el intercambio seguro de claves. Si los gobiernos y las grandes compañías estaban teniendo problemas para hacer frente a la distribución de las claves, entonces al público en general le resultaría imposible y de hecho se vería privado del derecho a la privacidad.
Diffie imaginó dos extraños que se conocen a través de Internet y se preguntan cómo podrían enviarse un mensaje codificado el uno al otro. También consideró la posibilidad de una persona que quisiera comprar un producto en Internet. ¿Cómo podría esa 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? En ambos casos, parecía que las dos partes necesitaban compartir una clave, pero ¿cómo podrían intercambiar claves de una forma segura? El número de contactos casuales y la cantidad de e-mails espontáneos entre la gente sería enorme y esto significaría que la distribución de claves no sería práctica. Diffie temía que la necesidad de la distribución de claves impediría que la gente tuviera acceso a la privacidad digital y se obsesionó con la idea de encontrar una solución al problema.
En 1974, Diffie, todavía un criptógrafo itinerante, visitó el laboratorio Thomas J. Watson de la IBM, donde le habían invitado a dar una charla. Habló sobre varias estrategias para atacar el problema de la distribución de claves, pero todas sus ideas eran muy tentativas y su audiencia se mostró escéptica acerca de las perspectivas de una solución. La única respuesta positiva a la presentación de Diffie fue la de Alan Konheim, uno de los expertos criptográficos veteranos de la IBM, que mencionó que otra persona había visitado recientemente el laboratorio y había dado también una conferencia que abordaba el tema de la distribución de claves. Se trataba de Martin Hellman, un profesor de la Universidad de Stanford, en California. Esa misma tarde, Diffie se montó en su coche y comenzó el viaje de 5.000 km a la costa oeste para conocer a la única persona que parecía compartir su obsesión. La alianza entre Diffie y Hellman se convertiría en una de las asociaciones más dinámicas de la criptografía.
Martin Hellman había nacido en 1946 en un barrio judío del Bronx, en Nueva York, pero cuando tenía cuatro años su familia se mudó a un barrio predominantemente católico irlandés. Según Hellman, esto cambió para siempre su actitud ante la vida: «Los demás niños iban a la iglesia y aprendían que los judíos mataron a Cristo, así que me llamaban “asesino de Cristo”. También me daban palizas. Al principio, yo quería ser como los demás niños, quería un árbol de navidad y quería regalos cristianos. Pero luego me di cuenta de que no podía ser como todos los demás niños, y para defenderme adopté una actitud de “¿A quién le interesa ser como todos los demás?”. Hellman ve el origen de su interés en las cifras en este persistente deseo de ser diferente. Sus colegas le habían dicho que estaba loco por hacer investigación en criptografía, porque estaría compitiendo con la NSA y su presupuesto multibillonario en dólares. ¿Cómo podía esperar descubrir algo que ellos no supieran ya? Y si llegaba a descubrir algo, la NSA lo clasificaría.
Justo cuando Hellman estaba comenzando su investigación, encontró The Codebreakers («Los descifradores») del historiador David Kahn. Este libro era la primera exposición detallada del desarrollo de las cifras, y como tal era la obra perfecta para un criptógrafo en ciernes. The Codebreakers era el único compañero de Hellman en su investigación, hasta que en septiembre de 1974 recibió una inesperada llamada de teléfono de Whitfield Diffie, que acababa de cruzar el continente en su coche para conocerlo. Hellman nunca había oído hablar de Diffie, pero aceptó de mala gana una cita de media hora esa misma tarde. Al final del encuentro, Hellman se dio cuenta de que Diffie era la persona mejor informada que había conocido. Esa sensación era mutua. Hellman recuerda: «Había prometido a mi mujer que iría a casa a cuidar a los niños, así que él se vino a casa conmigo y cenamos juntos. Se marchó hacia medianoche. Nuestras personalidades eran muy diferentes —él es mucho más contracultural que yo— pero el choque de personalidades resultó ser muy simbiótico. Era una bocanada de aire fresco para mí. Trabajar totalmente aislado había sido muy duro».
![](/epubstore/S/S-Singh/Los-Codigos-Secretos/OEBPS/Images/imagen111.jpg)
Como Hellman no contaba con mucha financiación, no se podía permitir emplear a su nuevo compañero como investigador. En vez de eso, Diffie se matriculó como estudiante graduado. Juntos, Hellman y Diffie comenzaron a estudiar el problema de la distribución de claves, intentando desesperadamente encontrar una alternativa a la pesada tarea de transportar las claves físicamente cruzando grandes distancias. A su debido tiempo, se les unió Ralph Merkle. Merkle era un refugiado intelectual, que había emigrado de otro grupo de investigación en el que el profesor no sentía ninguna simpatía por el sueño imposible de resolver el problema de la distribución de claves. Dice Hellman:
Ralph, como nosotros, estaba dispuesto a ser un tonto. Y la forma de llegar a la cima en cuanto a desarrollar una investigación original es ser un tonto, porque sólo los tontos siguen intentándolo. Tienes la idea número 1, te entusiasmas y fracasa. Luego tienes la idea número 2, te entusiasmas y fracasa. Luego tienes la idea número 99, te entusiasmas y fracasa. Sólo un tonto se entusiasmaría con la idea número 100, pero puede que hagan falta 100 ideas antes de que una valga realmente la pena. A no ser que seas lo suficientemente tonto para entusiasmarte continuamente, no tendrás la motivación, no tendrás la energía para llegar hasta el final. Dios premia a los tontos.
Todo el problema de la distribución de claves es una situación clásica de círculo vicioso. Si dos personas quieren intercambiar un mensaje secreto por teléfono, el emisor debe codificarlo. Para codificar el mensaje secreto, el emisor debe usar una clave, que es en sí misma un secreto, de modo que entonces hay el problema de transmitir la clave secreta al receptor para transmitir el mensaje secreto. En resumen, antes de que dos personas puedan intercambiar un secreto (un mensaje codificado) deben ya compartir un secreto (la clave).
Al considerar el problema de la distribución de claves resulta útil imaginar a Alicia, Benito y Eva, tres personajes ficticios que se han convertido en estándares en las discusiones sobre criptografía[22]. En una situación típica, Alicia quiere enviar un mensaje a Benito, o viceversa, y Eva está tratando de enterarse. Si Alicia está enviando mensajes secretos a Benito codificará cada uno de ellos antes de enviarlo, utilizando una clave distinta cada vez. Alicia se tiene que enfrentar continuamente al problema de la distribución de claves, porque tiene que transmitir las claves a Benito de una manera segura, de otra forma él no podrá descodificar el mensaje. Una manera de solucionar el problema es que Alicia y Benito se encuentren una vez a la semana e intercambien suficientes claves para cubrir los mensajes que podrían enviar durante los siete días siguientes. Intercambiar claves en persona es sin duda seguro, pero presenta muchos inconvenientes y si Alicia o Benito se ponen enfermos, todo el sistema se viene abajo. Como alternativa, Alicia y Benito podrían contratar a mensajeros, lo que sería menos seguro y más caro, pero al menos delegarían parte del trabajo. En cualquier caso, parece que la distribución de claves es inevitable. Durante dos mil años esto se consideraba un axioma de la criptografía —una verdad indiscutible—. Sin embargo, Diffie y Hellman eran conscientes de una anécdota que parecía desafiar al axioma.
Imagine que Alicia y Benito viven en un país donde el sistema postal es completamente inmoral, y los empleados postales leen toda la correspondencia desprotegida. Un día, Alicia quiere enviar un mensaje sumamente 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 correo y se queda con la llave. Sin embargo, cuando Benito recibe la caja, no puede abrirla porque no tiene la llave. Alicia podría considerar poner la llave dentro de otra caja, cerrarla con candado y enviársela a Benito, pero sin la llave del segundo candado, él no puede abrir la segunda caja, de modo que no puede obtener la llave que abre la primera caja. La única manera de evitar el problema parece ser que Alicia haga una copia de la llave y se la dé a Benito de antemano cuando queden para tomar un café. Hasta ahora, lo único que he hecho es plantear el mismo viejo problema en una nueva situación. Evitar la distribución de la llave parece lógicamente imposible; indudablemente, si Alicia quiere encerrar algo en una caja para que sólo Benito pueda abrirla, debe darle una copia de la llave. O, en términos de criptografía, si Alicia quiere codificar un mensaje para que sólo Benito pueda descifrarlo, debe darle una copia de la clave. El intercambio de la clave es una parte inevitable de la codificación, ¿o no?
Ahora imagine la siguiente situación. Como antes, Alicia quiere enviar un mensaje sumamente personal a Benito. De nuevo, mete su mensaje secreto 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, ahora está cerrada con dos candados. Ella retira su propio candado, dejando que sólo el candado de Benito cierre la caja. Finalmente, vuelve a enviar la caja a Benito. Y aquí está la diferencia crucial: ahora Benito puede abrir la caja porque está cerrada sólo con su propio candado y únicamente él tiene la llave.
Las implicaciones de esta pequeña historia son enormes. Demuestra que un mensaje secreto se puede intercambiar de manera segura entre dos personas sin que tengan necesariamente que intercambiar una clave. Por vez primera, aparece una insinuación de que el intercambio de claves podría no ser una parte inevitable de la criptografía. Podemos reinterpretar la historia en términos de codificación. Alicia usa su propia clave para codificar un mensaje para Benito, el cual vuelve a codificarlo con su propia clave y lo devuelve. Cuando Alicia recibe el mensaje doblemente codificado retira su propia codificación y se lo devuelve a Benito, que entonces puede retirar su propia codificación y leer el mensaje.
Parece que el problema de la distribución de claves podría estar resuelto, porque la estratagema de la codificación doble no requiere ningún intercambio de claves. Sin embargo, hay un obstáculo fundamental para la puesta en práctica de un sistema en el que Alicia codifica, Benito codifica, Alicia descodifica y Benito descodifica. El problema radica en el orden en que se realizan las codificaciones y las descodificaciones. En general, el orden de la codificación y la descodificación es crucial, y debería obedecer la máxima «lo último que se pone es lo primero que se quita». En otras palabras, la última fase de codificación debería ser la primera en ser descodificada. En la situación anterior, Benito realizó la última fase de la codificación, de modo que esto debería ser lo primero que se descodifique, pero fue Alicia la que retiró su propia codificación primero, antes de que Benito retirase la suya. La importancia del orden se comprende más fácilmente al examinar algo que hacemos todos los días. Por la mañana nos ponemos los calcetines, y luego nos ponemos los zapatos, y por la noche nos quitamos los zapatos antes de quitarnos los calcetines: es imposible quitarse los calcetines antes que los zapatos. Debemos obedecer la máxima «lo último que se pone es lo primero que se quita».
Algunas cifras muy elementales, como la cifra del César, son tan simples que el orden no importa. Sin embargo, en los años setenta parecía que cualquier forma de codificación potente siempre debe obedecer la regla de «lo último que se pone es lo primero que se quita». Si un mensaje está codificado con la clave de Alicia y luego con la clave de Benito, entonces debe ser descodificado con la clave de Benito antes de poder descodificarlo con la clave de Alicia. El orden es crucial incluso con una cifra de sustitución monoalfabética. Imagine que Alicia y Benito tienen cada uno su propia clave, como se muestra a continuación, y observemos lo que sucede cuando el orden es incorrecto. Alicia usa su clave para codificar un mensaje dirigido a Benito, luego Benito vuelve a codificar el resultado utilizando su propia clave; Alicia usa su propia clave para realizar una descodificación parcial, y finalmente Benito trata de utilizar su propia clave para realizar la descodificación completa.
![](/epubstore/S/S-Singh/Los-Codigos-Secretos/OEBPS/Images/imagen112.jpg)
El resultado no tiene ningún sentido. Sin embargo, usted puede comprobar por sí mismo que si el orden de la descodificación se invirtiera y Benito descodificara antes que Alicia, obedeciendo así la regla de «lo último que se pone es lo primero que se quita», entonces el resultado habría sido el mensaje original. Pero si el orden es tan importante, ¿por qué pareció que funcionaba el sistema en la anécdota de la caja cerrada con candados? La respuesta es que el orden no es importante para los candados. Podemos ponerle veinte candados a una caja y quitarlos en cualquier orden, y al final la caja estará abierta. Desgraciadamente, los sistemas de cifrado son mucho más sensibles que los candados en lo que respecta al orden.
Aunque el enfoque de la caja cerrada con dos candados no funcionaría en la criptografía de la vida real, inspiró a Diffie y Hellman a buscar un método práctico para resolver el problema de la distribución de claves. Pasaron mes tras mes tratando de encontrar una solución. Aunque cada idea terminaba en fracaso se comportaron como perfectos tontos y perseveraron. Su investigación se centró en el examen de varias funciones matemáticas. Una función es cualquier operación matemática que convierte un número en otro. Por ejemplo, «doblar» es un tipo de función, porque convierte el número 3 en el número 6, o el número 9 en el número 18. Además, podemos considerar todas las formas de codificación por ordenador como funciones, porque convierten un número (el texto llano) en otro número (el texto cifrado).
La mayoría de las funciones matemáticas son clasificadas como funciones de doble vía, porque son fáciles de hacer y fáciles de deshacer. Por ejemplo, «doblar» es una función de doble vía porque es fácil doblar un número para generar un nuevo número y es igual de fácil deshacer la función y obtener otra vez el número original partiendo del número doblado. Por ejemplo, si sabemos que el resultado de doblar es 26, es muy simple invertir la función y deducir que el número original era el 13. La manera más fácil de comprender el concepto de función de doble vía es desde el punto de vista de una actividad cotidiana. El acto de pulsar un interruptor de la luz es una función, porque convierte una bombilla normal en una bombilla encendida. Esta función es de doble vía porque si se enciende el interruptor es fácil apagarlo y poner de nuevo la bombilla en su estado original.
Sin embargo, Diffie y Hellman no estaban interesados en las funciones de doble vía. Concentraron su atención en las funciones de una sola vía. Como su nombre sugiere, una función de una sola vía es fácil de hacer pero muy difícil de deshacer. En otras palabras, las funciones de doble vía son reversibles, pero las funciones de una sola vía son irreversibles. Una vez más, la mejor manera de ilustrar una función de una sola vía es desde el punto de vista de una actividad cotidiana. Mezclar pintura amarilla y azul para hacer pintura verde es una función de una sola vía, porque es fácil mezclar las pinturas, pero es imposible separarlas. Otra función de una sola vía es cascar un huevo, porque es fácil cascarlo, pero es imposible volver a poner el huevo en su condición original.
![](/epubstore/S/S-Singh/Los-Codigos-Secretos/OEBPS/Images/imagen113.jpg)
La aritmética modular, denominada a veces aritmética de reloj, es un área de las matemáticas muy rica en funciones de una sola vía. En aritmética modular, los matemáticos consideran un grupo finito de números dispuestos en círculo, de manera bastante similar a los números de un reloj. Por ejemplo, la Figura 64 muestra un reloj para el modular 7 (o mod 7), que sólo tiene los 7 números del 0 al 6. Para calcular 2 + 3, empezamos en el 2 y avanzamos 3 lugares para llegar a 5, que es la misma respuesta que en aritmética normal. Para calcular 2 + 6, comenzamos en el 2 y avanzamos 6 lugares, pero esta vez vamos más allá de número mayor y llegamos a 1, que no es el resultado que obtendríamos en aritmética normal. Estos resultados se pueden expresar de esta manera:
2 + 3= 5 (mod 7) y 2 + 6= 1 (mod 7)
La aritmética modular es relativamente simple, y de hecho la practicamos todos los días cuando hablamos de la hora. Si ahora son las nueve, y tenemos una reunión dentro de 8 horas, diremos que la reunión es a las cinco, no a las 17. Hemos calculado mentalmente 9 + 8 en (mod 12). Imagine la esfera de un reloj, mire el 9 y luego avance 8 espacios, y acabamos en el 5:
9 +8 = 5 (mod 12)
En vez de visualizar relojes, los matemáticos a menudo toman el atajo de realizar cálculos modulares según la siguiente receta. Primero, realizamos el cálculo en aritmética normal. Segundo, si queremos saber la respuesta en (mod x), dividimos la respuesta normal por x y anotamos el resto que queda. Este resto es la respuesta en (mod x). Para encontrar la respuesta a 11 x 9 (mod 13), hacemos lo siguiente:
11 x 9 = 99
99 ÷ 13 = 7, y quedan 8
11 x 9 = 8 (mod 13)
Las funciones realizadas en el ámbito de la aritmética modular tienden a comportarse de manera irregular, lo que a su vez las convierte en ocasiones en funciones de una sola vía. Esto se vuelve evidente cuando una simple función en aritmética normal se compara con la misma simple función en aritmética modular. En el primer ámbito, la función será de doble vía y será fácil invertirla; en el segundo ámbito, será de una sola vía y difícil de invertir. Como ejemplo, tomemos la función 3x. Esto significa que se toma un número x, luego se multiplica el 3 por sí mismo x veces para obtener el nuevo número. Por ejemplo, si x = 2, y realizamos la función, entonces:
3x = 32 = 3 x 3 = 9.
En otras palabras, la función convierte a 2 en 9. En aritmética normal, según aumenta el valor de x, aumenta también el resultado de la función. Por eso, si se nos diera el resultado de la función sería relativamente fácil invertir el cálculo y deducir el número original. Por ejemplo, si el resultado es 81, podemos deducir que x es 4, porque 34 = 81. Si cometemos un error y suponemos que x es 5, podríamos calcular que 35 = 243, lo que nos indica que nuestra elección de x es demasiado alta. Entonces reduciríamos nuestra elección de x a 4, y tendríamos la respuesta correcta. En resumen, incluso cuando suponemos mal podemos alcanzar el valor correcto de x, y con ello invertir la función.
Sin embargo, en aritmética modular esta misma función no se comporta tan sensatamente. Imagine que nos dicen que 3x en (mod 7) es 1, y nos piden que encontremos el valor de x. Ningún valor nos viene a la mente, porque en general no estamos familiarizados con la aritmética modular. Podríamos hacer la conjetura de que x= 5, y podríamos calcular el resultado de 35 (mod 7). La respuesta resulta ser 5, es decir, demasiado alta, porque estamos buscando una respuesta de sólo 1. Podríamos sentirnos tentados a reducir el valor de x e intentarlo de nuevo. Pero no estaríamos yendo en la dirección correcta, porque la respuesta verdadera es x = 6.
En la aritmética normal podemos probar números y darnos cuenta si nos estamos acercando a la solución o no. El ámbito de la aritmética modular no nos proporciona pistas útiles, e invertir las funciones es mucho más difícil. A menudo, la única manera de invertir una función en aritmética modular es compilar una tabla calculando la función para muchos valores de x hasta que encontremos la respuesta correcta. La Tabla 25 muestra el resultado de calcular varios valores de la función tanto en aritmética normal como en aritmética modular. La tabla demuestra claramente la conducta irregular de la función cuando se calcula en aritmética modular. Aunque elaborar semejante tabla es sólo un poco tedioso cuando se trata de números relativamente pequeños, sería terriblemente penoso construir una tabla con una función como 453x (mod 21.997). Éste es un ejemplo clásico de función de una sola vía, porque yo podría elegir un valor para x y calcular el resultado de la función, pero si le ofrezco un resultado, pongamos 5.787, usted tendría enormes dificultades para invertir la función y deducir mi elección de x. Sólo me costó unos segundos realizar el cálculo y generar el número 5.787, pero a usted le llevaría horas elaborar la tabla y calcular mi elección de x.
![](/epubstore/S/S-Singh/Los-Codigos-Secretos/OEBPS/Images/imagen114.jpg)
Después de dos años concentrándose en la aritmética modular y las funciones de una sola vía, la «tontería» de Hellman empezó a producir frutos. En la primavera de 1976 dio con una estrategia para resolver el problema de la distribución de claves. Escribiendo frenéticamente durante media hora, demostró que Alicia y Benito podían acordar una clave sin reunirse, deshaciéndose así de un axioma que había durado siglos. La idea de Hellman se basaba en una función de una sola vía de la forma Yx (mod P). Inicialmente, Alicia y Benito acuerdan valores para Y y P. Casi cualquier valor sirve, pero hay algunas restricciones, como que Y debe ser un número más bajo que P. Estos valores no son secretos, de modo que Alicia puede llamar por teléfono a Benito y sugerir, pongamos, Y = 7 y P= 11. Incluso si la línea de teléfono no es segura y la malvada Eva oye esta conversación, no importa, como veremos después. Alicia y Benito han acordado ahora la función 7x (mod 11). Ahora pueden comenzar el proceso de tratar de establecer una clave sin reunirse. Como trabajan paralelamente, explico sus acciones en las dos columnas de la Tabla 26.