problemas computacionales en criptografía · pdf fileproyecto fin de carrera problemas...

157
PROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007 UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN INFORMÁTICA

Upload: tranphuc

Post on 11-Feb-2018

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

PROYECTO FIN DE CARRERA

PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA

AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

UNIVERSIDAD PONTIFICIA COMILLAS

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

INGENIERO EN INFORMÁTICA

Page 2: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Autorizada la entrega del proyecto del alumno:

D. Lorenzo José Herrero Blanco

Madrid, 13 de junio de 2007

EL DIRECTOR DEL PROYECTO

Fdo.: Dr. D. Francisco Javier Rodríguez Gómez

Vº Bº del Coordinador de Proyectos

Fdo.: D. David Contreras Bárcena Fecha: ……/ ……/ ……

Page 3: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

PROYECTO FIN DE CARRERA

PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA

AUTOR: D. Lorenzo José Herrero Blanco

DIRECTOR: Dr. D. Francisco Javier Rodríguez Gómez

UNIVERSIDAD PONTIFICIA COMILLAS

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

INGENIERO EN INFORMÁTICA

Page 4: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Problemas Computacionales enCriptografía

Agradecimientos

A mi Director de Proyecto, Francisco Javier Rodríguez Gómez, ya que sin su ayuda,

dedicación y paciencia, no habría sido posible la realización de este Proyecto.

A mi familia, por haberme animado y ayudado durante el transcurso de la carrera.

I

Page 5: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Resumen

La Criptografía ha existido desde que el ser humano ha necesitado de métodos con los que

poder transmitir y ocultar información de posibles escuchas interesadas en interceptarla. Como no

podía ser de otra manera, ha evolucionado a lo largo de los siglos y su mayor auge coincidió con la

aparición de cada vez más avanzados y especializados recursos computacionales. Así,

prácticamente todas las aplicaciones criptográficas de hoy en día se ejecutan bajo aplicaciones

informáticas, con las ventajas y limitaciones que ello conlleva.

A diferencia de lo que sucede en la criptografía clásica y en la simétrica, en la que todas

las claves son secretas, en la criptografía de clave pública cada individuo posee dos claves, una

secreta y otra pública, de forma que los cifrados realizados con una de las claves se descifran con

la otra, siendo el cifrado como el descifrado operaciones matemáticas realizables en un tiempo

real. Las claves están relacionadas matemáticamente de tal forma que el conocimiento de la clave

pública y la matemática que sustenta su relación con la secreta no es suficiente para el cálculo de

ésta última. Para su cálculo se necesita el conocimiento de la trampa, que es secreta. De otra

manera, el cálculo de la clave secreta es tan complejo que no existe capacidad de cálculo

suficiente en el universo para realizarlo.

Por tanto, la seguridad de muchos de los criptosistemas en clave pública se basa en la

aparente incorruptibilidad de los problemas computacionales descritos en este Proyecto. Si los

parámetros de cada método son elegidos cuidadosamente la resolución del problema resulta

intratable, esto es, el tiempo de resolución resulta exponencial.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

II

Page 6: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Se define como función de una sola dirección o función trampa aquella función

matemática cuyo cálculo directo es sencillo, pero en la que el cálculo de la función inversa es muy

complejo, es decir, involucra un elevado número de operaciones. Un clásico ejemplo al respecto es

el caso de la factorización de un número entero N grande en dos números primos. Conociendo los

dos números primos resulta sencillo calcular su resultado, pero conociendo tan solo el resultado

del producto será muy difícil, y hasta imposible, poder calcular los dos números primos primitivos.

En la misma idea está basado el problema del logaritmo discreto y del residuo cuadrático.

Calcular el resultado de un logaritmo de un número en base a otro número resulta sencillo, sin

embargo realizar su función inversa, es decir, la exponencial, no resulta tan sencillo y mucho

menos cuando se estén manejando números grandes.

Siguiendo la estela del concepto de problemas computacionalmente inviables, se hablará

de la complejidad algorítmica y se demostrará por qué el problema de la suma de un subconjunto

es considerado como un NP-completo.

La aritmética modular es una parte de las Matemáticas extremadamente útil en

Criptografía, ya que permite realizar cálculos complejos y plantear problemas interesantes,

manteniendo siempre una representación numérica compacta y definida, puesto que sólo maneja

un conjunto finito de números enteros. Es por ello por lo que se hará un uso permanente de ella a

la hora de resolver los problemas propuestos, así como de potentes herramientas matemáticas

basadas en la aritmética modular como el Teorema Chino del Resto, el Símbolo de Jacobi y la

Inversa.

Cada algoritmo ha sido desarrollado mediante una explicación e indicando su

pseudocódigo, su codificación en el paquete de cálculo numérico, simbólico y gráfico

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

III

Page 7: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Mathematica®, con la resolución práctica de ejemplos y problemas planteados.

En primer lugar, se realiza el análisis y estudio de algoritmos que realizan de modo

eficiente la operación de factorización: factorización rho de Pollard, factorización Hp - 1L de

Pollard y la criba cuadrática correspondiente a los métodos de factorización cuadráticos

aleatorios. También se estudia el sistema de cifrado asimétrico de clave pública RSA por basarse

en gran parte en el problema de la factorización.

A continuación, se procede al desarrollo de técnicas y algoritmos que se basan en el

problema del residuo cuadrático, así como del método raíz cuadrada módulo n, con las

modalidades de n primo y n compuesto.

Para explicar y abarcar de la manera más completa posible el problema del logaritmo

discreto, se plantea el algoritmo baby-step giant-step, el algoritmo rho de Pollard para logaritmos

y el algoritmo de Pohlig-Hellman. También se somete a estudio el método de intercambio de

claves en criptografía simétrica de Diffie-Hellman, por estar también fundamentado en la base del

problema del logaritmo discreto.

A continuación, se desarrolla el algoritmo de la suma de un subconjunto en representación

del conjunto de problemas de la decisión, de los cuales además se deduce una clase de

complejidad concreta.

En todos los algoritmos planteados, con datos de entrada significativamente grandes, el

tiempo de ejecución se torna computacionalmente intratable. Por ello resulta muy interesante

realizar un pequeño y sencillo estudio (dado que no se dispone ni de software especializado ni de

recursos extraordinariamente potentes) para comprobar, a nivel práctico, cómo se cumplen los

tiempos de ejecución exponenciales mostrados en la teoría. Dicho estudio se plantea en el

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

IV

Page 8: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Proyecto.

Finalmente, para obtener una mejor comprensión de los algoritmos desarrollados, este

Proyecto se complementa con el diseño de una interfaz de usuario que presenta estos algoritmos,

permitiendo realizar de forma práctica su ejecución.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

V

Page 9: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Abstract

Cryptography has existed since humans started to communicate through unsafe channels,

in the way that the information transmitted could be easily intercepted. Obviously, it has

developed throghout the years, finding its greatest development with the appearance of modern

computers. Thus, many crytographic applications are oriented to computer protocols, with the

advantages and disadvantages that it envolves.

In contrast to classic and simetric crytography, where all keys are kept in secret, when

using public-key cryptography each of the transmitters possess two keys; one is secret and the

other is public, being possible to encrypt and decrypt a message applying mathematical operations

that operate within real time. Even in the case that the algoritm applied for such purpose was

known, it would not be possible to calculate the secret key from the public key even if all the

computational resources in the universe were applied.

Therefore, the security of many public-key cryptosystems relies on the apparent

intractability of the computational problems studied in this Project. This means that if the

instances of a problem are carefully chosen, the running time of the algorithm turns into

exponential.

A one-way function is a function that is easy to compute but hard to invert. "Easy to

compute" means that some algorithm can compute the function in polynomial time. However,

"hard to invert" means that no probabilistic polynomial-time algorithm can compute the problem.

A clear example of this type of functions is the integer factorization problem. Considering as

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

VI

Page 10: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

input data two integers, it is easy to mutiplicate them, but inverting this function requires solving

the factoring problem which is believed to be hard to solve.

The discrete logarithm problem and the quadratic residuosity problem are based on the

same idea. Given a base of a logarithm and a postive integer, it is easy to calculate the result of

the operation. However, the inverse function, which is the exponentiation, is widely believed to

be intractable when using high values of numbers.

Following the path of intractable problems, it is also studied in this Project the

computational complexity of some algorithms, and why the subset sum problem is considered as a

NP-complete problem.

Modular arithmetic is an extremely useful part of Mathematics in Cryptography, because

it allows to make complex calculations and poses interesting problems, supporting always a

compact and defined numerical representation, since it just uses a finite set of entire numbers.

That is the reason why some of the most important problems based on modular arithmetic are an

indispensable topic and will be used throughout this Project. These are, for example, the Chinese

Remainder Theorem for integers, Jacobi Symbol and the Inverse, all of them considered as a

powerful mathematical tool, with interesting cryptographic applications.

Each algorithm has been developed by an explanation and indicating its pseudocode and

codification in the package of numerical, symbolic and graphical language Mathematica, with the

practical resolution of examples and posed problems.

The first part of the Project consists of an analysis and explanation of some of the

algoritms used for factoring integer numbers. The algorithms proposed are the Pollard´s rho

factoring algorithm, the Pollard´s Hp - 1L factoring algorithm and the quadratic sieve factoring.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

VII

Page 11: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

The RSA algorithm is also proposed, although it is not a factoring algorithm itself, but it is based

on this idea.

To continue with, the quadratic residuosity problem is sifted, as well as the algorithms for

the calculation of modular square roots (prime module and compound module).

The Project continues with the problems related to the discrete logarithm problem, such as

the baby-step giant-step algorithm, the Pollards´s rho algorithm for logarithms and the

Polling-Hellman algorithms. The Diffie-Hellman key exchange protocol to jointly establish a

shared secret key over an insecure communications channel is also explained, so the discrete

logarithm problem takes an important role in it.

Later on, the subset sum problem is reviwed to make a good introduction to the

NP-complete class of problems. It is the simplest and most known of all decision problems,

whose main characteristic is that all algorithms that can solve them do it in time exponential, and

so they all are intractable.

Finally, in order to have a practical view of all the algorithms proposed, it is included in

the Project different graphs that show the increments of time that are experienced when the size of

the input data turns bigger. This experiment has been done with the sources available while the

Project was developed and, even though they were not the most powerful and modern, the

intention of the test is to put in practise all that it is studied in the Project.

For a better comprehension of the developed algorithms, this Project is completed with the

design of a user's interface that shows these algorithms, allowing their execution in a practical

way.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

VIII

Page 12: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Índice

Índice... IX......................................................................................................................................

1. Introducción y objetivos... 2..................................................................................................... 1.1. Objetivos 6.................................................................................................................. 2. El problema de la factorización entera... 8............................................................................... 2.1. El algoritmo de factorización rho de Pollard... 10........................................................ 2.2. El algoritmo de factorización (p-1) de Pollard... 13..................................................... 2.3. Métodos de factorización cuadrático aleatorio... 15..................................................... 2.4. Criba cuadrática 17....................................................................................................... 3. El problema RSA o inversión RSA (RSAP) 27.......................................................................

4. El problema del residuo cuadrático... 35....................................................................................

5. Raíz cuadrada módulo n (SQROOT) 38.................................................................................... 5.1. Raíces cuadradas módulo n con n primo 46................................................................. 5.2. Raíces cuadradas módulo n con n compuesto 46......................................................... 6. El problema del logaritmo discreto (DLP). 73........................................................................... 6.1. Algoritmo baby-step giant-step... 74............................................................................ 6.2. Algoritmo rho de Pollard para logaritmos... 81............................................................ 6.3. Algoritmo Polig-Hellman 86........................................................................................ 7. El problema de Diffie-Hellman (DHP) 96.................................................................................

8. El problema de la suma de un subconjunto (SUBSET-SUM) 102..............................................

9. Estudio de tiempos de ejecución... 106........................................................................................ 10.1. Introducción teórica 106............................................................................................... 10.2. El problema de la factorización 107............................................................................. 10.3. El problema RSA 110................................................................................................. 10.4. El problema de la suma de un subconjunto 114........................................................... 10. Conclusiones y líneas futuras 116.............................................................................................

11 Desarrollo de la Aplicación 120...................................................................................... 11.1. Ciclo de vida... 120....................................................................................................... 11.2. Identificación de necesidades 127................................................................................ 11.3. Análisis de requisitos... 128.......................................................................................... 11.4. Arquitectura técnica 131...............................................................................................

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

IX

Page 13: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

11.5. Diseño de la interfaz de usuario 132............................................................................

12. Valoración económica y planificación... 136............................................................................. 121. Introducción... 136......................................................................................................... 12.2. Técnicas de estimación de costes... 136....................................................................... 12.3. Costes del Proyecto... 139............................................................................................ 12.4. Planificación temporal del Proyecto... 139...................................................................

Bibliografía... 142.............................................................................................................................

CD-ROM con el código de los algoritmos y problemas de los Problemas Computacionales enCritografía realizados con Mathematica.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

X

Page 14: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Problemas Computacionales en Criptografía

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

1

Page 15: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

1. Introducción y objetivos

La Criptografía moderna nace al mismo tiempo que las computadoras. Durante la

Segunda Guerra Mundial, en un lugar llamado Bletchley Park, un grupo de científicos

entre los que se encontraba Alan Turing, trabajaba en el proyecto ULTRA tratando de

descifrar los mensajes enviados por el ejército alemán con los más sofisticados ingenios

de codificación ideados hasta entonces: la máquina ENIGMA y el cifrado Lorenz . Este

grupo de científicos diseñó y utilizó el primer computador de la Historia, denominado

Colossus —aunque esta información permaneció en secreto hasta mediados de los 70—.

Desde entonces hasta hoy ha habido un crecimiento espectacular de la tecnología

criptográfica, si bien la mayor parte de estos avances se mantenían —y se siguen

manteniendo, según algunos— en secreto. Financiadas fundamentalmente por la NSA

(Agencia Nacional de Seguridad de los EE.UU.), la mayor parte de las investigaciones,

hasta hace relativamente poco tiempo, han sido tratadas como secretos militares. Sin

embargo, en los últimos años, investigaciones serias llevadas a cabo en universidades de

todo el mundo han logrado que la Criptografía sea una ciencia al alcance de todos, y que

se convierta en la piedra angular de asuntos tan importantes como el comercio electrónico,

la telefonía móvil, o las nuevas plataformas de distribución de contenidos multimedia.

Esta dualidad civil—militar ha dado lugar a una curiosa doble historia de la Criptografía,

en la que los mismos algoritmos eran descubiertos, con pocos años de diferencia, por

equipos de anónimos militares y posteriormente por matemáticos civiles, alcanzando

únicamente estos últimos el reconocimiento público por sus trabajos.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

2

Page 16: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Conviene hacer notar que la palabra Criptografía sólo hace referencia al uso de

códigos, por lo que no engloba a las técnicas que se usan para romper dichos códigos,

conocidas en su conjunto como Criptoanálisis. En cualquier caso ambas disciplinas están

íntimamente ligadas; debe tenerse en cuenta que cuando se diseña un sistema para cifrar

información, hay que tener muy presente su posible criptoanálisis, ya que en caso

contrario podríamos llevar a desagradables sorpresas. Finalmente, el término Criptología,

aunque no está recogido aún en el Diccionario, se emplea habitualmente para agrupar

Criptografía y Criptoanálisis.

Existen dos tipos fundamentales de criptosistemas:

Criptosistemas simétricos o de clave privada: Son aquéllos que emplean la misma clave k

tanto para cifrar como para descifrar. Presentan el inconveniente de que, para ser

empleados en comunicaciones, la clave k debe estar tanto en el emisor como en el

receptor, lo cual plantea la situación de elegir cómo transmitir la clave de forma segura.

Criptosistemas asimétricos o de clave pública: Estos emplean una doble clave Hkp, kPL. kpse conoce como clave privada y kP se conoce como clave pública. Una de ellas sirve para

la transformación E de cifrado y la otra para la transformación D de descifrado. En

muchos casos son intercambiables, esto es, si se emplea una para cifrar la otra sirve para

descifrar y viceversa. Estos criptosistemas deben cumplir además que el conocimiento de

la clave pública kp no permita calcular la clave privada kP Ofrecen un abanico superior de

posibilidades, pudiendo emplearse para establecer comunicaciones seguras por canales

inseguros — puesto que únicamente viaja por el canal la clave pública—, o para llevar a

cabo autentificaciones.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

3

Page 17: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

En la práctica se emplea una combinación de estos dos tipos de criptosistemas,

puesto que los segundos presentan el inconveniente de ser computacionalmente mucho

más costosos que los primeros. En el mundo real se codifican los mensajes (largos)

mediante algoritmos simétricos, que suelen ser muy eficientes, y luego se hace uso de la

criptografía asimétrica para codificar las claves simétricas (cortas).

Muchos de los sistemas criptográficos de clave pública basan su aparente

irrompibilidad en el problema de la factorización, una de las funciones de una sola

dirección más importantes conocidas como funciones trampa. A modo de ejemplo, si se

consideran p y q dos números primos, es muy fácil calcular el valor de su multiplicación

denotado por m. El tiempo de ejecución es además polinómico. Sin embargo, hallar p y q

a partir de m es, en general, de complejidad exponencial en la longitud de m, lo que hace

inviable su cálculo. Se presentan más adelante los métodos más interesantes para afrontar

la factorización de un número entero. Sin embargo, el éxito de la factorización de un

número entero, hoy por hoy, reside en su tamaño, y será imposible de factorizar cuando

sea demasiado grande para los recursos computacionales disponibles. Estos métodos son

el rho de Pollard, el Hp - 1L de Pollard y el de la criba cuadrática, dentro de los métodos

de factorización cuadráticos aleatorios. También se incluye la explicación y consecuente

programación del sistema de sifrado de clave pública asimético RSA.

El problema de los logaritmos discretos está íntimamente relacionado con el de la

factorización, de hecho está demostrado que si se puede calcular un logaritmo, entonces se

puede factorizar fácilmente (el recíproco no se ha podido demostrar). Sobre esta

afirmación se sustentan otros problemas como el Diffie-Hellman y el de ElGamal, en los

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

4

Page 18: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

que aparece el término generador, cuya condición a cumplir consiste en debe existir un

entero i para todo b perteneciente al conjunto �p* , con p primo, que cumpla que el

generador elevado a i sea igual a b. Se proponen como métodos de más utilizados para

determinar logaritmos discretos el algoritmo baby-step giant-step, el algoritmo rho de

Pollard para logaritmos y el algoritmo Pohling-Hellman.

En la misma dirección que los métodos comentados que utilizan la factorización

en números de primos de N se basa el problema del carácter residual. El conocimiento del

carácter residual r-ésimo del valor entero a módulo N requiere el conocimiento de los

factores primos de N, lo cual no siempre es viable cuando se trabaja con números enteros

grandes. Éste es el conocido como problema del carácter residual, utilizado como

operador en muchos protocolos criptográficos de clave pública. Su función inversa es

conocida como la raíz cuadrada modular, y también se estudiará en los métodos raíz

cuadrada módulo n, con n primo y n compuesto.

En relación a todo lo anterior, se debe resaltar la importancia de los números

primos en la mayoría de los métodos de cifrado en clave pública. Sin su aplicación, los

métodos comentados serían fácilmente descifrados, con la consecuente pérdida de interés

de aplicación para técnicas de intercambio de información. Esta importancia reside en la

característica única de que dos números primos pueden llegar a ser los factores de un

número muy grande. En la criptografía en clave pública esta propiedad es de enorme

interés, ya que siempre se procurará que el número n a transmitir sólo sea posible de

factorizar en números grandes con muy pocos factores (factores que se conocen de

antemano y que deben ser elegidos cuidadosamente).

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

5

Page 19: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Finalmente, se pretende realizar una pequeña incursión en los problemas de

decisión, es decir, aquellos que consideran un algoritmo como mecanismo que permite

obtener una respuesta sí o no a un problema concreto. Con esta intención se incluye el

problema de la suma de un subconjunto, problema NP-completo que, dado un conjunto A

de enteros positivo y un número s, el problema consiste en determinar si existe o no un

subconjunto de A cuya suma de sus términos sea s.

1.1. Objetivos del proyecto

El proyecto se propuso inicialmente para cumplir con unos objetivos que se han

visto desarrollados en su totalidad. El espíritu que ha guiado todo el proyecto ha sido

predominantemente educativo: la intención era la de conseguir un software y un trabajo de

estudio que desmenuzase los problemas computacionales más comunes a la hora de tratar

con la Criptografía moderna en clave pública.

A continuación, se comentan los objetivos del proyecto y en qué nivel se han visto

satisfechos.

1º Realizar un software sobre Windows que permita realizar cálculos sobre

diferentes algoritmos propuestos inicialmente a estudio. Sin duda este ha sido el trabajo

más costoso, tanto por la búsqueda de los distintos algoritmos como su correcta

implementación.

2º Realizar un estudio detallado de todos los algoritmos propuestos, así como

entender por qué en unos casos es preferible utilizar un algoritmo en lugar de otro, aunque

los dos en principio persigan obtener el mismo resultado. Así, en el caso del estudio de la

aplicabilidad de cada algoritmo se ha podido observar y comprobar como, según los

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

6

Page 20: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

parámetros de entrada, es posible que un algoritmo sea incapaz de alcanzar una solución

mientras que otro la alcance en pocos segundos. Por lo tanto, sí que se encuentran

diferencias en el modo de actuación, por lo que unos algoritmos serán más adecuados para

ciertos problemas en función de la naturaleza de los parámetros de entrada, ya que los

abordarán con métodos específicos para cada tipo de parámetros.

3º Proponer y realizar distintos casos de prueba que servirán como ejemplos de

utilización de los distintos algoritmos. Cada algoritmo dispone de una serie de problemas

resueltos utilizando su método, con una serie de explicaciones de cómo funciona.

4º Desarrollar una interfaz gráfica de usuario para la aplicación. Este objetivo

no se ha visto modificado durante la realización del proyecto. Para ello se ha utilizado el

paquete de generación de interfaz para Mathematica basado en Java llamado SuperWidget

Package. La interfaz permite ejecutar los algoritmos en un ambiente más amigable para el

usuario, ya que se puede utilizar incluso sin tener grandes conocimientos de Mathematica.

Y además se ha conseguido una aplicación de manejo sencillo que se espera que pueda

tener un buen uso didáctico.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

7

Page 21: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

2. Problema de la factorización entera

La factorización ha sido desde siempre uno de los problemas que más interés ha

suscitado en la Teoría de Números. Es a su vez el tema central de la mayoría de los

procedimientos de criptoanálisis, así como uno de los métodos más utilizados para dotar

de robustez a algunos algoritmos criptográficos, como en el caso del RSA de clave pública.

La factorización es el problema inverso a la multiplicación; dado n, se trata de

encontrar un conjunto de números tales que su producto valga n. Esto es

(1)n = p1e1 µ p2

e2 µ ... ...µ pkek .

Tal y como enuncia el teorema fundamental de la aritmética, todo número entero

positivo se puede descomponer como el producto de dos o más números primos elevados

a una potencia. De esta forma, además, se asegura de que la solución alcanzada sea única.

Por tanto, si se tuviera un algoritmo eficiente que fuese capaz de realizar dicha

factorización se podría aplicar sucesivamente sobre los resultados obtenidos consiguiendo

así reducir el número entero positivo original a sus factores primos más pequeños. No

obstante, se verá que el problema radica en que dicho algoritmo no es eficiente para

números enteros muy grandes.

La eficiencia de un algoritmo ante un problema es directamente proporcional a la

complejidad del problema que trata. Así, una complejidad del problema alta supondrá que

la eficiencia del algoritmo caiga y llegará un punto en que la complejidad será tan elevada

que hará ineficiente el algoritmo frente a ese problema. Por tanto, la medida de este

parámetro debe tan sólo tenerse en cuenta en relación con la dimensión de los números

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

8

Page 22: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

enteros con los que se trabaja y no en términos absolutos. Por ello hay algoritmos que

funcionan mejor con números enteros pequeños mientras que otros muestran un mejor

comportamiento asintótico.

No obstante, todos ellos se transforman en ineficientes cuando los números

enteros a tratar alcanzan un tamaño suficientemente alto. Y precisamente la inviabilidad

de factorizar números enteros para un determinado tamaño hace que utilizar dichos

números en Criptografía sea un método fiable. Pero, ¿qué es lo que dota a un algoritmo de

eficiencia? Principalmente dependerá de dos factores; su diseño y de los recursos

computacionales de que dispongamos. Respecto al primero, una vez alcanzado el diseño

óptimo no se puede elevar la eficiencia del algoritmo. Será el segundo factor, los recursos

