MOOC El algoritmo RSA


Lección 8. Ataque por factorización
Dr. Jorge Ramió Aguirre - 9/10/2012 

En la lección 8 se realizará una breve introducción al problema de la factorización de números grandes y su utilidad dentro del sistema de cifra RSA, profundizando eso sí en los ejemplos prácticos. No pretende ir más allá en cuanto a los aspectos puramente matemáticos del problema en cuestión porque dicho tema, y otros de las matemáticas discretas y su aplicación en la criptografía, serán tratados en profundidad en un curso posterior de este MOOC Crypt4you. No obstante, si deseas profundizar en ello puedes consultar, por ejemplo, el documento Fundamentos matemáticos del método RSA del profesor Hugo Scolnik de la Universidad de Buenos Aires.

Si deseas descargar las diapositivas del curso en formato pptx animado o bien en pdf, puedes hacerlo desde esta dirección.

Este icono y el fondo de color amarillo te indican que entras en una zona de prácticas.

Este icono y el fondo de color azul te indican que entras en una zona de cuestiones para reflexionar e investigar.

El tiempo recomendado para el seguimiento de esta lección, la realización de sus prácticas y ejercicios, así como la búsqueda de información en la red sobre los temas abiertos planteados al final de cada apartado, es de dos semanas.

Temario

Objetivos

  • 1. Comprender el principio en el que se basa la seguridad del sistema RSA.
  • 2. Comprobar la importancia de la elección de los primos p y q en el diseño de las claves para evitar ataques por factorización.
  • 3. Obtener conclusiones sobre la fortaleza del sistema RSA y su posible caducidad ante ataques futuros.

Software que vas a utilizar en esta lección


APARTADO 8.1. LAS FUNCIONES DE UN SOLO SENTIDO Y LA CRIPTOGRAFIA

Como hemos visto en la Lección 1, la criptografía asimétrica tiene sus fundamentos de fortaleza en el uso de las llamadas funciones unidireccionales o de un solo sentido. De esta manera, Diffie y Hellman habían usado en 1976 el problema del logaritmo discreto para poder distribuir una clave entre dos usuarios separados físicamente, logrando de esta manera enviar dicha clave de una forma computacionalmente segura a través de un canal que, por definición, sabemos que es inseguro. De igual forma, Rivest, Shamir y Adleman hacen uso en 1978 del problema de la factorización entera como elemento de seguridad o fortaleza en el diseño de su algoritmo RSA.

Para aprender más sobre las funciones unidireccionales y otras cosas en las que éstas tienen una importante aplicación como son las funciones hash, te recomiendo veas la Lección 14 "Funciones unidireccionales y hash" de la Enciclopedia de la Seguridad de la Información Intypedia.

¿En qué se basa esta seguridad que aquí definimos como computacional? Recuerda que seguridad computacional es la fortaleza que tiene un algoritmo al que para atacarle el atacante debe enfrentarse a un problema que le va a significar una gran cantidad de cálculos y, por ende, un tiempo muy grande de cómputo. En criptografía y con las claves actuales, estaríamos hablando de muchos miles de millones de años. Pero claro, todo esto depende de la capacidad de cálculo que tengamos ... en el fondo, y tal vez un poco alegremente, hablamos de dinero.

Para responder a la pregunta del párrafo anterior, digamos que las funciones unidireccionales son aquellas que en un sentido son muy fáciles de calcular, es decir requieren de pocas operaciones, pero que en sentido contrario si no se tiene un secreto o trampa, es muy complejo resolverlas porque requieren una cantidad inmensa de cálculos para encontrar su solución.

Recordando lo visto en la Lección 1, harás ahora una simple práctica para que compruebes en persona la dificultad de factorizar números enteros.

Práctica 8.1.1

Haciendo uso de una calculadora, resuelve estos productos p x q de números primos de 2, 3, 4 y 5 dígitos:
  a) 13 x 31
  b) 113 x 131
  c) 1.013 x 1.031
  d) 11.113 x 11.131
