SlideShare una empresa de Scribd logo
Vulnerabilidad en claves criptográficas asimétricas mediante
                      factorización de números semiprimos


                               José Antonio Vidal Sampedro

                              correo-e: voz@vidalsampedro.com


                Resumen. Se expone un nuevo método que demuestra la
                vulnerabilidad de una serie de números primos comprendidos en
                una franja numérica que se demuestra insegura a la hora de
                generar claves para algoritmos de clave asimétrica. El resultado
                lleva a la conclusión de que la franja considerada como insegura
                coincide, en gran parte, con la aconsejada habitualmente como
                segura para algoritmos tan empleados como el RSA. A través de
                este método que se designará como Método de Desdoblamiento
                de la Función (MDF), se expondrá como localizar la franja
                insegura y se estudiará la relación con otros métodos de
                factorización ya conocidos.
                A raíz de esto, se propone un nuevo método de trabajo a la hora
                de factorizar un número semiprimo, distinto de los habituales y
                basado en alternar métodos de factorización diferentes según la
                franja numérica en la que nos encontremos.
                Se expondrá, asimismo, cómo pueden conjugarse distintos
                métodos en la búsqueda de los factores primos que componen
                un número semiprimo, base de muchos algoritmos criptográficos
                de clave asimétrica. Este trabajo presenta una nueva técnica de
                factorización que ayudará a optimizar la seguridad de las claves
                empleadas y a mejorar la criptografía computacional.



1   Introducción

El intento de factorizar números semiprimos ha alcanzado un gran auge en la era actual, en la
que se hace un esfuerzo cada vez mayor por garantizar la seguridad de los datos encriptados
con algoritmos que usan claves con este tipo de números, entre ellos el tan extendido RSA
(Rivest, Shamir y Adleman) creado en 1978.

Antiguamente el esfuerzo por factorizar respondía simplemente al puro afán matemático de
desentrañar problemas que se creían “intratables” debido al esfuerzo que suponían. Ilustres
matemáticos dedicaron tiempo a este problema, siendo el más célebre Pierre de Fermat
(Beaumont, Francia, 1601 - Castres, id, 1665) , el cual propuso un algoritmo todavía usado
hoy en día y que es la base de otros algoritmos desarrollados posteriormente.

Algoritmos más actuales son muy usados hoy en día, como el Rho de John Pollard que usa la
aritmética modular como base para encontrar posibles factores recorriendo los restos de las
divisiones con una frecuencia parecida a la letra griega rho [ ρ ].

Y otros algoritmos apuntan a constituirse como la base para destruir toda la seguridad
conocida hasta el momento, como el “Algoritmo cuántico de Shor” de Peter Williston Shor (New
York City, USA, 1959). Este algoritmo ha sido probado ya con máquinas cuánticas de unos
pocos qbits, pero falta ver su desarrollo futuro en máquinas mayores, aunque apunta a ser el
algoritmo que plantee el mayor problema a los criptógrafos para encontrar un nuevo método
de asegurar los datos. Este algoritmo consta de dos partes, una tradicional basada en el típico
método de Euclides, y otra basada en la mecánica cuántica que usa la Transformada de Fourier


                                              1
para buscar frecuencias y encontrar el factor. Es también un algoritmo probabilístico, al igual
que el de Pollard, y habrá que esperar para ver cómo se desenvuelve con números muy
grandes.
2 Base de la encriptación asimétrica con números semiprimos


Factorizar un número producto de dos primos constituye, hasta el momento, un problema
imposible de resolver en un tiempo polinómico, porque todos los algoritmos conocidos y
usados hasta el momento suelen emplear alguno de estos dos métodos: uno es recorrer todos
los posibles factores (descartando con cribas algunos números para ganar tiempo en la
búsqueda de la solución), y el otro es usar métodos probabilísticos.

Por ello el RSA es por ahora seguro, debido a la longitud empleada y a que los métodos
probabilísticos se vuelven inútiles para claves del tamaño del RSA.