computacionales, los que podrán dotar a un algoritmo de una mayor eficiencia. Sin

embargo, y como se ha señalado con anterioridad, cuando los números enteros a

factorizar son muy elevados la complejidad computacional se dispara, lo que se traduce en

unos tiempos de cómputo demasiado elevados. Cuando esto ocurre se dice que el tiempo

de ejecución es exponencial, es decir, su tiempo de ejecución no puede ser acotado por

una función exponencial. Si por el contrario se muestran eficientes ante un número entero

se dice que el tiempo de ejecución es polinomial.

Hasta ahora se ha explicado el problema con el que se puede encontrar durante la

factorización de números enteros. Sin embargo dicho problema surge cuando el número

entero positivo a factorizar es demasiado grande. Cuando su tamaño es razonable se

dispone de una serie de algortimos para factorizarlo. Algunos de ellos son el Método de

Fermat, el Método p - 1 de Pollard y los Métodos Cuadráticos de Factorización, que

son el de la Criba Cuadrática y la Criba del Cuerpo de Números, siendo este último el

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

9

Page 23: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

más eficaz y con el que se ha conseguido por ahora factorizar el mayor de número entero

hasta el momento; un número de 663 bits.

2.1 El algoritmo de factorización rho de Pollard

El algoritmo de factorización rho de Pollard resulta especialmente útil cuando

se quiere encontrar pequeños factores que componen un número entero.

Sea una función aleatoria tal que f: S ö S donde S es un conjunto finito de

números de cardinalidad n. Sea x0 un número aleatorio contenido en S y se considera

además la secuencia x0, x1, x2,.... definida por

(2)xi+1 = f HxiL " i ¥ 0.

Al ser S un número finito, la secuencia de elementos xi debe llegar a un punto en

el que se repite siguiendo por tanto un mismo ciclo. El conjunto de números que se

obtiene desde el comienzo hasta que aparece el ciclo recibe el nombre de cola. Se espera

que dicha cola tenga una longitud de ,Hp n ê8L y que ésta esté seguida como se ha dicho

por un ciclo repetitivo de una longitud esperada de también ,Hp n ê8L. En el campo del

Criptoanálisis resulta especialmente interesante encontrar un par de índices distintos i y j

tal que cumplan que xi = x j, en cuyo caso se dice que ha habido una colisión. Un método

sencillo y básico para encontrar una colisión sería calcular valores de xi para valores de

i = 0, 1, 2, ...., y reparar en aquellos que tengan el mismo valor. El número de valores

xi que hacen falta para que aparezcan los primeros valores duplicados es de ,Hp n ê2L. El

tiempo de ejecución esperado del algoritmo p de Pollard para localizar un factor p de n es

de O(,p) multiplicaciones modulares; es decir, el tiempo esperado para encontrar un

factor no trivial de n es O(n1ÅÅÅÅ4 ) multiplicaciones modulares.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

10

Page 24: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

è Algoritmo 1. Algoritmo de factorización rho de Pollard.

Descompone el número n en el producto de dos factores no triviales.

Input HnL

a ≠ 2

b ≠ 2

For i = 0, 1, ..., n do

a ≠ (a2+1) mod n

b ≠ (b2+1) mod n

b ≠ (b2+1) mod n

d ≠GCD(a - b,n)

If (1<d<n) Then

Return(d)

Else

If (d = n) Then

Return()

End

End

End

Output

Ejercicios propuestos

à Problema 1. Aplicar el algoritmo rho de Pollard para factorizar el número n = 77.

Algoritmo de factorización rho de Pollard para n = 77.

c d e

5 26 7

Dos factores no triviales de 77 son 7 µ 11.

à Problema 2. Aplicar el algoritmo rho de Pollard para factorizar el número n = 455459.

Algoritmo de factorización rho de Pollard para n = 455459.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

11

Page 25: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

c d e

5 26 1

26 2871 1

677 179685 1

2871 155260 1

44380 416250 1

179685 43670 1

121634 164403 1

155260 247944 1

44567 68343 743

Dos factores no triviales de 455459 son 743*613

à Problema 3. Aplicar el algoritmo rho de Pollard para factorizar el número n = 29.

8<

à Problema 4. Aplicar el algoritmo rho de Pollard para factorizar el número n = 455459.

Algoritmo de factorización rho de Pollard para n = 455459.

c d e

5 26 1

26 2871 1

677 179685 1

2871 155260 1

44380 416250 1

179685 43670 1

121634 164403 1

155260 247944 1

44567 68343 743

Dos factores no triviales de 455459 son 743*613

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

12

Page 26: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

2.2 El algoritmo de factorización p - 1 de Pollard

Este algoritmo se presenta principalmente cuando se quiere encontrar de manera

eficiente cualquier factor primo p de un número compuesto n para el cual p - 1 es

uniforme con respecto a un límite preestablecido denotado por B. Se dice que un número

entero n es uniforme con respecto al límite B si todos sus factores primos son menores o

iguales que B.

La idea principal con respecto al algoritmo de factorización p - 1 de Pollard

reside en la expresión

(3)Q =‰qB

q A ln nÅÅÅÅÅÅÅÅÅÅÅln q E,

donde Q es mínimo común múltiplo de todas las potencias de los factores primos que B

que a su vez son también que n. Si ql n, entonces l * ln q ln n y entonces

(4)l @Hln nL ê Hln qLD.

Si p es un factor primo de n tal que p - 1 es uniforme con respecto a B, entonces

p - 1 » Q. En consecuencia, para cualquier número a cuyo máximo común divisor tenga

tan sólo el factor 1 en común con el máximo común divisor de p, se puede afirmar que

a ª 1 Hmod pL. Por esta razón, un número d = mcd H aQ - 1, nL cumple que p » d. Es

posible que suceda el caso en el que d = n, en cuyo caso el algoritmo de factorización

falla. Sin embargo, es muy poco probable que esto suceda si n está compuesto por al

menos dos factores primos grandes y diferentes.

è Algoritmo 2. Algoritmo (p - 1) de Pollard.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

13

Page 27: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

A partir de un número compuesto n y una cota B obtenemos algún factor primo p

de n para el cual p-1 es uniforme con respecto a B.

Input Hn, BL

a ≠ RandomHInteger, 2, ..., n - 1Ld ≠ gcd(a, n)

If (d ¥ 2) Then

Return(d)

End

For i = 0, 1, ..., B do

l ≠Hln nL ê Hln iLa ≠ ail mod n

b ≠ (b2+1) mod n

End

d ≠ GCD(a -1, n)

If (d=1 || d=n) Then

Return()

Else

Return(d)

End

Output

Ejercicios propuestos

à Problema 5. Aplicar el algoritmo p - 1 de Pollard para factorizar el número n = 7485con límite B = 32.

Algoritmo de Pollard p-1 para factorizar el número 7485.

q l a

2 12 5326

3 8 4417

5 5 6337

7 4 6547

11 3 763

13 3 2512

17 3 5197

19 3 6658

23 2 6217

29 2 442

31 2 7

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

14

Page 28: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Dos factores no triviales del número 7485 son 2495 y 3.

à Problema 6. Aplicar el algoritmo p - 1 de Pollard para factorizar el número n = 919con límite B = 45.

Algoritmo de Pollard p-1 para factorizar el número 919.

q l a

2 9 273

3 6 216

5 4 30

7 3 202

11 2 629

13 2 15

17 2 308

19 2 836

23 2 798

29 2 265

31 1 369

37 1 322

41 1 227

43 1 540

Dos factores no triviales del número 919 son 919 y 1.

2.3 Métodos de factorización cuadrático aleatorio

La idea básica de la familia de algoritmos cuadráticos es la siguiente. Siendo n el

entero a factorizar y suponiendo que x, y son dos enteros, la idea fundamental es que

(5)x2 ª y2 Hmod nL

pero que al mismo tiempo se cumpla la ecuación

(6)x T ≤ y Hmod nL

Teniendo en cuenta dichas condiciones, es obvio que entonces se cumple que

(7)x2 – y2 = Hx+ yL Hx – yL = 0

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

15

Page 29: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

o lo que es lo mismo, que la expresión anterior es divisible entre n. Adicionalmente, puesto

que tanto x como y son menores que n, n no puede ser divisor de (x + y) ni de (x - y). En

consecuencia, n ha de tener factores comunes tanto con (x + y) como con (x - y), por lo que

el resultado de la ecuación

(8)d = mcd Hn, x - yL

debe ser un divisor de n. Se puede demostrar que si n es impar, no potencia de primo y

compuesto, entonces siempre se pueden encontrar x e y.

A continuación se muestra un ejemplo concreto de la idea planteada hasta ahora.

Sea n = 91. Tras una serie de ensayos se deduce que 102 ª 9 Hmod 91L y

32 ª 9 Hmod 91L. Por otro lado, 10 ª 10 Hmod 91L y 3 ª 3 Hmod 91L, luego x = 10 e y = 3.

Como 10 – 3 < 91, se calcula mcd H10 – 3, 91L = 7, que es un factor de 91.

Llegado a este punto, se plantea ahora encontrar de forma eficiente una pareja de

números que cumpla esas condiciones. El método plantea elegir un conjunto formado por t

números primos diferentes S = 8 p1, p2, ..., pt < que recibe el nombre de base de factores

(factor base). Cualquier entero que se factorice usando esta base de factores se considera

uniforme de cota pt o pt - uniforme. Para los problemas desarrollados en el proyecto se

tomará como base de factores S = {-1, 2, 3, 5, 13, 23}, pudiendo modificarse en el código

del algoritmo. Se continúa buscando parejas de enteros (ai, bi) tal que

(9)ai2 ª bi Hmod nL

(10)bi = ‰j=1

t

p jeij , eij ¥ 0.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

16

Page 30: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Seguidamente, obtenido un número suficiente de parejas, se busca un subconjunto

de entre los enteros bi tales que su producto sea un cuadrado perfecto. Como se tiene la

factorización de cada bi en la base de factores, bastaría elegirlos de manera que las

potencias eij de los primos p j de la base de factores S en que se factoriza cada bi sean pares.

Este problema equivale a resolver un sistema de ecuaciones lineales con coeficientes en �2,

por lo que esta fase se suele llamar reducción de la matriz. Multiplicando los ai2

correspondientes a los factores de b escogidos, se obtiene una ecuación del tipo

x2 ª y2Hmod nL. Si, además, x T ≤ y Hmod nL, bastará con calcular mcd Hx - y, nL y se

obtendrá el factor buscado.

2.4 Criba cuadrática

El método anterior admite mejoras y una de ellas conduce a la criba cuadrática.

Este método se basa en emplear un polinomio de la forma

(11)qHxL = Hx+mL2 - n

siendo m =è!!!n , donde dxt representa la parte entera de x. Puede comprobarse que

(12)qHxL = x2 + 2 m x +m2 - n º x2 + 2 m x

es un valor pequelo en relación con n, siempre y cuando x en valor absoluto sea pequeño. Si

se escoge ai = x + m y bi = Hx + mL2 - n , se debe comprobar que se cumpla la relación

(9) y que además sea pt - uniforme. Nótese que entonces se puede deducir que

ai2 = H x + m L2 ª bi Hmod nL, por lo que si un primo p divide bi entonces

H x + m L2 ª n Hmod pL, y por tanto n es residuo cuadrático modulo p. Por este motivo la

base de factores sólo necesita estar formada por aquellos primos p para los que el símbolo

de Legendre es 1. Además, como bi puede ser negativo, el -1 se debe incluir también en la

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

17

Page 31: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

base de factores.

Lo único que queda por comprobar es si zi puede descomponerse totalmente con los

elementos de S. Esto se consigue con la fase de criba, pero antes se tendrá en cuenta que si

pi œ S entonces divide a qHxL, y por tanto también dividirá a qHx + k pL. Se procederá

entonces a la solución de la ecuación

(13)q HxL ª 0 Hmod pL

obteniendo una o dos series, dependiendo del número de soluciones que tenga la ecuación,

de valores y tales que p divide a qHyL.

La criba propiamente dicha se lleva a cabo definiendo un vector Q@xD, con

-M x M, cuya x - ésima entrada está inicializada a dlog » qHxL » t . Sean x1, x2 las

soluciones a (13). Entonces se resta el valor dlog HpLt a aquellas entradas Q @xD tales que x

sea igual a algún valor de las series de soluciones obtenidas en el paso anterior. Finalmente,

los valores de Q @xD que se aproximen a cero son los más susceptibles de ser descompuestos

con los elementos de S, propiedad que se puede verificar de forma directa tratando de

resolverlos.

è Algoritmo 3. Factorización por criba cuadrática.

Descompone el número n en el producto de dos factores no triviales por el método

de la criba cuadrática.

Input HnL

S ≠ { p1, p2, ..., pt }

m ≠ eè!!!!!n u

i ≠ 1

While i t + 1 do

b ≠ q (x) = Hx + mL2 - n

If (b = ¤j=1t pjeij ) Then

ai ≠ ( x + m )

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

18

Page 32: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

bi ≠ b

vi ≠ { v i1, v i2, ..., v i t }

i ≠ i + 1

End

End

* T ≠ { 1, 2, ..., t + 1 } tal que ⁄i œT vi = 0

x ≠ ¤i œT ai mod n

For j = 1, ..., t do

l j ≠ (⁄i œT eij) /2

End

y ≠ ‰j=1

tp j

lj mod n

If ( x ª ± y ) Then

T ≠ { 1, 2, ..., t + 1 } tal que ⁄i œ T vi = 0

Go to *

Else

d = GCD ( x - y, n)

End

Return(d)

Output

Ejercicios propuestos

à Problema 7. Aplicar el algoritmo de factorización por criba cuadrática para factorizarel número n = 24961.

Algoritmo de factorización de criba cuadrática para el número

n = 24961 .

i x qHxL Factorización de qHxL ai vi

1 0 -312 88-1, 1<, 82, 3<, 83, 1<, 813, 1<< 157 81, 1, 1, 0, 1, 0<2 1 3 883, 1<< 158 80, 0, 1, 0, 0, 0<3 -1 -625 88-1, 1<, 85, 4<< 156 81, 0, 0, 0, 0, 0<4 2 320 882, 6<, 85, 1<< 159 80, 0, 0, 1, 0, 0<5 -2 -936 88-1, 1<, 82, 3<, 83, 2<, 813, 1<< 155 81, 1, 0, 0, 1, 0<6 4 960 882, 6<, 83, 1<, 85, 1<< 161 80, 0, 1, 1, 0, 0<7 -6 -2160 88-1, 1<, 82, 4<, 83, 3<, 85, 1<< 151 81, 0, 1, 1, 0, 0<

La base de factores con la que se va a trabajar es

s = 8p1, p2, ..., pt< = 8-1, 2, 3, 5, 13, 23<El tamaño de s es t = 6.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

19

Page 33: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

El algoritmo requiere identificar aquellas filas que resultan

combinación lineal de otras en la matriz formada por los vi

obtenidos.

A =

i

k

jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj

1 1 1 0 1 0

0 0 1 0 0 0

1 0 0 0 0 0

0 0 0 1 0 0

1 1 0 0 1 0

0 0 1 1 0 0

1 0 1 1 0 0

y