Observa que aunque en cada operación los operandos han aumentado en un dígito, ha sido fácil y muy rápido su cálculo.
Con la calculadora no nos damos cuenta pero si hubieses hecho esos cálculos a mano, obviamente habrías tardado más en llegar al resultado a medida que los operandos eran mayores, pero ese incremento de trabajo habría sido proporcional al tamaño de la entrada; en otras palabras el comportamiento sería similar a uno lineal. En realidad a estos problemas se les denomina polinomiales o de tipo P.
Ahora vas a hacer la operación inversa, es decir debes factorizar estos cuatro productos en sus dos primos. Aunque hay algoritmos mucho más eficientes que el que te propongo, vas a hacer uso de la Criba de Eratóstones usando nuevamente sólo la calculadora para números de 2, 3, 4 y 5 dígitos:
  a) 35
  b) 703
  c) 5.561
  d) 60.491
¿Qué ha pasado cuando la entrada era más grande?
Si en los últimos dos apartados has decidido no continuar después de algunos minutos, puedes encontrar no obstante rápidamente los primos p y q de dichos números compuestos mediante el software factor.exe o bien Fortaleza de Cifrados.
Lo que has experimentado en esta práctica es que te has enfrentado a un problema denominado No Polinomial o de tipo NP. Si en cada operación de factorización te aumento sólo en un dígito el tamaño de la entrada, el tiempo de cómputo que vas a necesitar no aumenta proporcionalmente como sucedía en el caso anterior de la multiplicación, sino que tiene un comportamiento exponencial.

En la dificultad de resolver este problema en un tiempo determinado se basa, como ya se ha comentado en lecciones anteriores, la fortaleza del algoritmo RSA.

Te recuerdo que la clave privada d la podía calcular solamente su dueño mediante el cálculo del inverso multiplicativo de la clave pública e en el cuerpo trampa Φn = (p - 1)(q - 1). Es decir, para poder usar Φn es necesario conocer los valores de los primos p y q, que son secretos y ambos muy grandes, iguales o mayores que 512 bits.

Cuestiones para reflexionar e investigar:
1. ¿Qué podrías decir sobre las operaciones bit necesarias de un computador para realizar los productos y factorizaciones que has calculado en la Práctica 8.1.1?
2. ¿Se te ocurre algún ejemplo de función de un solo sentido en la vida real? No es tan difícil, hay muchas ...


APARTADO 8.2. ALGORITMOS DE FACTORIZACION ENTERA

Por lo que se ha comentado en la entradilla de esta lección, en este apartado solamente se hará una breve presentación de los algoritmos más conocidos para afrontar el problema de la factorización entera, sin profundizar en conceptos ni en ecuaciones matemáticas.

Los algoritmos de factorización pueden dividirse en dos grupos, los denominados de propósito general y los de propósito específico. Independientemente de ello, entre los más conocidos se encuentran:

  1. Método de factorización directa o criba de Eratóstenes
  2. Método de Fermat
  3. Método de Euler
  4. Método de Dixon
  5. Williams p+1 Factorization Method
  6. Método de Pollar rho
  7. Método de Pollar p-1
  8. Método de las fracciones continuas
  9. Método de las curvas elípticas
  10. Método de la criba numérica

El mejor algoritmo conocido a la fecha, el de la criba numérica o General Number Field Sieve GNFS, tiene asociada una complejidad representada en la siguiente expresión para un número de b bits:

Como puedes observar, el factor b que representa en bits el tamaño del número a factorizar, se encuentra como un elemento del exponente y por ello el carácter exponencial de este problema, como vas a comprobar en esta lección.

En el siguiente trabajo de Connely Barnes de la Universidad de Oregón de fecha diciembre de 2004, Integer Factorization Algorithms, encontrarás un interesante estudio comparativo entre los siguientes algoritmos: método de factorización directa, método de Fermat, método de Pollard rho, método de Brent y método de Pollard p-1.

Por su interés, se muestra más abajo la figura 1 del documento. Observa la escala logarítmica de las ordenadas en la gráfica.

Número de pasos según el algoritmo de factorización

Figura 1 de la página 12 del documento Integer Factorization Algorithms de Connely Barnes

Cuestiones para reflexionar e investigar:
1. ¿Cuál de los algoritmos presentados es el más antiguo de los indicados y cuál es el más moderno?
2. De acuerdo a la figura anterior, ¿qué algoritmo es el menos eficiente?


APARTADO 8.3. EJEMPLOS PRACTICOS DE FACTORIZACION

En este apartado vamos a comprobar el comportamiento no polinomial del problema de la factorización entera para claves RSA de diferentes tamaños, desde 10 dígitos (33 bits) hasta 90 dígitos (297 bits), usando el software factor.exe.

