Protección de datos
Criptografía La necesidad de ocultar lo enviado en un mensaje para evitar que alguien no autorizado lo llegue a conocer es muy antigua. Se atribuye a Julio César un método muy simple de encriptación, sustitu- yendo cada letra en el mensaje por la que se encuentra en el abecedario tres lugares después.
Criptografía Este pequeño programa permite ver lo antes expuesto.
Criptografía El problema fundamental en la criptografía es la necesidad que tienen emisor y receptor del mensaje en ponerse de acuerdo en la forma de cifrado y en la clave.
Durante mucho tiempo se pensó que no había posibilidad de intercambiar claves sin enviarlas por algún medio seguro, para evitar que pudieran ser interceptadas comprometiendo así la seguridad de la comunicación.
Pero en la década de los 70 del siglo XX dos matemáticos norteamerica- nos, Whitfield Diffie y Martin Hellman, demostraron que dos personas po- dían acordar una clave sin necesidad de entrevistarse y usando una línea de transmisión insegura en la que pudiera haber escuchas espiando, sin que estos descubrieran dicha clave.
Muy poco tiempo después se elaboró un nuevo sistema de criptografía que ni siquiera necesita intercambiar una clave. Dicho sistema difiere de los que se venían utilizando hasta el momento en el hecho de que, en lugar de una clave que se usa tanto para encifrar como para descifrar un mensaje, se necesitan dos distintas.
De las dos claves necesarias, una, la llamada clave pública, debe ser cono- cida por todos aquellos que quieran mandar un mensaje cifrado a la persona en cuestión. Por tanto, cada persona debería publicar su clave pública como lo haría con su número de teléfono si es que quiere recibir mensajes encriptados.
En cambio, guardará su clave privada, que es la que le servirá para descifrar los mensajes que reciba encriptados con su clave pública. Este sistema fue desarrollado por tres matemáticos, Rivest, Shamir y Adleman, por lo que se conoce como método RSA.
El procedimiento que mostramos a continuación pone de manifiesto la posibilidad de enviar mensajes de forma segura a través de un canal de comunicación que puede estar sometido a escuchas.
Criptografía Tomamos nuestro mensaje en el que cada letra - en mayúsculas - se ha sustituido por el correspondiente código ASCII, dándonos como resultado un número. En el ejemplo que estamos considerando, el mensaje a transmitir es: HAY QUE BUSCAR UNA PALABRA
Criptografía Se ha elaborado una pequeña aplicación que permite realizar la tarea anterior de forma fácil.
Criptografía El número resultante es Nótense los números 32 en rojo. Corresponden a los espacios entre pa- labras, ya que el código ASCII del es- pacio es 32.
Criptografía A continuación buscamos el número primo inmediatamente siguiente al número anterior, y lo llamamos a. Para ello también hay elaborada una aplicación
Criptografía a= Está 8 unidades por encima del número formado por los códigos ASCII de las letras de nuestro mensaje.
Criptografía Ahora buscamos un número primo suficientemente grande, por ejemplo de 70 cifras. Podemos buscar el que está inmediatamente por encima del número
Dicho número es b= Multiplicando a y b se obtiene el número
Este número se lo enviamos a nues- tro corresponsal, que elige otro número primo grande y lo multiplica por el número que ha recibido, devolviéndonos el resultado. Si el número que eligió es el c=
El producto que nos devuelve es
Al recibir este número, lo dividimos por b – y la división debe ser nece- sariamente exacta – y el resultado se lo reenviamos. Es el número
Él ahora lo divide por c y obtiene Restando el 8 que también le enviamos al principio queda
¿Está convencido de la bondad del método? ¿Es seguro? Desgraciadamente, no lo es. Hay un paso que compromete la seguridad. Vamos a verlo en esquema, sin escribir los números que hemos estado enviando.
Partimos de un número m que es nuestro mensaje. Buscamos un número primo a por encima de m, y otro número primo b. Enviamos el producto a*b. Aunque lo intercepten no pueden obtener a, pero el escucha guarda a*b. Nuestro corresponsal busca un número primo grande c y nos envía el producto a*b*c.
El escucha que nos espía en la línea de comunicación toma el número a*b*c, y dividiéndolo por a*b descubre c. Nosotros recibimos a*b*c, lo dividimos por b y devolvemos a*c. Nuestro corresponsal divide el número recibido por c y obtiene a, y como también le enviamos al principio la diferencia entre a y m, recupera el mensaje m. Pero lo mismo puede hacer al espía, ya que conoce c.
¡Nuestro esquema no funciona! Si hubiéramos podido elegir el mismo número primo grande b para nosotros y para nuestro corresponsal, la cosa funcionaría. Bastaría mandarle el número a*b y la diferencia entre a y m para que pudiera recuperar el mensaje. El espía, incapaz de des- componer en factores a*b, no podría.
Pero, como demostraron Diffie y Hellman, es posible acordar una clave con nuestro corresponsal – en nues- tro caso el número b – sin que un escucha en la línea pueda calcular dicho número a pesar de que tengamos que intercambiar datos numéricos. Veamos como.
Elegimos un número primo muy grande p, y un número g que usualmente se toma igual a 3 ó 5. También convenimos con nuestro corresponsal que usaremos una función que es la siguiente: para cada número natural x, el valor de la función será el resto de dividir por p. Todos estos datos los enviamos a través de una línea que puede ser insegura, pero no importa que sean conocidos.
P ara ver como funciona el sistema, elegiremos como número p uno pequeño, por ejemplo p = 223, y g=3. En realidad, para asegurarnos de que sea imposible descubrir la clave, p debería tener al menos 300 cifras. Ahora nosotros elegimos un número, que mantendremos secreto, por ejemplo el 17. El resto de dividir entre 223 es 194, y se lo enviamos a nuestro corresponsal.
Él ha elegido otro número secreto, por ejemplo 22, y nos envía el resto de la división de entre 223, que es 89. Nosotros tomamos este número, lo elevamos a 17 y nos quedamos con el resto que da al dividirlo por 223, que es 37. Él toma el 194 que le enviamos, lo eleva a 22 y se queda con el resto de dividirlo por 223.
¿Adivinan que obtiene? Sí, también 37. Siendo como es un número primo, lo tomaremos como el b que buscábamos. Si no lo fuera, tomaría- mos el número primo siguiente, y éste sería el empleado para codificar nuestro mensaje.
Toda la fuerza del sistema reside en la práctica imposibilidad de calcular el número 17 o el 22 a partir de los restos 194 y 89 y del número primo p cuando este es realmente grande. De esta forma hemos podido acordar el valor del número primo b, y enviare- mos a nuestro corresponsal a*b. De aquí deducirá el mensaje.
Sin embargo, no intentemos utilizar el número b para enviar otro mensa- je, pues entonces un escucha en la línea lo podría calcular fácilmente. Cada vez que se quiera enviar un mensaje, hay que elegir una nueva clave, si usamos el método que hemos descrito.
Toda la gracia del sistema radica en el uso de una función-trampa, en la que es muy fácil ir en un sentido pero muy difícil en el inverso.