{

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

Las filas de la matriz A que cumplen ‚i em

vi = 0 son :

881, 2, 5<, 82, 4, 6<, 83, 6, 7<, 81, 4, 5, 6<, 82, 3, 4, 7<, 81, 3, 4, 5, 7<, 81, 2, 3, 5, 6, 7<<

Se comienza a estudiar cada uno de estos grupos de filas.

Así, T Œ 81, 2, ..., t+1<

Sea T Π= 81, 2, 5<

x = ‰i eT

ai mod n = 3844930

Para cada j, 1 j t, se calcula l j = H‚i e T

eijLê2.

Así se tienen los siguientes valores:

lH1L = 1

lH2L = 3

lH3L = 2

lH4L = 0

lH5L = 1

lH6L = 0

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

20

Page 34: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Sea y = ‰j=1

t

p jl j mod n = 24025

Se debe comprobar si x ª ≤ y Hmod nL. Si es así se debe probar

con otro subconjunto T Π81,2,...,t+1<.

Se cumple que 936 ª ≤ 24025.

Se debe probar por tanto con el siguiente T .

Sea T Π= 82, 4, 6<

x = ‰i eT

ai mod n = 4044642

Para cada j, 1 j t, se calcula l j = H‚i e T

eijLê2.

Así se tienen los siguientes valores:

lH1L = 0

lH2L = 6

lH3L = 1

lH4L = 1

lH5L = 0

lH6L = 0

Sea y = ‰j=1

t

p jl j mod n = 960

Se debe comprobar si x ª ≤ y Hmod nL. Si es así se debe probar

con otro subconjunto T Π81,2,...,t+1<.

Se cumple que 960 ª ≤ 960.

Se debe probar por tanto con el siguiente T .

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

21

Page 35: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Sea T Π= 83, 6, 7<

x = ‰i eT

ai mod n = 3792516

Para cada j, 1 j t, se calcula l j = H‚i e T

eijLê2.

Así se tienen los siguientes valores:

lH1L = 1

lH2L = 5

lH3L = 2

lH4L = 3

lH5L = 0

lH6L = 0

Sea y = ‰j=1

t

p jl j mod n = 13922

Se debe comprobar si x ª ≤ y Hmod nL. Si es así se debe probar

con otro subconjunto T Π81,2,...,t+1<.

Se cumple que 23405 T ≤ 13922.

Se ha llegado a la solución final.

Dos factores no triviales para factorizar 24961 son 109 µ 229.

à Problema 8. Aplicar el algoritmo de factorización por criba cuadrática para factorizarel número n = 7251.

Algoritmo de factorización de criba cuadrática para el número

n = 7251 .

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

22

Page 36: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

i x qHxL Factorización de qHxL ai vi

1 0 -26 88-1, 1<, 82, 1<, 813, 1<< 85 81, 1, 0, 0, 1,

2 -1 -195 88-1, 1<, 83, 1<, 85, 1<, 813, 1<< 84 81, 0, 1, 1, 1,

3 -4 -690 88-1, 1<, 82, 1<, 83, 1<, 85, 1<, 823, 1<< 81 81, 1, 1, 1, 0,

4 26 5070 882, 1<, 83, 1<, 85, 1<, 813, 2<< 111 80, 1, 1, 1, 0,

5 39 8125 885, 4<, 813, 1<< 124 80, 0, 0, 0, 1,

6 41 8625 883, 1<, 85, 3<, 823, 1<< 126 80, 0, 0, 1, 1,

7 -166 -690 88-1, 1<, 82, 1<, 83, 1<, 85, 1<, 823, 1<< -81 81, 1, 1, 1, 1,

La base de factores con la que se va a trabajar es

s = 8p1, p2, ..., pt< = 8-1, 2, 3, 5, 13, 23<El tamaño de s es t = 6.

El algoritmo requiere identificar aquellas filas que resultan

combinación lineal de otras en la matriz formada por los vi

obtenidos.

A =

i

k

jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj

1 1 0 0 1 0

1 0 1 1 1 0

1 1 1 1 0 1

0 1 1 1 0 0

0 0 0 0 1 0

0 0 0 1 1 1

1 1 1 1 1 0

y

{

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

Las filas de la matriz A que cumplen ‚i em

vi = 0 son :

H 1 2 4 L

Se comienza a estudiar cada uno de estos grupos de filas.

Así, T Œ 81, 2, ..., t+1<

Sea T Π= 81, 2, 4<

x = ‰i eT

ai mod n = 792540

Para cada j, 1 j t, se calcula l j = H‚i e T

eijLê2.

Así se tienen los siguientes valores:

lH1L = 1

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

23

Page 37: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

lH2L = 1

lH3L = 1

lH4L = 1

lH5L = 2

lH6L = 0

Sea y = ‰j=1

t

p jl j mod n = 2181

Se debe comprobar si x ª ≤ y Hmod nL. Si es así se debe probar

con otro subconjunto T Π81,2,...,t+1<.

Se cumple que 2181 ª ≤ 2181.

Se debe probar por tanto con el siguiente T .

Todos los posibles subjuntos ΠT han sido evaluados.

El algoritmo de factorización cuadrática aleatoria no puede

factorizar el número 7251 para la base de factores

S = 8-1, 2, 3, 5, 13, 23<.

à Problema 9. Aplicar el algoritmo de factorización por criba cuadrática para factorizarel número n = 54897.

El número 54897 no se puede factorizar para la base de

factores dada.

No es posible encontrar t+1 parejas Hai,biL.

à Problema 10. Aplicar el algoritmo de factorización por criba cuadrática para factorizarel número n = 45.

Algoritmo de factorización de criba cuadrática para el número

n = 45 .

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

24

Page 38: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

i x qHxL Factorización de qHxL ai vi

1 0 -9 88-1, 1<, 83, 2<< 6 81, 0, 0, 0, 0, 0<2 1 4 882, 2<< 7 80, 0, 0, 0, 0, 0<3 -1 -20 88-1, 1<, 82, 2<, 85, 1<< 5 81, 0, 0, 1, 0, 0<4 3 36 882, 2<, 83, 2<< 9 80, 0, 0, 0, 0, 0<5 -3 -36 88-1, 1<, 82, 2<, 83, 2<< 3 81, 0, 0, 0, 0, 0<6 -6 -45 88-1, 1<, 83, 2<, 85, 1<< 0 81, 0, 0, 1, 0, 0<7 9 180 882, 2<, 83, 2<, 85, 1<< 15 80, 0, 1, 0, 0, 0<

La base de factores con la que se va a trabajar es

s = 8p1, p2, ..., pt< = 8-1, 2, 3, 5, 13, 23<El tamaño de s es t = 6.

El algoritmo requiere identificar aquellas filas que resultan

combinación lineal de otras en la matriz formada por los vi

obtenidos.

A =

i

k

jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj

1 0 0 0 0 0

0 0 0 0 0 0

1 0 0 1 0 0

0 0 0 0 0 0

1 0 0 0 0 0

1 0 0 1 0 0

0 0 1 0 0 0

y

{

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

Las filas de la matriz A que cumplen ‚i em

vi = 0 son :

881, 5<, 82, 4<, 83, 6<, 81, 2, 5<, 81, 4, 5<, 82, 3, 6<, 83, 4, 6<, 81, 2, 4, 5<,81, 3, 5, 6<, 82, 3, 4, 6<, 81, 2, 3, 5, 6<, 81, 3, 4, 5, 6<, 81, 2, 3, 4, 5, 6<<

Se comienza a estudiar cada uno de estos grupos de filas.

Así, T Œ 81, 2, ..., t+1<

Sea T Π= 81, 5<

x = ‰i eT

ai mod n = 18

Para cada j, 1 j t, se calcula l j = H‚i e T

eijLê2.

Así se tienen los siguientes valores:

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

25

Page 39: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

lH1L = 1

lH2L = 1

lH3L = 2

lH4L = 0

lH5L = 0

lH6L = 0

Sea y = ‰j=1

t

p jl j mod n = 27

Se debe comprobar si x ª ≤ y Hmod nL. Si es así se debe probar

con otro subconjunto T Π81,2,...,t+1<.

Se cumple que 18 ª ≤ 27.

Se debe probar por tanto con el siguiente T .

Sea T Π= 82, 4<

x = ‰i eT

ai mod n = 63

Para cada j, 1 j t, se calcula l j = H‚i e T

eijLê2.

Así se tienen los siguientes valores:

lH1L = 0

lH2L = 2

lH3L = 1

lH4L = 0

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

26

Page 40: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

lH5L = 0

lH6L = 0

Sea y = ‰j=1

t

p jl j mod n = 12

Se debe comprobar si x ª ≤ y Hmod nL. Si es así se debe probar

con otro subconjunto T Π81,2,...,t+1<.

Se cumple que 18 T ≤ 12.

Se ha llegado a la solución final.

Dos factores no triviales para factorizar 45 son 3 µ 15.

3. El problema RSA o inversión RSA (RSAP)

El sistema de cifrado asimétrico de clave pública RSA fue propuesto por R. L.

Rivest, A. Shamir y L. Adleman en el año 1977 y posteriormente patentado por el MIT . El

sistema RSA es uno de los métodos de cifrado más utilizados, debido a sus especiales

características y prestaciones que se describen a continuación.

Sean p y q dos números primos grandes (>100 dígitos) y sea N = pq el producto

entre ellos. Sea « (N) la función de Euler de N , indicadora del número de valores enteros

menores que N que son relativamente primos con N . En este caso particular, la función

« (N) viene dada por el producto

(14)« HNL = Hp - 1L Hq - 1L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

27

Page 41: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

En estas condiciones, sea e un valor entero aleatorio relativamente primo con « (N)

tal que 1 � e � N y sea d otro entero tal que verifica la congruencia

(15)ed ª 1 Hmod« HN LL

es decir, que

(16)ed ª k f HNL + 1

con k valor entero. En estas condiciones, para cualquier valor entero M se verifica que si

C ª M e (mod N) entonces M ª Cd (mod N), es decir que

(17)M ed ª M Hmod NL

Para demostrarlo se utilizará el Teorema Chino de los Restos Congruentes. Dicho

teorema asegura que la congruencia anterior se verifica si y sólo si se verifican a su vez las

dadas por

(18)M ed ª M Hmod pL

(19)M ed ª M Hmod qL

lo cual es trivial teniendo en cuenta el teorema de Fermat

(20)M ed ª M kF HNL+1 ª M k Hp-1L Hq-1L+1 ª M k Hq-1L Hp-1L M ª M Hmod pL

(21)M ed ª M kF HNL+1 ª M k Hp-1L Hq-1L+1 ª M k Hp-1L Hq-1L M ª M Hmod qL

Ha de tenerse en cuenta que en el caso de que M no sea relativamente primo con N ,

entonces debe ser múltiplo de p o múltiplo de q, con lo que las congruencias anteriores se

verifican igualmente de forma trivial. Esta demostración es la base del sistema de cifrado

RSA. Dicho sistema está constituido por la claves N , e y d, respectivamente módulo de

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

28

Page 42: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

trabajo y exponentes de cifrado y descifrado. El valor de N es público, así como el de uno

de los dos exponentes (e o d), mientras que el otro permanece secreto, por ejemplo:

Claves públicas: N , e Clave secreta: d

Para realizar el cifrado C de un mensaje en claro M tal que 1 � M � N , el mensaje

se eleva a la potencia e y el resultado se reduce al módulo N . Es decir, C ª M e (mod N).

Para la recuperación del mensaje en claro M se lleva a cabo elevando el mensaje cifrado C

a la potencia d (clave pareja de e) y reduciendo la exponenciación módulo N de acuerdo

con la congruencia M ª Cd (mod N). La recuperación del mensaje M puede igualmente

llevarse a cabo aplicando el teorema chino de los restos congruentes calculando

(22)M ª 8 Ap@Cpd Hmod pLD + Aq@Cqd Hmod qLD < Hmod NL

donde

(23)Cp ª C Hmod pL

(24)Cq ª C Hmod qL

(25)Ap ª q@q-1 Hmod pLD ª qp-1 Hmod NL

(26)Aq ª p@p-1 Hmod qLD ª pq-1 Hmod NL

La congruencia anteriore es equivalente a

(27)M ª 9 ApACpdp Hmod pLE + AqACqdq Hmod qLE = Hmod NL

donde los valores dp y dq están dados por

(28)dp ª d Hmod p - 1L

(29)dq ª d Hmod q - 1L.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

29

Page 43: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Como se ve, en este procedimiento de cálculo, todas las exponenciaciones

modulares se reducen bien (mod p) o bien (mod q), por lo que este método es

considerablemente más rápido que el cómputo de la exponenciación modular

(30)M ª Cd Hmod NL.

Además, los valores de las variables dp, dq, Ap y Aq pueden calcularse previamente.

Sin embargo, este procedimiento de cálculo puede ser tan sólo utilizado por el propietario

de la clave secreta, puesto que él es el único que conoce los factores primos p y q.

Precisamente sobre este hecho se apoya la consistencia del sistema de cifrado RSA. El

cálculo de la clave secreta d es sencillo, conocidos p y q, mientras que sin su conocimiento

el cálculo de la clave secreta es equivalente al cálculo de factorización de la clave pública

N . Aquí es dónde radica la seguridad del método RSA, puesto que el problema de la

factorización de un número compuesto N , producto de dos factores primos, tiene una

complejidad exponencial dada por ‰è!!!!!!!!!!!!!!!!!!!!!!!!!!!!lnHNL lnlnHNL . Por esta razón se requiere la utilización de

factores primos muy grandes. A su vez, aunque el sistema de cifrado RSA funciona para

cualquier valor entero M , es conveniente que M sea relativamente primo con la clave

pública N , puesto que de lo contrario la factorización de N es trivial. Actualmente, se

recomienda utilizar claves públicas N mayores de 1024 bits.

è Algoritmo 4. Algoritmo de cifrado RSA.

Input (p, q)

N ≠ pq

f(N )

e ≠ Random(Integer, 1,..., f(N )-1)

While GCD(e, f(N )) ∫ 1 do

e ≠ Random(Integer,1,..., f(N )-1)

End

d ≠ inversaModular (e, N )

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

30

Page 44: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

M ≠ Random(Integer, 1,..., N )

C ª M e (mod N )

M ª Cd (mod N )

Cp ª C (mod p)

Cq ª C (mod q)

dp ª d (mod p)

dq ª d (mod q)

Ap ª q [q-1(mod p)]

Aq ª p [p-1(mod q)]

M ª 8Ap HCpdp Hmod pLL + Aq HCq

dq Hmod qLL <

Return (M)

Output

El estudio y análisis del sistema de cifrado RSA presenta una cuestión denominada

como El problema RSA (RSAP). Dicho problema plantea la siguiente cuestión: dado un

número entero positivo n que es producto de dos números distintos impares p y q, un

número entero positivo tal que GCDH e, Hp - 1L Hq - 1L L = 1 y un entero c, encontrar un

entero m tal que me ª c Hmod nL.

En otras palabras, se plantea encontrar tantas raíces módulo n como sea el valor de

e, con el objetivo de encontrar así el valor de d. Además, los factores que componen n no se

conocen. Este planteamiento equivale a intentar descifrar la clave privada a partir de la

clave pública. Las condiciones impuestas respecto a los valores que pueden tomar n y e

garantizan que para cada número entero c œ 80, 1, ...., n - 1< haya exactamente un valor

de m œ 80, 1, ..., n - 1< tal queme ª c Hmod nL. Por lo tanto, la función f : �n ö �n

definida como f HmL = me Hmod nL es una permutación.

Los estudios realizados en este ámbito demuestran que, a día de hoy, la técnica más

eficaz para abordar el problema es la de factorizar n y por tanto descubrir así la clave

privada. No obstante, como se ha afirmado en los métodos de factorización anteriormente

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

31

Page 45: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

explicados, esta técnica resulta inviable cuando n es suficientemente grande. No se ha

demostrado, sin embargo que esta técnica sea la única posible a emplear y se plantea, como

se ha mencionado con anterioridad, encontrar raíces cuadradas módulo n como alternativa

para descifrar el valor de d, aunque esta técnica presenta los mismos problemas de tiempo

de ejecución que la factorización de n.

Ejercicios propuestos

à Problema 11. Sea el sistema de cifrado RSA definido por los parámetros p = 61 yq = 47. Mostrar cada paso necesario para llegar a cifrar y descifrar un mensaje M.

Los parámetros definidos para el sistema RSA son:

p = 61

q = 47

N = pq = 61*47

fHN L = Hp-1LHq-1L = 2760

e = 1073

d ª 1073-1 ª 2297 Hmod 2760L

El cifrado C del mensaje M = 1352 viene dado por:

C ª 13521073 ª 1884 Hmod 2867L

La recuperación del mensaje M se lleva a cabo mediante la

congruencia:

M ª 18842297 ª 1352 Hmod 2867L

Para recuperar el mensaje en claro M mediante el teorema chino

de los restos congruentes se calculan los valores:

Cp ª C61 ª 1884 ª 54 Hmod 61LCq ª C47 ª 1884 ª 4 Hmod 47Ldp ª d60 ª 2297 ª 17 Hmod 60Ldq ª d46 ª 2297 ª 43 Hmod 46L

El valor de Ap es:

A61 ª 47*@47-1 Hmod 61LD ª 47*13 ª 4760 ª 611 Hmod 2867L

El valor de Aq es:

A47 ª 61*@61-1 Hmod 47LD ª 61*37 ª 6146 ª 2257 Hmod 2867L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

32

Page 46: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

La recuperación del mensaje se lleva a cabo mediante la

congruencia:

M ª 8611*@5417 Hmod 61LD + 2257*@443 Hmod 47LD< ªH611*10 + 2257*36L ª H6110 + 81252L ª 87362 ª

1352 Hmod 2867L

à Problema 12. Sea el sistema de cifrado RSA definido por los parámetros p = 216 yq = 227. Mostrar cada paso necesario para llegar a cifrar y descifrar un mensaje M.

El valor de p no es primo.

El valor de q no es primo.

El algoritmo no puede continuar.

à Problema 13. Sea el sistema de cifrado RSA definido por los parámetros p = 3709 yq = 10289. Mostrar cada paso necesario para llegar a cifrar y descifrar un mensaje M.

Los parámetros definidos para el sistema RSA son:

p = 3709

q = 10289

N = p µ q = 3709 µ 10289

fHN L = Hp-1L µ Hq-1L = 38147904

e = 37071851

d ª 37071851-1 ª 22679939 Hmod 38147904L

El cifrado C del mensaje M = 1192838 viene dado por:

C ª 119283837071851 ª 4303732 Hmod 38161901L

La recuperación del mensaje M se lleva a cabo mediante la

congruencia:

M ª 430373222679939 ª 1192838 Hmod 38161901L

Para recuperar el mensaje en claro M mediante el teorema chino

de los restos congruentes se calculan los valores:

Cp ª C3709 ª 4303732 ª 1292 Hmod 3709LCq ª C10289 ª 4303732 ª 2930 Hmod 10289Ldp ª d3708 ª 22679939 ª 1811 Hmod 3708Ldq ª d10288 ª 22679939 ª 5187 Hmod 10288L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

33

Page 47: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

El valor de Ap es:

A3709 ª 10289*@10289-1 Hmod 3709LD ª10289*987 ª 102893708 ª 10155243 Hmod 38161901L

El valor de Aq es:

A10289 ª 3709*@3709-1 Hmod 10289LD ª3709*7551 ª 370910288 ª 28006659 Hmod 38161901L

La recuperación del mensaje se lleva a cabo mediante la

congruencia:

M ª 810155243*@12921811

Hmod 3709LD + 28006659*@29305187 Hmod 10289LD< ªH10155243*2249 + 28006659*9603L ª H22839141507 +

268947946377L ª 291787087884 ª

1192838 Hmod 38161901L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

34

Page 48: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

4. Problema del residuo cuadrático

La Teoría de Números abarca un campo inmenso de las matemáticas. Dentro de la

reciprocidad cuadrática se encuentra la propiedad residuo cuadrático.

Dados p y q enteros donde p no es divisible por q, si existe un número tal que

x2 ª p Hmod qL se dice que p es un residuo cuadrático de q, y en caso contrario se

considera que p es un no-residuo cuadrático de q. Así pues, el conocimiento del carácter

residual cuadrático del entero p módulo q requiere el conocimiento de los factores primos

de q, lo cual no siempre es posible cuando se trabaja con enteros grandes. Sin embargo, a

diferencia de lo que ocurre en el caso general del problema del carácter residual, el

carácter residual cuadrático (mod q) del valor entero p se puede calcular en tiempo

polinómico, suponiendo conocidos los factores primos de q. Esto último se lleva a cabo

mediante los denominados símbolos de Legendre y Jacobi. Por ejemplo, 13 es residuo

cuadrático de 17, pues la ecuación x2 ª pHmod qL tiene como soluciones x = 8, 25, 42.

Por otro lado, las congruencias entre números pueden manifestarse en dos grados

distintos; de primer grado y de segundo grado.

Respecto a las primeras, dados dos números enteros a y b, si su diferencia Ha - bL

o Hb - aL es exactamente divisible por el número m, se dice que a y b son congruentes

respecto al módulo m. Dicha caraterística se representa como a ª b HmodmL. Así,

100 ª 2 Hmod 7L.

En lo referente a las de segundo grado, se trata de aquéllas que se han definido

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

35

Page 49: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

como residuo cuadrático con anterioridad y que Gauss denominó en su ley de

reciprocidad cuadrática. En ella Gauss afirma que si p y q son primos impares, y ninguno

de ellos pertenece a la sucesión 4 k + 1, entonces p es un residuo módulo q si y sólo si q

es un no residuo módulo p. Si por otro lado cualquiera de los dos, o ambos, pertecen a la

sucesión 4 k + 1 entonces p es un residuo módulo q si y sólo si q es un residuo módulo p.

Dicho más claramente, existe una reciprocidad entre el par de congruencias

x2 ª q Hmod pL. En el caso de que p y q sean primos, ambas congruencias son posibles o

ambas imposibles, a no ser que tanto p como q den el resto 3 cuando se dividen entre 4,

en cuyo caso una de las congruencias es posible y la otra no.

En el estudio de los residuos cuadráticos es preferible limitarse a los casos en los

que el módulo es un primo p, ya que presenta un comportamiento mucho más sencillo.

Para estudiar este caso es muy conveniente el uso de del símbolo de Legendre, y de su

extensión el símbolo de Jacobi.

Uno de los problemas abiertos más importantes sobre residuos cuadráticos es

determinar el orden de magnitud del mínimo no-residuo cuadrático positivo nHpL. El mejor

resultado conocido asegura que la expresión nHpL í p 1ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ4 è!!!!‰ está acotada para todos los

primos, y se conjetura que el resultado podría seguir siendo cierto si se sustituye el

denominador por Hlog pL2.è Algoritmo 5. Algoritmo del residuo cuadrático.

Indica si un número entero a es residuo cuadrático respecto de otro entero n.

Input Ha, nL

sol ≠ jacobi2 Ha, nLprimos ≠ FactorInteger(n)

If Hsol = -1L Then

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

36

Page 50: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Break

Else

If (primos = Null) Then

Return()

Else

For i = 1, ..., primos do

If ( jacobi2(a, primos(i)) = -1)

Break

End

End

End

End

Return()

Output

Ejercicios propuestos

à Problema 14. Sea a = 13 y n = 17. Comprobar si a es residuo cuadrático de n..

El símbolo de Jacobi de H13ê17L = 1.

Por lo tanto a = 13 es resto cuadrático respecto

de 17.

à Problema 15. Sea a = 13324 y n = 174123. Comprobar si a es residuo cuadrático de n.

El símbolo de Jacobi de H13324ê174123L = 1.

Por lo tanto a = 13324 es resto cuadrático respecto

de 174123.

à Problema 16. Sea a = 674 y n = 3. Comprobar si a es residuo cuadrático de n.

El símbolo de Jacobi de H674ê3L= -1, lo que permite concluir

que a = 674 no es resto cuadrático de 3.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

37

Page 51: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

5. Raíz cuadrada módulo n. (SQROOT)

La operación del cuadrado modular, en la que se fundamenta el problema del

carácter residual cuadrático, es frecuentemente utilizado en Criptografía. Lo mismo sucede

con su función inversa, la raíz cuadrada modular.

Si se supone que n y a son dos valores enteros, con a resto cuadrático módulo n,

entonces existe otro valor entero x, con 0 < x < n, tal que es solución de la congruencia:

(31)a ª x2Hmod nL.

El cálculo del valor x requiere la obtención de la raíz cuadrada del entero a módulo

n, lo cual se representa mediante la siguiente congruencia:

(32)x ªè!!!!a Hmod nL.

Evidentemente, la raíz cuadrada de un valor entero módulo n existe, si y sólo si,

dicho valor entero es resto cuadrático módulo n. Además, en el caso de que exista, se puede

demostrar que dicha raíz cuadrada no es única. Existen diversos algoritmos para el cálculo

de raíces cuadradas módulo n. Para presentarlos, se distinguirán los dos casos posibles que

se pueden presentar: que el entero n sea un número primo o bien que sea un número

compuesto.

5.1 Raíz cuadrada módulo n, con n primo

En el caso de que n sea un número primo, se puede demostrar que todo valor entero

a, que sea resto cuadrático módulo n, tiene dos raíces cuadradas de la forma ≤r módulo n y

tales que:

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

38

Page 52: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

(33)H≤rL2 ª a Hmod nL .

Existen algoritmos capaces de calcular estas raíces de forma eficiente, aunque

tienen una complejidad computacional bastante elevada. A continuación, se pasa a explicar

uno de ellos, debido a L.M. Adleman, Manders y G.L. Miller.

Se debe tener en cuenta que, n ∫ 2 y el valor entero a tiene que estar comprendido

entre 0 < a < n, siendo a resto cuadrático módulo n.

è Algoritmo 6. Algoritmo para el cálculo de raíces cuadradas módulo primo

Input Ha, nL

(* Lista de valores de b tal que H bÅÅÅÅÅnL = -1 *)

l ≠ 8i ê H iÅÅÅÅÅnL = -1<

i=1

n-1

(* Se elige al azar valores enteros b con 0 < b < n hasta que Hb ênL = -1

*)

b ≠ l HRandom HInteger, 1, ..., Length HlLLLHs, tL ≠ n - 1 = 2s t, t œ Odd

a£ ≠ a-1 Hmod nLc0 ≠ b£ Hmod nLr0 ≠ aHt+1Lê2 Hmod nL

For i = 1, ... , s - 1 do

di ≠ Hci-12 a£L2s-i-1 Hmod nL

If di ª N - 1 Hmod nL then

ri ≠ ri-1 ci-1 Hmod nLci ≠ ci-1

2 Hmod nLEnd

End

Return Hrs-1, -rs-1LOutput

El algoritmo anterior se puede generalizar para el caso de que el valor entero n sea

de la forma n = pm, con p número primo y m > 1.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

39

Page 53: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Ejercicios propuestos

à Problema 17. Calcular la raíz è!!!a Hmod nL para los valores enteros dados:

a) n = 97 y a = 44.b) n = 72 y a = 103.

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!

44 Hmod 97L

Como n = 97 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 44ÅÅÅÅÅÅÅÅ

97L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 85, 7, 10, 13, 14, 15, 17, 19, 20, 21, 23, 26, 28, 29, 30,

34, 37, 38, 39, 40, 41, 42, 45, 46, 51, 52, 55, 56, 57, 58, 59, 60,

63, 67, 68, 69, 71, 74, 76, 77, 78, 80, 82, 83, 84, 87, 90, 92<Se elige al azar el valor b = 59

n - 1 = 96 = 25 3 fl s = 5, t = 3

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 44-1 Hmod 97L

i yi gi ui vi

0 0 97 1 0

1 0 44 0 1

2 2 9 1 -2

3 4 8 -4 9

4 1 1 5 86

5 8 0 -44 97

Inverso modular.

86 ª 44-1 Hmod 97L

a£ ª a-1 Hmod nL = 86 ª 44-1 Hmod 97Lc0 ª bt Hmod nL = 30 ª 593 Hmod 97Lr0 ª aHt+1Lê2 Hmod nL = 93 ª 442 Hmod 97L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

40

Page 54: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Tabla del algoritmo.

i di ri ci

0 0 93 30

1 96 74 27

2 1 74 50

3 1 74 75

4 1 74 96

H≤ rL ª ≤ 74 ª 874, 23< ª è!!!!!!!44 Hmod 97L

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!

72 Hmod 103L

Como n = 103 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 72ÅÅÅÅÅÅÅÅÅÅÅ

103L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 83, 5, 6, 10, 11, 12, 20, 21, 22, 24, 27, 31, 35, 37, 39, 40, 42,

43, 44, 45, 47, 48, 51, 53, 54, 57, 62, 65, 67, 69, 70, 71, 73, 74,

75, 77, 78, 80, 84, 85, 86, 87, 88, 89, 90, 94, 95, 96, 99, 101, 102<Se elige al azar el valor b = 77

n - 1 = 102 = 21 51 fl s = 1, t = 51

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 72-1 Hmod 103L

i yi gi ui vi

0 0 103 1 0

1 0 72 0 1

2 1 31 1 -1

3 2 10 -2 3

4 3 1 7 93

5 10 0 -72 103

Inverso modular.

93 ª 72-1 Hmod 103L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

41

Page 55: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

a£ ª a-1 Hmod nL = 93 ª 72-1 Hmod 103Lc0 ª bt Hmod nL = 102 ª 7751 Hmod 103Lr0 ª aHt+1Lê2 Hmod nL = 81 ª 7226 Hmod 103L

Tabla del algoritmo.

i di ri ci

0 0 81 102

H≤ rL ª ≤ 81 ª 881, 22< ª è!!!!!!!72 Hmod 103L

La raíces son correctas puesto que

812 ª 72 Hmod 103L222 ª 72 Hmod 103L

à Problema 18. Calcular la raíz è!!!a Hmod nL para los valores enteros dados:

a) n = 223 y a = 31.

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!

31 Hmod 223L

Como n = 223 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 31ÅÅÅÅÅÅÅÅÅÅÅ

223L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 83, 5, 6, 10, 11, 12, 13, 20, 21, 22, 23, 24, 26, 27, 35, 40, 42, 44, 45,

46, 48, 51, 52, 54, 57, 59, 61, 67, 70, 71, 75, 77, 79, 80, 84, 85, 87, 88, 90,

91, 92, 93, 95, 96, 97, 99, 102, 103, 104, 107, 108, 111, 113, 114, 117,

118, 122, 123, 125, 129, 134, 137, 140, 141, 142, 145, 147, 149, 150,

151, 154, 155, 157, 158, 159, 160, 161, 163, 165, 167, 168, 170, 173,

174, 176, 180, 182, 184, 185, 186, 187, 189, 190, 191, 192, 193, 194,

195, 198, 204, 205, 206, 207, 208, 209, 214, 215, 216, 219, 221, 222<Se elige al azar el valor b = 194

n - 1 = 222 = 21 111 fl s = 1, t = 111

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 31-1 Hmod 223L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

42

Page 56: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

i yi gi ui vi

0 0 223 1 0

1 0 31 0 1

2 7 6 1 -7

3 5 1 -5 36

4 6 0 31 -223

Inverso modular.

36 ª 31-1 Hmod 223L

a£ ª a-1 Hmod nL = 36 ª 31-1 Hmod 223Lc0 ª bt Hmod nL = 222 ª 194111 Hmod 223Lr0 ª aHt+1Lê2 Hmod nL = 37 ª 3156 Hmod 223L

Tabla del algoritmo.

i di ri ci

0 0 37 222

H≤ rL ª ≤ 37 ª 837, 186< ª è!!!!!!!31 Hmod 223L

La raíces son correctas puesto que

372 ª 31 Hmod 223L1862 ª 31 Hmod 223L

à Problema 19. Calcular la raíz è!!!a Hmod nL para los valores enteros dados:

a) n = 211 y a = 45.

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!

45 Hmod 211L

Como n = 211 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 45ÅÅÅÅÅÅÅÅÅÅÅ

211L = 1

la raíz cuadrada modular existe.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

43

Page 57: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 82, 3, 7, 8, 10, 12, 15, 17, 18, 22, 23, 26, 27, 28, 29, 31, 32, 33, 35,

38, 39, 40, 41, 42, 48, 50, 57, 60, 61, 63, 67, 68, 72, 74, 75, 77, 85,

86, 88, 89, 90, 91, 92, 94, 97, 98, 102, 104, 106, 108, 110, 111, 112,

115, 116, 118, 124, 127, 128, 129, 130, 131, 132, 133, 135, 138,

140, 141, 142, 145, 146, 147, 149, 152, 153, 155, 156, 157, 158,

159, 160, 162, 164, 165, 166, 167, 168, 174, 175, 177, 181, 186,

187, 190, 191, 192, 195, 197, 198, 200, 202, 205, 206, 207, 210<Se elige al azar el valor b = 89

n - 1 = 210 = 21 105 fl s = 1, t = 105

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 45-1 Hmod 211L

i yi gi ui vi

0 0 211 1 0

1 0 45 0 1

2 4 31 1 -4

3 1 14 -1 5

4 2 3 3 -14

5 4 2 -13 61

6 1 1 16 136

7 2 0 -45 211

Inverso modular.

136 ª 45-1 Hmod 211L

a£ ª a-1 Hmod nL = 136 ª 45-1 Hmod 211Lc0 ª bt Hmod nL = 210 ª 89105 Hmod 211Lr0 ª aHt+1Lê2 Hmod nL = 16 ª 4553 Hmod 211L

Tabla del algoritmo.

i di ri ci

0 0 16 210

H≤ rL ª ≤ 16 ª 816, 195< ª è!!!!!!!45 Hmod 211L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

44

Page 58: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

La raíces son correctas puesto que

162 ª 45 Hmod 211L1952 ª 45 Hmod 211L

à Problema 20. Calcular la raíz è!!!a Hmod nL para los valores enteros dados:

a) n = 223 y a = 923.

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

923 Hmod 223L

