Protección de Datos con Matemáticas elementales: Sistema RSA Lorenzo Javier Martín García1, Juan Antonio Velasco Mate2 1 Dpto. Matemática Aplicada a las Tecnologías de la Información, Escuela Técnica Superior de Ingenieros de Telecomunicación, Universidad Politécnica de Madrid, Ciudad Universitaria 28040 Madrid [email protected] 2 Profesor I.E.S. La Albuera de Segovia y Profesor Asociado de Universidad. Departamento de Matemática Aplicada Escuela de Ingenieria Técnica de Informática. Universidad de Valladolid (Campus de Segovia) [email protected] Resumen. Algunos conceptos de las llamadas matemáticas elementales, como el de divisores de un numero, números primos,….no se reflejan en los contenidos curriculares de los últimos cursos de la E.S.O. ni de Bachillerato y sin embargo, tienen aplicaciones muy de actualidad y claramente motivadoras para nuestros alumnos, como el método RSA para la protección de datos e información que se usa por muchas aplicaciones de Internet. El objetivo de esta comunicación es mostrar dichas aplicaciones cercanas y familiares y que sirvan como actividades de motivación en el estudio de las matemáticas para los alumnos de la E.S.O. y Bachillerato Palabras clave: ¿Qué matemáticas hay que enseñar en el siglo XXI?, representaciones binarias, aritmética modular, teoría de números, criptología. 1. INTRODUCCIÓN En el relato La corbeta Gloria Scott, Sherlock Holmes descubre que el mensaje: “La negociación de caza con Londres terminó. El guardabosques Hudson ha recibido lo necesario y ha pagado al contado moscas y todo lo que vuela. Es importante para que podamos salvar con cotos la tan codiciada vida de faisanes” está cifrado y que su contenido no tiene nada que ver ni con moscas ni con faisanes. La privilegiada mente de Holmes le hace observar que “empezando por la primera y tomando cada tercera palabra” se desvela el auténtico aviso: “La caza terminó. Hudson lo ha contado todo. Vuela para salvar la vida”. Utilizando la jerga matemática actual, las posiciones, an, ocupadas por las palabras significativas del mensaje cifrado anterior siguen una progresión aritmética de diferencia 3 y responden a la relación an = 1 + 3(n-1) para n = 1, 2,…, 12. Desconocemos si los presos que transportaba la corbeta Gloria Scott rumbo a Australia a mediados del siglo XIX conocían las progresiones aritméticas, pero es seguro que sabían utilizarlas y sacarles beneficio ya que gracias a este simple objeto matemático diseñaron un sistema de encriptación con una clave muy sencilla de recordar y que les permitió comunicarse entre sí de una forma segura durante muchos años. En el libro divulgativo Los Códigos Secretos escrito por Simon Singh, se hace un ameno repaso al arte y la ciencia de la Criptografía desde el antiguo Egipto hasta Internet y se pone de manifiesto que ocultar mensajes selectivamente no es un capricho de esquizofrénicos sino otra manera de fortalecer la seguridad de las personas y sus bienes Son muchas las situaciones –tanto reales como de ficción- en las que se han utilizado o utilizan estrategias de encriptación. Casi todas ellas tienen en común una relativa simplicidad cuando se conoce su clave, y una desalentadora dificultad cuando se desconoce. Los que no sabemos la canción, no podemos quitarnos las ratas de encima, pero para el flautista es muy sencillo. 2. CRIPTOSISTEMAS Un criptosistema es un conjunto de estrategias que permiten a un usuario ocultar sus datos de forma que sólo se puede acceder a ellos por medio de una clave, resultando que sin ella, los datos se encuentran en un formato irreconocible y no pueden ser utilizados. Así, los usuarios pueden mantener ciertas dosis de tranquilidad si el mensaje cifrado llega a manos de terceras personas que desconocen la clave, aunque conozca el procedimiento de encriptación empleado. Es relativamente fácil cifrar un mensaje para que nadie sea capaz de descifrarlo. No es extraño encontrar comunidades que han desarrollado un lenguaje reducido que sólo es entendido por los miembros de esa comunidad y que es empleado para que los vecinos más próximos no se enteren de lo que dicen entre ellos. Lo importante de los criptosistemas no es que sus estrategias permanezcan ocultas, sino que siendo públicas y conocidas, impidan que el mensaje sea comprendido por alguien a quien no va dirigido. La utilización masiva de canales no seguros -como los que proporciona Internet- para transferir información de todo tipo, hace necesario que los datos se cifren mediante algún mecanismo antes de ser enviados por caminos desconocidos. Hasta hace poco tiempo y debido a los medios disponibles, la mayoría de los sistemas criptográficos utilizaban claves secretas y eran de tipo simétrico, de tal manera que las claves de cifrado y descifrado eran idénticas o, al menos, una de ellas podía deducirse de la otra de manera simple. Uno de los grandes problemas de los algoritmos simétricos –que poco tiene que ver con la Criptología- es el intercambio y almacenamiento de claves entre el emisor y el receptor del mensaje. ¿Cómo se envía la clave que permite descifrar los próximos mensajes? ¿Cómo se mantiene en lugar seguro? ¿Cómo se actualizan las claves?... Cuando se recibe una tarjeta de crédito, el número secreto y el plástico nunca van juntos. En parte, para reducir el impacto de los problemas relacionados con la gestión de claves, se diseñaron otros criptosistemas, conocidos como cifrados asimétricos o de clave pública, que se caracterizan por emplear dos claves, una pública –al alcance de quien quiera disponer de ella- y otra privada –solamente conocida por el receptor del mensaje-. Además, los algoritmos de cifrado y descifrado también son públicos. La primera implementación de este esquema fue realizada por R.Rivest, A.Shamir y L.Addleman en 1978 y se conoce como algoritmo RSA. La velocidad de cifrado de datos mediante los criptosistemas simétricos suele ser bastante mayor que la alcanzada con los criptosistemas de clave pública. Para conseguir una alta eficiencia del sistema de cifrado en la transmisión de datos por canales poco seguros, se suelen emplear sistemas híbridos, en los cuales el emisor cifra la información por medio de un criptosistema simétrico y envía la clave al receptor usando un criptosistema de clave pública. 3. RSA 3.1. Claves Una clave RSA está compuesta por tres números enteros, denotados n, e y d. El par (n, e) forma la clave pública, mientras que el par (n, d) constituye la clave privada. La relación entre las claves es e d = 1 mod Φ(n), siendo Φ(n) la función indicatriz de Euler, definida como el total de números enteros positivos, menores que n y primos relativos a n. Conocida la clave pública (n, e), la clave privada d puede calcularse si se conoce el valor de Φ(n). Esta circunstancia obliga a escoger n de tal manera que la determinación del valor de Φ(n) sea impracticable, si el único dato disponible es el número n. Actualmente no se conoce forma alguna de calcular Φ(n), salvo a partir de los factores primos de n, por lo que el problema de hallar Φ(n) se reduce al problema de la descomposición en factores primos de n junto con la aplicación de las siguientes propiedades: 1. Φ(pr) = (p-1) pr-1 si p es primo y r es natural. 2. Φ(p q) = (p-1) (q-1) si mcd(p, q)=1. La esencia y eficacia del sistema RSA radica en que la factorización de grandes números, cuyos factores primos también sean muy grandes, requiere ingentes cantidades de procesamiento inabordables en estos momentos. Para elegir la clave n con garantías de seguridad, se eligen dos números primos grandes, p y q, considerando como entero grande a uno que tenga 100 o más cifras. El producto de estos dos números primos será la clave n. El valor Φ(n) es conocido -por nosotros- ya que Φ(n) = Φ(p q) = (p-1) (q-1) y prácticamente imposible de calcular para quien no conozca los primos p y q. La clave e es un primo cualquiera, menor Φ(n) y con longitud similar a las de p y q. Finalmente, la clave d es un número relativamente primo a e módulo Φ(n) y que puede escogerse para facilitar los cálculos de descifrado del mensaje. Este valor es la clave privada y solamente será utilizado por el receptor del mensaje. 3.2. Cifrado y descifrado El método RSA se aplica en redes de ordenadores donde los datos son cadenas de bits que –para facilitar su procesado- se convierten inmediatamente en grandes números con los que se pueden realizar operaciones simples. Si se quiere enviar el mensaje m -que es un número natural, estrictamente menor que npor un canal no seguro y se conoce la clave pública del receptor, (n, e), el proceso de encriptación RSA consiste en elevar m a la potencia e, módulo n, c = me mod n. El número, c, así obtenido es el que se envía por el canal, con la tranquilidad de que quien lo intercepte no será capaz de recuperara el mensaje inicial m. El verdadero destinatario del mensaje conoce la clave privada d y puede utilizarla para descifrar el mensaje recibido, c, ya que cd mod n = (me mod n)d mod n = med mod n = m. Para descifrar el mensaje encriptado, basta elevar el mensaje recibido a la potencia d, módulo n y el resultado de esta operación es el mensaje original. Si el número a enviar es mayor que n, se divide en bloques menores que n y se encripta cada bloque por separado. 3.3. Conversión de texto a número La mayor parte de los mensajes no son numéricos sino de texto. Antes de utilizar un sistema de encriptación que requiera operaciones numéricas, hay que convertir la cadena de símbolos en uno o varios números que serán los que se sometan a dicho proceso de ocultación. Estas conversiones previas dependen de muchas circunstancias. A continuación se describe una que aprovecha las ventajas del Sistema de Cálculo Simbólico Maple. Maple utiliza para la representación interna de caracteres el código ASCII (American Standard Code for Information Interchange) extendido de 8 bits y que consiste en una tabla donde cada símbolo está asociado biunívocamente a una cadena de 8 bits razonablemente estructurada para facilitar las conversiones de forma rápida. Por ejemplo, el código ASCII del carácter “a” es 01100001 que -interpretado como un número binario- coincide con el número decimal 97 y el del carácter “L” es 76. Un mensaje de texto puede convertirse en un número natural representado en base 256 en donde los coeficientes de la potencias de 256 son los códigos ASCII de los caracteres del mensaje. Así, el número 24908 es la representación numérica de la cadena “La” porque ASCII(L) + ASCII(a).256 = 76 + 97. 256 = 24908. Aunque los números que se manejen sean muy grandes, no dejan de establecer algunas limitaciones. Como los números que se encriptan son menores que n, el número de cifras de su representación en la base 256 no puede superar la parte entera del logaritmo en base 256 de n, Máximo cifras = E[log256(n)], luego el número máximo de caracteres que se pueden transmitir por este método tampoco puede superar este valor. Esta limitación no supone ningún obstáculo cuando hay que proteger mensajes muy largos, porque basta dividir el mensaje en bloques de longitud máxima y transmitir dos, tres o los números que corresponda. 4. CASO PRÁCTICO Aunque en la educación primaria los niños estudian la descomposición de un número en factores primos, no es un problema sencillo de resolver cuando el número es grande e inmanejable. Aunque existen números primos tan grandes como queramos, encontrar uno de una longitud determinada no es tarea sencilla. Los siguientes números son primos de 100 cifras proporcionados por Maple, p=77383407046543907458423427180951304896867178610920194764481482253026631 62706614788427742450886419627 q=67144334816150536558101838913548827717647086097949670168190883763554706 36913220755810204231972598683 e=99972813191502208921211551994685356934250680846282753759229480233567978 40563801177293898292091019683 Parece claro que no es sencillo comprobar que verdaderamente lo son utilizando lápiz y papel. El producto de p por q es un número de 200 cifras y una de las claves públicas: n=51958573919476068497842825018609777548371828096379899259306752151485813 5067245489072402843476930476679834804850462216439354756873301727483093051 92309055326087796506229014353115391215632165748805551241. La función de Euler del número n es el producto (p-1)(q-1) y también tiene 200 cifras Φ(n)=51958573919476068497842825018609777548371828096379899259306752151485 8135067245489072402843476930476535307062987767772422829490778801594868578 78721422068832820559904570880553495555671394219065946532932. Por tratarse de un número primo, mcd(e, Φ(n))=1. El número e es la segunda clave pública y la clave privada, d, se calcula resolviendo la ecuación modular e.d = 1 mod Φ(n). Una solución de 200 cifras proporcionada por Maple es d=49362938685870157568908558250389718042175404383458082147742804455130535 8382576572492925446195042463372544039442528923470543607169741432331091443 15262589438314424596911298905957114387102932875410241607. Con estos números, podemos recibir mensajes de cualquier persona que utilice nuestras claves públicas y las aplique según la estrategia RSA. Nosotros no podemos enviar mensajes cifrados a menos que sepamos las claves públicas de nuestro interlocutor. De aquí viene el nombre de métodos asimétricos. La parte entera del logaritmo en base 256 del número n es log256(n) = 82, luego basta un número para cifrar un mensaje de menos de 82 caracteres. El mensaje que Holmes consiguió descifrar tiene 69 caracteres, considerando los signos de puntuación y los espacios en blanco. Con un solo número de 200 cifras o menos, se puede encriptar. Manteniendo el orden, los códigos ASCII del mensaje son M= 76, 97, 32, 99, 97, 122, 97, 32, 116, 101, 114, 109, 105, 110, 243, 46, 32, 72, 117, 100, 115, 111, 110, 32, 108, 111, 32, 104, 97, 32, 99, 111, 110, 116, 97, 100, 111, 32, 116, 111, 100, 111, 46, 32, 86, 117, 101, 108, 97, 32, 112, 97, 114, 97, 32, 115, 97, 108, 118, 97, 114, 32, 108, 97, 32, 118, 105, 100, 97 y el número natural cuya representación en base 256 está dada por los anteriores números, es el siguiente número de 166 cifras, menor que n: m=5608438604615314991210813012638336543005082962230541240650030235178883 9604452726096443485275358745426387632754890876303590057617118920391057835 37455592689271396393292. Hasta el momento no se ha ocultado el mensaje porque cualquier persona puede invertir el proceso de transformación de texto a número. El mensaje encriptado es la potencia e-ésima de m módulo n c=30009116834378285524680135437800415301297669746591659174486154737829031 3638988475016737377073841475039508191788380011869218521963257440882088264 3775080463007786595480633247213064693925940427912660136. Parece claro que sin la ayuda de un ordenador, Holmes no sería capaz de descifrar este mensaje utilizando su razonamiento analítico. A pesar de ello, descifrar el criptograma es tan sencillo como elevar el mensaje recibido, c, a la potencia d-ésima módulo n y recuperar el texto a partir del número obtenido. 5. REFLEXIONES En la actualidad, la práctica totalidad de la información se transmite en formato digital. La protección de datos se reduce a la salvaguarda de grandes cadenas de ceros y de unos y la intervención humana se reduce a emplear adecuadamente las utilidades que proporcionan los propios ordenadores que generan y manejan esos objetos. La demanda de protección de datos no sólo viene de sectores específicos, sino que toda la sociedad reclama que no se difunda su Documento Nacional de Identidad o su dirección. Los conceptos matemáticos empleados en los métodos de encriptación que se han relacionado anteriormente son: • Progresiones aritméticas, • Números primos, • Números primos relativos, • Función indicatriz de Euler, • Aritmética modular, • Potenciación, • Logaritmo en base 256, • Representación de números naturales en base 256, • Representación binaria. Ninguno presenta dificultades conceptuales insalvables para los estudiantes de Secundaria o Bachillerato y sin embargo permiten articular estrategias que protegen los datos de manera satisfactoria. No siempre lo más eficaz es lo más rebuscado. La Teoría de Números es una de las ramas más intuitivas de las Matemáticas y de las más complejas. Los enunciados de sus problemas abiertos tienen la peculiaridad de ser inmediatamente entendidos por todos, mientras que las resoluciones de muchos de ellos llevan siglos esperando que alguien las rescate del lugar donde están perdidas. Debido a que tanto los números naturales como los números primos son infinitos, la potencia de cálculo de los ordenadores no es una garantía suficiente para establecer propiedades que involucren a todos los números naturales, resultando necesarios los resultados teóricos que no dependan de la operativa ya que algunos algoritmos que formalmente son eficaces no pueden implementarse de manera eficiente. CONCLUSIONES Internet propicia la transferencia de datos de todo tipo. No solamente es imprescindible que lleguen a su destino sino que no sean interceptados por agentes con malas intenciones. Una manera de proteger los datos es enmascararlos mediante técnicas criptológicas. Debido a que la información está digitalizada, se emplean estrategias numéricas modulares muy simples de desarrollar pero muy complicadas de descifrar si no se tiene la información necesaria. En el método RSA, el desconocimiento de la clave privada hace imposible –a día de hoy- recuperar el mensaje original aunque se intercepte el mensaje encriptado. Algunas técnicas empleadas en Criptología utilizan conceptos de las Matemáticas Elementales. Estos conceptos suelen explicarse en la Educación Primaria pero no se reflejan suficientemente en los contenidos curriculares de los últimos cursos de la E.S.O. ni de Bachillerato. Estas aplicaciones de actualidad –como el método RSA- son claramente motivadoras para nuestros alumnos. Creemos que en las asignaturas de Matemáticas de Secundaria o Bachillerato deben explicarse teóricamente y desarrollarse ejemplos como el presentado. Esto puede y debería hacerse sin caer en el formalismo ni en la abstracción, con los objetivos de que los alumnos conozcan técnicas muy utilizadas y preparar a los más interesados para que -en niveles superiores- relacionen estas técnicas con las correspondientes estructuras matemáticas. REFERENCIAS [1] Doyle, A.C. “Todo Sherlock Holmes”. Cátedra. Estella, 2008. pp. 152-168. [2] Singh, S. “Los códigos secretos”. Debate/Círculo de lectoresi. Madrid, 2000. [3] Martín, L. y Velasco, J.A. “Representaciones binarias: Códigos cíclicos”. Actas 9º Congreso Castellano-Leonés de Educación Matemática. Soria, 2006. [4] Ballesteros, F. y Martín, L. “Una aproximación a la determinación de las claves del RSA mediante Maple. Actas de la VII Reunión española sobre Criptología y seguridad de la información. Oviedo, 2002, pp. 97-108. [3] i http://www.telefonica.net/web2/socylemsoria Los derechos de este libro han sido liberados por su autor y puede descargarse gratuitamente en la dirección http://www.simonsingh.net/Code_Book_Download.html