• No se han encontrado resultados

Para terminar, hacemos un breve comentario al porqué de estos capítulos, y traemos una recomendación para su lectura. En el Capítulo 2 se leen los conceptos básicos de las matemáticas para la criptografía que hemos visto conveniente que quedasen recopilados en nuestra tesis. Recoge el esfuerzo que hemos realizado en el estudio y comprensión de esos conceptos. Son una redacción ordenada de conceptos que pueden hallarse en muchos de los

Introducción 14 libros que vienen relacionados en la bibliografía. Pero nos parece que constituye una buena guía para quien no conoce esos conceptos. En su redacción hemos querido reflejar el itinerario que hemos seguido nosotros para lograr manejar con soltura esa matemática. Quien tenga conocimientos de la matemática de la aritmética modular y del criptosistema RSA puede evitar su lectura, sin perder continuidad el resto de la redacción. Para quien no los tenga, puede resultar una guía didáctica asequible: especialmente en sus dos primeros apartados.

El Capítulo 3 es otro breve resumen conceptual. También puede omitir su lectura aquel que haya trabajado en arquitectura de ordenadores. No pretende ser un resumen de conceptos de arquitectura, sino una recopilación de los posibles cuellos de botella a las que hemos hecho frente cuando hemos querido optimizar el código que hemos implementado. Este Capítulo puede ser un prólogo del Capítulo 7.

Los Capítulos 4 y 6 recogen nuestra implementación de entero largo y del algoritmo de factorización basado en la técnica de las fracciones continuas. Su lectura termina también enfocada al Capítulo 7, dedicado precisamente a optimizar todo ese código.

El Capítulo 5 es algo independiente, y surgió de una necesidad de nuestro trabajo. Era preciso poder dar valor a los muchos enteros que debíamos manejar para probar nuestras implementaciones de los operadores para nuestra definición de entero largo; más adelante fue necesario generar una gran cantidad de compuestos, producto de dos primos, de diferentes tamaños, para someter a pruebas y estudio nuestro algoritmo de factorización. Y poco a poco esta necesidad nos fue metiendo en el diseño del generador que allí presentamos y en la implementación del probado BBS.

Quizá quien contemple en índice de esta Tesis pueda no encontrar una única unidad temática. El hilo conductor de este trabajo se encuentra en su mismo desarrollo. Hemos tratado diferentes campos de la criptografía. Hemos hecho una optimización de unas determinadas funciones. Queda mucho campo de trabajo en cada uno de los asuntos tratados. Pensamos que esta Tesis nos ha dejado muchas puertas abiertas para posibles trabajos futuros.

Algunas propiedades criptográficas de los números primos 15

2

CRIPTOGRÁFICAS DE LOS NÚMEROS ALGUNAS PROPIEDADES

PRIMOS

El estudio y conocimiento de los fundamentos matemáticos de la criptografía ha adquirido un interés práctico que se le añade al intrínseco interés teórico del que gozan todas las matemáticas. La criptografía sobre la que hemos trabajado en esta tesis descansa en gran manera en la aritmética modular. En estos últimos años este campo de las matemáticas ha aumentado enormemente su interés.

Estas matemáticas alcanzaron un gran desarrollo teórico de la mano de matemáticos de los siglos XVII a XIX. Matemáticos que trabajaron sin los medios actuales de computación; y que alcanzaron un magnífico nivel de conocimientos: FERMAT, GAUSS, EULER, GALOIS, JACOBI, LEGENDRE,...

Gran parte de la criptografía descansa sobre estos matemáticos y su trabajo. Por citar algunos ejemplos podemos referirnos a la generación de valores pseudoaleatorios; la determinación de si un entero dado es primo compuesto (por ejemplo, con el algoritmo de MILLER–RABIN, que se fundamenta en el teorema de FERMAT, y con el método de SOLOVAY–STRASSEN que descansa en

Algunas propiedades criptográficas de los números primos 16 el criterio de EULER y en la posibilidad del cálculo del símbolo de JACOBI); el criptosistema RSA (que define sus claves apoyado en expresiones de EULER y FERMAT: función de EULER, teorema de EULER, extensión del teorema pequeño de FERMAT, algoritmo extendido de EUCLIDES); los procesos de factorización de enteros largos, especialmente los subexponenciales...

Entre los muchos capítulos que abre la aritmética modular, nos centraremos especialmente, en esta presentación, en un secreto que esconden los enteros. Un secreto del que ya hemos hablado en el capítulo anterior, que sorprende por su sencillez, por su naturaleza cotidiana: la camuflada existencia de los números primos, su nada sencilla identificación, sus sorprendentes propiedades,... ¿Por qué los números esconden a sus primos? ¿Cómo se esconden esos primos? ¿Por qué no podemos disponer de una herramienta que nos permita identificarlos de forma sencilla y asequible mediante un proceso de cálculo no demasiado complejo ni gravoso? ¡ Son tan distintos de todos los demás!: Los números primos son las piezas elementales del “mecano” de los enteros. Kenneth ROSEN [Rose93] los considera como los bloques sobre los que se construye cualquier entero.