Como n = 223 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 923ÅÅÅÅÅÅÅÅÅÅÅ

223L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 83, 5, 6, 10, 11, 12, 13, 20, 21, 22, 23, 24, 26, 27, 35, 40, 42, 44, 45,

46, 48, 51, 52, 54, 57, 59, 61, 67, 70, 71, 75, 77, 79, 80, 84, 85, 87, 88, 90,

91, 92, 93, 95, 96, 97, 99, 102, 103, 104, 107, 108, 111, 113, 114, 117,

118, 122, 123, 125, 129, 134, 137, 140, 141, 142, 145, 147, 149, 150,

151, 154, 155, 157, 158, 159, 160, 161, 163, 165, 167, 168, 170, 173,

174, 176, 180, 182, 184, 185, 186, 187, 189, 190, 191, 192, 193, 194,

195, 198, 204, 205, 206, 207, 208, 209, 214, 215, 216, 219, 221, 222<Se elige al azar el valor b = 170

n - 1 = 222 = 21 111 fl s = 1, t = 111

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 923-1 Hmod 223L

i yi gi ui vi

0 0 223 1 0

1 0 923 0 1

2 0 223 1 0

3 4 31 -4 1

4 7 6 29 -7

5 5 1 -149 36

6 6 0 923 -223

Inverso modular.

36 ª 923-1 Hmod 223L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

45

Page 59: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

a£ ª a-1 Hmod nL = 36 ª 923-1 Hmod 223Lc0 ª bt Hmod nL = 222 ª 170111 Hmod 223Lr0 ª aHt+1Lê2 Hmod nL = 37 ª 92356 Hmod 223L

Tabla del algoritmo.

i di ri ci

0 0 37 222

H≤ rL ª ≤ 37 ª 837, 186< ª è!!!!!!!!!!923 Hmod 223L

La raíces son correctas puesto que

372 ª 923 Hmod 223L1862 ª 923 Hmod 223L

5.2 Raíz cuadrada módulo n, con n compuesto

En este punto se describe el cálculo de raíces cuadradas módulo n, en el caso de que

n sea un número compuesto de la forma:

(34)n = pµ q

con p y q factores primos de n. En estas condiciones, se puede demostrar que todo valor

entero a, con 0 < a < n que sea resto cuadrático módulo n, tiene cuatro raíces cuadradas

módulo n. Estas, son de la forma ≤x y ≤ y módulo n y tales que:

(35)H≤xL2 ª H≤ yL2 ª a Hmod nL

verificándose que:

(36)≤x T ≤ y Hmod nL.

En estas condiciones, las raíces ≤x Hmod nL se denominan no gemelas, al igual que

las raíces ≤ y Hmod nL. Cualesquiera otras dos raíces se denominan gemelas. Las raíces

cuadradas de a módulo n pueden calcularse de forma eficiente si se suponen conocidos los

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

46

Page 60: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

factores primos p y q de n. Es necesario recordar que cuando n es compuesto, a diferencia

de lo que sucede cuando es primo, el carácter residual del entero a respecto de n no puede

ser determinado de forma directa a partir del valor del símbolo de Jacobi Ha ênL. Así, si

Ha ênL = -1, entonces se puede asegurar que a no es resto cuadrático módulo n. Sin

embargo, si Ha ênL = +1, no es posible garantizar que a sea resto cuadrático módulo n, ya

que para ello debe serlo respecto de cada uno de los factores primos de n, es decir, se debe

verificar que Ha ê pL = Ha êqL = +1. Así pues, en el caso de que Ha ênL = +1, la determinación

del carácter residual de a respecto de n requiere el conocimiento de los factores primos de n.

Hecha esta puntualización, para calcular las raíces cuadradas de a módulo n, se

comienza por calcular las raíces cuadradas de a respecto de los factores primos p y q de n,

lo cual se lleva a cabo aplicando el algoritmo descrito en el apartado anterior. A

continuación, dichas raíces se combinan mediante el teorema chino de los restos

congruentes, obteniendo de esa forma las cuatro raíces cuadradas de a módulo n. Cuando se

trabaja con valores de n muy grandes (>200 dígitos), este procedimiento de cálculo de

raíces es viable únicamente si se conocen los factores primos de n y, aún en este caso, es de

una complejidad computacional bastante elevada. Sin embargo, si los factores primos de n

se descomponen, entonces el cálculo de raíces cuadradas módulo n es totalmente inviable.

è Algoritmo 7. Algoritmo para el cálculo de raíces cuadradas módulo compuesto

Input Ha, n, p, qL

Hr, -rL ≠ sqrootnprimo Ha, pLHs, -sL ≠ sqrootnprimo Ha, qL

Ap ª q @q-1 mod HpLD Hmod nLAq ª p @p-1 mod HqLD Hmod nL

x ª HAp r + Ap sL Hmod nLy ª HAp r - Ap sL Hmod nL

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

47

Page 61: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Return HH≤ x, ≤ yL Hmod nLLOutput

El algoritmo puede generalizarse para el caso de que el valor entero n sea de la

forma:

(37)n =‰i=1

i=t

piei

con pi factores primos con multiplicidades respectivas ei, para i = 1, ..., t. Sin embargo,

esta generalización no será considerada. Una importante consideración a tener en cuenta es

que la factorización de n puede obtenerse de forma trivial, a partir del conocimiento de una

pareja de raíces cuadradas gemelas de cualquier valor entero que sea resto cuadrático

módulo n, en particular, a partir de las raíces cuadradas x e y de a módulo n. Así, puesto

que dichas raíces verifican que:

(38)x T ≤ y Hmod nL

(39)x2 ª y2 ª a Hmod nL

entonces, uno de los valores del máximo común divisor mcd Hx ≤ y, nL corresponde al

número primo p y el otro al número primo q. Esto es fácil de ver puesto que:

(40)Hx + yL Hx - yL ª Hx2 - y2L ª 0 Hmod nLïHx+ yL Hx - yL = k n

con k entero:

(41)x T ≤ y Hmod nL ï Hx ≤ yL ∫ k£ n

con k£ entero.

Por tanto, se tiene que:

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

48

Page 62: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

(42)Hx + yL Hx - yL = k p qHx ≤ yL ∫ k£ p q

(43)ï mcd Hx ≤ y, nL = p ó q.

Ejercicios propuestos

à Problema 21. Calcular la raíz è!!!a Hmod nL para los valores enteros dados, sabiendo que

n = p.q es un número compuesto de dos primos enteros.a) n = 17.29 = 423 y a = 132.b) n = 19.23 = 437 y a = 330.

Cálculo de raíces cuadradas módulo compuesto.

8r1, r2, r3, r4< ª è!!!!a Hmod nL n = p.q

8r1, r2, r3, r4< ªè!!!!!!!!!!

132 Hmod 493L 493 = 17.29

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

132 Hmod 17L

Como n = 17 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 132ÅÅÅÅÅÅÅÅÅÅÅ

17L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 83, 5, 6, 7, 10, 11, 12, 14<Se elige al azar el valor b = 3

n - 1 = 16 = 24 1 fl s = 4, t = 1

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 132-1 Hmod 17L

i yi gi ui vi

0 0 17 1 0

1 0 132 0 1

2 0 17 1 0

3 7 13 -7 1

4 1 4 8 -1

5 3 1 -31 4

6 4 0 132 -17

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

49

Page 63: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Inverso modular.

4 ª 132-1 Hmod 17L

a£ ª a-1 Hmod nL = 4 ª 132-1 Hmod 17Lc0 ª bt Hmod nL = 3 ª 31 Hmod 17Lr0 ª aHt+1Lê2 Hmod nL = 13 ª 1321 Hmod 17L

Tabla del algoritmo.

i di ri ci

0 0 13 3

1 1 13 9

2 16 15 13

3 16 8 16

H≤ rL ª ≤ 8 ª 88, 9< ª è!!!!!!!!!!132 Hmod 17L

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

132 Hmod 29L

Como n = 29 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 132ÅÅÅÅÅÅÅÅÅÅÅ

29L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 82, 3, 8, 10, 11, 12, 14, 15, 17, 18, 19, 21, 26, 27<Se elige al azar el valor b = 21

n - 1 = 28 = 22 7 fl s = 2, t = 7

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 132-1 Hmod 29L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

50

Page 64: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

i yi gi ui vi

0 0 29 1 0

1 0 132 0 1

2 0 29 1 0

3 4 16 -4 1

4 1 13 5 -1

5 1 3 -9 2

6 4 1 41 20

7 3 0 -132 29

Inverso modular.

20 ª 132-1 Hmod 29L

a£ ª a-1 Hmod nL = 20 ª 132-1 Hmod 29Lc0 ª bt Hmod nL = 12 ª 217 Hmod 29Lr0 ª aHt+1Lê2 Hmod nL = 25 ª 1324 Hmod 29L

Tabla del algoritmo.

i di ri ci

0 0 25 12

1 1 25 28

H≤ rL ª ≤ 25 ª 825, 4< ª è!!!!!!!!!!132 Hmod 29L

12 ª p-1 Hmod qL ª 17-1 Hmod 29L

10 ª q-1 Hmod pL ª 29-1 Hmod 17L

Se calculan los valores siguientes:

Ap ª q @q-1 Hmod pLD Hmod nL ª29 @29-1 Hmod 17LD Hmod 493L

Ap ª 29µ10 Hmod 493L = 290 Hmod 493LAq ª p @p-1 Hmod qLD Hmod nL ª

17 @17-1 Hmod 29LD Hmod 493LAq ª 17µ12 Hmod 493L = 204 Hmod 493Lx ª HAp r + Aq sL Hmod nL ª H290µ8 + 204µ4L Hmod 493Lx ª 178 Hmod 493Ly ª HAp r - Aq sL Hmod nL ª H290µ8 + 204µ25L Hmod 493Ly ª 25 Hmod 493L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

51

Page 65: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Raíces cuadradas módulo compuesto.

H≤ xL ª ≤ 178 = 8178, 315<H≤ yL ª ≤ 25 = 825, 468<8r1, r2, r3, r4< ª è!!!!

a Hmod nL n = p.q

8178, 315, 25, 468< ªè!!!!!!!!!!

132 Hmod 493L 493 = 17.29

Cálculo de raíces cuadradas módulo compuesto.

8r1, r2, r3, r4< ª è!!!!a Hmod nL n = p.q

8r1, r2, r3, r4< ªè!!!!!!!!!!

330 Hmod 437L 437 = 19.23

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

330 Hmod 19L

Como n = 19 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 330ÅÅÅÅÅÅÅÅÅÅÅ

19L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 82, 3, 8, 10, 12, 13, 14, 15, 18<Se elige al azar el valor b = 3

n - 1 = 18 = 21 9 fl s = 1, t = 9

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 330-1 Hmod 19L

i yi gi ui vi

0 0 19 1 0

1 0 330 0 1

2 0 19 1 0

3 17 7 -17 1

4 2 5 35 -2

5 1 2 -52 3

6 2 1 139 11

7 2 0 -330 19

Inverso modular.

11 ª 330-1 Hmod 19L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

52

Page 66: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

a£ ª a-1 Hmod nL = 11 ª 330-1 Hmod 19Lc0 ª bt Hmod nL = 18 ª 39 Hmod 19Lr0 ª aHt+1Lê2 Hmod nL = 11 ª 3305 Hmod 19L

Tabla del algoritmo.

i di ri ci

0 0 11 18

H≤ rL ª ≤ 11 ª 811, 8< ª è!!!!!!!!!!330 Hmod 19L

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

330 Hmod 23L

Como n = 23 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 330ÅÅÅÅÅÅÅÅÅÅÅ

23L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 85, 7, 10, 11, 14, 15, 17, 19, 20, 21, 22<Se elige al azar el valor b = 20

n - 1 = 22 = 21 11 fl s = 1, t = 11

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 330-1 Hmod 23L

i yi gi ui vi

0 0 23 1 0

1 0 330 0 1

2 0 23 1 0

3 14 8 -14 1

4 2 7 29 -2

5 1 1 -43 3

6 7 0 330 -23

Inverso modular.

3 ª 330-1 Hmod 23L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

53

Page 67: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

a£ ª a-1 Hmod nL = 3 ª 330-1 Hmod 23Lc0 ª bt Hmod nL = 22 ª 2011 Hmod 23Lr0 ª aHt+1Lê2 Hmod nL = 13 ª 3306 Hmod 23L

Tabla del algoritmo.

i di ri ci

0 0 13 22

H≤ rL ª ≤ 13 ª 813, 10< ª è!!!!!!!!!!330 Hmod 23L

17 ª p-1 Hmod qL ª 19-1 Hmod 23L

5 ª q-1 Hmod pL ª 23-1 Hmod 19L

Se calculan los valores siguientes:

Ap ª q @q-1 Hmod pLD Hmod nL ª23 @23-1 Hmod 19LD Hmod 437L

Ap ª 23µ5 Hmod 437L = 115 Hmod 437LAq ª p @p-1 Hmod qLD Hmod nL ª

19 @19-1 Hmod 23LD Hmod 437LAq ª 19µ17 Hmod 437L = 323 Hmod 437Lx ª HAp r + Aq sL Hmod nL ª H115µ8 + 323µ10L Hmod 437Lx ª 217 Hmod 437Ly ª HAp r - Aq sL Hmod nL ª H115µ8 + 323µ13L Hmod 437Ly ª 312 Hmod 437L

Raíces cuadradas módulo compuesto.

H≤ xL ª ≤ 217 = 8217, 220<H≤ yL ª ≤ 312 = 8312, 125<8r1, r2, r3, r4< ª è!!!!

a Hmod nL n = p.q

8217, 220, 312, 125< ªè!!!!!!!!!!

330 Hmod 437L 437 = 19.23

à Problema 22. Calcular la raíz è!!!a Hmod nL para los valores enteros dados, sabiendo que

n = p.q es un número compuesto de dos primos enteros.a) n = 13.11 = 143 y a = 48.

Cálculo de raíces cuadradas módulo compuesto.

8r1, r2, r3, r4< ª è!!!!a Hmod nL n = p.q

8r1, r2, r3, r4< ªè!!!!!!!

48 Hmod 143L 143 = 13.11

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

54

Page 68: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!

48 Hmod 13L

Como n = 13 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 48ÅÅÅÅÅÅÅÅ

13L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 82, 5, 6, 7, 8, 11<Se elige al azar el valor b = 8

n - 1 = 12 = 22 3 fl s = 2, t = 3

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 48-1 Hmod 13L

i yi gi ui vi

0 0 13 1 0

1 0 48 0 1

2 0 13 1 0

3 3 9 -3 1

4 1 4 4 -1

5 2 1 -11 3

6 4 0 48 -13

Inverso modular.

3 ª 48-1 Hmod 13L

a£ ª a-1 Hmod nL = 3 ª 48-1 Hmod 13Lc0 ª bt Hmod nL = 5 ª 83 Hmod 13Lr0 ª aHt+1Lê2 Hmod nL = 3 ª 482 Hmod 13L

Tabla del algoritmo.

i di ri ci

0 0 3 5

1 1 3 12

H≤ rL ª ≤ 3 ª 83, 10< ª è!!!!!!!48 Hmod 13L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

55

Page 69: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!

48 Hmod 11L

Como n = 11 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 48ÅÅÅÅÅÅÅÅ

11L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 82, 6, 7, 8, 10<Se elige al azar el valor b = 6

n - 1 = 10 = 21 5 fl s = 1, t = 5

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 48-1 Hmod 11L

i yi gi ui vi

0 0 11 1 0

1 0 48 0 1

2 0 11 1 0

3 4 4 -4 1

4 2 3 9 -2

5 1 1 -13 3

6 3 0 48 -11

Inverso modular.

3 ª 48-1 Hmod 11L

a£ ª a-1 Hmod nL = 3 ª 48-1 Hmod 11Lc0 ª bt Hmod nL = 10 ª 65 Hmod 11Lr0 ª aHt+1Lê2 Hmod nL = 9 ª 483 Hmod 11L

Tabla del algoritmo.

i di ri ci

0 0 9 10

H≤ rL ª ≤ 9 ª 89, 2< ª è!!!!!!!48 Hmod 11L

6 ª p-1 Hmod qL ª 13-1 Hmod 11L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

56

Page 70: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

6 ª q-1 Hmod pL ª 11-1 Hmod 13L

Se calculan los valores siguientes:

Ap ª q @q-1 Hmod pLD Hmod nL ª11 @11-1 Hmod 13LD Hmod 143L

Ap ª 11µ6 Hmod 143L = 66 Hmod 143LAq ª p @p-1 Hmod qLD Hmod nL ª

13 @13-1 Hmod 11LD Hmod 143LAq ª 13µ6 Hmod 143L = 78 Hmod 143Lx ª HAp r + Aq sL Hmod nL ª H66µ3 + 78µ2L Hmod 143Lx ª 68 Hmod 143Ly ª HAp r - Aq sL Hmod nL ª H66µ3 + 78µ9L Hmod 143Ly ª 42 Hmod 143L

Raíces cuadradas módulo compuesto.

H≤ xL ª ≤ 68 = 868, 75<H≤ yL ª ≤ 42 = 842, 101<8r1, r2, r3, r4< ª è!!!!

a Hmod nL n = p.q

868, 75, 42, 101< ªè!!!!!!!

48 Hmod 143L 143 = 13.11

à Problema 23. Calcular la raíz è!!!a Hmod nL para los valores enteros dados, sabiendo que

n = p.q es un número compuesto de dos primos enteros.a) n = 31.29 = 899 y a = 645.

Cálculo de raíces cuadradas módulo compuesto.

8r1, r2, r3, r4< ª è!!!!a Hmod nL n = p.q

8r1, r2, r3, r4< ªè!!!!!!!!!!

645 Hmod 899L 899 = 31.29

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

645 Hmod 31L

Como n = 31 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 645ÅÅÅÅÅÅÅÅÅÅÅ

31L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 83, 6, 11, 12, 13, 15, 17, 21, 22, 23, 24, 26, 27, 29, 30<Se elige al azar el valor b = 22

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

57

Page 71: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

n - 1 = 30 = 21 15 fl s = 1, t = 15

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 645-1 Hmod 31L

i yi gi ui vi

0 0 31 1 0

1 0 645 0 1

2 0 31 1 0

3 20 25 -20 1

4 1 6 21 -1

5 4 1 -104 5

6 6 0 645 -31

Inverso modular.

5 ª 645-1 Hmod 31L

a£ ª a-1 Hmod nL = 5 ª 645-1 Hmod 31Lc0 ª bt Hmod nL = 30 ª 2215 Hmod 31Lr0 ª aHt+1Lê2 Hmod nL = 5 ª 6458 Hmod 31L

Tabla del algoritmo.

i di ri ci

0 0 5 30

H≤ rL ª ≤ 5 ª 85, 26< ª è!!!!!!!!!!645 Hmod 31L

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

645 Hmod 29L

Como n = 29 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 645ÅÅÅÅÅÅÅÅÅÅÅ

29L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 82, 3, 8, 10, 11, 12, 14, 15, 17, 18, 19, 21, 26, 27<Se elige al azar el valor b = 14

n - 1 = 28 = 22 7 fl s = 2, t = 7

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

58

Page 72: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 645-1 Hmod 29L

i yi gi ui vi

0 0 29 1 0

1 0 645 0 1

2 0 29 1 0

3 22 7 -22 1

4 4 1 89 25

5 7 0 -645 29

Inverso modular.

25 ª 645-1 Hmod 29L

a£ ª a-1 Hmod nL = 25 ª 645-1 Hmod 29Lc0 ª bt Hmod nL = 12 ª 147 Hmod 29Lr0 ª aHt+1Lê2 Hmod nL = 23 ª 6454 Hmod 29L

Tabla del algoritmo.

i di ri ci

0 0 23 12

1 1 23 28

H≤ rL ª ≤ 23 ª 823, 6< ª è!!!!!!!!!!645 Hmod 29L

15 ª p-1 Hmod qL ª 31-1 Hmod 29L

15 ª q-1 Hmod pL ª 29-1 Hmod 31L

Se calculan los valores siguientes:

Ap ª q @q-1 Hmod pLD Hmod nL ª29 @29-1 Hmod 31LD Hmod 899L

Ap ª 29µ15 Hmod 899L = 435 Hmod 899LAq ª p @p-1 Hmod qLD Hmod nL ª

31 @31-1 Hmod 29LD Hmod 899LAq ª 31µ15 Hmod 899L = 465 Hmod 899Lx ª HAp r + Aq sL Hmod nL ª H435µ5 + 465µ6L Hmod 899Lx ª 470 Hmod 899Ly ª HAp r - Aq sL Hmod nL ª H435µ5 + 465µ23L Hmod 899Ly ª 284 Hmod 899L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

59

Page 73: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Raíces cuadradas módulo compuesto.

H≤ xL ª ≤ 470 = 8470, 429<H≤ yL ª ≤ 284 = 8284, 615<8r1, r2, r3, r4< ª è!!!!

a Hmod nL n = p.q

8470, 429, 284, 615< ªè!!!!!!!!!!

645 Hmod 899L 899 = 31.29

8470, 429, 284, 615<

Cálculo de raíces cuadradas módulo compuesto.

8r1, r2, r3, r4< ª è!!!!a Hmod nL n = p.q

8r1, r2, r3, r4< ªè!!!!!!!!!!

645 Hmod 899L 899 = 31.29

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

645 Hmod 31L

Como n = 31 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 645ÅÅÅÅÅÅÅÅÅÅÅ

31L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 83, 6, 11, 12, 13, 15, 17, 21, 22, 23, 24, 26, 27, 29, 30<Se elige al azar el valor b = 17

n - 1 = 30 = 21 15 fl s = 1, t = 15

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 645-1 Hmod 31L

i yi gi ui vi

0 0 31 1 0

1 0 645 0 1

2 0 31 1 0

3 20 25 -20 1

4 1 6 21 -1

5 4 1 -104 5

6 6 0 645 -31

Inverso modular.

5 ª 645-1 Hmod 31L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

60

Page 74: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

a£ ª a-1 Hmod nL = 5 ª 645-1 Hmod 31Lc0 ª bt Hmod nL = 30 ª 1715 Hmod 31Lr0 ª aHt+1Lê2 Hmod nL = 5 ª 6458 Hmod 31L

Tabla del algoritmo.

i di ri ci

0 0 5 30

H≤ rL ª ≤ 5 ª 85, 26< ª è!!!!!!!!!!645 Hmod 31L

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

645 Hmod 29L

Como n = 29 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 645ÅÅÅÅÅÅÅÅÅÅÅ

29L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 82, 3, 8, 10, 11, 12, 14, 15, 17, 18, 19, 21, 26, 27<Se elige al azar el valor b = 17

n - 1 = 28 = 22 7 fl s = 2, t = 7

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 645-1 Hmod 29L

i yi gi ui vi

0 0 29 1 0

1 0 645 0 1

2 0 29 1 0

3 22 7 -22 1

4 4 1 89 25

5 7 0 -645 29

Inverso modular.

25 ª 645-1 Hmod 29L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

61

Page 75: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

a£ ª a-1 Hmod nL = 25 ª 645-1 Hmod 29Lc0 ª bt Hmod nL = 12 ª 177 Hmod 29Lr0 ª aHt+1Lê2 Hmod nL = 23 ª 6454 Hmod 29L

Tabla del algoritmo.

i di ri ci

0 0 23 12

1 1 23 28

H≤ rL ª ≤ 23 ª 823, 6< ª è!!!!!!!!!!645 Hmod 29L

15 ª p-1 Hmod qL ª 31-1 Hmod 29L

15 ª q-1 Hmod pL ª 29-1 Hmod 31L

Se calculan los valores siguientes:

Ap ª q @q-1 Hmod pLD Hmod nL ª29 @29-1 Hmod 31LD Hmod 899L

Ap ª 29µ15 Hmod 899L = 435 Hmod 899LAq ª p @p-1 Hmod qLD Hmod nL ª

31 @31-1 Hmod 29LD Hmod 899LAq ª 31µ15 Hmod 899L = 465 Hmod 899Lx ª HAp r + Aq sL Hmod nL ª H435µ5 + 465µ6L Hmod 899Lx ª 470 Hmod 899Ly ª HAp r - Aq sL Hmod nL ª H435µ5 + 465µ23L Hmod 899Ly ª 284 Hmod 899L

Raíces cuadradas módulo compuesto.

H≤ xL ª ≤ 470 = 8470, 429<H≤ yL ª ≤ 284 = 8284, 615<8r1, r2, r3, r4< ª è!!!!

a Hmod nL n = p.q

8470, 429, 284, 615< ªè!!!!!!!!!!

645 Hmod 899L 899 = 31.29