La siguiente tabla muestra los valores del módulo n separados cada uno en 10 dígitos, producto de los dos primos p y q que se desean encontrar al factorizar n. A partir de los 60 dígitos la separación se realizará de cinco en cinco dígitos pues ya es muy significativo el comportamiento de una curva exponencial.

Valores del cuerpo n = p x q que se desea factorizar, en formato decimal
10 dígitos 6384329603
20 dígitos 37898577272681469353
30 dígitos 461385432750893547024930873479
40 dígitos 2854234617331252680802693649120361233813
50 dígitos 35421923062244554951243462450002521261335776714419
60 dígitos 437610495647307157001072669764047918009218116295581647528901
65 dígitos 11640646193039951929832971988054197479161937220812816707953189181
70 dígitos 3583789913020477384239508976983261788340229625300830452087617770773939
75 dígitos 899860202281103733904853835097291544406726946866166258013445125433485561231
80 dígitos 65666185406214674912036156868849798957525212130336139657926553289114114640370373
85 dígitos 1230230645604630726004851947131604313160468353546777397194993013659679459817729459009
90 dígitos 249466747125192798859465494967943591682682693901288852594696933237244570457253508108210113

Introduciendo estos valores en el software factor.exe, que ya se ha usado en este curso, y con una máquina PC Hewlett-Packard con CPU Intel Core i7-2600 CPU 3.40 GHz, una RAM de 8.0 GB y sistema operativo de 64 bits, se obtienen la siguiente tabla y gráfica.

Tiempos requeridos para la factorización del módulo n
10 dígitos (33 bits) 0,01 segundos
20 dígitos (66 bits) 0,03 segundos
30 dígitos (99 bits) 0,05 segundos
40 dígitos (132 bits) 1,4 segundos
50 dígitos (165 bits) 4,3 segundos
60 dígitos (198 bits) 25,7 segundos
65 dígitos (215 bits) 92,4 segundos
70 dígitos (231 bits) 438 segundos
75 dígitos (248 bits) 1.723 segundos
80 dígitos (264 bits) 5.461 segundos
85 dígitos (280 bits) 14.680 segundos
90 dígitos (297 bits) 67.150 segundos

Gráfica del problema de la factorización entera

Observa que el último valor de 67.150 segundos corresponde a un tiempo igual a 18 horas, 39 minutos y 10 segundos. En la siguiente figura se muestra una captura de pantalla cuando el programa entrega el valor de p y q pasado ese tiempo.

Captura de pantalla del programa factor.exe para una clave de 90 dígitos

Te recomiendo hagas este ejercicio en tu ordenador. Tienes los comandos necesarios, programas .bat adecuados para el cálculo del tiempo de ejecución y más información en este enlace.

Práctica 8.3.1
En esta práctica vas usar el software factor.exe para atacar dos claves RSA y posteriromente encontrar la clave privada d a partir del conocimiento solamente de la clave pública n y e que se indican, factorizando ese módulo n:
1. Ataque 1: n = 297240981923141721738067950563107725849673889821878776340809; e = 1999.
2. Ataque 2: n = 643590535502220839951864707825089693683144561318250505739519366732215705459; e = 101.
3. ¿De qué tamaño en bits eran las claves atacadas y los valores de p y q encontrados?
4. ¿Cuánto tiempo has tardado en factorizar los dos módulos?
5. En cada caso, genera la clave RSA con el software ExpoCrip para encontrar la clave privada.

Claves RSA con primos demasiados cercanos

Como ya se ha comentado en la lección 2, en RSA se recomienda que los primos p y q estén separados algunos bits. ¿Qué sucedería si elegimos primos p y q muy cercanos? La respuesta es que en este caso el algoritmo de Fermat sería muy eficiente porque resuelve la factorización en muy pocos pasos. Y es precisamente lo que ha sucedido en el ejemplo anterior en que factorizamos números compuestos de 10 hasta 90 dígitos, pero en este caso los valores de p y q eran precisamente primos consecutivos. Compruébalo.

Para la clave RSA cuyo módulo n era de 90 dígitos el programa factor.exe ha tardado casi 20 horas en factorizarlo, pero si se hubiese usado el algoritmo de Fermat la solución a ese problema habría sido casi inmediata como lo veremos a continuación.

