Proteccion de Datos con Sistema RSA

Anuncio
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
Descargar