8470, 429, 284, 615<

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

62

Page 76: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

à Problema 24. Calcular la raíz è!!!a Hmod nL en los casos indicados, y empleando en el

algoritmo de cálculo el teorema Chino de los restos congruentes.a) n = 17.29 = 423 y a = 132.b) n = 19.23 = 437 y a = 330.

Cálculo de raíces cuadradas módulo compuesto.

8r1, r2, r3, r4< ª è!!!!a Hmod nL n = p.q

8r1, r2, r3, r4< ªè!!!!!!!!!!

132 Hmod 493L 493 = 17.29

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

132 Hmod 17L

Como n = 17 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 132ÅÅÅÅÅÅÅÅÅÅÅ

17L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 83, 5, 6, 7, 10, 11, 12, 14<Se elige al azar el valor b = 5

n - 1 = 16 = 24 1 fl s = 4, t = 1

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 132-1 Hmod 17L

i yi gi ui vi

0 0 17 1 0

1 0 132 0 1

2 0 17 1 0

3 7 13 -7 1

4 1 4 8 -1

5 3 1 -31 4

6 4 0 132 -17

Inverso modular.

4 ª 132-1 Hmod 17L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

63

Page 77: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

a£ ª a-1 Hmod nL = 4 ª 132-1 Hmod 17Lc0 ª bt Hmod nL = 5 ª 51 Hmod 17Lr0 ª aHt+1Lê2 Hmod nL = 13 ª 1321 Hmod 17L

Tabla del algoritmo.

i di ri ci

0 0 13 5

1 1 13 8

2 16 2 13

3 16 9 16

H≤ rL ª ≤ 9 ª 89, 8< ª è!!!!!!!!!!132 Hmod 17L

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

132 Hmod 29L

Como n = 29 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 132ÅÅÅÅÅÅÅÅÅÅÅ

29L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 82, 3, 8, 10, 11, 12, 14, 15, 17, 18, 19, 21, 26, 27<Se elige al azar el valor b = 27

n - 1 = 28 = 22 7 fl s = 2, t = 7

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 132-1 Hmod 29L

i yi gi ui vi

0 0 29 1 0

1 0 132 0 1

2 0 29 1 0

3 4 16 -4 1

4 1 13 5 -1

5 1 3 -9 2

6 4 1 41 20

7 3 0 -132 29

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

64

Page 78: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Inverso modular.

20 ª 132-1 Hmod 29L

a£ ª a-1 Hmod nL = 20 ª 132-1 Hmod 29Lc0 ª bt Hmod nL = 17 ª 277 Hmod 29Lr0 ª aHt+1Lê2 Hmod nL = 25 ª 1324 Hmod 29L

Tabla del algoritmo.

i di ri ci

0 0 25 17

1 1 25 28

H≤ rL ª ≤ 25 ª 825, 4< ª è!!!!!!!!!!132 Hmod 29L

Cálculo del sistema de ecuaciones congruenciales mediante

el teorema Chino de restos congruentes.

x ª 8 Hmod 17Lx ª 4 Hmod 29Ln = H 17 L H 29 L = 493

Se calculan los valores siguientes:

yi ª HnêpiL-1 Hmod piL

y1 ª H493ê17L-1 ª 29 ª 10 Hmod 17Ly2 ª H493ê29L-1 ª 17 ª 12 Hmod 29L

La solución x ª @‚i=1

r

HnêpiL yi xiD Hmod nL es

x ª H 493ÅÅÅÅÅÅÅÅÅÅÅ17

.10.8 L + H 493ÅÅÅÅÅÅÅÅÅÅÅ29

.12.4 Lx ª 178 Hmod 493L

Cálculo del sistema de ecuaciones congruenciales mediante

el teorema Chino de restos congruentes.

x ª 8 Hmod 17Lx ª 25 Hmod 29Ln = H 17 L H 29 L = 493

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

65

Page 79: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Se calculan los valores siguientes:

yi ª HnêpiL-1 Hmod piL

y1 ª H493ê17L-1 ª 29 ª 10 Hmod 17Ly2 ª H493ê29L-1 ª 17 ª 12 Hmod 29L

La solución x ª @‚i=1

r

HnêpiL yi xiD Hmod nL es

x ª H 493ÅÅÅÅÅÅÅÅÅÅÅ17

.10.8 L + H 493ÅÅÅÅÅÅÅÅÅÅÅ29

.12.25 Lx ª 25 Hmod 493L

Raíces cuadradas módulo compuesto.

H≤ xL ª ≤ 178 = 8178, 315<H≤ yL ª ≤ 25 = 825, 468<8r1, r2, r3, r4< ª è!!!!

a Hmod nL n = p.q

8178, 315, 25, 468< ªè!!!!!!!!!!

132 Hmod 493L 493 = 17.29

Cálculo de raíces cuadradas módulo compuesto.

8r1, r2, r3, r4< ª è!!!!a Hmod nL n = p.q

8r1, r2, r3, r4< ªè!!!!!!!!!!

330 Hmod 437L 437 = 19.23

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

330 Hmod 19L

Como n = 19 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 330ÅÅÅÅÅÅÅÅÅÅÅ

19L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 82, 3, 8, 10, 12, 13, 14, 15, 18<Se elige al azar el valor b = 8

n - 1 = 18 = 21 9 fl s = 1, t = 9

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 330-1 Hmod 19L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

66

Page 80: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

i yi gi ui vi

0 0 19 1 0

1 0 330 0 1

2 0 19 1 0

3 17 7 -17 1

4 2 5 35 -2

5 1 2 -52 3

6 2 1 139 11

7 2 0 -330 19

Inverso modular.

11 ª 330-1 Hmod 19L

a£ ª a-1 Hmod nL = 11 ª 330-1 Hmod 19Lc0 ª bt Hmod nL = 18 ª 89 Hmod 19Lr0 ª aHt+1Lê2 Hmod nL = 11 ª 3305 Hmod 19L

Tabla del algoritmo.

i di ri ci

0 0 11 18

H≤ rL ª ≤ 11 ª 811, 8< ª è!!!!!!!!!!330 Hmod 19L

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

330 Hmod 23L

Como n = 23 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 330ÅÅÅÅÅÅÅÅÅÅÅ

23L = 1

la raíz cuadrada modular existe.

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 85, 7, 10, 11, 14, 15, 17, 19, 20, 21, 22<Se elige al azar el valor b = 10

n - 1 = 22 = 21 11 fl s = 1, t = 11

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 330-1 Hmod 23L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

67

Page 81: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

i yi gi ui vi

0 0 23 1 0

1 0 330 0 1

2 0 23 1 0

3 14 8 -14 1

4 2 7 29 -2

5 1 1 -43 3

6 7 0 330 -23

Inverso modular.

3 ª 330-1 Hmod 23L

a£ ª a-1 Hmod nL = 3 ª 330-1 Hmod 23Lc0 ª bt Hmod nL = 22 ª 1011 Hmod 23Lr0 ª aHt+1Lê2 Hmod nL = 13 ª 3306 Hmod 23L

Tabla del algoritmo.

i di ri ci

0 0 13 22

H≤ rL ª ≤ 13 ª 813, 10< ª è!!!!!!!!!!330 Hmod 23L

Cálculo del sistema de ecuaciones congruenciales mediante

el teorema Chino de restos congruentes.

x ª 8 Hmod 19Lx ª 10 Hmod 23Ln = H 19 L H 23 L = 437

Se calculan los valores siguientes:

yi ª HnêpiL-1 Hmod piL

y1 ª H437ê19L-1 ª 23 ª 5 Hmod 19Ly2 ª H437ê23L-1 ª 19 ª 17 Hmod 23L

La solución x ª @‚i=1

r

HnêpiL yi xiD Hmod nL es

x ª H 437ÅÅÅÅÅÅÅÅÅÅÅ19

.5.8 L + H 437ÅÅÅÅÅÅÅÅÅÅÅ23

.17.10 Lx ª 217 Hmod 437L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

68

Page 82: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Cálculo del sistema de ecuaciones congruenciales mediante

el teorema Chino de restos congruentes.

x ª 8 Hmod 19Lx ª 13 Hmod 23Ln = H 19 L H 23 L = 437

Se calculan los valores siguientes:

yi ª HnêpiL-1 Hmod piL

y1 ª H437ê19L-1 ª 23 ª 5 Hmod 19Ly2 ª H437ê23L-1 ª 19 ª 17 Hmod 23L

La solución x ª @‚i=1

r

HnêpiL yi xiD Hmod nL es

x ª H 437ÅÅÅÅÅÅÅÅÅÅÅ19

.5.8 L + H 437ÅÅÅÅÅÅÅÅÅÅÅ23

.17.13 Lx ª 312 Hmod 437L

Raíces cuadradas módulo compuesto.

H≤ xL ª ≤ 217 = 8217, 220<H≤ yL ª ≤ 312 = 8312, 125<8r1, r2, r3, r4< ª è!!!!

a Hmod nL n = p.q

8217, 220, 312, 125< ªè!!!!!!!!!!

330 Hmod 437L 437 = 19.23

à Problema 25. Calcular la raíz è!!!a Hmod nL en los casos indicados, y empleando en el

algoritmo de cálculo el teorema Chino de los restos congruentes.a) n = 23.29 = 667 y a = 223.

Cálculo de raíces cuadradas módulo compuesto.

8r1, r2, r3, r4< ª è!!!!a Hmod nL n = p.q

8r1, r2, r3, r4< ªè!!!!!!!!!!

223 Hmod 667L 667 = 23.29

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

223 Hmod 23L

Como n = 23 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 223ÅÅÅÅÅÅÅÅÅÅÅ

23L = 1

la raíz cuadrada modular existe.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

69

Page 83: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 85, 7, 10, 11, 14, 15, 17, 19, 20, 21, 22<Se elige al azar el valor b = 21

n - 1 = 22 = 21 11 fl s = 1, t = 11

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 223-1 Hmod 23L

i yi gi ui vi

0 0 23 1 0

1 0 223 0 1

2 0 23 1 0

3 9 16 -9 1

4 1 7 10 -1

5 2 2 -29 3

6 3 1 97 13

7 2 0 -223 23

Inverso modular.

13 ª 223-1 Hmod 23L

a£ ª a-1 Hmod nL = 13 ª 223-1 Hmod 23Lc0 ª bt Hmod nL = 22 ª 2111 Hmod 23Lr0 ª aHt+1Lê2 Hmod nL = 4 ª 2236 Hmod 23L

Tabla del algoritmo.

i di ri ci

0 0 4 22

H≤ rL ª ≤ 4 ª 84, 19< ª è!!!!!!!!!!223 Hmod 23L

Cálculo de raíces cuadradas.

Método de Adleman, Manders, G. L. Miller.

8r1, r2< ª è!!!!a Hmod nL 8r1, r2< ª è!!!!!!!!!!

223 Hmod 29L

Como n = 29 es primo y el símbolo de Jacobi H aÅÅÅÅÅn L = H 223ÅÅÅÅÅÅÅÅÅÅÅ

29L = 1

la raíz cuadrada modular existe.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

70

Page 84: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Valores enteros b con 0 < b < n de modo que HbÅÅÅÅÅÅÅnL = -1.

l = 82, 3, 8, 10, 11, 12, 14, 15, 17, 18, 19, 21, 26, 27<Se elige al azar el valor b = 19

n - 1 = 28 = 22 7 fl s = 2, t = 7

Algoritmo para el cálculo de inversos modulares.

d ª a-1 Hmod bL ª 223-1 Hmod 29L

i yi gi ui vi

0 0 29 1 0

1 0 223 0 1

2 0 29 1 0

3 7 20 -7 1

4 1 9 8 -1

5 2 2 -23 3

6 4 1 100 16

7 2 0 -223 29

Inverso modular.

16 ª 223-1 Hmod 29L

a£ ª a-1 Hmod nL = 16 ª 223-1 Hmod 29Lc0 ª bt Hmod nL = 12 ª 197 Hmod 29Lr0 ª aHt+1Lê2 Hmod nL = 7 ª 2234 Hmod 29L

Tabla del algoritmo.

i di ri ci

0 0 7 12

1 1 7 28

H≤ rL ª ≤ 7 ª 87, 22< ª è!!!!!!!!!!223 Hmod 29L

Cálculo del sistema de ecuaciones congruenciales mediante

el teorema Chino de restos congruentes.

x ª 4 Hmod 23Lx ª 7 Hmod 29Ln = H 23 L H 29 L = 667

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

71

Page 85: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Se calculan los valores siguientes:

yi ª HnêpiL-1 Hmod piL

y1 ª H667ê23L-1 ª 29 ª 4 Hmod 23Ly2 ª H667ê29L-1 ª 23 ª 24 Hmod 29L

La solución x ª @‚i=1

r

HnêpiL yi xiD Hmod nL es

x ª H 667ÅÅÅÅÅÅÅÅÅÅÅ23

.4.4 L + H 667ÅÅÅÅÅÅÅÅÅÅÅ29

.24.7 Lx ª 326 Hmod 667L

Cálculo del sistema de ecuaciones congruenciales mediante

el teorema Chino de restos congruentes.

x ª 4 Hmod 23Lx ª 22 Hmod 29Ln = H 23 L H 29 L = 667

Se calculan los valores siguientes:

yi ª HnêpiL-1 Hmod piL

y1 ª H667ê23L-1 ª 29 ª 4 Hmod 23Ly2 ª H667ê29L-1 ª 23 ª 24 Hmod 29L

La solución x ª @‚i=1

r

HnêpiL yi xiD Hmod nL es

x ª H 667ÅÅÅÅÅÅÅÅÅÅÅ23

.4.4 L + H 667ÅÅÅÅÅÅÅÅÅÅÅ29

.24.22 Lx ª 602 Hmod 667L

Raíces cuadradas módulo compuesto.

H≤ xL ª ≤ 326 = 8326, 341<H≤ yL ª ≤ 602 = 8602, 65<8r1, r2, r3, r4< ª è!!!!

a Hmod nL n = p.q

8326, 341, 602, 65< ªè!!!!!!!!!!

223 Hmod 667L 667 = 23.29

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

72

Page 86: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

6. Problema del logaritmo discreto. (DLP)

El problema inverso de la exponenciación es el cálculo de logaritmos discretos. La

seguridad de muchos protocolos criptográficos de clave pública reside en la dificultad de

resolver el problema del logaritmo discreto. El cálculo de logaritmos discretos es

considerado como el problema inverso de la exponenciación. Un ejemplo es el algoritmo

propuesto por Diffie y Hellman para el intercambio de claves públicas a través de canales

abiertos, y el método de cifrado de clave pública de El Gammal. Antes de comenzar a

definir el problema del logaritmo discreto, se procederá a enunciar la definición de

generador. Dado el conjunto �p, con p primo, se dice que a e �p es un generador de �p si

se cumple " b e �p $ i tal que ai = b. Así, se considera un número primo p, y sea �p el

grupo cíclico finito formado por los valores enteros positivos y menores que p con respecto

de la multiplicación modular (módulo p). En estas condiciones, se suponen dos valores

enteros g, b e �p, siendo n el orden de g en el grupo �p, es decir, el menor valor entero

para el que se verifica que:

(44)gn ª 1 Hmod pL .

El problema del logaritmo discreto consiste en encontrar, si existe, el valor x con

0 b x < n, tal que es solución de la congruencia:

(45)gx ª b Hmod pL .

Así, en el caso de que exista este valor entero, se denomina logaritmo discreto de b

en base g módulo p, es decir:

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

73

Page 87: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

(46)x ª logg b Hmod pL .

El problema del logaritmo discreto tiene solución siempre y cuando el entero b

pertenezca al subgrupo de valores enteros generados por g, es decir, que b œ < g >. Así,

puesto que p es un número primo, lo anterior sucede siempre en el caso de que el entero g

sea un generador de orden n = p - 1, ya que entonces cualquier otro entero w e �p puede

expresarse de la forma:

(47)w ª gs Hmod pL .

para algún valor s tal que 0 b s < p - 1, es decir, que el entero g es un generador de todo el

grupo �p.

A continuación, se procederá a explicar y mostrar con ejemplos los métodos más

utilizados para determinar logaritmos discretos.

6.1 Algoritmo baby-step giant-step

Se trata de un algoritmo basado en el método de búsqueda exhaustiva aunque su

estructura varía ligeramente de dicho método.

Si m =è!!!n , redondeando al número entero superior al obtenido, el algoritmo

paso-gigante paso-enano se basa en la siguiente observación. Si b = ax, o lo que es lo

mismo, x = loga b, entonces se verifica la ecuación

(48)x = i *m + j con 0 i, j � m.

Por tanto, ax = ai*m *a j, lo que significa que b Ha-mLi = a j. El valor de la x se

obtiene fácilmente a partir de la ecuación mencionada.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

74

Page 88: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

El algoritmo paso-gigante paso-enano requiere una capacidad de almacenamiento

para grupos de elementos de �(è!!!n ). Construir la tabla implica multiplicaciones de

�(è!!!n ). Del mismo orden de ejecución son las operaciones que se desarrollan dentro del

último bucle for por lo que, suponiendo que cada multipicación de cada grupo de ellas

conlleva un tiempo de ejecución mayor que log n comparaciones, se puede afirmar que el

tiempo total de ejecución es de �(è!!!n ) multiplicaciones en el grupo.

è Algoritmo 8. Algoritmo Baby-step giant step.

Input (a, b, p)

m ≠ è!!!!

p

For j = 0, 1, ... m do

h j ≠ a j mod b

End

For j = 0, 1, ..., m do

g j ≠ b * b j mod p

If (h j = a) then

Break

End

End

For i = 0, 1, ..., m - 1 do

g ≠ b * a-m * i mod p

hi ≠ g

If (hi = a) then

Return (i *m + j)

End

If (i = m) then

Return (g*a-m)

End

End

Output

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

75

Page 89: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Ejercicios propuestos

à Problema 26. Sea p = 113. �113* es un subgrupo cíclico de orden n = 112 generado por

g = 3. Considerando b = 57, calcúlese el logaritmo discreto x ª logg b Hmod pLempleando el método de baby-step giant-step.

Cálculo del logaritmo discreto.

Algoritmo de Baby-step Giant-step.

x ª loga b Hmod pL

El valor a = 3 es un generador de un grupo cíclico G de

orden n = 112 . Además el valor de b = 57 . Por tanto tenemos la

siguiente ecuación a resolver.

x ª log3 57 Hmod 113L

Así, tenemos la siguiente tabla :

j 3 j Hmod 113L0 1

1 3

2 9

3 27

4 81

5 17

6 51

7 40

8 7

9 21

10 63

Finalmente tenemos la tabla:

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

76

Page 90: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

i 57 µ 58 j Hmod 113L0 57

1 29

2 100

3 37

4 112

5 55

6 26

7 39

8 2

9 3

La solución final es

100 ª log3 57 Hmod 113L

à Problema 27. Sea p = 97. �97* es un subgrupo cíclico de orden n = 96 generado por

g = 5. Considerando b = 37, calcúlese el logaritmo discreto x ª logg b Hmod pLempleando el método de baby-step giant-step.

Cálculo del logaritmo discreto.

Algoritmo de Baby-step Giant-step.

x ª loga b Hmod pL

El valor a = 5 es un generador de un grupo cíclico G de

orden n = 96 . Además el valor de b = 37 . Por tanto tenemos la

siguiente ecuación a resolver.

x ª log5 37 Hmod 97L

Así, tenemos la siguiente tabla :

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

77

Page 91: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

j 5 j Hmod 97L0 1

1 5

2 25

3 28

4 43

5 21

6 8

7 40

8 6

9 30

Finalmente tenemos la tabla:

i 37 µ 11 j Hmod 97L0 37

1 19

2 15

3 68

4 69

5 80

6 7

7 77

8 71

9 5

La solución final es

91 ª log5 37 Hmod 97L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

78

Page 92: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

à Problema 28. Sea p = 383. �383* es un subgrupo cíclico de orden n = 382 generado por

g = 2. Considerando b = 228, calcúlese el logaritmo discreto x ª logg b Hmod pLempleando el método de baby-step giant-step.

Cálculo del logaritmo discreto.

Algoritmo de Baby-step Giant-step.

x ª loga b Hmod pL

El valor a = 2 es un generador de un grupo cíclico G de

orden n = 382 . Además el valor de b = 228 . Por tanto tenemos la

siguiente ecuación a resolver.

x ª log2 228 Hmod 383L

Así, tenemos la siguiente tabla :

j 2 j Hmod 383L0 1

1 2

2 4

3 8

4 16

5 32

6 64

7 128

8 256

9 129

10 258

11 133

12 266

13 149

14 298

15 213

16 43

17 86

18 172

19 344

Finalmente tenemos la tabla:

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

79

Page 93: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

i 228 µ 54 j Hmod 383L0 228

1 56

2 343

3 138

4 175

5 258

6 144

7 116

8 136

9 67

10 171

11 42

12 353

13 295

14 227

15 2

La solución final es

301 ª log2 228 Hmod 383L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

80

Page 94: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

6.2 Algoritmo rho de Pollard para logaritmos

Se trata de un tipo de algoritmo dentro de los considerados como aleatorio que, al

igual que el giant-step baby-step , se utiliza para el cálculo de logaritmos discretos. El

tiempo de ejecución esperado es el mismo para ambos, sin embargo el algortimo rho de

Pollard requiere un ingente cantidad de espacio en memoria en comparación con el

giant-step baby-step . Por esta razón es más recomendable utilizar este último a la hora de

resolver ejercicios prácticos.

Se parte de la base considerando G como un grupo cíclico cuyo orden n es primo.

Este grupo G se divide a su vez en tres subgrupos S1, S2 y S3 que deben tener

aproximadamente el mismo tamaño. Así, x pertenecen a S1 si x ª 1 Hmod 3L, a S2 si

x ª 0 Hmod 3L y a S3 si x ª 2 Hmod 3L. De esta manera se consigue distribuir de manera

equitativa todos los elementos de G en los subgrupos mencionados. El algoritmo

comienza definiendo una secuencia de un grupo de elementos x0, x1, x2, ... que se definen

según las ecuaciones

(49)xi+1 = f HxiL = b * xi si xi e S1

(50)xi+1 = f HxiL = xi2 si xi e S2

(51)xi+1 = f HxiL = a* xi si xi e S3,

cumpliéndose para todas ellas que i r 0. Esta secuencia define a su vez otras dos secuencias

de enteros a0, a1, a2, ... y b0, b1, b2, .... satisfaciéndose en todo momento la ecuación xi

= aai*bbi para valores de i t 0. Análogamente al método para hallar cada xi+1, se dispone

de las siguientes ecuaciones para poder avanzar por la secuencia de ai y bi. Estas

ecuaciones son, para ai:

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

81

Page 95: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

(52)ai+1 = ai si xi e S1

(53)ai+1 = 2 *ai mod n si xi e S2

(54)ai+1 = ai + 1mod n si xi e S3

Y para bi:

(55)bi+1 = bi + 1mod n si xi e S1

(56)bi+1 = 2 *bi mod n si xi e S2

(57)bi+1 = bi si xi e S3

Utilizando el algoritmo de Búsqueda Cíclica de Floyd es muy interesante calcular,

para cada i, el valor de x2 i , a2 i y b2 i, ya que cuando xi = x2 i se cumple que

aai * bbi = aa2 i * bb2 i y por tanto que bbi-b2 i = aa2 i-ai . Tomando logaritmos a ambos lados se

llega a la expresión fundamental del algoritmo:

(58)Hbi - b2 iL * loga b ª Ha2 i - aiL Hmod nL

que servirá para obtener el valor del logaritmo discreto propuesto.

El tiempo esperado de ejecución del algoritmo rho de Pollard es de �(è!!!n ), aunque

hay que tener en cuenta como se ha dicho al inicio de la explicación que requiere un

espacio de memoria considerable.

è Algoritmo 9. Algoritmo de rho de Pollard para logaritmos.

Input (a, n, b)

x0 ≠ 1

a0≠ 0

b0≠ 0

For i = 0, 1, 2, ..., n do

xi ≠ xi-1

ai ≠ ai-1

bi ≠ bi-1

x2 i ≠ x2 i-2

a2 i ≠ a2 i-2

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

82

Page 96: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

b2 i ≠ b2 i-2

If (xi = x2 i) then

r ≠ bi - b2 i (mod n)

If (r = 0) then

Return ()

Else

x ≠ r-1(a2 i - ai) (mod n)

Return (x)

End

End

End

Output

Ejercicios propuestos

à Problema 29. Sea p = 113. �113* es un subgrupo cíclico de orden n = 31 generado por