Esta era la clave RSA de 90 dígitos (297 bits) del ejemplo anterior con sus valores en decimal y su conversión con Dec2Hex para usarlos en genRSA:
  p = 499466462462889292700096245572889152567727697
  q = 499466462462889292700096245572889152567727729
  n = 249466747125192798859465494967943591682682693901288852594696933237244570457253508108210113

Conversión de valores de la Clave RSA 90 dígitos con Dec2Hex para usarlos en genRSA

La generamos manualmente con genRSA, usando e = 131 (0x 83) y obtenemos esta clave:

  p = 0x 166598033b71b5c684031b82966169ed2d5651
  q = 0x 166598033b71b5c684031b82966169ed2d5671
  n = 0x 01F59E71DB08499907A84EE46ACD68BEE564D41BB51023D09AB619B3ECE2840F5789153F4FC1
  e = 83
  d = 0x 01736D8140796F2AF60953D22BE838104825876E767517AFDDB444FC5AADE2D6ACA575DE0F2B

Clave RSA de dígitos (297 bits) del ejercicio generada con genRSA

Con el mismo programa elegimos Ataque por factorización y le indicamos que ejecute solamente 1 vuelta, obteniendo de forma inmediata lo siguiente:

Ataque por factorización de Fermat que prospera en el primer intento

Hemos bajado de 20 horas de cómputo a sólo microsegundos, simplemente usando un algoritmo apropiado para primos muy cercanos.

Como es lógico, el algoritmo de Fermat ha necesitado hacer solamente un cálculo, una única vuelta, porque no existe ningún número primo entre p y q, ya que éstos son primos consecutivos. No obstante, si utilizamos el algoritmo de Fermat cuando los primos p y q están suficientemente separados, como en realidad debe ser en una clave RSA, su rendimiento es muy pobre y es mejor usar otros algoritmos tal y como lo hace el programa factor.exe.

Vamos a profundizar en este tema mediante otro ejemplo.

Práctica 8.3.2
Usando primero el programa factor.exe y luego Fortaleza de Cifrados, realiza un ataque por factorización del módulo a esta clave RSA con primos de 100 bits cada uno y relativamente cercanos, aunque no correlativos como en el ejemplo visto anteriormente:
  n = 437610495647369551336533004629577846576256680060159623373471
  e = 65537
Para el caso del software Fortaleza de Cifrados, haz la operación con los tres algoritmos implementados: Pollard rho, Dixon y Fracciones continuas. Con las opciones Pollard rho y Fracciones continuas, te aviso que puedes tardar horas ...
Una vez encontrados p y q, convierte estos valores en hexadecimales con el software Dec2Hex y genera con genRSA esa clave RSA siendo e = 0x 010001. Hecho esto, usa genRSA para realizar un ataque por factorización que usa el algoritmo de Fermat. Observa que también tarda muy poco en encontrar la solución.
Pregunta 1:
¿Qué ha sucedido con los tiempos de cómputo al factorizar n con los programas genRSA, factor y Fortaleza de Cifrados?
Pregunta 2:
¿Qué diferencias observas entre los primos p y q encontrados?

Solución:

1. Para realizar la factorización del módulo n con el programa factor, usamos el programa por lotes timer.bat que se encuentra en el trabajo Ejercicio práctico del problema de la factorización entera: entendiendo la fortaleza de RSA ya indicado, con el comando timer factor NUM, obteniendo un tiempo de 37 segundos como se observa en la siguiente figura.

Factorización de n mediante el programa factor que requiere 37 segundos

2. Intentamos factorizar ahora el módulo n con el programa Fortaleza de Cifrados.

2.1. Con el método Dixon, encontramos la solución en tan sólo 3 segundos, como se muestra en la figura.

Factorización de n mediante el programa Fortaleza y método Dixon que requiere 3 segundos

2.2. Con los métodos de Pollard rho y Fracciones continuas, tarda horas ... (no medido).

3. Por último, con los primos p y q ya encontrados, los convertimos a hexadecimal con Dec2Hex y generamos la clave solicitada con genRSA como se muestra en la figura.

Clave RSA generada con los dos primos de 100 bits encontrados y e = 0x 010001

Hacemos luego el ataque por factorización, indicando que ejecute 2.000 vueltas, y tarda también 3 segundos en encontrar la solución tras 1.705 operaciones, como se observa en la siguiente figura:

 