El concepto de número primo es universalmente conocido: dados dos enteros

a

y

b

, decimos que

a

divide a

b

(o que

b

es divisible por

a

) y se escribe

a |b

, si existe un entero

c

tal que

c

a

b=

×

. Se dice entonces que

a

es divisor de

b

o que

a

es factor de

b

. Un divisor de

n

se dice que es divisor propio si es distinto de

n

y distinto de

1

. Un número será primo si es un entero mayor que

1

y no tiene divisores propios. Cuando el número tiene divisores propios se llama compuesto. La identificación de los números primos constituye un problema paralelo al de la factorización de los enteros. Dos cuestiones podemos formular: la posibilidad de encontrar respuesta a cualquiera de ellas nos ofrecería la clave para descubrir la solución de la otra:

1. Dado un número: ¿cómo saber que si es primo?

2. Dado un compuesto: ¿cómo saber qué primos lo forman?

Tres características queremos destacar, sobre el conjunto de los primos y sobre el problema de la factorización:

1. El conjunto de los primos es infinito. No podemos definir el conjunto por extensión, mostrando su lista completa; necesitamos buscar una definición por sus propiedades. Y, efectivamente, como veremos, disponemos de esta descripción del conjunto de los primos y conocemos propiedades que los hacen identificables: pero la verificación práctica de esas propiedades resulta con frecuencia una tarea muy costosa en tiempo de computación.

2. No existe limitación en el número de veces que un primo puede intervenir en la factorización de un compuesto.

3. Tampoco existe limitación en el número de primos que pueden intervenir en la factorización de un compuesto.

Algunas propiedades criptográficas de los números primos 17 y que justifican la redacción del presente capítulo.

1. La condición de primalidad ofrece la posibilidad de existencia de inversos para cualquier entero en la aritmética de módulo un primo: veremos, por ejemplo, que este problema de la existencia de inversos y de las propiedades de los primos en la aritmética modular es de gran importancia para el funcionamiento del criptosistema RSA.

2. Necesitamos conocer qué medios tenemos para detectar la presencia de un primo: el hecho de disponer de formas que nos permitan determinar la condición de primalidad de cualquier entero es fundamental en la criptografía, puesto que muchos procesos criptográficos deben su correcto funcionamiento precisamente a que trabajan con primos. De nuevo podemos considerar cómo el criptosistema RSA requiere, para su puesta en marcha, de la generación de dos primos que, además, verifiquen que el valor que resulta de restar (y también sumar) 1 a dicho primo y dividir por 2 ese resultado vuelva a ser un primo (estándar X.509). También se requiere la generación de enteros primos grandes en otros criptosistemas como el generador BBS [Blum96], que además exige fuertes condiciones al primo a utilizar (cfr. [Hern96] y [Alva98]). 3. Sería de enorme utilidad disponer de un modo sencillo de obtener los factores primos de un

compuesto: la factorización, aparte de su indudable interés matemático, es la vía más directa para deshacer la eficacia de muchos criptosistemas, entre ellos en RSA.

Hemos centrado el estudio realizado y presentado en esta tesis en el conocimiento de algunos de los criptosistemas ya citados: RSA y BBS. Y como ya ha quedado dicho, ambos criptosistemas deben su seguridad a la dificultad en factorizar enteros producto de primos de longitud grande. Hemos centrado todo el trabajo de optimización de código en la implementación de un algoritmo de factorización.

En el presente capítulo presentamos tres epígrafes:

1. El primero dedicado a algunas propiedades de las que gozan los primos en la aritmética modular. En especial nos centramos en la posibilidad de disponer de valores inversos. A la vista de esas propiedades, presentamos un primer y breve esbozo del criptosistema RSA.

2. El segundo presenta una breve introducción sobre la distribución de los números primos en el conjunto de los enteros y, después de recoger algunas nociones matemáticas necesarias, como el concepto de residuo cuadrático o la definición de los símbolos de LEGENDRE y JACOBI, mostramos algunos algoritmos, basados en la aritmética modular, que se emplean para determinar si un determinado entero es primo o no.

3. El tercer epígrafe muestra una descripción breve de diferentes algoritmos (los más conocidos e implementados) de factorización. También aquí mostramos otras características exigidas al criptosistema RSA.

Algunas propiedades criptográficas de los números primos 18

2.1. EXISTENCIA DE INVERSOS

Outline

Documento similar