g = 3. Considerando b = 57, calcúlese el logaritmo discreto x ª logg b Hmod pLempleando el método de rho de Pollard.

Cálculo del logaritmo discreto.

Algoritmo rho de Pollard para logaritmos.

x ª loga b Hmod pL

El valor a = 3 es un generador de un subgrupogrupo G de

orden primo n = 31 . Además el valor de b = 57.

Por tanto tenemos la siguiente ecuación a resolver:

x ª log3 57 Hmod 113L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

83

Page 97: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Tabla del algoritmo.

i xi ai bi x2 i a2 i b2 i

1 57 0 1 85 0 2

2 85 0 2 83 0 6

3 99 0 3 69 2 6

4 83 0 6 112 8 24

5 23 1 6 55 9 25

6 69 2 6 50 18 21

7 15 4 12 75 19 22

8 112 8 24 44 7 14

9 56 8 25 66 8 15

10 55 9 25 73 17 30

11 84 9 26 61 3 0

12 50 18 21 111 6 2

13 37 19 21 2 12 5

14 75 19 22 36 26 10

15 88 7 13 46 22 20

16 44 7 14 69 23 21

17 19 8 14 112 30 22

18 66 8 15 55 31 23

19 62 16 30 50 0 17

20 73 17 30 75 1 18

21 93 17 31 44 2 6

22 61 3 0 66 3 7

23 87 3 1 73 7 14

24 111 6 2 61 14 30

25 4 12 4 111 28 0

26 2 12 5 2 25 1

La solución final es

11 Hmod 113L ª log3 57

à Problema 30. Sea p = 97. �97* es un subgrupo cíclico de orden n = 96 generado por

g = 5. Considerando b = 37, calcúlese el logaritmo discreto x ª logg b Hmod pLempleando el método de rho de Pollard.

El número n = 96 introducido no es primo.

El orden del subgrupo G de�97* tiene que ser primo.

El algoritmo no puede continuar.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

84

Page 98: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

à Problema 31. Sea p = 383. �383* es un subgrupo cíclico de orden n = 191 generado por

g = 2. Considerando b = 228, calcúlese el logaritmo discreto x ª logg b Hmod pLempleando el método de rho de Pollard.

Cálculo del logaritmo discreto.

Algoritmo rho de Pollard para logaritmos.

x ª loga b Hmod pL

El valor a = 2 es un generador de un subgrupogrupo G de

orden primo n = 191 . Además el valor de b = 228.

Por tanto tenemos la siguiente ecuación a resolver:

x ª log2 228 Hmod 383L

Tabla del algoritmo.

i xi ai bi x2 i a2 i b2 i

1 228 0 1 279 0 2

2 279 0 2 184 1 4

3 92 0 4 14 1 6

4 184 1 4 256 2 7

5 205 1 5 304 3 8

6 14 1 6 121 6 18

7 28 2 6 144 12 38

8 256 2 7 235 48 152

9 152 2 8 72 48 154

10 304 3 8 14 96 118

11 372 3 9 256 97 119

12 121 6 18 304 98 120

13 12 6 19 121 5 51

14 144 12 38 144 10 104

La solución final es

110 Hmod 383L ª log2 228

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

85

Page 99: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

6.3 Algoritmo Pohlig - Hellman

A continuación, se describe un posible algoritmo para resolver el problema del

logaritmo discreto (Pohlig y M. E. Hellman). Para ello, el algoritmo supone conocidos los

factores primos del orden n = p - 1 del grupo �p. Se supone que este orden es de la forma:

(59)n = p - 1 =‰i=1

i=t

piei

con 0 b xi < piei - 1 y representando cada valor entero xi para i = 1, ..., t en una base

pi-aria de forma que:

(60)xi = h0 + h1 p1 + ... + hei-1 piei-1

donde h j es tal que 0 b h j < pi. Finalmente, el valor entero x se calcula aplicando el

teorema chino de los restos congruentes. Con todo lo anterior, el algoritmo de

Pohlig-Hellman para el cálculo de logaritmos discretos módulo p se presenta a

continuación:

è Algoritmo 10. Algoritmo para el cálculo del logaritmo discreto de Pohlig-Hellman

Input Hp, g, bL

n = p - 1 ≠¤i=1i=t pi

ei

For i = 1, ..., t do

c ≠ 1

h-1 ≠ 0

g´ ª gp-1êpi Hmod pLFor j = 0, ..., ei - 1 do

c ª c gh j-1 pij-1 Hmod pL

b£ ª Hb c-1LHp-1Lêpij+1 Hmod pL

(* Búsqueda exhaustiva del entero h j con 0 b h j < pi y tal que

b£ ª g£h j Hmod pL *) For k = 0, ..., pi - 1 do

If Hg£hk Hmod pL = b£L Then

Break

End

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

86

Page 100: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

End

h j ≠ k

End

xi ≠ h0 + h1 pi + ... + h1ei-1 pi

ei-1

End

x Hmod pL ≠ Teorema chino restos congruentes

Hx1 Hmod p1e1 L, ..., xt Hmod pt

et LLReturn H xLOutput

Con todo lo anterior, si el problema del logaritmo discreto es resoluble para cada

uno de los factores primos divisores de Hp - 1L, entonces el cálculo del logaritmo discreto

Hmod pL es a su vez viable. Sin embargo, es conveniente hacer notar en este punto que,

cuando se trabaja con números enteros grandes, y p es un primo fuerte, es decir, de la

forma:

(61)p = k p£ + 1

siendo k una constante pequeña y p£ otro número grande, entonces este algoritmo, en

particular la búsqueda exhaustiva, tiene una complejidad computacional tan elevada que la

resolución del problema llega a hacerse inviable. Esto último puede hacerse extensivo a la

mayoría de los algoritmos propuestos para resolver el problema del logaritmo discreto, y es

precisamente lo deseable cuando el logaritmo discreto se utiliza como función de una sola

dirección en criptografía de clave pública. En este caso, es conveniente que el número

primo p sea de la forma antes indicada, es decir, que Hp - 1L contenga a su vez un número

primo grande como factor, puesto que ello permite asegurar la dificultad de resolución del

problema del logaritmo discreto y, de esa forma, garantizar la seguridad de los protocolos

criptográficos de clave pública basados en él. Existen, a su vez, algunos casos particulares

en los que el cálculo del logaritmo discreto módulo p es viable para valores de p grandes,

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

87

Page 101: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

como sucede, por ejemplo, cuando el número primo p tiene una representación polinómica

de la forma:

(62)p = ‚i=0

i=d

pi mi

siendo d, pi y m valores pequeños (d < 10, pi < 50). Esto fue demostrado por D. M.

Gordon. Una posible forma de evitar este problema fue, a su vez, apuntada por Gordon,

quien indicó cómo detectar y evitar que los primos tengan tales características debilitantes.

Ejercicios propuestos

à Problema 32. Calcúlese el logaritmo discreto x ª logg b Hmod pL empleando el métodode Pohlig-Hellman con los valoresa) p = 251, g = 37, b = 43b) p = 251, g = 71, b = 210.

Cálculo del logaritmo discreto. Algoritmo de Pohlig-Hellman.

x ª logg b Hmod pLx ª log37 43 Hmod 251L

g£ ª gHp-1Lêpi Hmod pLc ª c gh j-1 Hpi L j-1 Hmod pLb£ ª Hb c-1LHp-1LêHpi L j+1 Hmod pLh j ª logg£ Hb£L Hmod pL

Factorización del orden del grupo

n = p - 1 = 250 = H 21 L H 53 L

i = 1 Hc, h-1L = H1, 0Lg£ ª 37H251-1Lê2 Hmod 251L ª 250 Hmod 251L

Hi, jL = H1, 0Lc ª H1L 37H0L H1-2L ª 1 Hmod 251Lb£ ª H43 1-1LH250LêH2L ª 250 Hmod 251Lh0 ª log250 H250L ª 1 Hmod 251L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

88

Page 102: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

x1 = 1 = 1

i = 2 Hc, h-1L = H1, 0Lg£ ª 37H251-1Lê5 Hmod 251L ª 20 Hmod 251L

Hi, jL = H2, 0Lc ª H1L 37H0L H1-5L ª 1 Hmod 251Lb£ ª H43 1-1LH250LêH5L ª 20 Hmod 251Lh0 ª log20 H20L ª 1 Hmod 251L

Hi, jL = H2, 1Lc ª H1L 37H1L H1L ª 37 Hmod 251Lb£ ª H43 37-1LH250LêH25L ª 113 Hmod 251Lh1 ª log20 H113L ª 4 Hmod 251L

Hi, jL = H2, 2Lc ª H37L 37H4L H5L ª 107 Hmod 251Lb£ ª H43 107-1LH250LêH125L ª 219 Hmod 251Lh2 ª log20 H219L ª 3 Hmod 251L

x2 = 1 + 4 H 5 L + 3 H 5 L2 = 96

Cálculo del sistema de ecuaciones congruenciales mediante

el teorema Chino de restos congruentes.

x ª 1 Hmod 2Lx ª 96 Hmod 125Ln = H 125 L H 2 L = 250

Se calculan los valores siguientes:

yi ª HnêpiL-1 Hmod piL

y1 ª H250ê2L-1 ª 125 ª 1 Hmod 2Ly2 ª H250ê125L-1 ª 2 ª 63 Hmod 125L

La solución x ª @‚i=1

r

HnêpiL yi xiD Hmod nL es

x ª H 250ÅÅÅÅÅÅÅÅÅÅÅ125

.63.96 L + H 250ÅÅÅÅÅÅÅÅÅÅÅ2

.1.1 Lx ª 221 Hmod 250L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

89

Page 103: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Logaritmo discreto.

x ª logg b Hmod pLx ª log37 43 Hmod 251L ª 221 Hmod 251L

Cálculo del logaritmo discreto. Algoritmo de Pohlig-Hellman.

x ª logg b Hmod pLx ª log71 210 Hmod 251L

g£ ª gHp-1Lêpi Hmod pLc ª c gh j-1 Hpi L j-1 Hmod pLb£ ª Hb c-1LHp-1LêHpi L j+1 Hmod pLh j ª logg£ Hb£L Hmod pL

Factorización del orden del grupo

n = p - 1 = 250 = H 21 L H 53 L

i = 1 Hc, h-1L = H1, 0Lg£ ª 71H251-1Lê2 Hmod 251L ª 250 Hmod 251L

Hi, jL = H1, 0Lc ª H1L 71H0L H1-2L ª 1 Hmod 251Lb£ ª H210 1-1LH250LêH2L ª 250 Hmod 251Lh0 ª log250 H250L ª 1 Hmod 251L

x1 = 1 = 1

i = 2 Hc, h-1L = H1, 0Lg£ ª 71H251-1Lê5 Hmod 251L ª 20 Hmod 251L

Hi, jL = H2, 0Lc ª H1L 71H0L H1-5L ª 1 Hmod 251Lb£ ª H210 1-1LH250LêH5L ª 149 Hmod 251Lh0 ª log20 H149L ª 2 Hmod 251L

Hi, jL = H2, 1Lc ª H1L 71H2L H1L ª 21 Hmod 251Lb£ ª H210 21-1LH250LêH25L ª 113 Hmod 251Lh1 ª log20 H113L ª 4 Hmod 251L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

90

Page 104: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Hi, jL = H2, 2Lc ª H21L 71H4L H5L ª 115 Hmod 251Lb£ ª H210 115-1LH250LêH125L ª 149 Hmod 251Lh2 ª log20 H149L ª 2 Hmod 251L

x2 = 2 + 4 H 5 L + 2 H 5 L2 = 72

Cálculo del sistema de ecuaciones congruenciales mediante

el teorema Chino de restos congruentes.

x ª 1 Hmod 2Lx ª 72 Hmod 125Ln = H 125 L H 2 L = 250

Se calculan los valores siguientes:

yi ª HnêpiL-1 Hmod piL

y1 ª H250ê2L-1 ª 125 ª 1 Hmod 2Ly2 ª H250ê125L-1 ª 2 ª 63 Hmod 125L

La solución x ª @‚i=1

r

HnêpiL yi xiD Hmod nL es

x ª H 250ÅÅÅÅÅÅÅÅÅÅÅ125

.63.72 L + H 250ÅÅÅÅÅÅÅÅÅÅÅ2

.1.1 Lx ª 197 Hmod 250L

Logaritmo discreto.

x ª logg b Hmod pLx ª log71 210 Hmod 251L ª 197 Hmod 251L

à Problema 33. Sea p = 229 y el número g = 6 es generador de �229* de orden n = 228.

Considerando b = 13, calcúlese el logaritmo discreto x ª logg b Hmod pL empleando elmétodo de Pohlig-Hellman.

Cálculo del logaritmo discreto. Algoritmo de Pohlig-Hellman.

x ª logg b Hmod pLx ª log6 13 Hmod 229L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

91

Page 105: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

g£ ª gHp-1Lêpi Hmod pLc ª c gh j-1 Hpi L j-1 Hmod pLb£ ª Hb c-1LHp-1LêHpi L j+1 Hmod pLh j ª logg£ Hb£L Hmod pL

Factorización del orden del grupo

n = p - 1 = 228 = H 22 L H 31 L H 191 L

i = 1 Hc, h-1L = H1, 0Lg£ ª 6H229-1Lê2 Hmod 229L ª 228 Hmod 229L

Hi, jL = H1, 0Lc ª H1L 6H0L H1-2L ª 1 Hmod 229Lb£ ª H13 1-1LH228LêH2L ª 228 Hmod 229Lh0 ª log228 H228L ª 1 Hmod 229L

Hi, jL = H1, 1Lc ª H1L 6H1L H1L ª 6 Hmod 229Lb£ ª H13 6-1LH228LêH4L ª 1 Hmod 229Lh1 ª log228 H1L ª 0 Hmod 229L

x1 = 1 = 1

i = 2 Hc, h-1L = H1, 0Lg£ ª 6H229-1Lê3 Hmod 229L ª 134 Hmod 229L

Hi, jL = H2, 0Lc ª H1L 6H0L H1-3L ª 1 Hmod 229Lb£ ª H13 1-1LH228LêH3L ª 1 Hmod 229Lh0 ª log134 H1L ª 0 Hmod 229L

x2 = 0 = 0

i = 3 Hc, h-1L = H1, 0Lg£ ª 6H229-1Lê19 Hmod 229L ª 165 Hmod 229L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

92

Page 106: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Hi, jL = H3, 0Lc ª H1L 6H0L H1-- 19L ª 1 Hmod 229Lb£ ª H13 1-1LH228LêH19L ª 61 Hmod 229Lh0 ª log165 H61L ª 3 Hmod 229L

x3 = 3 = 3

Cálculo del sistema de ecuaciones congruenciales mediante

el teorema Chino de restos congruentes.

x ª 1 Hmod 4Lx ª 0 Hmod 3Lx ª 3 Hmod 19Ln = H 19 L H 3 L H 4 L = 228

Se calculan los valores siguientes:

yi ª HnêpiL-1 Hmod piL

y1 ª H228ê4L-1 ª 57 ª 1 Hmod 4Ly2 ª H228ê3L-1 ª 76 ª 1 Hmod 3Ly3 ª H228ê19L-1 ª 12 ª 8 Hmod 19L

La solución x ª @‚i=1

r

HnêpiL yi xiD Hmod nL es

x ª H 228ÅÅÅÅÅÅÅÅÅÅÅ19

.8.3 L + H 228ÅÅÅÅÅÅÅÅÅÅÅ3

.1.0 L + H 228ÅÅÅÅÅÅÅÅÅÅÅ4

.1.1 Lx ª 117 Hmod 228L

Logaritmo discreto.

x ª logg b Hmod pLx ª log6 13 Hmod 229L ª 117 Hmod 229L

à Problema 34. Sea p = 97. �97* es un subgrupo cíclico de orden n = 96 generado por

g = 5. Considerando b = 35, calcúlese el logaritmo discreto x ª logg b Hmod pLempleando el método de Pohlig-Hellman.

Cálculo del logaritmo discreto. Algoritmo de Pohlig-Hellman.

x ª logg b Hmod pLx ª log5 35 Hmod 97L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

93

Page 107: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

g£ ª gHp-1Lêpi Hmod pLc ª c gh j-1 Hpi L j-1 Hmod pLb£ ª Hb c-1LHp-1LêHpi L j+1 Hmod pLh j ª logg£ Hb£L Hmod pL

Factorización del orden del grupo

n = p - 1 = 96 = H 25 L H 31 L

i = 1 Hc, h-1L = H1, 0Lg£ ª 5H97-1Lê2 Hmod 97L ª 96 Hmod 97L

Hi, jL = H1, 0Lc ª H1L 5H0L H1-2L ª 1 Hmod 97Lb£ ª H35 1-1LH96LêH2L ª 1 Hmod 97Lh0 ª log96 H1L ª 0 Hmod 97L

Hi, jL = H1, 1Lc ª H1L 5H0L H1L ª 1 Hmod 97Lb£ ª H35 1-1LH96LêH4L ª 1 Hmod 97Lh1 ª log96 H1L ª 0 Hmod 97L

Hi, jL = H1, 2Lc ª H1L 5H0L H2L ª 1 Hmod 97Lb£ ª H35 1-1LH96LêH8L ª 1 Hmod 97Lh2 ª log96 H1L ª 0 Hmod 97L

Hi, jL = H1, 3Lc ª H1L 5H0L H4L ª 1 Hmod 97Lb£ ª H35 1-1LH96LêH16L ª 1 Hmod 97Lh3 ª log96 H1L ª 0 Hmod 97L

Hi, jL = H1, 4Lc ª H1L 5H0L H8L ª 1 Hmod 97Lb£ ª H35 1-1LH96LêH32L ª 1 Hmod 97Lh4 ª log96 H1L ª 0 Hmod 97L

x1 = 0 = 0

i = 2 Hc, h-1L = H1, 0Lg£ ª 5H97-1Lê3 Hmod 97L ª 35 Hmod 97L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

94

Page 108: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Hi, jL = H2, 0Lc ª H1L 5H0L H1-3L ª 1 Hmod 97Lb£ ª H35 1-1LH96LêH3L ª 61 Hmod 97Lh0 ª log35 H61L ª 2 Hmod 97L

x2 = 2 = 2

Cálculo del sistema de ecuaciones congruenciales mediante

el teorema Chino de restos congruentes.

x ª 0 Hmod 32Lx ª 2 Hmod 3Ln = H 32 L H 3 L = 96

Se calculan los valores siguientes:

yi ª HnêpiL-1 Hmod piL

y1 ª H96ê32L-1 ª 3 ª 11 Hmod 32Ly2 ª H96ê3L-1 ª 32 ª 2 Hmod 3L

La solución x ª @‚i=1

r

HnêpiL yi xiD Hmod nL es

x ª H 96ÅÅÅÅÅÅÅÅ32

.11.0 L + H 96ÅÅÅÅÅÅÅÅ3

.2.2 Lx ª 32 Hmod 96L

Logaritmo discreto.

x ª logg b Hmod pLx ª log5 35 Hmod 97L ª 32 Hmod 97L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

95

Page 109: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

7. El problema de Diffie - Hellman (DHP)

En la criptografía simétrica las claves de cifrado y descifrado son idénticas y deben

mantenerse secretas para garantizar la seguridad del sistema. Esta condición dificulta el

proceso del intercambio de claves entre los comunicantes puesto que los procedimientos

existentes para ello están basados en estructuras jerárquicas, de forma que siempre existe al

menos una clave maestra cuyo eventual cambio ha de comunicarse a los interesados a

través de un canal seguro. En estas condiciones, si el correo no tiene acceso a alguno de los

comunicantes, entonces éste último queda incomunicado. Esta sería, por ejemplo, la

situación en la que se encontraría una unidad militar si su clave secreta de comunicación

fuera interceptada en territorio enemigo.

En 1976 W. Diffie y M. E. Hellman inventaron un método para el intercambio de

claves secretas en canales abiertos. El procedimieno está basado en un sistema de claves

asimétrico en el que cada comunicante posee dos claves, una de ellas secreta y la otra

pública. Este método no sólo resolvió el problema del intercambio de claves, sino que

además fue el origen de la denominada criptografía de clave pública, cuya aplicación tiene

importantes implicaciones en el ámbito de la seguridad de las comunicaciones digitales.

El método propuesto por Diffie y Hellman para el intercambio de claves secretas a

través de canales abiertos está basado en la existencia de funciones de una sola dirección.

Una función de una sola dirección es aquella cuyo cálculo directo es viable, mientras que el

cálculo de la función inversa tiene tal complejidad que resulta imposible. A modo de

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

96

Page 110: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

ejemplo, si y es una función de este tipo, el cálculo y = f(x) es sencillo, pero el cálculo x =

f -1HyL es tan complejo que no puede realizarse con los conocimientos matemáticos

actuales, ni aún disponiendo de las más avanzadas capacidades de cálculo. Una función de

una sola dirección típica es la exponenciación modular dada por la ecuación

(63)y ª gx Hmod pL

con g , x valores enteros y siendo p un número primo grande de 200 o más dígitos. En estas

condiciones, el cálculo de la función y es posible, ya que tiene un orden de complejidad

� (log p), pero el cálculo de la función inversa

(64)y ª logg y Hmod pL

tiene una complejidad tan elevada que es totalmente inviable para números del tamaño

referido. Esta situación se conoce como la función del logaritmo discreto y su cálculo tiene

una complejidad exponencial dad por ‰è!!!!!!!!!!!!!!!!!!!!!!!!!!lnHpL lnlnHpL .

La función de exponenciación modular que se acaba de presentar fue precisamente

la utilizada por Diffie y Hellman en su procedimiento para el intercambio de claves secretas

a través de canales abertos que se describe a continuación. Consideremos para ello un

número primo grande p (>200 dígitos) y sea g un entero generador del grupo multiplicativo

�p tal que sus potencias generan todos los elementos del grupo. Los valores g y p son

públicos. Supongamos ahora que dos comunicantes A y B desean intercambiar una clave

secreta a través de una canal abierto. Para ello, A elige un entero aleatorio secreto xa tal que

1 � xa � p - 1 y envía a B el valor público ya dado por :

(65)ya ª gxa Hmod pL

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

97

Page 111: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Por su parte, B elige un entero aleatorio secreto xb tal que 1 � xb � p -1 y envía a A

el valor público ya dado por :

(66)yb ª gxb Hmod pL

En estas condiciones, B calcula el valor secreto zab dado por la ecuación

(67)zab ª yaxb ª gxa xb Hmod pL

y A calcula el valor secreto de zba dado por la ecuación

(68)zba ª ybxa ª gxb xa Hmod pL

Obviamente el valor entero zab = zba puede ser utilizado como clave secreta

compartida entre los comunicantes A y B para las posteriores cifradas mediante el sistema

de cifrado simétrico. Las claves públicas ya e yb, así como las claves secretas xa y xb, no se

utilizan propiamente para cifrar y descifrar sino solamente para generar una clave secreta

común que pueda ser utilizada posteriormente en cualquier sistema de cifrado simétrico

(por ejemplo, se pueden seleccionar 64 bits de zab = zba como clave para DES).

è Algoritmo 11. Algoritmo para el cálculo de claves Diffie - Hellman.

Input (p, a)

x ≠ RandomHInteger, 1, ..., p - 1La ≠ a x mod p

y ≠ RandomHInteger, 1, ..., p - 1Lb ≠ a y mod p

K ≠ a xy mod p

Return (K )

Output

En relación a este sistema de generación de claves y propuesto también por sus

creadores, surge el llamado problema de Diffie - Hellman. Está muy relacionado con el

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

98

Page 112: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

problema del Logaritmo Discreto y resulta muy representativo en el ámbito de la

Criptografía en clave pública pues en su aparente irrompibilidad se basan muchos sistema

de cifrado actuales incluyendo el propio Diffie - Hellman o ElGamal.

El problema de Diffie - Hellman plantea lo siguiente: dado un grupo cíclico finito

G, un generador a de G y los términos aa (mod p) y ab (mod p), encontrar el valor de aab

(mod p). Supóngase además que el problema del Logaritmo Discreto se pudiera resolver de

manera eficiente en �p* . Entonces, dados valores de a, p, aa mod p y ab mod p, se podría

primero encontrar el valor de a a partir de a, p y aa mod p y luego calcular HabLa = aab mod

p. Dicha relación establece una relación directa entre el problema de Diffie - Hellman y el

problema del Logaritmo Discreto. La pregunta a si ambos son computacionalmente

equivalentes permanece aún a día de hoy sin respuesta. Sin embargo, recientes estudios en

la materia han demostrado que, a partir de una serie de suposiciones, son

computacionalmente equivalentes.

Ejercicios propuestos