Factorización de n mediante el programa genRSA y método Fermat

Pregunta 1:

Lo que hemos podido comprobar con los tiempos de cómputo en esta práctica es que, en función de los primos utilizados, unos algoritmos son más eficientes que otros. No obstante, para números primos grandes y además lo suficientemente separados entre sí -como normalmente deben serlo los dos primos aleatorios de 512 bits o más en claves RSA actuales- lo adecuado es utilizar varios algoritmos de forma secuencial, por ejemplo como hace el programa factor.exe:
  1ro: Usa la fuerza bruta para buscar primos pequeños
  2do: Luego utiliza el método de Brent
  3ro: Luego sigue con el método de William
  4to: Luego sigue con el método de Pollard (p-1)
  5to: Y finaliza con el método de la criba cuadrática polinomial múltiple

Pregunta 2:

Hemos obtenido dos primos de 30 dígitos:
p = 661521349351105000008725817463
q = 661521349351199998787654568217
Como se observa, los 13 primeros dígitos son iguales (6615213493511) y por tanto ambos primos difieren sólo en los últimos 17 dígitos. El primero de ellos se encuentra en la zona baja (0500 ...) de ese tamaño y el segundo en la zona alta (9999 ...). La diferencia entre ambos es igual al número de 17 dígitos 94.998.778.928.750.754, noventa y cinco mil billones.

En el ejemplo anterior si la diferencia entre p y q es menor que esos 17 dígitos, la respuesta es casi inmediata. Pero si, por el contrario, fuese mayor que 18 dígitos, ya no existe esa ventaja al aplicar Fermat. Puedes comprobarlo. Esto pone de manifiesto que, en general, no existe una forma eficiente de factorizar un número entero si no se conoce nada acerca de él, en tanto algunos métodos son más eficientes que otros en ciertos casos como lo acabas de comprobar. Como ya se ha dicho, el uso secuencial de diversos algoritmos es lo más adecuado.

Cuestiones para reflexionar e investigar:
1. ¿Qué característica particular tenían los primos p y q para valores de n entre 10 y 90 dígitos utilizados en el ejemplo de este apartado? ¿Usarías este tipo de parejas de primos para crear una clave RSA?
2. Siguiendo la gráfica que se ha mostrado para el ejemplo de este apartado, ¿cuánto crees tardaría aproximadamente el programa factor.exe en esa misma máquina en encontrar una clave de 95 bits y una de 100 bits?
1. Si generas al azar dos primos de 512 bits cada uno, ¿qué probabilidad habría de que los primos p y q fuesen muy cercanos?


APARTADO 8.4. ESTADO DEL ARTE EN LA FACTORIZACION ENTERA

El problema de la factorización entera es uno de esos problemas en matemáticas clasificados como abiertos; es decir, siempre puede aparecer un nuevo algoritmo que mejore las prestaciones de los anteriores o bien que presente ciertas ventajas frente a aquellos en casos especiales.

Lo que es cierto es que a la fecha nadie ha logrado quitarle ese característica de problema NP o comportamiento exponencial que hemos comprobado en esta lección.

Para no profundizar en demasía en este tema, en tanto será tratado en un próximo curso de este MOOC, solamente presentaremos de manera breve dos ejemplos de los últimos avances en la factorización entera: el último número factorizado en el RSA Factoring Challenge con 768 bits y el trabajo del Dr. Hugo Scolnik. Como caso anecdótico pero relacionado con este tema, veremos la noticia sobre el último primo titánico encontrado por el Dr. John Perretta de unos 300.000 dígitos, casi un millón de bits, precisamente muy cerca de la fecha en que se publica esta Lección 8.

Como puede leerse en el siguiente enlace, en el año 2007 RSA da por terminado ese desafío, poco después de que en el año 2005 se factorizasen números de 193 dígitos (640 bits) y 200 dígitos (663 bits).

Ya fuera de concurso a estos premios en metálico, el 12 diciembre de 2009 un equipo de seis instituciones de investigación lideradas por Thorsten Kleinjung logra factorizar el mayor número RSA hasta el momento: 768 bits.