De hecho, actualmente se considera segura una clave RSA si tiene una longitud de al menos
768 bits, si bien se recomienda el uso de claves no inferiores a 1024 bits.

Por lo tanto, aunque cabría esperar que los tiempos para encontrar una solución al problema
mejorasen con la potencia cada vez mayor de las máquinas (Ley de Moore), surge el nuevo
reto de que los números empleados para ocultar la información en algoritmos tipo RSA son
cada vez mayores.



3   Demostración


Con este nuevo método que aquí se expone, al que se hará referencia en adelante como
Método de Desdoblamiento de la Función (MDF), se pretende demostrar que existe una franja
de factores vulnerables y su aplicación en temas de criptografía y factorización de números
semiprimos.


       3.1 Rango de factores vulnerables encontrados mediante el método de Fermat


Con carácter previo a exponer el MDF, se analizará el método ideado por Pierre de Fermat para
encontrar los factores de un semiprimo.
Se toma como ejemplo un número muy pequeño para poder explicarlo de forma gráfica,
pudiendo extrapolarse los resultados a números más grandes.
El número seleccionado para la demostración del método es el 87 (resultado de multiplicar los
factores primos 3 x 29).
Para ello se usan dos números, a los que se llamará:
_RAIZ (será la aproximación de la raíz cuadrada del número al entero superior más próximo)
_RESTO (será la diferencia entre _RAIZ - número, y será número=87 en este caso).


Como √87 = 9.327379053, entonces :


_RAIZ = 10
_RESTO = 10-87 = 13


Se ve como a partir del número _RAIZ=10 e incrementando (_RAIZ + 1) sucesivamente, se


                                              2
llega a un número (en este caso 16 = 10+6) cuyo cuadrado menos 87 tiene un resto cuya raíz
cuadrada es un entero.




En la gráfica el "número que acoge" está representado por el total de los cuadros de cada
bloque, y el resto ((10+n)-87) de color gris claro. Cuando el resto es exacto (es un
cuadrado), se ha encontrado un factor n para el cual se puede factorizar 87 en primos enteros
ya que:




(operaciones para las 5 primeras iteraciones y se recuerda que _RAIZ = 10):
paso 1: (10+1) = 121   |   121-87 = 34    |       √34 = 5,8309 (se continúa, ya que no es un entero)
paso 2: (10+2) = 144   |   144-87 = 57    |       √57 = 7,5498 (se continúa, ya que no es un entero)
paso 3: (10+3) = 169   |   169-87 = 82    |       √82 = 9,0553 (se continúa, ya que no es un entero)
paso 4: (10+4) = 196   |   196-87 = 109       |    √109 = 10,4403 (se continúa, ya que no es un entero)
paso 5: (10+5) = 225   |   225-87 = 138       |    √138 = 11,7473 (se continúa, ya que no es un entero)



(operaciones para la última iteración n= 6, que es la que interesa):


                                                              3
paso 6: (10+6) = 256 | 256-87 = 169 | √169 = 13 (se encuentra un entero) puede
verse en la gráfica anterior como los cuadros gris claro del bloque 6, correspondientes al resto,
miden 13 filas x 13 columnas)
ahora se halla el factor:
13 - n (para n=6) = 7
10 - 7 = 3 (que es un factor de 87)


Se han necesitado n=6 pasos para llegar al entero usando este método, cuando se podría
haber llegado en n=3 pasos si simplemente se hubiese dividido 87/n.
Como se puede comprobar, el método empleado por Fermat no ha sido el idóneo para
factorizar este número, ya que sus factores están alejados de √87. Este método es óptimo
cuando los factores están próximos a la raíz cuadrada.


Lo que ahora interesa es la sucesión de pasos en este método, que se puede representar por la
función:


z =   √ ( ( _RAIZ +n )  −número )

