TALLER DE DETECTIVES: DESCIFRANDO MENSAJES SECRETOS MARÍA CHARA [email protected] Resumen. Notas del taller para estudiantes “Taller de Detectives: descifrando mensajes secretos” dictado durante el tercer festival de matemática AniMATE π de la Facultad de Ingenierı́a Quı́mica de la Universidad Nacional del Litoral. 1. Introducción Desde hace ya mucho tiempo, el hombre ha intentado asegurar la privacidad en sus comunicaciones. La idea es asegurarse, que el mensaje que envı́a un emisor a un receptor, no pueda ser entendido ni alterado por otras personas. Una forma de mantener esta privacidad en el envı́o de mensajes, es transformando el mensaje de tal forma que resulte incomprensible para un tercero pero fácilmente descifrable por el destinatario del mensaje. Los principales problemas asociados al envı́o de mensajes son: que el emisor no tiene la seguridad, que sea solamente el receptor, quien esta recibiendo el mensaje; que el mensaje recibido por el receptor, no haya sufrido alteraciones y que el receptor tenga la seguridad, que el mensaje recibido provenga del emisor apropiado. La palabra criptografı́a es de origen griego (conjunción de kiptós que significa oculto y grapho que significa escribir) y designa al estudio de numerosas técnicas ideadas para enmascarar un texto, que originalmente tratan sobre la protección o el ocultamiento de la información frente a observadores no autorizados. El ciptoanálisis, en cambio, es el el área de estudio que se preocupa de descifrar mensajes sin conocer el método del cifrado. A través de la criptografı́a la información puede ser protegida contra el acceso no autorizado, su interceptación, su modificación y la inserción de información extra. También puede ser usada para prevenir el acceso y uso no autorizado de los recursos de una red o sistema informático y para prevenir a los usuarios la denegación de los servicios a los que sı́ están permitidos. Modernamente, la criptografı́a es la metodologı́a para proveer la seguridad de las redes telemáticas, incluyendo la identificación de entidades y autenticación, el control de acceso a los recursos, la confidencialidad de los mensajes transmitidos, la integridad de los mensajes y su no repudio. Una manera de tratar de asegurar la información, es tomar el mensaje que se desea enviar y mediante una regla apropiada esconderlo, luego enviar el mensaje cifrado al receptor, y éste último aplicando una regla inversa a la usada por el emisor, recupera el mensaje original. Como es de 1 2 MARÍA CHARA suponer, esto presupone un acuerdo entre el emisor y el receptor, con respecto a las reglas que se usarán. En la jerga de la criptografı́a, la información original que debe protegerse se denomina texto en claro o texto plano. El cifrado es el proceso de convertir el texto plano en un galimatı́as ilegible, denominado texto cifrado o criptograma. Por lo general, la aplicación concreta del algoritmo de cifrado (también llamado cifra) se basa en la existencia de una clave: información secreta que adapta el algoritmo de cifrado para cada uso distinto. Las dos técnicas más sencillas de cifrado, en la criptografı́a clásica, son la sustitución (que supone el cambio de significado de los elementos básicos del mensaje -las letras, los dı́gitos o los sı́mbolos-) y la trasposición (que supone una reordenación de los mismos); la gran mayorı́a de las cifras clásicas son combinaciones de estas dos operaciones básicas. El descifrado es el proceso inverso que recupera el texto plano a partir del criptograma y la clave. El protocolo criptográfico especifica los detalles de cómo se utilizan los algoritmos y las claves (y otras operaciones primitivas) para conseguir el efecto deseado. El conjunto de protocolos, algoritmos de cifrado, procesos de gestión de claves y actuaciones de los usuarios, es lo que constituyen en conjunto un criptosistema, que es con lo que el usuario final trabaja e interactúa. 1.1. Tipos de criptosistemas. Existen dos tipos fundamentales de criptosistemas o sistemas de cifrado: § Criptosistemas simétricos o de clave privada. Son aquellos que emplean una misma clave k tanto para cifrar como para descifrar. Presentan el inconveniente de que para ser empleados en comunicaciones la clave k debe estar en posesión tanto en el emisor como en el receptor, lo cual nos lleva preguntarnos cómo transmitirles a los participantes en la comunicación esa clave de forma segura. § Criptosistemas asimétricos o de clave pública, que emplean una doble clave (kp, kP ). kp se la conoce como clave privada y kP se la conoce como clave pública. Una de ellas sirve para la transformación de cifrado y la otra para la transformación de descifrado. Estos criptosistemas deben cumplir además que el conocimiento de la clave pública kP no permita calcular la clave privada kp. Sin la clave privada (que no es deducible a partir de la clave pública) un observador no autorizado del canal de comunicación será incapaz de descifrar el mensaje cifrado. En la práctica se emplea una combinación de estos dos tipos de criptosistemas, puesto que los criptosistemas asimétricos presentan el inconveniente de ser computacionalmente mucho más costosos que los primeros. En el mundo real se hace uso de la criptografı́a asimétrica para codificar las claves simétricas y poder ası́ enviarlas a los participantes en la comunicación incluso a TALLER DE DETECTIVES 3 través de canales inseguros. Después se codificarán los mensajes (más largos) intercambiados en la comunicación mediante algoritmos simétricos, que suelen ser más eficientes. 2. Criptosistemas simétricos Comenzaremos mirando algunos ejemplos de criptosistemas simétricos. 2.1. Transformaciones del César. Uno de los primeros métodos conocidos para esconder mensajes, es el que usaba Julio César, el cual consistı́a en sustituir cada letra por la letra que estaba una cierta cantidad de lugares más a la derecha en la abecedario (volviendo a partir desde la primera letra después de la última). Notemos que usando los 27 sı́mbolos del alfabeto, mas los sı́mbolos −, · y ?, tenemos sólo 30 transformaciones de César distintas. Si desplazamos 12 posiciones cada letra, obtenemos la siguiente tabla de alfabeto: A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z - · ? M N Ñ O P Q R S T U V W X Y Z - · ? A B C D E F G H I J K L Bajo esta transformación la palabra ENIGMA se convierte en PYTRXM. Utilizando la rueda del César, se pueden encriptar y desencriptar fácilmente muchos mensajes. L MN J K Ñ O PQR S N Ñ O T Z - · X Y ? W AB CD E · ? I D E F G B C A GH I J KL H M F Q R S T U P WX Y Z V UV Figura 1. Rueda para cifrar y descifrar mensajes utilizando transformaciones del César Si podemos describir la tranformación mediante una la fórmula matemática entonces podremos automatizar fácilmente las operaciones de cifrado y descifrado mediante la programación de algoritmos que podrán ser luego ejecutados por una computadora. 4 MARÍA CHARA Para hacer más operativo el método de Julio César, le vamos a incorporar un poco de matemática. Con este fin realicemos los siguientes pasos. Primero: Asignemos a cada sı́mbolo un número entre 0 y 29 de la siguiente manera K L M N Ñ O P Q R S T U V W X Y Z · A B C D E F G H I J - ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Segundo: Sustituyamos cada letra de nuestro mensaje, por el número asignado: E N I G M A 4 13 8 6 12 0 Por lo tanto el mensaje original, numéricamente, se verı́a ası́: 4 13 8 6 12 0 Tercero: Ahora, a nuestro mensaje numérico cifrado, apliquemos la transformación del César, “Sumar 12”: 4 13 8 6 12 0 +12 +12 +12 +12 +12 +12 16 25 20 18 24 12 Entonces la versión numérica del mensaje encriptado es 16 25 20 18 24 12 Cuarto: En nuestro mensaje numérico cifrado, sustituyamos los números por las letras correspondientes: 16 25 20 18 24 12 P Y T R X M Y por lo tanto el mensaje a enviar es PYTRXM que es el mismo que encontramos antes. Como es de suponer, el receptor para recuperar el mensaje, deberá conocer la clave en cuestión, y aplicar la regla inversa, es decir, asignar a cada letra el número que le corresponde, luego a cada número restarle 12, y finalmente sustituir cada número por su letra correspondiente. ? TALLER DE DETECTIVES 5 Al revisar con más cuidado el método descripto, nos damos cuenta que surgen algunos aspectos especiales, por ejemplo, 18 + 12 = 30 = 0 19 + 12 = 31 = 1 20 + 12 = 32 = 2 lo que está indicando que la suma que se usa en el método del César, no es la suma usual de número enteros. En efecto, la usada en este método es suma módulo 30. ¿Qué significa esto? A continuación aclaramos matemáticamente este punto. Recordemos que cuando dividimos dos números enteros a y b tenemos siempre dos enteros únicos, q y r (llamados cociente y resto) tales que a = q · b + r, con 0 ≤ r < |b|. Decimos que dos enteros x e y son congruentes módulo n (natural) si x e y tienen el mismo resto cuando los dividimos por n, es decir, si x = q1 · n + r y = q2 · n + r. y En este caso escribimos x≡y mód n o decimos que x e y son iguales módulo n. Entonces para hacer la suma de dos enteros x + y módulo n tenemos que seguir la siguiente regla: ( x+y mód n = x+y si x + y < n r si x + y ≥ n donde r es el resto de dividir a x + y por n. Por ejemplo si queremos hacer una trasformación de César sumando 25, y queremos transformar el sı́mbolo ?, tenemos que 29 + 25 = 54 ≡ 24 mód 30 pues 54 = 1 · 30 + 24 y por lo tanto ? se transforma en X. En la actualidad, este sistema no se utiliza nunca, puesto que es extremadamente inseguro, ya que basta conocer una sola equivalencia entre letras para determinar completamente la clave. En efecto, supongamos que conocemos que a una cierta letra representada por el número x le corresponde 6 MARÍA CHARA otra representada por el número y. En tal caso, la clave k puede conocerse despejándola de la ecuación x + k ≡ y mód 30 y por lo tanto puede descifrarse el texto completo. Más aún, por más que no se conozca ninguna equivalencia, se puede tratar de descifrar la clave utilizando el análisis de frecuencia, cuya idea general consiste en determinar la letra o las letras que más aparecen en un texto cifrado, pues muy probablemente corresponderán a las letras con mayor frecuencia estadı́stica del idioma en que fue redactado el texto claro. En un texto corto tal vez no se pueda hacer tal análisis, pero en este caso se puede proceder por prueba y error ya que sólo hay que probar con 30 claves diferentes. 2.2. Transformaciones multiplicativas. Volvamos al método de Julio César, donde la clave es “sumar n” para algún n, no nulo. Como una manera de variar el método de Julio César, se puede intentar cambiar la clave, “sumar” por “multiplicar”. Exploremos esta variante. Elijamos, por ejemplo, “multiplicar por 5”. En este caso la multiplicación también se hace módulo 30, es decir, seguimos la regla ( x·y si x · y < n x · y mód n = r si x · y ≥ n donde r es el resto de dividir a x · y por n. En este caso vamos a tener que: Sı́mbolo A B C D E F G H I ··· Número correspondiente 0 1 2 3 4 5 6 7 8 ··· Número multiplicado por 5 módulo 30 0 5 10 15 20 25 0 5 10 ··· Sı́mbolo cifrado A F K O T Y A F K ··· Por lo tanto, es claro que la clave de multiplicar por 5 módulo 30 no sirve. ¿Será que no se puede usar la multiplicación? ¿Se puede usar la multiplicación, pero el número 5 no se comporta bien? Veamos qué pasa si elegimos otro número, ejemplo 7. En este caso las letras, manteniendo el esquema anterior, van a quedar de la siguiente manera: Sı́mbolo A B C D E F G H I J K L M N Ñ Número correspondiente 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Número multiplicado por 7 módulo 30 0 7 14 21 28 5 12 19 26 3 10 17 24 1 8 Sı́mbolo cifrado A H Ñ U · F M S Z D K Q X B I Sı́mbolo O P Q R S T U V W X Y Z - · ? Número correspondiente 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Número multiplicado por 7 módulo 30 15 22 29 6 13 20 27 4 11 18 25 2 9 16 23 Sı́mbolo cifrado O V ? G N T - E L R Y C J P W TALLER DE DETECTIVES 7 En este caso sı́ obtuvimos una clave adecuada, ya que cada sı́mbolo se transforma en uno y sólo uno de los sı́mbolos cifrados. Entonces el sistema funciona con 7 y no con 5 Si se vuelve a probar con otros números se descubre que el método funciona bien con todos los números entre 1 y 29 que no tienen factores primos comunes con el 30, es decir, aquellos números que son coprimos (o primos relativos) con el 30. Este resultado es un caso particular de la siguiente propiedad. Proposición 1. Sean a y n enteros, con a < n. Si a y n son coprimos, entonces los siguientes números, módulo n, son todos distintos: a, 2a, 3a, 4a, . . . , (n − 1)a. Ahora bien, supongamos que se ha cifrado un mensaje usando, la clave de multiplicar por 7 (módulo 30). Ahora si un receptor recibe un mensaje cifrado, entonces para decodificar puede hacer la tabla que se ha usado para cifrar o puede tratar de encontrar la regla inversa. Por ejemplo, en la clave de sumar un entero, la regla inversa era restar ese número módulo n, pero ahora ¿por cuánto habrá que multiplicar cada número del mensaje cifrado para recuperar la versión numérica del mensaje original? Tenemos que buscar un número k tal que multiplicado por 7 módulo 30 nos de 1, éste será el inverso multiplicativo de 7 módulo 30. Si miramos en la tabla anterior vemos que el número que buscamos es el 13, es decir, en módulo 30 el número 13 es el inverso multiplicativo del número 7. Luego, para descifrar el mensaje, el receptor deberá multiplicar cada número del mensaje por 13 módulo 30 para recuperar el mensaje original. 2.3. Algunas variantes. Ya hemos visto que para cifrar la versión numérica de un mensaje se pueden usar las claves de sumar módulo 30 cualquier número entero positivo, o bien multiplicar módulo 30 por cualquier entero coprimo con 30. Una idea interesante es tratar de combinar ambos métodos. Por ejemplo, elegir un número entero positivo b, y un número a coprimo con 30, y usar como clave para encriptar el cambiar cada númreo N de la versión numérica del mensaje por aN + b módulo 30, es decir, aplicar la transformación: N −→ aN + b mód 30. La pregunta que surge naturalmente es si se comporta bien, es decir, si al aplicarla al abecedario se obtiene o no una permutación del abecedario. Como es de suponer, el problema estarı́a en el caso que existan dos letras diferentes, que con esta clave, se cifren por una misma letra. El siguiente resultado da la respuesta. 8 MARÍA CHARA Proposición 2. Sean a, b y n enteros positivos. Si a y n son coprimos, entonces los siguientes números, módulo n, son todos distintos: a + b, 2a + b, 3a + b, 4a + b, . . . , (n − 1)a + b. 2.4. Sustituciones polialfabéticas. El sistema de sustitución polialfabética consiste en elegir una palabra o frase que se constituirá la clave y se coloca tanta veces como sea necesario arriba del texto claro. Para cifrar cada letra del texto claro se observa qué letra de la clave tiene por encima, y se le aplica la transformación de César correspondiente al número de dicha letra. Ejemplo 3. Por ejemplo, supongamos que el texto claro comienza diciendo EL-SECRETO-ES y la palabra clave elegida es MICLAVE. El cifrado será entonces: M I C L A V E M I C L A V ··· ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ··· transformación correspondiente 12 8 2 11 0 22 4 12 8 2 11 0 22 ··· texto claro E L - S E C R E T O - E S ··· ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ··· clave numérica 4 11 27 19 4 2 18 4 20 15 27 4 19 ··· transformamos +12 +8 +2 +11 +0 +22 +4 +12 +8 +2 +11 +0 +22 ··· clave numérica cifrada 16 19 29 9 4 24 22 16 28 17 8 4 11 ··· texto cifrado P S ? J E X V P · Q I E L ··· clave Entonces el texto cifrado a mandar comenzará con PS?JEXVP·QIEL Observar que con éste método la letra E del mensaje original se transformó primero en P y luego en E y por lo tanto una misma letra del mensaje original puede ser representada por diferentes letras del texto cifrado y recı́procamente, una misma letra del texto cifrado puede representar diferentes letras del texto claro, lo cuál lo hace más difı́cil de quebrar. Sin embargo, este sistema no es invulnerable ya que pueden atacarse con un análisis de frecuencia más fino, y por lo tanto, tampoco se usa en la actualidad. 3. Criptosistemas asimétricos En los métodos de las secciones anteriores tenemos el problema de la distrubución de las claves. En efecto, si dos personas quieren intercambiar un mensaje secreto, el emisor debe primero codificarlo. Para ello necesita una clave, que deberá comunicar previamente al receptor. Como ésta puede ser interceptada, debrı́a a vez ser codificada, para lo cuál también necesitarı́a una clave y ası́ sucesivamente. Para arreglar este problema se puede utilizar una clave pública, que no requiere TALLER DE DETECTIVES 9 un intercambio previo y explı́cito de la clave, o se puede utilizar algo llamado intercambio de claves para acordar una clave común. 3.1. El sistema RSA. A modo de ejemplo consideremos el siguiente problema. Ejemplo 4. Supongamos que Bob, que vive en Springfield, le quiere mandar a Alicia, que vive en el Paı́s de las Maravillas, un mensaje de manera que sólo ella pueda leer su contenido. El problema es que el correo entre ambos lugares es bastante corrupto, los carteros abren y leen toda la correspondencia que no esté protegida. Sin embargo, dejan pasar paquetes que contengan objetos pero sin mensajes. ¿Cómo puede hacer Bob entonces para mandar el mensaje? Para resolver este problema, se inventó lo que hoy se conoce como criptografı́a de clave pública. Y se basa en que cada individuo de la comunicación posee dos claves propias, una pública (que cualquiera pueda conocer) y una privada (que sólo él conoce). La primera de estas claves la puede saber cualquier persona y se utiliza para encriptar los mensajes y la segunda es la única que permite desencriptar. En el ejemplo, para que Bob pueda mandar el mensaje a Alicia, deberı́a primero avisarle que le quiere mandar un mensaje. Para que esto sea posible, Alicia le envı́a por correo a Bob un candado abierto, del que sólo Alicia tiene la llave. Bob recibe el candado, escribe el mensaje, lo pone en una caja y la cierra con el candado (ahora Bob no puede leer el mensaje, puesto que está dentro de la caja y él no tiene la llave para abrir el candado). Bob le envı́a la caja a Alicia y ella la abre con su llave. En este ejemplo, el candado es la clave pública de Alicia, y la llave de la cerradura es su clave privada. La idea detrás de este ejemplo es la que se utiliza para el criptosistema RSA, que es uno de los más populares sistemas de clave pública, y debe su nombre a las iniciales de los apellidos de sus autores Ron Rivest, Adi Shamir y Len Adleman quienes en 1977 describieron el algoritmo. 3.2. Intercambio de claves. La idea de utilizar una clave pública para el intercambio de claves fue introducida en 1976 por dos especialistas norteamericanos en criptografı́a, W. Diffie y M. Hellman, que idearon un sistema basado en ciertas funciones de la aritmética modular que permiten acordar una clave entre dos partes sin necesidad de que ésta sea transmitida. Un ejemplo ilustrativo es el siguiente. Ejemplo 5. Supongamos ahora, que el servicio de correos se ha vuelto más corrupto aún. Los carteros no sólo leen toda la correspondencia sino que también abren y roban todos los objetos que no están protegidos. Lo único que no pueden abrir son las cajas protegidas con candado. 10 MARÍA CHARA Supongamos que Bob le quiere enviar a Alicia un collar como regalo de cumpleaños. Si envı́a el regalo en una caja sin candado se lo van a robar. Si utilizan el método anterior, el candado nunca le llegará a Bob puesto que los carteros se lo robarán. ¿Cómo puede hacer Bob, utilizando únicamente el servicio de correos, para enviar el collar a Alicia? La idea detrás de la resolución de este problema es lo que se conoce como intercambio de claves. Para que el collar le llegue a Alicia, Bob deberá hacer lo siguiente. Primero tendrá que poner el collar en una caja y ponerle un candado (del cual sólo él tiene la llave) y mandárselo a Alicia. Alicia cuando reciba el paquete no va a poder abrirlo, puesto que no tiene la llave del candado, pero puede ponerle a la caja otro candado, uno de ella, del cuál sı́ tenga la llave y mándarselo de nuevo a Bob (ahora con dos candados). Bob al recibir la caja puede quitar su candado puesto que tiene la llave, pero no puede abrirla pues todavı́a tiene el candado de Alicia. Finalmente le envı́a, nuevamente, la caja a Alicia y ella con su llave puede abrir la caja y obtener el collar. 3.3. ¿Y la matemática dónde aparece? Los dos últimos problemas, tienen una formulación matemática que es sencilla de describir ya que utilizan herramientas básicas, pero muy poderosas, de la aritmética modular, y pueden ser implementados computacionalmente. En el ejemplo del criptosistema RSA en el que Bob le quiere mandar un mensaje codificado a Alicia, para fabricar sus claves, cada usuario elige dos números primos grandes p y q y hace público su producto n = p · q. Luego elige al azar un número e entre 1 y φ(n) (donde φ(·) denota a la función de Euler), coprimo con φ(n) que también hace público y calcula su inverso módulo φ(n), al que llama d y lo guarda en secreto. Luego cada usuario tiene una clave pública kP = (n, e) y una clave privada kp = (p, q, d). De esta forma se generan las claves. Veamos ahora cómo se utiliza el sistema. Supongamos que la clave pública de Alicia es kP (A) = (n, e) y que Bob ya la conoce. Como primer paso, debe convertir el mensaje a enviar en un número natural x. Luego, tiene que calcular y = xe mód n que será el mensaje cifrado y envı́arle este número y a Alicia. Usando su clave privada, Alicia puede calcular x = y d mód n lo que le permite decodificar el mensaje, es decir, conocer x. La seguridad de este sistema está basada en la dificultad de factorizar números de gran tamaño. Para el intercambio de claves, supongamos que denotamos con A a Alicia y con B a Bob, que desean acordar una clave k para luego utilizarla para cifrar mensajes con algún sistema. El algoritmo consiste en los siguientes pasos: TALLER DE DETECTIVES 11 A y B eligen un número primo p y un generador g del grupo multiplicativo Z∗p . Estos dos valores son públicos. A elige un número 1 < a < p − 1 y le envı́a a B g a mód p. B elige un número 1 < b < p − 1 y le envı́a a A g b mód p. B calcula (g a )b mód p = g ab mód p. A calcula (g b )a mód p = g ba mód p. La clave secreta que sólo comparten A y B es g ab mód p. Ejemplo 6. Supongamos que p = 79, g = 3 y que A y B han elegido a 19 y a 28 como sus respectivas claves privadas. En este caso, la clave será k = (319 )28 ≡ 3728 ≡ 45 mód 79. Un intruso que conoce g y p y que intercepte g a mód p y g b mód p no podrá descubrir g ab mód p porque es incapaz de descubrir el valor de a y b, a menos que resuelva un logaritmo en un campo discreto de números, ya que necesitarı́a descubrir los valores de a o b en las ecuaciones u = g a ó v = g b . Afortunadamente para la seguridad del sistema, resolver este problema tiene un orden exponencial a p y por lo tanto no se conoce ningún algoritmo eficiente que permita despejar el exponente en las ecuaciones anteriores. Sin embargo, el intercambio de Diffie-Hellman es sensible a un ataque de “hombre en el medio” (“man in the middle”) y por lo tanto no puede utilizarse sin una autentificación de usuario.