• No se han encontrado resultados

Utilizar un ordenador para codificar un mensaje

In document los codigos simon singh - CRIPTOGRAFIA.pdf (página 155-158)

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» *. (En inglés, esta pronunciación suena igual que «ass-key», lo que se presta a numerosos significados humorísticos: «clave del burro», «llave del culo», etc. *)

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 milenarios principios de sustitución y transposició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 utilizando la tabla siguiente:

Tabla Números binarios ASCII para las letras mayúsculas A 100 0001 N 100 1110 B 100 0010 O 100 1111 C 100 0011 P 101 0000 D 100 0100 Q 101 0001 E 100 0101 R 101 0010 F 100 0110 S 101 0011 G 100 0111 T 101 0100 H 100 1000 U 101 0101 I 100 1001 V 101 0110 J 100 1010 W 101 0111 K 100 1011 X 101 1000 L 100 1100 Y 101 1010 M 100 1101 Z 101 1011

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

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 = 1001000 1000101 1001100 1001100 1001111 Texto Cifrado = 0110001 0001010 0110011 0001100 0110111 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 O 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 H E L L O

Mensaje en ASCII 1001000 1000101 1001100 1001100 1001111 Clave = DAVID 1000100 1000001 1010110 1001001 1000100 Texto Cifrado 0001100 0000100 0011010 0000101 0001011

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í.

In document los codigos simon singh - CRIPTOGRAFIA.pdf (página 155-158)