donde, a base de repetidas iteraciones, se usa este algoritmo para probar n y hallar z tal que z
sea un entero.


Haciendo unas pocas operaciones básicas se puede llegar a esta nueva función, donde x será
uno de los factores primos del número semiprimo:


       ( _RAIZ−x )  −_RESTO
n =                                  [ec.1]
                2· x


Se tiene en cuenta que x es un entero y que n es un entero y que lo único que se quiere hallar
es un entero.




Se opera de nuevo y se despeja x para obtener esta función:




x = _RAIZ + n ±        √ 4 · (_RAIZ + n ) − (4 · número)    [ec.2]
                                       2



Los resultados de esta ecuación son los dos valores que, multiplicados entre sí, dan el número
semiprimo a factorizar. Hay que recordar que uno de los factores de un número semiprimo
siempre existe dentro de la raíz cuadrada del número, siempre y cuando no sea el mismo
factor multiplicado por sí mismo, que es ella misma, lo cual no es viable en números que se
van a emplear como claves criptográficas.



                                                4
De nuevo se toma un ejemplo, pero esta vez se usará un número un poco más grande, el
4387, que es el resultado del producto de los 2 primos 41 x 107.




Como √4387 = 66,23443213, entonces :


_RAIZ = 67
_RESTO = 67-4387 = 102


y se dibuja la gráfica de la función




Puede verse que para n=7 existe un punto de corte de la función con los ejes de abscisas y
ordenadas para x=41, que es uno de los factores del número 4387.


En este caso sí ha sido rentable usar el método de Fermat, pues en n=7 pasos se halla un
factor, comparado con los n=41 que serían necesarios si se fuese dividiendo 4387 entre n.


       3.2   Método de Desdoblamiento de la Función (MDF)


El método que constituye el objeto de este proyecto, el Método de Desdoblamiento de la
Función (MDF), optimiza la búsqueda de factores en franjas en las que el método de Fermat no
resulta adecuado.




                                             5
Los puntos en color azul y amarillo, indicados en la gráfica, son los valores de n para los que se
encuentra una x tal que x es un factor primo del número 4387.
En este caso, usando la ec.2, correspondiente al método de Fermat, se encuentra el factor
primo x=41 para n=7.
Sin embargo, para la ec.5 usando MDF, se encuentra el factor primo x=41 para n=3.
El punto magenta Acotamiento corresponde a _RAIZ (en este caso _RAIZ=67). Entre el eje Y y
este punto tiene que encontrarse un factor.
Se puede ver cómo evolucionan las funciones. El eje X es el valor más bajo para n=0 en el
caso de la ec.2 y a medida que aumenta n, la curva aumenta hacia la izquierda, hacia el eje Y.


Puede apreciarse en la gráfica como el número 4387 escogido para este ejemplo no puede
tener ningún factor entre _RAIZ (Acotamiento) y el punto de corte de la función (ec.2) con el
eje X (cuyo valor es 67-√102); es decir, no tiene factores entre 57 (≈ 67-√102) y 67, ya que se
necesitarían valores negativos para n y no es el caso usando esta ecuación.
Se puede apreciar que a cada iteración de n en un algoritmo, el esfuerzo computacional crece
de manera análoga a la gráfica de la función.
Aquí es donde se observa que es útil el MDF, ya que descompone la función y traza de nuevo
una curva muy próxima al eje X, con lo que el esfuerzo computacional decrece de nuevo y
pueden encontrarse valores para n muy bajos que descubran un factor primo del número
4387.




                                                7
La ecuación anterior [ec.2]         x = _RAIZ + n ±      √ 4 · (_RAIZ + n ) − (4 · número)
                                                                          2


puede ser "desdoblada" del siguiente modo:


                                  (_RAIZ - 2 x)  - _RESTO
         ((2 · _RAIZ) - 3 x ) +
                                              x
 n=                                                              [ec.3]
                                    2