à Problema 35. Sea el sistema Diffie - Hellman para el intercambio de claves definidopor:

Número primo p = 71Generador g = 21 del grupo �71

*

Realizar los pasos necesarios para que los comunicantes A y B logren intercambiar conéxito un valor secreto.

Inicio del algoritmo Diffie - Hellman para el intercambio de

claves entre dos interlocutores A y B.

Paso 1:

A escoge un número aleatorio a, comprendido entre 1 y 70.

Se tiene que a = 46. Envía entonces a B el valor

a a = 2146 ª 9 Hmod 71L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

99

Page 113: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Paso 2:

B escoge un número aleatorio b, comprendido entre 1 y 70.

Se tiene que b = 24. Envía entonces a A el valor

a b = 2124 ª 8 Hmod 71L

Paso 3:

A recibe el valor 9

K = HaaLb Hmod pL = H2146L24 Hmod 71L

y calcula el valor K.

Paso 4:

B recibe el valor 8

K = Ha bLa Hmod pL = H2124L46 Hmod 71L

y calcula el valor K.

La clave privada que comparten ahora A y B es K = 18.

Un escucha S puede llegar a conocer los valores a , a x y a y

del protocolo anterior, pero no puede conocer la información

secreta K compartida por A y B.

à Problema 36. Sea el sistema Diffie - Hellman para el intercambio de claves definidopor:

Número primo p = 3943Generador g = 788 del grupo �3943

*

Realizar los pasos necesarios para que los comunicantes A y B logren intercambiar conéxito un valor secreto.

Inicio del algoritmo Diffie - Hellman para el intercambio de

claves entre dos interlocutores A y B.

Paso 1:

A escoge un número aleatorio a, comprendido entre 1 y 3942.

Se tiene que a = 434. Envía entonces a B el valor

a a = 1234434 ª 3206 Hmod 3943L

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

100

Page 114: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Paso 2:

B escoge un número aleatorio b, comprendido entre 1 y 3942.

Se tiene que b = 797. Envía entonces a A el valor

a b = 1234797 ª 3753 Hmod 3943L

Paso 3:

A recibe el valor 3206

K = HaaLb Hmod pL = H1234434L797 Hmod 3943L

y calcula el valor K.

Paso 4:

B recibe el valor 3753

K = Ha bLa Hmod pL = H1234797L434 Hmod 3943L

y calcula el valor K.

La clave privada que comparten ahora A y B es K = 2941.

Un escucha S puede llegar a conocer los valores a , a x y a y

del protocolo anterior, pero no puede conocer la información

secreta K compartida por A y B.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

101

Page 115: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

8. El problema de la suma de un subconjunto. (SUBSET-SUM)

La dificultad de resolver el problema del subconjunto es la base de la presunta

seguridad del primer sistema de cifrado de clave pública, llamado el sistema de la mochila

de Merkle-Hellman.

El problema de la suma de un subconjunto consiste en lo siguiente. Dado un

conjunto de números positivos 8 a1, a2, ..., an <, llamado el conjunto de la mochila, y un

número positivo s, determinar si un subconjunto de a j suma la cifra s. Es equivalente a

plantear si existe o no un xi tal que

(69)xi œ 80, 1< , 1 i n

cumpliéndose que

(70)‚i=1

n

ai xi = s.

Se puede demostrar que el problema es computacionalmente equivalente a su

versión computacional, que es precisamente determinar un xi tal que se cumpla la ecuación

(70), suponiendo que xi existe. Esto significa que no se conoce mejor solución que explorar

todos los 2n - 1 subconjuntos posibles de 8 a1, a2, ..., an < hasta encontrar uno que cumpla

con la condición establecida. Es por ello por lo que el problema de la suma de un

subconjunto se considera un problema NP-completo y por tanto forma parte del

subconjunto de los problemas de decisión en NP. Los problemas NP se caracterizan porque

es fácil verificar si una respuesta propuesta es válida, pero es computacionalmente

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

102

Page 116: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

imposible encontrar una solución válida si el número es muy grande.

El algoritmo propuesto a continuación para resolver el problema de la suma de un

subconjunto es de tiempo de ejecución exponencial, como todos los problemas

NP-completos. Concretamente el orden de ejecución es �(2n) y, por tanto, resulta

inficiente para números muy grandes.

è Algoritmo 12. Algoritmo para el problema de la suma de un subconjunto.

Input ({a1, a2, ..., an }, s)

For Hx1, x2, ..., xnL e H�2L n do

l ≠ ⁄i=1n ai xi

If Hl = sLReturn H Hx1, x2, ..., xnL L

End

End

Return ()

Output

Ejercicios propuestos

à Problema 37. Sea el conjunto de números enteros positivos a = 8 4, 2, 2, 11, 6 < y elnúmero entero 8. Determinar si existe un subconjunto en a cuyos elementos sumen 8.

Inicio del algoritmo de la suma de un subconjunto.

Dado el conjunto de números enteros positivos

A = 8a1,a2,...,an<se quiere comprobar si existe un subconjunto de A que sume

el valor s. O lo que es lo mismo, se quiere determinar si

existe o no un vector de la forma

Hx1,x2,...,xnLtal que

xi e 80,1< con 1 i n

y se cumpla que

‚i=1

n

aixi = s

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

103

Page 117: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

El vector de entre todos los posibles que cumple con las

condiciones establecidas es 80, 1, 1, 0, 1<.Así, el valor s se puede obtener de la forma :

‚i=1

5

80, 1, 1, 0, 1<84, 2, 2, 11, 6< = 10

à Problema 38. Sea el conjunto de números enteros positivos a = 8 7, 29, 43, 11, 21 < yel número entero 71. Determinar si existe un subconjunto en a cuyos elementos sumen71.

Inicio del algoritmo de la suma de un subconjunto.

Dado el conjunto de números enteros positivos

A = 8a1,a2,...,an<se quiere comprobar si existe un subconjunto de A que sume

el valor s. O lo que es lo mismo, se quiere determinar si

existe o no un vector de la forma

Hx1,x2,...,xnLtal que

xi e 80,1< con 1 i n

y se cumpla que

‚i=1

n

aixi = s

El vector de entre todos los posibles que cumple con las

condiciones establecidas es 81, 0, 1, 0, 1<.Así, el valor s se puede obtener de la forma :

‚i=1

5

81, 0, 1, 0, 1<87, 29, 43, 11, 21< = 71

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

104

Page 118: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

à Problema 39. Sea el conjunto de números enteros positivosa = 8 2, 45, 55, 5, 6, 32, 67, 12, 23, 47, 34, 1, 8 < y el número entero 132.Determinar si existe un subconjunto en a cuyos elementos sumen 132.

Inicio del algoritmo de la suma de un subconjunto.

Dado el conjunto de números enteros positivos

A = 8a1,a2,...,an<se quiere comprobar si existe un subconjunto de A que sume

el valor s. O lo que es lo mismo, se quiere determinar si

existe o no un vector de la forma

Hx1,x2,...,xnLtal que

xi e 80,1< con 1 i n

y se cumpla que

‚i=1

n

aixi = s

El valor 345 no se puede obtener sumando elementos de

A = 82, 45, 55, 5, 6, 32, 67, 12, 23, 47, 34, 1, 8<.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

105

Page 119: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

9. Estudio de los tiempos de ejecución

9.1. Introducción teórica

A lo largo del proyecto, con cada algoritmo analizado y explicado se ha detallado

además su orden de ejecución así como la relevancia que tiene dicho orden a la hora de

aplicar el algoritmo en el ámbito de la Criptografía. Este hecho no tiene más intención que

resaltar la importancia del tiempo de ejecución de los algoritmos, resultando en la mayoría

de los casos lo que verdaderamente marca la diferencia entre unos y otros y lo que, en

definitiva, lo hace más o menos robusto. Con este estudio se pretende contrastar la teoría

con la práctica y comprobar si los tiempos de ejecución de los algoritmos estudiados se

corresponden con lo que los estudios del tema afirman. Lógicamente los recursos

informáticos con los que se disponen no son los idóneos para realizar un estudio de estas

características, pues ni Mathematica es un programa diseñado para soportar largos tiempos

de ejecución ni los ordenadores de que se disponen son, ni mucho menos, de los más

potentes que existen. Sin embargo, dentro de la medida de lo posible, resulta muy

interesante comprobar de manera práctica lo estudiado a lo largo de la realización del

proyecto.

La Teoría de la Complejidad Computacional estudia el tiempo que tarda en

ejecutarse un algoritmo dado, en función del número de operaciones a realizar y en función

de la entrada del algoritmo; es decir, estudia el tiempo de ejecución de un algoritmo para

proporcionar una salida o resultado en función del tamaño de la entrada o del dato. En

general, es difícil dar un tiempo de ejecución exacto, por lo que se recurre a optimizar el

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

106

Page 120: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

peor de los posibles tiempos de ejecución; es decir, determinar el mejor de los peores

tiempos de ejecución.

Se considera que un algoritmo es polinomial si su peor caso de ejecución es de

orden �(nk), donde n es el tamaño de la entrada y k es una constante. Adicionalmente,

cualquier algoritmo que no pueda ser acotado por una función polinomial, se conoce como

exponencial. En general, los algoritmos polinomiales se consideran eficientes, mientras que

los exponenciales se consideran ineficientes.

Para poder observar de manera más sencilla los resultados obtenidos en este

estudio, se mostrará una gráfica que representará los datos de entrada necesarios para cada

algoritmo con respecto a los tiempos de ejecución. Además, para poder disponer de otra

variable que afecta al tiempo de ejecución distinta del tipo de algoritmo, se van a

desarrollar las pruebas sobre dos ordenadores diferentes. El primero, al que se denominará

a partir de ahora como PC1, es un ordenador con un procesador Intel Pentium Mobile

Centrino de 1,60GHz de potencia y 1GB de memoria RAM. El segundo, bastante más

antiguo, es un ordenador con un procesador Intel Pentium 4 de 2.53GHz de potencia y 768

KB de memoria RAM. Para hacer referencia a este último se usará el término PC2.

Lógicamente y para que el estudio tenga sentido, los datos que ambos ordenadores

procesarán serán idénticos.

9.2. El problema de la factorización

El tiempo de ejecución de un algoritmo de factorización de propósito específico

depende de las propiedades de sus factores desconocidos: tamaño, forma especial, etc.

Dichos factores cambian de un algoritmo a otro. Los algoritmos prouestos de factorización

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

107

Page 121: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

propuestos en el proyecto son todos de propósito general y, como se ha explicado en cada

uno de sus apartados, se diferencian efectivamente en los datos de entrada.

Para desarrollar esta sección se ha elegido el algoritmo rho de Pollard, por

depender únicamente del número entero a factorizar como dato de entrada. El

procedimiento seguido ha sido generar aleatoriamente números enteros y factorizar cada

uno de ellos, siendo lógicamente cada vez mayor el tamaño del número a factorizar. En

concreto se han factorizado 190 números, y se ha plasmado el resultado en la siguiente

gráfica.

2.5×1016 5×1016 7.5×1016 1×10171.25×10171.5×1017

2

4

6

8

10

Figura 1

Algoritmo rho de Pollard; PC1

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

108

Page 122: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

2.5×1016 5×1016 7.5×1016 1×10171.25×10171.5×1017

2

4

6

8

10

12

Figura 2

Algoritmo rho de Pollard; PC2

En general, los tiempos de ejecución no son demasiado elevados. El tiempo maximo

de ejecución fue 26.8125 segundos para factorizar el número 144095699816726843. El

menos fue prácticamente 0, dándose para varios números.

En primer lugar, llama la atención como en la gráfica no se identifican intervalos

claros de números para los que el tiempo de ejecución sea siempre mayor que el anterior

intervalo. La teoría afirma que no se conocen con exactitud los órdenes de ejecución de la

factorización pero que, en cualquier caso, se sabe que cuando el número de bits alcanza un

valor muy alto el tiempo se convierte en exponencial. En efecto, la gráfica muestra como,

en general, a mayor tamaño del número mayor es el tiempo de ejecución. Pero, ¿por qué

para ciertos números el tiempo de ejecución disminuye enormemente cuando lo lógico es

que fuese un poco mayor que el anterior? La explicación se encuentra en que los números

tratados han sido generados aleatoriamente y no basándose en unos parámetros iniciales a

comprobar antes de iniciar el proceso de factorización.

Así, el número 81435257807716133 tardó en factorizarse 10.375 segundos ,

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

109

Page 123: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

mientras que el número 84525962415943681 tan sólo tardó 1.375 segundos. Peculiaridades

propias del algoritmo rho de Pollard provocan este tipo de incongruencias, como por

ejemplo el hecho de que este algoritmo trabaja buscando duplicados durante el proceso de

factorización y de hecho, ese es el motivo de que en cierta forma el tiempo de ejecución no

dependa tan sólo de la longitud del número, si no que depende también del tiempo en que

encuentre duplicados aunque, como se ha señalado, lo lógico es que tarde más tiempo

conforme aumente el tamaño del número aunque, como se ha demostrado, hay excepciones.

En cualquier caso queda demostrado que el tiempo de ejecución aumenta con el

tamaño del número a tratar y, llegado a un cierto número de bits, el problema se hace

computacionalmente intratable. El problema de factorizar enteros en tiempo polinómico no

ha sido aún resuelto. Si alguien lo consiguiera, tendría gran interés en el ámbito de la

Criptografía, ya que muchos criptosistemas dependen de su imposibilidad. En medios

académicos, la existencia de tal avance sería una gran noticia; en otros círculos, sería un

gran secreto, por razones obvias.

Para finalizar este apartado, comentar cómo efectivamente los recursos

computacionales afectan al tiempo de ejecución. Para la gráfica correspondiente al PC1, se

observa que éste ha tardado menos en general en desarrollar las tareas propuestas. En

compración con el mayor tiempo registrado en ambos ordenadores, el PC2 tardó más

tiempo en llevar la operación a cabo.

9.3. El problema RSA

El caso del problema RSA resulta de especial interés para el análisis práctico que se

está realizando. El sistema de cifrado asimétrico de clave pública RSA está muy relacinado,

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

110

Page 124: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

como se ha explicado, con el problema de la factorización, si bien es un caso particular ya

que el número entero a factorizar ahora es un número primo. Este detalle lógicamente

complica aún más la tarea de factorizar. Así, el RSA deposita su fuerza sobre el problema de

la factorización siempre y cuando no se conozca la clave privada. La forma en que ha sido

tratado el algoritmo RSA en el proyecto consiste en generar dos números primos al azar que

se multiplican dando lugar a n, generar un mensaje al azar, entre otros parámetros

necesarios para continuar, codificar ese mensaje y descifrarlo factorizarizando n sin hacer

uso de la clave privada. Nuevamente, si la longitud de n es suficientemente grande, el

problema será computacionalmente imposible de resolver.

Esta vez se han realizado 24 ejecuciones para poner en práctica el proceso. En este

caso, los datos manejados por el PC1 y PC2 son similares pero no idénticos, ya que aunque

p y q sean los mismos, el mensaje M es generado aleatoriamente por Mathematica, por lo

que no se puede controlar que M sea igual para cada ordenador en cada ejecución.

Salvando este detalle, la comparación entre ambas gráficas sigue siendo de interés.

Se muestran a continuación las gráficas correspondientes

650 700 750 800 850 900

0.25

0.5

0.75

1

1.25

1.5

1.75

Figura 3

AlgoritmoRSA; PC1

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

111

Page 125: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

650 700 750 800 850 900

0.5

1

1.5

2

Figura 4

AlgoritmoRSA; PC2

Nuevamente, a medida que aumenta el tamaño de los números primos p y q

utilizados, los tiempos de ejecución aumentan. El eje de abscisas muestra tan sólo uno de

los dos valores (el de q concretamente), aunque el método de generación de números

primos que se ha utilizado garantiza que la longitud de ambos es similar.

Las gráficas muestran que se presentan casos en los que el tiempo de ejecución cae

sin motivo aparente, cuando parece que lo lógico hubiera sido que aumentara con respecto

a los valores anteriores. Nuevamente, como ocurría en el caso de la factorización de

números enteros, esto se debe a que los números primos de entrada no cumplen con

criterios básicos a la hora de escoger valores de p y q que garanticen que los parámetros del

RSA sean robustos a la hora de intentar descrifrarlo. Entre varios de los criterios que se

proponen, destaca en importancia que el valor de p y q sea parecido. Así, se muestra a

continuación el aspecto de la gráfica cumpliendo esta condición, estableciendo que p = qÅÅÅÅ2 .

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

112

Page 126: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

500 1000 1500 2000 2500 3000

10

20

30

40

Figura 5

AlgoritmoRSAmejorado; PC1

Se comprueba cómo, efectivamente, la circunstancia de que p y q sean números

muy distintos (aunque siempre es muy recomendable que tengan el mismo número de bits)

contribuye a que los tiempos de ejecución caigan en muchas menos ocasiones y, por regla

general, se observe mejor el carácter exponencial del tiempo de ejecución.

De nuevo, el PC1 ha sido más rápido en ejecutar los algoritmos propuestos que el

PC2, aunque no mucho más.

Actualmente se considera segura una clave RSA con una longitud de n de al menos

768 bits, si bien se recomienda el uso de claves no inferiores a 1024 bits. Hasta hace

relativamente poco se recomendaban 512 bits, pero en mayo de 1999, Adi Shamir presentó

el denominado dispositivo Twinkle, un ingenio capaz de factorizar números de manera muy

rápida, aprovechando los últimos avances en la optimización de algoritmos específicos para

esta tarea. Este dispositivo, aún no construido, podría ser incorporado en ordenadores de

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

113

Page 127: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

bajo coste y pondría en serio peligro los mensajes cifrados con claves de 512 bits o menos.

Teniendo en cuenta los avances de la tecnología, y suponiendo que el algoritmo

RSA no sea roto analíticamente, se deberá escoger la longitud de la clave en función del

tiempo que se desee que la información permanezca en secreto. Efectivamente, una clave

de 1024 bits parece a todas luces demasiado corta como para proteger información por más

de unos pocos años, aunque, como ha quedado claro, todavía no se ha encontrado un

algoritmo de factorización que trabaje en tiempo polinomial.

9.4. El problema de la suma de un subconjunto

Para cerrar el estudio de tiempos de ejecución, se ha creido conveniente tratar en la

práctica con el problema de la suma de un subconjunto. Como se ha afirmado

anteriormente, representa uno de los problemas NP-completo más importantes que se

conocen. Además, los problemas NP-completos representan los problemas más

complicados de resolver computacionalmente.

El problema del subconjunto es también un ejemplo de un problema de la decisión.

Quiere esto decir que la respuesta será un sí o un no, en referencia a si los valores de

entrada cumplen los criterios anteriormente explicados. Por ello, en este tipo de problemas

no surgen picos ni escalones en los tiempos de ejecución. Está demostrado que en todo

caso, conforme aumenta el número de elementos del subconjunto de entrada, el tiempo de

ejecución aumenta de manera exponencial.

Para esta prueba se han introducido subconjuntos de 10 hasta 19 elementos. Los

resultados obtenidos son los siguientes.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

114

Page 128: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

14 16 18 20

50

100

150

200

Figura 6

Algoritmo de la suma de un subconjunto; PC1

14 16 18 20

25

50

75

100

125

150

175

Figura 7

Algoritmo de la suma de un subconjunto; PC2

En este caso, no hay diferencias significativas entre ambos ordenadores. Sin

embargo, no podemos afirmar que ante subconjuntos más grandes se mantenga la misma

relación entre gráficas, ya que Mathematica no es capaz de manejar subconjuntos mayores.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

115

Page 129: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

10. Conclusiones y líneas futuras

A lo largo de la realización de este proyecto se ha tratado con numerosos

algoritmos y métodos matemáticos, los cuales se ha demostrado que forman la base

principal de los criptosistemas de utilizados en la actualidad. Las conclusiones que se

obtienen del presenta proyecto son las siguientes:

1ª. Se puede inferir que la Criptografía moderna debe su integridad y eficacia a las

matemáticas. La aritmética modular, las funciones de una sola dirección y los números

primos son sólo algunos ejemplos de los muchos campos matemáticos en los que se

apoyan los algoritmos de codificación y descodificación.

2ª. Los números primos tienen una vital importancia en el desarrolo y ejecución de

los algoritmos en la Criptografía. Para explotar la dificultad de cálculo de logaritmos

discretos, muchos de los algoritmos criptográficos de clave pública se basan en

operaciones de exponenciación en grupos finitos. Dichos conjuntos deben cumplir la

propiedad de que su módulo n sea un número muy grande con pocos factores

—usualmente dos—. Estos algoritmos funcionan si se conoce n y sus factores se

mantienen en secreto. Habitualmente para obtener n se calculan primero dos números

primos muy grandes, que posteriormen se multiplican.

Se necesitan, pues, mecanismos para poder calcular esos números primos grandes.

Normalmente, y para que la solución sea única, se impone la condición de que los factores

de n que se obtengan sean todos primos elevados a alguna potencia. Al igual que para el

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

116

Page 130: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

problema de los logaritmos discretos, no existen algoritmos eficientes para efectuar este

tipo de cálculos. Esto permite confiar en que, en la práctica, será imposible calcular los

factores de n , incluso disponiendo de elevados recursos computacionales.

3ª. En cuanto al cálculo de primos grandes, bastaría con aplicar un algoritmo de

factorización para saber si un número es primo o no. Este mecanismo es inviable puesto

que, como se acaba de decir, no hay algoritmos eficientes de factorización. Por suerte, sí

que existen algoritmos probabilísticos que permiten decir con un grado de certeza bastante

elevado si un número cualquiera es primo o compuesto.

Cabría plantearse que, dado que para los algoritmos asimétricos de cifrado se

necesitan generar muchos números primos, si realmente hay suficientes. De hecho se

puede pensar que, a fuerza de generar números, llegará un momento en el que se repita un

primo generado con anterioridad. Sin embargo, esta situación no se dará nunca, porque si

a cada átomo del universo le asignáramos mil millones de números primos cada

microsegundo desde su origen hasta hoy, harían falta un total de 10109 números primos

diferentes, mientras que el total estimado de números primos de 512 bits o menos es

aproximadamente de 10151.

4ª. La Criptografía ha ido adaptándose a nuestros días, orientándose

fundamentalmente a las aplicaciones informáticas. Los algoritmos desarrollados en este

proyecto, como toda la ciencia de la Criptografía tiene aplicaciones prácticas en diversoas

áreas:

a) La protección de las comunicaciones digitales: Internet, TV digital,

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

117

Page 131: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

comunicaciones móviles, redes de datos y de voz.

b) La transferencia de documentos EDI (Electronic Data Interchange) y el

comercio electrónico EC (Electronic Commerce). Transferencia de dinero por banca,

denominada EFT (Electronic Funds Transfer).

c) Garantizar la seguridad y protección del software.

d) La mensajería militar en la red de mando y control.

e) En la aplicación del DNI digital, con la firma digital, así como en la firma

digital de documentos.

5ª. La Criptografía moderna está fuertemente sustentada en la informática aplicada, y

por tanto se ve directamente afectada por los tiempos de ejecución. Para estudiarlos y

explicarlos se recurre a las clases de complejidad, que clasifica los tipos de problemas en

función de su tiempo de ejecución. Así, todos los algoritmos tratados en el proyecto son

NP, es decir, su tiempo de ejecución es exponencial, si bien si se conoce un dato clave,

llamado certificado y en nuestro caso los datos iniciales de las funciones trampa, el

tiempo de ejecución se convierte en polinomial. Un caso particular de los problemas NP

son los NP-completos, como es el problema de la suma del subconjunto tratado en el

proyecto. Aparte de tener todos un tiempo de ejecución exponencial, se ha demostrado

que si se consigue resolver uno de ellos, entonces de manera directa se podrían resolver el

resto.

6ª. El hecho de que no se conozca un algoritmo eficiente para resolver un problema

no quiere decir que éste no exista, y por eso es tan importante la Teoría de Algoritmos

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

118

Page 132: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

para la Criptografía. Si, por ejemplo, se lograra descubrir un método eficiente capaz de

resolver logaritmos discretos, algunos de los algoritmos asimétricos más populares en la

actualidad dejarían de ser seguros. De hecho, la continua reducción del tiempo de

ejecución necesario para resolver ciertos problemas, propiciada por la aparición de

algoritmos más eficientes, junto con el avance de las prestaciones del hardware

disponible, obliga con relativa frecuencia a actualizar las previsiones sobre la seguridad

de muchos sistemas criptográficos. De hecho, expertos en la materia de seguridad

informática y Criptografía, aseguran que con la futura aparición de los ordenadores