En aquel año en que RSA anuncia que no sigue activo ese desafío en cuanto a la entrega de premios en dinero, el Dr. Hugo Scolnik de la Universidad de Buenos Aires imparte una conferencia dentro de la segunda edición del Día Internacional de la Seguridad de la Información DISI 2007 celebrado en la Universidad Politécnica de Madrid, España, con el título Avances en la factorización entera, donde presenta un novedoso esquema de ataque y que, para el caso concreto del número del desafío RSA 640 roto en noviembre de 2005 con una capacidad de cálculo estimada de 30 años de CPU de 2.2GHz, era capaz de romperlo en sólo algunos minutos con un simple notebook como puede comprobarse en el vídeo de dicha conferencia.

Puedes profundizar en esta línea leyendo las diapositivas utilizadas en dicha conferencia y en algunos documentos escritos con motivo de dicha charla, como éste de D. Fernando Acero publicado en Kriptópolis cuya lectura te recomiendo.

Todo lo que tiene que ver con los números primos tiene una gran trascendencia por el uso que hacemos de ellos en algoritmos de seguridad. Por ello, también es noticia cuando se descubre el primo más grande conocido a la fecha. Este es el caso de la noticia aparecida recientemente, cuya fuente es de finales de septiembre de 2012, en que el investigador norteamericano John Perretta encuentra el mayor primo titánico conocido de casi un millón de bits: 4737 x 2985810 + 1.

Por último, ¿qué pasará cuando tengamos sistemas de ordenadores cuánticos suficientemente estables y a unos costes razonables?

En ese caso, nos encontraremos con el algoritmo de Shor, capaz de factorizar un número n en un tiempo O((log n)3) por lo que todas las claves RSA actuales serían débiles. El funcionamiento de este algoritmo ya se demostró en 2001 al descomponer el número 15 en sus factores 3 y 5 usando un ordenador cuántico con 7 qubits.

Si te interesa este apartado de la computación cuántica, te recomiendo la conferencia "Cómo los ordenadores cuánticos aniquilarían la criptografía actual" que presentó recientemente en la UPM la Dra. Verónica Fernández Mármol, investigadora del Instituto de Seguridad de la Información ISI en el Consejo Superior de Investigaciones Científicas CSIC de Madrid, en el VIII Ciclo de Conferencias UPM TASSI. Puedes descargar las diapositivas de esa conferencia desde el enlace indicado.

Cuestiones para reflexionar e investigar:
1. ¿Qué podría ocurrir si se llega a encontrar un método rápido, eficiente y de bajo coste para factorizar grandes números?
2. ¿Qué opinas sobre el hecho de RSA dejara sin efecto económico el desafío de factorización a partir de 2007?
3. Si prosperasen ataques a claves RSA actuales, ¿se podrían incrementar indefinidamente los tamaños de los primos p y q?
4. En 2001 se factorizó el número 15 con una máquina de 7 qubits. ¿Con cuántos qubits se está trabajando en la actualidad?
5. ¿Qué crees que pasará con la criptografía actual e Internet dentro de unos 20 ó 25 años cuando se supone comience la era de la computación cuántica?


APARTADO 8.5. TEST DE EVALUACION DE LA LECCION RSA08

En las siguientes 5 preguntas, elige la respuesta correcta.

1. Los primos p y q de una clave RSA deberían estar:

a) Lo más cercanos posible
b) Separados algunos dígitos
c) Lo más lejanos posible

2. El problema de la factorización entera tiene un comportamiento:

a) Lineal
b) Exponencial
c) Aleatorio

3. Números de 50, 60 y 70 bits se factorizan en 12, 75 y 300 segundos. Para 80 y 90 bits el tiempo podría ser:

a) 2.000 y 900.000 de segundos
b) 1.400 y 6.500 segundos
c) 600 y 900 segundos

4. El problema de la factorización entera se caracteriza, entre otras cosas, porque:

a) Todos los algoritmos de ataque tardan prácticamente lo mismo
b) Los algoritmos de ataque lo hacen en un tiempo polinomial
c) No existe un algoritmo eficiente si no se conoce nada sobre ese número compuesto

5. Si se encontrase un algoritmo rápido y de bajo coste computacional para factorizar números de 1.000 bits:

a) El sistema RSA estaría ante una amenaza inminente
b) El sistema RSA podría subsistir al menos 5 años más
c) El sistema RSA estaría ante una posible amenaza


Ir a: [Portada c4y]    [Lección 7] [Índice] [Lección 9]