Ahora el numerador de la parte derecha de la ecuación puede representarse como dos
funciones independientes, una a la izquierda del signo "+" y otra función a la derecha del signo
"+"; es decir, se representarán en la gráfica estas dos nuevas funciones:


                                                                              (_RAIZ - 2 x)  - _RESTO
 n = (2 · _RAIZ - 3 x )              [ec.4]              y            n=
                                                                                          x
[ec.5]


Puede verse que la parte izquierda de la ecuación [ec.2] es la media de estas dos ecuaciones
[ec.4] y [ec.5], ya que se divide entre 2 en la parte derecha.


La ecuación 4 es una recta que será representada en color rojo y la ecuación 5 será
representada por la curva de color verde en la gráfica siguiente. Se representará la ecuación 2
en color negro como se ha hecho anteriormente.




                                                     6
De nuevo se toma un ejemplo, pero esta vez se usará un número un poco más grande, el
4387, que es el resultado del producto de los 2 primos 41 x 107.




Como √4387 = 66,23443213, entonces :


_RAIZ = 67
_RESTO = 67-4387 = 102


y se dibuja la gráfica de la función




Puede verse que para n=7 existe un punto de corte de la función con los ejes de abscisas y
ordenadas para x=41, que es uno de los factores del número 4387.


En este caso sí ha sido rentable usar el método de Fermat, pues en n=7 pasos se halla un
factor, comparado con los n=41 que serían necesarios si se fuese dividiendo 4387 entre n.


       3.2   Método de Desdoblamiento de la Función (MDF)


El método que constituye el objeto de este proyecto, el Método de Desdoblamiento de la
Función (MDF), optimiza la búsqueda de factores en franjas en las que el método de Fermat no
resulta adecuado.




                                             5

Más contenido relacionado

PPTX
Polinomios interpolantes
PPSX
Metodos numericos tema 3
PPTX
Algoritmo simplex
PDF
Solución Numérica de Ecuaciones no Lineales:Métodos cerrados
PPT
Metodos numericos2
PPT
Revista Analisis Numerico
PPT
Matematica computacional
PPTX
Introducción a los Métodos Numéricos
Polinomios interpolantes
Metodos numericos tema 3
Algoritmo simplex
Solución Numérica de Ecuaciones no Lineales:Métodos cerrados
Metodos numericos2
Revista Analisis Numerico
Matematica computacional
Introducción a los Métodos Numéricos

La actualidad más candente (20)

PDF
metodo-de-diferencias-divididas
PDF
Oviedo ief variaciones
PDF
Interpolación polinómica
DOCX
Revista análisis numerico 1
PPTX
Métodos de bisección
DOCX
Metodo de biseccion en matlab
PPTX
Compresion graficos
PPT
Recursividad
PDF
Leccion evaluativa 3 Metodos Numericos
PDF
Interpolación Polinómica
DOCX
Introduccion a la teoria de interpolacion
PDF
laboratorio1 de diniz
PDF
13894544 metodos-numericos-para-ingenieria (1)
PPTX
Interpolacion Lineal
DOCX
La integral definida
PPT
Metodos abiertos
PDF
La integral definida
PDF
Reconocimiento unidad 3 Metodos Numericos
DOCX
metodo-de-la-falsa-posicion
PPT
Complejidad Computacional
metodo-de-diferencias-divididas
Oviedo ief variaciones
Interpolación polinómica
Revista análisis numerico 1
Métodos de bisección
Metodo de biseccion en matlab
Compresion graficos
Recursividad
Leccion evaluativa 3 Metodos Numericos
Interpolación Polinómica
Introduccion a la teoria de interpolacion
laboratorio1 de diniz
13894544 metodos-numericos-para-ingenieria (1)
Interpolacion Lineal
La integral definida
Metodos abiertos
La integral definida
Reconocimiento unidad 3 Metodos Numericos
metodo-de-la-falsa-posicion
Complejidad Computacional
Publicidad

Similar a Factorización de números semiprimos (20)