cuánticos los recursos computacionales crecerán de manera gigantesca, obligando una vez

más a la Criptografía a adaptarse y transformarse en lo que ya empieza a conocerse como

Criptografía Cuántica.

Actualmente, lo modelos cuánticos de computación hoy por hoy no pasan de

meras promesas, ya que la tecnología actual no permite confinar partículas individuales de

forma que preserven su estado cuántico. Los más optimistas aseguran que en pocos años

se tendrán los primeros microprocesadores cuánticos en funcionamiento, mientras que la

gran mayoría opina que todavía transcurrirán décadas antes de poder disponer del primer

dispositivo realmente operativo.

Se puede afirmar con rotundidad es que los modelos criptográficos actuales

seguirán siendo válidos durante algunos años más. En cualquier caso, no conviene perder

de vista estas promesas tecnológicas, ya que cuando se conviertan en realidades, obligarán

a replantear muchas cuestiones, y no sólo en el ámbito de la Criptografía.

7ª. Como líneas futuras de análisis e investigación y como mejora posible a

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

119

Page 133: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

introducir al actual Proyecto cabría reseñar:

a) Diseño de algoritmos capaces de calcular las raíces cuadradas módulo

compuesto de un número que sea factor de tres o más factores.

b) Introducción y desarrollo de los algoritimos del problema del logaritmo

discreto, la factorización de números y el problema de RSA mediante las técnicas de la

Criptografía de Curvas Elípticas (CCE), como variante de la Criptografía asimétrica o de

clave pública basada en las matemáticas de las curvas elípticas. Esta metodología puede

ser más rápida y usar claves más cortas que los métodos conocidos, como RSA.

c) Realización de todos estos algoritmos en un lenguaje de programación

estructurado de propósito general, como por ejemplo C, implementando todas las librerías

requeridas para realizar el tratamiento de grandes números, con el fin de estudiar

fehacientemente la optimización de estos algoritmos, con las claves actuales, así como

con futuras claves de mayor magnitud.

11. Desarrollo de la aplicación

11.1 Ciclo de vida

El tipo de paradigma de ciclo de vida que se ha seguido para el desarrollo del

proyecto ha sido el modelo incremental o evolutivo. Así, el desarrollo inicial se comenzó

satisfaciendo un conjunto de requisitos, que se enunciarán más adelante, y las siguientes

versiones proveen de requisitos identificados posteriormente, evolucinando el sistema fase

a fase. Es el tipo de metodología más lógico para aplicar a este proyecto, pues la parte de

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

120

Page 134: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

programación consiste en el diseño de subrutinas que en la mayoría de los casos no

dependen una de otra. De esta forma es posible avanzar más en el desarrollo de unos

métodos que en otros sin ralentizar de manera global el avance del proyecto.

El desarrollo y codificación de los algoritmos se ha ido realizando por bloques. El

orden que se ha seguido para la elaboración de los mismos ha sido: el problema del residuo

cuadrático, raíz cuadrada módulo n, el problema del logaritmo discreto,, el problema de la

factorización de números enteros, el problema RSA, el problema de Diffie-Hellman y,

finalmente, el de la suma de un subconjunto. Como ya se ha mencionado anteriormente, el

orden podría haber sido otro y éste es el que se ha considerado mejor. Mencionar, sin

embargo, que ciertos algoritmos propios de la Aritmética Modular han sido necesarios para

el diseño de algunos algoritmos y, lógicamente, fue necesario su desarrollo anterior. Este es

el caso del Teorema Chino del Resto, la función del Inverso Modular, la función Jacobi y

una subrutina que, a partir de una matriz n × n, devuelve las filas linelamente dependientes.

Para poner en práctica el ciclo de vida incremental se ha optado por recurrir a una

metodología de paquetes. Consiste en definir de antemano una serie de paquetes de trabajo

en cuyo contenido se clasifican los pasos necesarios para poder ir evolucionando a lo largo

del proyecto. Se muestra a continuación un esquema de dichos paquetes de trabajo con su

jerarquía establecida.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

121

Page 135: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Figura 8

Paquetes de trabajo.

WP.00 - Gestión

Definición: Lo que se imputará al paquete de gestión no va a realizarse en un

periodo de tiempo continuo y determinado, sino que va a consistir en una serie de reuniones

y entrevistas repartidas a lo largo de todo el proyecto. Estas reuniones tienen por objeto

vigilar la correcta realización del proyecto tanto en contenidos como en correspondencia

con el tiempo estipulado del mismo. Así mismo, se incluye en este paquete todo el trabajo

que tenga que ver con el seguimiento del correcto funcionamiento del proyecto, como por

ejemplo las fases de pruebas finales.

Entradas: Entregables del proyecto en distintas fases de realización así como

distintas revisiones de la planificación temporal y económica.

Salidas: Las entradas revisadas y modificadas si se creyera necesario.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

122

Page 136: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

WP.01.1 - Búsqueda de documentación

Definición: Antes de entrar en la fase que se llevará el grueso del proyecto será

necesario prepararla convenientemente. Para este fin se han establecido las dos fases del

paquete WP.01. En nuestro paquete concretamente el equipo se ocupará de buscar toda

información que sea de ayuda para llevar a cabo el proyecto, tanto datos puros que ayudarán

directamente, como todo tipo de información anexa que permitirá adquirir un alto grado de

comprensión de la tarea que se va a llevar a cabo.

Esta búsqueda se realizará tanto en bibliotecas, como publicaciones especializadas,

y dado el carácter didáctico o de investigación del proyecto, se hará especial hincapié en

nuevas fuentes de información, como Internet, ya que se las considera, un buen banco de

nuevas investigaciones.

Entradas: No posee entradas propiamente dicho, ya que no se realizará la

conversión de ningún tipo de información sino que el objeto de esta base es buscar

justamente esa información.

Salidas: Como salida se obtendrá una buena colección de documentación

debidamente catalogada y seleccionada por orden de interés y calidad de contenidos.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

123

Page 137: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

WP.01.2 - Organización de pseudocódigos

Definición: Del paquete anterior se ha obtenido gran cantidad de documentación y

junto a ella los pseudocódigos de los métodos que se implantarán a lo largo del proyecto.

En esta fase se seleccionarán aquellos pseudocódigos más elegantes que se hayan

encontrado o aquéllos que por su estructura sean interesantes desde un punto de vista

original o educativo. En el caso de no disponer de pseudocódigos completos, se diseñarán

por cuenta propia los pasos necesarios para poder alcanzar el resultado fina.

Entradas: Documentación seleccionada en el paquete WP.01.1

Salidas: Grupo de pseudocódigos a implantar.

WP.02 - Codificación de algoritmos

Definición: A partir de este punto se encuentra el grueso del proyecto. Aquí se

pasarán todos los pseudocódigos al lenguaje Mathematica. Estos códigos son la base y

punto central de todo el proyecto, ya que serán los que permitirán explicar el

funcionamiento y la realización de los problemas de los que se hablará a continuación.

Entradas: Pseudocódigos seleccionados.

Salidas: Algoritmos codificados y funcionando.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

124

Page 138: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

WP.03.1 - Generación de problemas

Definición: Se trata de otro punto fundamental del proyecto que permitirá hacer una

idea de las principales aplicaciones de cada uno de los algoritmos propuestos. En algunos

casos estos problemas se repetirán para varios algoritmos, para que se pueda examinar

cuáles son las similitudes y diferencias entre ellos. En algunas situaciones esto no será

posible dada la distinta naturaleza de cada algoritmo, ya que algunos requieren

características de los datos entrantes que no son compatibles con los otros algoritmos.

Entradas: Los códigos funcionando y una batería de enunciados de problemas

Salidas: Problemas resueltos en los distintos algoritmos.

WP.04 - Creación de interfaz de usuario

Definición: Se considera a la interfaz de usuario uno de los puntos fuertes de este

proyecto, ya que permite a los que no están versados en el lenguaje Mathematica poder

ejecutar los algoritmos con sus propios ejemplos (o los ejercicios previamente codificados a

modo de demostración). De esta forma se intenta que el proyecto y el trabajo realizado no

quede oculto sino que en el futuro sea de utilidad.

Entradas: La propia estructura del proyecto, ya que servirá de base para hacer el

estudio de cómo enfocar la interfaz a los usuarios.

Salidas: Interfaz gráfica para el usuario en funcionamiento.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

125

Page 139: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

WP.05 - Conclusiones

Definición: En esta fase se redactarán las conclusiones del proyecto, se intentará

que no tengan un nivel muy avanzado y que sean de fácil comprensión con un lenguaje

adaptado a personas que no necesariamente tengan que estar muy preparadas en el campo

de la Criptografía y Teoría de Números. El contenido de estas conclusiones es la

comparación entre los distintos algoritmos así como cualquier anotación que se haya

realizado durante la realización del proyecto que se pueda considerar de interés.

Entradas: Toda la información generada a lo largo del proyecto

Salidas: El apartado de conclusiónes del proyecto

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

126

Page 140: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

11.2. Identificación de necesidades

El objetivo principal de la aplicación desarrollada es la proporcionar una

herramienta que permita al usuario utilizar los algotirmos desarrollados de una manera

rápida y cómoda, como consecuencia de tratarse de una aplicación informática basada en

sistema de ventanas.

En lo referente al alcance del proyecto, la aplicación se limitará a dar un resultado

en función de los datos de entrada. Así, para los métodos de factorización, logaritmo

discreto y los algoritmos raíz cuadrada módulo n, la aplicación proporcionará el resultado

pertinente siempre y cuando los datos de entrada sean correctos. Lo mismo sucede con el

algoritmo RSA y Polling-Hellman, proporcinando además el sistema un resumen de los

principales datos a conocer en el proceso de intercambio y generación de claves. En el caso

de la suma de un subconjunto, la aplicación tan sólo mostrará en pantalla si existe o no un

subconjunto de A que sume s. En ningún caso la aplicación proporcionará alternativas en el

punto de que los datos de entrada propuestos no sean válidos. Además, como se ha

mencionado a lo largo del proyecto, si los datos de entrada son demasiado grandes como

para poder tratarse computacionalmente en la máquina donde se esté ejecutando la

aplicación, el resultado será que el sistema no será capaz de proporcionar una respuesta.

La tipología de usuario final abarca prácticamente todas las posibles. La estructura

sencilla seguida a la hora de desarrollar los algoritmos e incorporarlos a una interfaz de

usuario muy intuitiva, hace que no existan barreras de tipo técnico por las que usuarios no

introducidos en la materia se puedan mostrar reacios a utilizar la herramienta. Además,

muchos de los algoritmos planteados resultan muy interesantes a la hora de obtener un

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

127

Page 141: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

resultado de manera rápida y fiable, como puede ser el caso de conocer la factorización de

un número entero o conocer el resto cuadrático de cierta sentencia. Por ello se espera que el

rango de usuarios finales sea amplio, desde estudiantes y profesores hasta interesados en la

materia.

Respecto a las restricciones que pueden afectar al plan de proyecto, pocas son las

que realmente pueden suponer un problema. En primer se sitúa el periodo de tiempo en el

que debe desarrollarse. Según el diagrama de Gantt mostrado más adelante, el plazo de

ejecución ha sido de nueve meses aproximadamente, si bien esta restricción es académica.

No ha sido necesario ningún elemento de hardware adicional aparte del PC con el que se

trabaja, con lo que no ha exitido restricción alguna en relación a los recursos disponibles.

Tampoco han habido restricciones geográficas.

11.3. Análisis de requisitos

Todos los requisitos identificados para esta aplicación son de carácter funcional,

puesto que atienden a características propias de las funciones de Criptografía.

RF001. Representación de un número entero positivo descompuesto en la

multiplicación de dos factores, según el algoritmo de factorización rho de Pollard.

Dado un número entero positivo n descomponerlo en p µ q.

RF002. Representación de un número entero positivo descompuesto en la

multiplicación de dos factores, según el algoritmo de factorización ( p -1 ) de Pollard.

Dado un número entero positivo n y un límite entero positivo B, encontrar la

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

128

Page 142: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

descomposición de n en dos factores, siendo al menos uno de ellos un primo p para el cual

p - 1 es uniforme con respecto al límite B.

RF003. Representación de un número entero positivo descompuesto en la

multiplicación de dos factores, según el algoritmo de factorización de la criba

cuadrática.

Dado un número entero positivo n descomponerlo en p µ q .

RF004. Establecer atributos propios válidos del sistema de cifrado asimétrico en clave

pública RSA, a partir de los parámetros iniciales p y q.

Proponer todos los datos necesarios para cifrar y descifrar un mensaje M.

RF005. Dados dos números enteros, estudiar si uno es residuo cuadrático respecto del

otro.

Se obtiene una respuesta positiva o negativa al respecto.

RF006. Calcular la raíz cuadrada módulo n, con n primo para los valores enteros

dados.

Se calcula la raíz cuadrada de un valor entero módulo n si existe (dicho valor

entero tiene que ser resto cuadrático módulo n).

RF007. Calcular la raíz cuadrada módulo n, con n compuesto para los valores enteros

dados.

Se calcula la raíz cuadrada de un valor entero módulo n, en el caso de que n sea un

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

129

Page 143: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

número compuesto de la forma pµ q , con p y q factores primos de n.

RF008. Calcular el problema del logaritmo discreto, según el algoritmo baby-step

giant-step.

Se calcula el valor para el cual tiene solución la ecuación del logaritmo módulo n

planteada, según un subgrupo cíclico �p* concreto de orden n = p - 1 con generador g,

para un b entero positivo dado.

RF009. Calcular el problema del logaritmo discreto, según el algoritmo

Pohlig-Hellman.

Se calcula el valor para el cual tiene solución la ecuación del logaritmo módulo n

planteada, según un subgrupo cíclico �p* concreto de orden n = p - 1 con generador g,

para un b entero positivo dado.

RF010. Calcular el problema del logaritmo discreto, según el algoritmo rho de Pollard

para logaritmos.

Se calcula el valor para el cual tiene solución la ecuación del logaritmo módulo n

planteada, según un subgrupo cíclico �p* concreto de orden n = p - 1 con generador g,

para un b entero positivo dado.

RF011. Establecer los parámetros necesarios para establecer una comunicación

segura a través de un canal público mediante el protocolo asimétrico Diffie-Hellman.

Se muestran, paso por paso, las operaciones necesarias para establecer el canal de

comunicación seguro, a partir de un número primo p y un generador g e �p* .

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

130

Page 144: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

RF012. Comprobar si, dado un conjunto ai de números enteros y un número entero s,

existe un subconjunto de ai que sus elementos sumen s.

Se calcula si dicha condición se cumple y se informa del resultado por pantalla.

11.4. Arquitectura técnica

La arquitectura necesaria para esta aplicación no es otra que un PC, sin requerir

características específicas adicinales. Deberá tener instalado el software necesario para la

ejecución de la aplicación (Mathematica® V.5.2) y el paquete gráfico The Super Widget

Package (SWP) para la creación de la interfaz de usuario (GUI).

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

131

Page 145: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

11.5. Diseño de la interfaz de usuario

Como se ha mencionado en la introducción del ciclo de vida, la interfaz de usuario

se desarrolla de forma evolutiva, al igual que todo el desarrollo de este proyecto. Esta

manera de trabajar presenta como ventajas poder obtener resultados parciales a medida que

se completan los algoritmos y, en caso de tener que realizar modificaciones, éstas son más

fáciles de localizar y resolver.

La prioridad que se ha establecido a la hora de desarrollar la interfaz de usuario es

que sobre todo sea sencilla e intuitiva. Como antes se ha indicado, está sobre todo pensado

para el ámbito docente y por tanto el grado de conocimiento del usuario no tiene

necesariamente que ser avanzado.

Una vez arrancado el programa, y desde la ventana inicial del programa, tan sólo

hay que seleccionar uno de los algoritmos e introducir los parámetros de entrada que pide

explícitamente la interfaz. Para una mayor comprensión del usuario, la interfaz debe

mostrar gráficamente qué es cada uno de los parámetros, para que no exista confusión.

A continuación se presentan unos ejemplos del funcionamiento de la interfaz de

usuario.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

132

Page 146: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Figura 9

Menú principal

Figura 10

Cálculo de la factorización de un número entero

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

133

Page 147: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Figura 11

Cálculo del logaritmo discreto

Figura 12

El problemaRSA

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

134

Page 148: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Figura 13

El problema de la suma de un subconjunto

Figura 14

Problema de la raíz cuadradamódulo primo

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

135

Page 149: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

12. Valoración económica y planificación

12.1. Introducción

En este apartado se detalla la valoración económica o análisis de costes de cada

una de las tareas/actividades que comprenden la realización y puesta en funcionamiento

del presente proyecto.

El proyecto se ha descompuesto en actividades y tareas, indicadas como partidas o

ítems en la valoración económica.

12.2. Técnicas de estimación de costes

Las diferentes partidas o ítems que componen el proyecto y que se han incluido en

este análisis de costes se detallan a continuación.

1. Especificaciones y Desarrollo Software

Esta partida o ítem se ha dividido en dos grandes fases debido a su gran alcance e

importancia.

En primer lugar, aparece la fase de requisitos. Esta fase incluye las fases de

especificación de requisitos, del análisis funcional y del plan de pruebas.

En segundo y último lugar, se indica la fase de desarrollo del software. Esta fase

es sin duda la que ha supuesto más coste, en términos de tiempo, y la que distingue

nuestro presupuesto del de otro proyecto que comprenda el mismo ámbito o sea del

mismo tipo. En esta fase se ha diferenciado del ajuste de curvas lineal y del no lineal.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

136

Page 150: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Para cada una de las fases anteriores se reseñan los costes directos, expresados en

meses/hombre (meses completos dedicados para cada actividad), necesarios para

acometer cada una de ellas, indicándose la categoría del realizador: Jefe de Proyecto o

Analista/Programador. La actividad del Jefe de Proyecto se ha estimado en un 17,5%

respecto de la actividad del Analista/Programador.

Por último, cabe destacar que no debe haber confusión con el significado de los

costes unitarios aquí expresados. Estos costes representan la valoración económica que

haría la empresa por poner a cargo de este proyecto a dicho Jefe de Proyecto o Analista en

su caso.

2. Instalación, Pruebas e Integración del Software

En este apartado se recogen los costes directos de las actividades de integración y

de pruebas del software en el entorno de desarrollo y en el de explotación, incluidos los

gastos adicionales, tales como los desplazamientos y las dietas. Estos costes han sido

calculados del mismo modo que en el apartado anterior.

3. Equipamiento y Licencias Software

Costes de todo el equipamiento e infraestructura (PCs, impresoras, RAL,

comunicaciones), si fuera necesario. Así mismo, se han de especificar en este apartado las

licencias necesarias para el entorno de explotación.

Para la implementación de este software sólo es necesario de una licencia del

lenguaje numérico y simbólico de Mathematica®, en concreto de la versión 5.2 aquí

utilizada, y disponer de un PC. Cómo la venta de este software será con toda seguridad a

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

137

Page 151: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

una persona jurídica no se contempla en este presupuesto la adquisición de dicha

plataforma hardware, debido a que en los tiempos presentes cualquier empresa o persona

jurídica dispone de un PC, haciéndose sólo referencia a la licencia del Mathematica®.

4. Apoyo logístico (Formación)

En este concepto se ampara la formación a impartir a los posibles operadores y

administradores del sistema a implantar. Se incluye en la formación la entrega de toda la

documentación necesaria para el curso de formación.

5. Incrementos e IVA

Se parte de la suma de las partidas (1), (2), (3), y (4) formando el Coste Directo

del proyecto. A este Coste Directo se le aplican los Gastos Generales H13%L y el

Beneficio Industrial H6%L. La suma de los conceptos de Coste Directo, Gastos Generales

y Beneficio Industrial constituyen el Total Importe sin IVA.

A este importe se le sumarán los impuestos correspondientes como IVA H16%L,

para la Península y Baleares, IGIC H5%L para las islas Canarias o IPSI H0%L para Ceuta y

Melilla.

Total proyecto

La suma del Total Importe sin IVA más la partida de Incrementos e IVA

determinan el importe total del desarrollo, implantación y puesta en servicio del proyecto.

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

138

Page 152: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

12.3. Planificación temporal del proyecto

En el diagrama de Gantt de actividades siguiente se reflejan las tareas e hitos más

importantes para el desarrollo y ejecución de este proyecto Fin de Carrera, así como la

planificación temporal final dedicada a cada uno de ellos.

12.4. Costes del proyecto

En función de lo explicado en el apartado de técnicas de estimación de costes y de

la planificación vista en el apartado anterior podemos proceder a calcular los costes

estimados del presente proyecto.

El importe total del proyecto asciende a 20.981, 92 € (VEINTE MIL

NOVECIENTOS OCHENTA Y UN EUROS CON NOVENTA Y DOS CÉNTIMOS),

impuestos incluidos.

El detalle de cada una de las partidas vistas en el apartado anterior, se expresa en

la tabla siguente:

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

139

Page 153: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

140

Page 154: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

141

Page 155: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

Bibliografía

[FUST00] Fúster Sabater, Amparo; de la Guía Martínez, Dolores y otros.

Técnicas Criptográfica de protección de datos. 2ª edición.

Ed. Ra-Ma. Madrid, 2000.

[LUCE0.7.3] Lucena López, Manuel J..

Criptografía y Seguridad en Computadores.

4ª Edición. Versión 0.7.3

[MONT02] Juan Montejo Machicado. Proyecto Fin de Carrera:

Autenticación mediante el Algoritmo MD5 para el Intercambio

de Información.

Dirigido por el Dr. Fco. Javier Rodríguez Gómez.

Universidad Pontificia Comillas. Madrid, 2002

[MART05] Javier Martín Herrera. Proyecto Fin de Carrera.

Firmas Digitales.

Dirigido por el Dr. Fco. Javier Rodríguez Gómez.

Universidad Pontificia Comillas. Madrid, 2005.

[MATE05] Andrés Mateos Salmador. Proyecto Fin de Carrera:

Algoritmos para la Criptografía de Clave Pública.

Dirigido por el Dr. Fco. Javier Rodríguez Gómez.

Universidad Pontificia Comillas. Madrid, 2005.

[MENE96] A. Menezes, P. Van Oorschot, and S. Vanstone,

Handbook of Applied Cryptography, CRC Press, 1996. Cap. 3.

http://www.cacr.math.uwaterloo.ca/hac/

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

142

Page 156: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

[PAST01] Pastor Franco, José; Sarasa López, Miguel Ángel;

Salazar Riaño, José Luis;

Criptografía Digital, Fundamentos y Aplicaciones. 2ª edición.

Universitarias de Zaragoza, 2001.

[ROME04] Rafael Romero Luezas. Proyecto Fin de Carrera:

Criptografía Asimétrica de Clave Pública.

Dirigido por el Dr. Fco. Javier Rodríguez Gómez.

Universidad Pontificia Comillas. Madrid, 2004.

[RODR03] Rodríguez Gómez, Francisco Javier.

Cálculo y Métodos Numéricos. Teoría, Algoritmos y Problemas

Resueltos.

Universidad Pontificia Comillas. Madrid, 2003.

[RODR03] Rodríguez Gómez, Francisco Javier.

Seguridad en Red..

Programa de Postgrado, UNED. Madrid, 2003.

[ROGA98] Rodríguez Gómez, Fco. Javier; García Merayo, Félix.

Fundamentos y Aplicaciones con Mathematica. Paraninfo.

Madrid, 1998.

[WILL99] Stallings, Williams.

Cryptography and Network Security: Principles and Practice.

Second Edition. Prentice Hall, New Jersey, 1999.

URL’s

[1] http://www.williamstallings.com

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

143

Page 157: PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA · PDF filePROYECTO FIN DE CARRERA PROBLEMAS COMPUTACIONALES EN CRIPTOGRAFÍA AUTOR: D. Lorenzo José Herrero Blanco Madrid Junio de 2007

[2] http://www.rsasecurity.com/

[3] http://www.kriptopolis.com/

[4] http://www.rediris.es/rediris/

[5] http://www.cacr.math.uwaterloo.ca/hac/

[6] http://webs.ono.com/usr005/jsuarez/expon2.html

[7] http://es.wikipedia.org/wiki/Factorizaci%C3%B3n_de_enteros

[8] http://jair.lab.fi.uva.es/~fdelgado/cripto/log_discreto_print.pdf

[9] http://www.sindominio.net/hmbcn00/material/hmRSA-es.htm

[10] http://www.htmlweb.net/seguridad/cripto/cripto_2.html

[11] http://gaussianos.com/criptografia-cifrado-de-clave-publica-i/

Proyecto Fin de Carrera Problemas Computacionales en Criptografía

144