PDF
Quadratic Sieve, algoritmos y ejemplos
PPTX
Crypt4you. Leccion02 curso rsa
PPTX
Leccion02 rsa v3 crypt4you
PPT
Matematicas para la Olimpiada
DOCX
Trab dennis informatica
DOCX
Trab dennis informatica
PPTX
FACTORIZACION
PPTX
Leccion08 rsa crypt4you
DOC
Los 20 algoritmos matemáticos
PDF
Problema rsa
PPTX
Factorizacion de fermat
PPT
Up encriptacion publica v1.2
PDF
DOCX
20 algoritmos
DOCX
Yudis tam
DOCX
Trabajo de calculo numerico
PDF
Número primo fuerte
PDF
Factorizacion algebra
PDF
111 Problemas Resueltos de Aritmética y Álgebra - Don Danny
Quadratic Sieve, algoritmos y ejemplos
Crypt4you. Leccion02 curso rsa
Leccion02 rsa v3 crypt4you
Matematicas para la Olimpiada
Trab dennis informatica
Trab dennis informatica
FACTORIZACION
Leccion08 rsa crypt4you
Los 20 algoritmos matemáticos
Problema rsa
Factorizacion de fermat
Up encriptacion publica v1.2
20 algoritmos
Yudis tam
Trabajo de calculo numerico
Número primo fuerte
Factorizacion algebra
111 Problemas Resueltos de Aritmética y Álgebra - Don Danny
Publicidad

Último (20)

PDF
capacitación de aire acondicionado Bgh r 410
PDF
Taller tecnológico Michelle lobo Velasquez
DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
DOCX
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
PPTX
Mecanismos-de-Propagacion de ondas electromagneticas
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PDF
Distribucion de frecuencia exel (1).pdf
DOCX
Trabajo informatica joel torres 10-.....................
PDF
Teoría de estadística descriptiva y aplicaciones .pdf
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PPTX
Control de calidad en productos de frutas
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
DOCX
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
PPTX
El uso de las TIC en la vida cotidiana..
DOCX
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
PDF
MANUAL de recursos humanos para ODOO.pdf
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
capacitación de aire acondicionado Bgh r 410
Taller tecnológico Michelle lobo Velasquez
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
Mecanismos-de-Propagacion de ondas electromagneticas
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
Distribucion de frecuencia exel (1).pdf
Trabajo informatica joel torres 10-.....................
Teoría de estadística descriptiva y aplicaciones .pdf
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
Control de calidad en productos de frutas
Estrategia de Apoyo de Daylin Castaño (5).pdf
la-historia-de-la-medicina Edna Silva.pptx
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
TRABAJO DE TECNOLOGIA.pdf...........................
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
El uso de las TIC en la vida cotidiana..
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
MANUAL de recursos humanos para ODOO.pdf
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf

Factorización de números semiprimos

  • 1. Vulnerabilidad en claves criptográficas asimétricas mediante factorización de números semiprimos José Antonio Vidal Sampedro correo-e: voz@vidalsampedro.com Resumen. Se expone un nuevo método que demuestra la vulnerabilidad de una serie de números primos comprendidos en una franja numérica que se demuestra insegura a la hora de generar claves para algoritmos de clave asimétrica. El resultado lleva a la conclusión de que la franja considerada como insegura coincide, en gran parte, con la aconsejada habitualmente como segura para algoritmos tan empleados como el RSA. A través de este método que se designará como Método de Desdoblamiento de la Función (MDF), se expondrá como localizar la franja insegura y se estudiará la relación con otros métodos de factorización ya conocidos. A raíz de esto, se propone un nuevo método de trabajo a la hora de factorizar un número semiprimo, distinto de los habituales y basado en alternar métodos de factorización diferentes según la franja numérica en la que nos encontremos. Se expondrá, asimismo, cómo pueden conjugarse distintos métodos en la búsqueda de los factores primos que componen un número semiprimo, base de muchos algoritmos criptográficos de clave asimétrica. Este trabajo presenta una nueva técnica de factorización que ayudará a optimizar la seguridad de las claves empleadas y a mejorar la criptografía computacional. 1 Introducción El intento de factorizar números semiprimos ha alcanzado un gran auge en la era actual, en la que se hace un esfuerzo cada vez mayor por garantizar la seguridad de los datos encriptados con algoritmos que usan claves con este tipo de números, entre ellos el tan extendido RSA (Rivest, Shamir y Adleman) creado en 1978. Antiguamente el esfuerzo por factorizar respondía simplemente al puro afán matemático de desentrañar problemas que se creían “intratables” debido al esfuerzo que suponían. Ilustres matemáticos dedicaron tiempo a este problema, siendo el más célebre Pierre de Fermat (Beaumont, Francia, 1601 - Castres, id, 1665) , el cual propuso un algoritmo todavía usado hoy en día y que es la base de otros algoritmos desarrollados posteriormente. Algoritmos más actuales son muy usados hoy en día, como el Rho de John Pollard que usa la aritmética modular como base para encontrar posibles factores recorriendo los restos de las divisiones con una frecuencia parecida a la letra griega rho [ ρ ]. Y otros algoritmos apuntan a constituirse como la base para destruir toda la seguridad conocida hasta el momento, como el “Algoritmo cuántico de Shor” de Peter Williston Shor (New York City, USA, 1959). Este algoritmo ha sido probado ya con máquinas cuánticas de unos pocos qbits, pero falta ver su desarrollo futuro en máquinas mayores, aunque apunta a ser el algoritmo que plantee el mayor problema a los criptógrafos para encontrar un nuevo método de asegurar los datos. Este algoritmo consta de dos partes, una tradicional basada en el típico método de Euclides, y otra basada en la mecánica cuántica que usa la Transformada de Fourier 1
  • 2. para buscar frecuencias y encontrar el factor. Es también un algoritmo probabilístico, al igual que el de Pollard, y habrá que esperar para ver cómo se desenvuelve con números muy grandes. 2 Base de la encriptación asimétrica con números semiprimos Factorizar un número producto de dos primos constituye, hasta el momento, un problema imposible de resolver en un tiempo polinómico, porque todos los algoritmos conocidos y usados hasta el momento suelen emplear alguno de estos dos métodos: uno es recorrer todos los posibles factores (descartando con cribas algunos números para ganar tiempo en la búsqueda de la solución), y el otro es usar métodos probabilísticos. Por ello el RSA es por ahora seguro, debido a la longitud empleada y a que los métodos probabilísticos se vuelven inútiles para claves del tamaño del RSA. De hecho, actualmente se considera segura una clave RSA si tiene una longitud de al menos 768 bits, si bien se recomienda el uso de claves no inferiores a 1024 bits. Por lo tanto, aunque cabría esperar que los tiempos para encontrar una solución al problema mejorasen con la potencia cada vez mayor de las máquinas (Ley de Moore), surge el nuevo reto de que los números empleados para ocultar la información en algoritmos tipo RSA son cada vez mayores. 3 Demostración Con este nuevo método que aquí se expone, al que se hará referencia en adelante como Método de Desdoblamiento de la Función (MDF), se pretende demostrar que existe una franja de factores vulnerables y su aplicación en temas de criptografía y factorización de números semiprimos. 3.1 Rango de factores vulnerables encontrados mediante el método de Fermat Con carácter previo a exponer el MDF, se analizará el método ideado por Pierre de Fermat para encontrar los factores de un semiprimo. Se toma como ejemplo un número muy pequeño para poder explicarlo de forma gráfica, pudiendo extrapolarse los resultados a números más grandes. El número seleccionado para la demostración del método es el 87 (resultado de multiplicar los factores primos 3 x 29). Para ello se usan dos números, a los que se llamará: _RAIZ (será la aproximación de la raíz cuadrada del número al entero superior más próximo) _RESTO (será la diferencia entre _RAIZ - número, y será número=87 en este caso). Como √87 = 9.327379053, entonces : _RAIZ = 10 _RESTO = 10-87 = 13 Se ve como a partir del número _RAIZ=10 e incrementando (_RAIZ + 1) sucesivamente, se 2
  • 3. llega a un número (en este caso 16 = 10+6) cuyo cuadrado menos 87 tiene un resto cuya raíz cuadrada es un entero. En la gráfica el "número que acoge" está representado por el total de los cuadros de cada bloque, y el resto ((10+n)-87) de color gris claro. Cuando el resto es exacto (es un cuadrado), se ha encontrado un factor n para el cual se puede factorizar 87 en primos enteros ya que: (operaciones para las 5 primeras iteraciones y se recuerda que _RAIZ = 10): paso 1: (10+1) = 121 | 121-87 = 34 | √34 = 5,8309 (se continúa, ya que no es un entero) paso 2: (10+2) = 144 | 144-87 = 57 | √57 = 7,5498 (se continúa, ya que no es un entero) paso 3: (10+3) = 169 | 169-87 = 82 | √82 = 9,0553 (se continúa, ya que no es un entero) paso 4: (10+4) = 196 | 196-87 = 109 | √109 = 10,4403 (se continúa, ya que no es un entero) paso 5: (10+5) = 225 | 225-87 = 138 | √138 = 11,7473 (se continúa, ya que no es un entero) (operaciones para la última iteración n= 6, que es la que interesa): 3
  • 4. paso 6: (10+6) = 256 | 256-87 = 169 | √169 = 13 (se encuentra un entero) puede verse en la gráfica anterior como los cuadros gris claro del bloque 6, correspondientes al resto, miden 13 filas x 13 columnas) ahora se halla el factor: 13 - n (para n=6) = 7 10 - 7 = 3 (que es un factor de 87) Se han necesitado n=6 pasos para llegar al entero usando este método, cuando se podría haber llegado en n=3 pasos si simplemente se hubiese dividido 87/n. Como se puede comprobar, el método empleado por Fermat no ha sido el idóneo para factorizar este número, ya que sus factores están alejados de √87. Este método es óptimo cuando los factores están próximos a la raíz cuadrada. Lo que ahora interesa es la sucesión de pasos en este método, que se puede representar por la función: z = √ ( ( _RAIZ +n )  −número ) donde, a base de repetidas iteraciones, se usa este algoritmo para probar n y hallar z tal que z sea un entero. Haciendo unas pocas operaciones básicas se puede llegar a esta nueva función, donde x será uno de los factores primos del número semiprimo: ( _RAIZ−x )  −_RESTO n = [ec.1] 2· x Se tiene en cuenta que x es un entero y que n es un entero y que lo único que se quiere hallar es un entero. Se opera de nuevo y se despeja x para obtener esta función: x = _RAIZ + n ± √ 4 · (_RAIZ + n ) − (4 · número) [ec.2] 2 Los resultados de esta ecuación son los dos valores que, multiplicados entre sí, dan el número semiprimo a factorizar. Hay que recordar que uno de los factores de un número semiprimo siempre existe dentro de la raíz cuadrada del número, siempre y cuando no sea el mismo factor multiplicado por sí mismo, que es ella misma, lo cual no es viable en números que se van a emplear como claves criptográficas. 4
  • 5. De nuevo se toma un ejemplo, pero esta vez se usará un número un poco más grande, el 4387, que es el resultado del producto de los 2 primos 41 x 107. Como √4387 = 66,23443213, entonces : _RAIZ = 67 _RESTO = 67-4387 = 102 y se dibuja la gráfica de la función Puede verse que para n=7 existe un punto de corte de la función con los ejes de abscisas y ordenadas para x=41, que es uno de los factores del número 4387. En este caso sí ha sido rentable usar el método de Fermat, pues en n=7 pasos se halla un factor, comparado con los n=41 que serían necesarios si se fuese dividiendo 4387 entre n. 3.2 Método de Desdoblamiento de la Función (MDF) El método que constituye el objeto de este proyecto, el Método de Desdoblamiento de la Función (MDF), optimiza la búsqueda de factores en franjas en las que el método de Fermat no resulta adecuado. 5
  • 6. Los puntos en color azul y amarillo, indicados en la gráfica, son los valores de n para los que se encuentra una x tal que x es un factor primo del número 4387. En este caso, usando la ec.2, correspondiente al método de Fermat, se encuentra el factor primo x=41 para n=7. Sin embargo, para la ec.5 usando MDF, se encuentra el factor primo x=41 para n=3. El punto magenta Acotamiento corresponde a _RAIZ (en este caso _RAIZ=67). Entre el eje Y y este punto tiene que encontrarse un factor. Se puede ver cómo evolucionan las funciones. El eje X es el valor más bajo para n=0 en el caso de la ec.2 y a medida que aumenta n, la curva aumenta hacia la izquierda, hacia el eje Y. Puede apreciarse en la gráfica como el número 4387 escogido para este ejemplo no puede tener ningún factor entre _RAIZ (Acotamiento) y el punto de corte de la función (ec.2) con el eje X (cuyo valor es 67-√102); es decir, no tiene factores entre 57 (≈ 67-√102) y 67, ya que se necesitarían valores negativos para n y no es el caso usando esta ecuación. Se puede apreciar que a cada iteración de n en un algoritmo, el esfuerzo computacional crece de manera análoga a la gráfica de la función. Aquí es donde se observa que es útil el MDF, ya que descompone la función y traza de nuevo una curva muy próxima al eje X, con lo que el esfuerzo computacional decrece de nuevo y pueden encontrarse valores para n muy bajos que descubran un factor primo del número 4387. 7
  • 7. La ecuación anterior [ec.2] x = _RAIZ + n ± √ 4 · (_RAIZ + n ) − (4 · número) 2 puede ser "desdoblada" del siguiente modo: (_RAIZ - 2 x)  - _RESTO ((2 · _RAIZ) - 3 x ) + x n= [ec.3] 2 Ahora el numerador de la parte derecha de la ecuación puede representarse como dos funciones independientes, una a la izquierda del signo "+" y otra función a la derecha del signo "+"; es decir, se representarán en la gráfica estas dos nuevas funciones: (_RAIZ - 2 x)  - _RESTO n = (2 · _RAIZ - 3 x ) [ec.4] y n= x [ec.5] Puede verse que la parte izquierda de la ecuación [ec.2] es la media de estas dos ecuaciones [ec.4] y [ec.5], ya que se divide entre 2 en la parte derecha. La ecuación 4 es una recta que será representada en color rojo y la ecuación 5 será representada por la curva de color verde en la gráfica siguiente. Se representará la ecuación 2 en color negro como se ha hecho anteriormente. 6
  • 8. De nuevo se toma un ejemplo, pero esta vez se usará un número un poco más grande, el 4387, que es el resultado del producto de los 2 primos 41 x 107. Como √4387 = 66,23443213, entonces : _RAIZ = 67 _RESTO = 67-4387 = 102 y se dibuja la gráfica de la función Puede verse que para n=7 existe un punto de corte de la función con los ejes de abscisas y ordenadas para x=41, que es uno de los factores del número 4387. En este caso sí ha sido rentable usar el método de Fermat, pues en n=7 pasos se halla un factor, comparado con los n=41 que serían necesarios si se fuese dividiendo 4387 entre n. 3.2 Método de Desdoblamiento de la Función (MDF) El método que constituye el objeto de este proyecto, el Método de Desdoblamiento de la Función (MDF), optimiza la búsqueda de factores en franjas en las que el método de Fermat no resulta adecuado. 5