Introdu
ion a la riptografa
Jose Angel de Bustos Perez Version 1;0
ii
Prefa io El origen de este do umento fue un trabajo que tuve que entregar para una asignatura sobre riptografa durante mis ultimos a~nos de arrera. Mi idea es la de ampliar y/o orregir este do umento, pero debido, fundamentalmente, a la falta de tiempo esa labor la ire realizando lentamente. Este do umento esta orientado a los fundamentos matemati os de la riptografa, esto lo orregire en posteriores versiones para ofre er un aspe to mas pra ti o sobre la riptografa. Si las demostra iones matemati as no te interesan mi onsejo es que te las saltes y uni amente te jes en los resultados que nos ofre en los teoremas matemati os. Cualquier sugeren ia, riti a y/o orre
ion sera bienvenida para la mejora y amplia ion de este do umento. Mi dire
ion de orreo ele troni o es jadebustosaug yl.org. Sientete libre de distribuir, siempre y uando sea de forma gratuita y altruista, este do umento. Queda expresamente prohibida la modi a ion o altera ion de este do umento sin la expresa autoriza ion del autor del mismo.
Jose Angel de Bustos Perez, Agosto 2;001.
iii
iv
PREFACIO
Indi e general
1
2
INDICE GENERAL
Indi e de guras
3
4
INDICE DE FIGURAS
Indi e de uadros
5
6
INDICE DE CUADROS
Parte I Introdu
ion a la Criptografa
7
Captulo 1 Introdu
ion Podemos onsiderar la riptografa omo una te ni a para proteger informa ion de tal forma que solo pueda ser a
edida por aquellas personas autorizadas para ello. La riptografa se utiliza, basi amente, en las transmisiones digitales de informa ion.
1.1. Utilidades de la Criptografa Mediante la riptografa podemos evitar que un do umento digital que ha sido transmitido por un anal, sin prote
ion alguna, sea modi ado inten ionadamente. 1. Podemos garantizar el origen de un do umento, es de ir, podemos veri ar que el do umento proviene de quien di e provenir. 2. Podemos garantizar la autenti idad del do umento, es de ir, que no ha sido modi ado por ninguna persona. 3. Podemos veri ar que el re eptor es el re eptor ade uado del do umento, es de ir, podemos evitar el entregar un do umento a un impostor. La riptografa nos ofre e seguridad en las omuni a iones digitales, siempre que se aplique de una forma orre ta.
9
10
CAPITULO 1. INTRODUCCION
1.2. Criptografa Clasi a La riptografa es una forma de o ultar informa ion, es de ir una manera de transmitir informa ion de forma on den ial. El hombre, desde los origenes de su existen ia, ha tenido la ne esidad de poder transmitir mensajes de una forma segura y on den ial. Podemos onsiderar las formas mas primitivas1 de lenguaje es rito omo te ni as riptogra as, ya que eran muy po os los apa itados para interpretar los smbolos utilizados. A pesar de esto era ne esario enmas arar los smbolos que formaban los mensajes ya que aunque haba po as personas
apa itadas para entender los mensajes no todas estaban autorizadas para ha erlo. Una de las primeras formas de enmas arar informa ion fue mediante una te ni a ono ida omo esteganografa, la ual onsistia en o ultar un mensaje se reto en otro mensaje inteligible. Por ejemplo: Ha er ori ios sobre los ara teres que omponan el mensaje se reto, por entre los uales se ha an pasar lamentos onstituyendo un trenzado que enmas araba el mensaje original. As pues, para leer di ho mensaje era ne esario desha er la mara~na. Algunos espas en la Segunda Guerra Mundial es riban mensajes se retos on tinta invisible en ima de otros mensajes en laro que enmas araban a los primeros. En la riptografa lasi a los mensajes se transmitan ifrados on una
lave se reta, de tal forma que el re eptor pudiera des ifrarlos utilizando la
lave se reta on la que el emisor los ifro. Este tipo de riptografa tambien re ibe el nombre de riptografa simetri a de lase se reta, puesto que emisor y re eptor deben poseer la misma lave, se reta, para ifrar y des ifrar los mensajes. Las laves se retas utilizadas en la riptografa lasi a deban ser transmitidas a traves de anales seguros, normalmente por orreos personales. Esto planteaba problemas: 1. Se deba disponer de orreos ables para el transporte de las laves. 2. En el aso de que el orreo no pudiera llegar hasta el re eptor, este quedaba in omuni ado. 1 Por
ejemplo las es rituras jerogl as del antiguo Egipto.
1.3. CRIPTOGRAFIA MODERNA
11
1.3. Criptografa Moderna El a~no 1;976 fue un a~no lave para la riptografa simetri a. En ese a~no un metodo de ifrado simetri o denominado DES 2 fue adoptado omo estandar para la riptografa simetri a de lave se reta en los Estados Unidos y posteriormente en todo el mundo. El metodo fue desarrolado por IBM y refrendado por la NSA3 y el NIST 4 . Este pro edimiento de ifrado es todava hoy uno de los mas utilizados, puesto que hasta el momento presente ha resistido todos los ataques ono idos y publi ados en el mundo a ademi o, si bien se ignora si su ede lo mismo on los ataques llevados a abo por las distintas agen ias de inteligen ia gubernamentales. Sin embargo, aun en este nuevo pro edimiento de ifrado, exista el problema del inter ambio y distribu ion de laves se retas entre los omuni antes, a tividades que deban llevarse a
abo a traves de anales seguros. Este problema fue resuelto en ese mismo a~no por W. DiÆe y M. E. Hellman 5 de la Universidad de Stanford en California mediante un proto olo riptogra o que permita distribuir laves se retas a traves de anales abiertos sin prote
ion. Este invento fue el primer on epto innovador y revolu ionario desde los tiempos de la riptografa lasi a. El pro edimiento de inter ambio de laves se retas de DiÆe y Hellman estaba basado en fun iones matemati as uyo al ulo dire to es fa il pero el inverso tiene tal omplejidad que o bien es imposible realizarlo on los
ono imientos y ordenadores a tuales o bien el tiempo ne esario para realizarlo es tal que, uando se logra des ifrar la informa ion on el ifrada di ha informa ion no tiene utilidad. Con el metodo de DiÆe y Hellman uni amente se podan inter ambiar, pero predijeron que si se pudiesen en ontrar fun iones de una sola dire
ion on trampa, el ono imiento de di ha trampa permitira el al ulo de la fun ion inversa on la misma fa ilidad, y por tanto sera posible no solo transmitir laves se retas a traves de anales abiertos, sino tambien realizar opera iones de ifrado y des ifrado de mensajes, as omo produ ir rmas digitales.
2 Data
En ryption Standard. Se urity Agen y. 4 Na ional Institute of Standards and Te hnology. 5 DiÆe, W., Hellman, M. E. \New Dire tions in Cryptograhpy", IEEE Transa tions on Information Theory, 1;976. IT-22, pp. 644-654. 3 National
12
CAPITULO 1. INTRODUCCION
En el a~no 1;977 R. Rivest, A. Shamir y L. Adleman del MIT 6 des ubrieron una de di has fun iones y rearon en elegante metodo de ifrado y rma digital denominado RSA7 . Esta aporta ion, junto on el proto olo de inter ambio de laves de DiÆe y Hellman fue el origen de la riptografa moderna o de lave publi a. En la riptografa de lave publi a ada individuo posee dos laves, una se reta y otra publi a, de forma que los ifrados realizados on una de las
laves se des ifran on la otra, siendo tanto el ifrado omo el des ifrado opera iones matemati as realizables en tiempo real. Las laves estan rela ionadas matemati amente de tal forma que el ono imiento de la lave publi a y la matemati a que sustenta su rela ion on la se reta no es su iente para el al ulo de esta ultima. Para su al ulo se ne esita ono er la \trampa", que es se reta. En el aso de no ono er la \trampa" el al ulo de la lave se reta es tan omplejo que no existe apa idad de al ulo su iente para realizarlo a tiempo de utilizar di ha informa ion
on bene io. La \trampa" en el RSA es el ono imiento de la fa toriza ion de un numero ompuesto. Los numeros que se utilizan son del orden de 300 dgitos,
uya fa toriza ion requiere ientos de miles de a~nos de CPU de superordenadores.
1.4. Ataques a la Seguridad Criptogra a Como la riptografa surgio para es onder informa ion a determinadas personas u organismos, luego siempre habra alguien interesado en obtener una informa ion ifrada. Por esta razon existen distintos metodos para obtener di ha informa ion, los dos tipos basi os son: Ataques pasivos. El intruso intenta obtener la informa ion sin modi arla. Este tipo de ataque no puede ser dete tado por los interesados, pero la riptografa ofre e prote
ion ontra este tipo de ataques, ya que evita que la informa ion optenida mediante la es u ha sea inutil al estar ifrada. 6 Massa husetts
Institute of Te hnology. R., Shamir, A., w,L. \A Method for Obtaining Digital Signatures and Publi Key Crytosystems" Communi ations of the ACM, 21 (1;978), pp. 120-126. 7 Rivest,
1.4. ATAQUES A LA SEGURIDAD CRIPTOGRAFICA
13
Ataques a tivos. El intruso intenta obtener la informa ion y modi arla a su onvenien ia. 1.4.1. Ataque a partir del ifrado
El ata ante solamente tiene a
eso al texto ifrado y a partir de el trata de en ontrar la lave se reta on la que se ifro di ho texto. Un metodo de ifrado que sea vulnerable a este tipo de ataque se onsidera absolutamente inseguro. La riptografa lasi a fue v tima de estos ataques mediante el analisis estadsti o de fre uen ias de los smbolos en los distintos idiomas. Los siguientes ataques son los mas ono idos: 1.4.2. Ataque a partir del texto en laro
El ata ante tiene a
eso a textos en laro y a sus orrespondientes ifrados, a traves de los uales se intenta averiguar la lave se reta. 1.4.3. Ataque a partir del texto en laro elegido
El ata ante tiene la posibilidad de elegir un texto en laro y obtener su
orrespondiente ifrado. 1.4.4. Ataque a partir de texto en laro ondi ionado
El ata ante puede elegir un texto en laro ondi ionado por los ifrados previamente inter eptados. 1.4.5. Ataque a partir de ifrado elegido
El ata ante elige un ifrado y obtiene el orrespondiente texto en laro, es de ir, el ata ante tiene a
eso al ifrador, pero no a la lave.
1.4.6. Ataque a partir de ifrado ondi ionado
Es igual que el anterior, pero on la diferen ia de que el ifrado elegido esta ondi ionado por los textos en laro previamente obtenidos.
14
CAPITULO 1. INTRODUCCION
1.4.7. Ataque on lave ono ida
En este ataque el oponente obtiene algunas laves utilizadas en ifrados previos e intenta determinar nuevas laves. 1.4.8. Reutiliza ion del proto olo
En este aso el oponente realiza el ataque registrando una de las omuni a iones, o parte de ella, e intenta utilizarla insertandola en una omuni a ion posterior. 1.4.9. Suplanta ion de personalidad
El ata ante asume la identidad de uno de los omuni antes registrados en la red digital de omuni a ion. 1.4.10. Compila ion de un di
ionario
Este ataque es tpi o de los sistemas que tienen un ontrol de a
eso. Cuando el usuario introdu e su lave de a
eso al sistema es transformada mediante una fun ion y omparada on las transformadas en la base de datos del ordenador. Si la fun ion de transforma ion es publi a y el ata ante tiene a
eso a la lnea de omuni a ion por la que se transmiten di has transformadas, enton es puede alma enarlas en un registro. En estas ondi iones, el ataque se lleva a abo generando laves de a
eso aleatorias y transformandolas hasta que alguna transformada oin ida on otra de las previamente inter eptadas. 1.4.11. Busqueda exhaustiva
Este ataque es similar al anterior y se lleva a abo generando aleatoriamente todos los valores posibles de las laves de a
eso y transformandolas. De esta forma se puede elegir la lave de a
eso uya transformada oin ida
on la inter eptada. 1.4.12. Ataque mediante intromision
El ata ante se introdu e en la lnea entre dos usuarios registrados, re ibiendo la informa ion de uno de ellos y enviandosela al otro despues de modi arla.
Captulo 2 Sistemas Criptogra os La idea basi a de la riptografa ha permane ido onstante a lo largo del tiempo, y basi amente es la siguiente: Codi ar un mensaje M en una adena nita de smbolos, donde
ada smbolo pertene e a un alfabeto nito denominado . De ni ion 2.1 (Codi ador)
Llamaremos odi ador a una apli a ion e tal que e(M ) = C , donde M es el mensaje a odi ar y C es el mensaje odi ado. Tambien es habitual que el
odi ador dependa de varios parametros, por ejemplo e(M; K ) = C donde K se denomina lave, C varia segun el valor de K .
De ni ion 2.2 (De odi ador)
Llamaremos de odi ador a una apli a ion d tal que d(C ) = M , donde C es un texto odi ado y M es el texto sin odi ar. Al igual que en el odi ador tambien es habitual utilizar una lave K , por ejemplo d(C; K ) = M .
El texto M se suele denominar texto plano y C se suele denominar ifrado. De ni ion 2.3 (Sistema riptogra o)
Llamaremos sistema riptogra o a la terna (M; K; C ) donde M y C son
adenas de alfabetos nitos 1 y 2 respe tivamente y K es un onjunto nito de laves on la hipotesis de que existan las fun iones e y d:
e:M K d:C K tales que d(e(M; K ); K ) = M .
15
!C !M
16
CAPITULO 2. SISTEMAS CRIPTOGRAFICOS
De ni ion 2.4 (Sistema riptogra o monoalfabeti o)
Un sistema riptogra o se di e monoalfabeti o si la odi a ion de ada smbolo es independiente del mensaje que se esta odi ando.
De ni ion 2.5 (Sistema riptogra o polialfabeti o)
Un sistema riptogra o se di e polialfabeti o si la odi a ion de algun smbolo depende del mensaje que se esta odi ando.
El primer requisito para que un sistema riptogra o sea \seguro" es que sea polialfabeti o.
2.1. Algunos Sistemas Criptogra os Veamos algunos de los sistemas riptogra os mas simples: 2.1.1. Simple sustitu ion
Sea el onjunto de los simbolos del lenguaje, por ejemplo el abe edario. Tomemos omo una permuta ion de , es de ir una apli a ion biye tiva: : ! obviamente 6= Id. Cifrar on este metodo sera sustituir ada palabra del mensaje por su imagen en la permuta ion . Este sistema es monoalfabeti o y es extremadamente vulnerable a ataques por analsis de fre uen ias. Este sistema tiene el in onveniente de que si a lo largo del mensaje M se repite, por ejemplo, la adena el varias ve es y (l) = r y (e) = g enton es en el ifrado C se repetira el mismo numero de ve es la adena rg, lo ual nos da un patron de omportamiento del algoritmo de ifrado. 2.1.2. Transposi ion de orden d
Dado un entero positivo d dividimos el mensaje M en bloques de longitud d. Enton es tomanos una permuta ion de f1; 2; : : : ; dg y apli amos a ada bloque. Por ejemplo para d = 5 y la siguiente permuta ion: 1 2 3 4 5 = 4 1 3 2 5
2.1. ALGUNOS SISTEMAS CRIPTOGRAFICOS
17
si tomamos el mensaje M = Un urso de riptografa: para odi arlo hemos de dividir el mensaje en bloques de longitud 5: M = Un ujrso dje rijptogrjafa: y en ada bloque apli amos la permuta ion , luego: C = U nuj rosdjre ijgpotrjaaf: = U nu rosdre igpotraaf: Para de odi ar el mensaje uni amente tendremos que dividir C en bloques de longitud 5 y apli ar a ada bloque la permuta ion inversa 1: 1 2 3 4 5 1 = 2 4 3 1 5 Como C = U nuj rosdjre ijgpotrjaaf: enton es: M = Un ujrso dje rijptogrjafa: = Un urso de riptografa: Este metodo onserva la fre uen ia de distribu ion de los smbolos, pero destruye los patrones de repeti ion que onservaba el metodo de simple sustitu ion. 2.1.3. Vigenere
En este sistema la lave onsiste en una serie de d letras. Se asignan numeros a las letras del abe edario, A = 0,...,Z = 25. Se situa debajo del mensaje el onjunto de d letras de forma repetida y se suman, olvidando los espa ios en blan o, modulo 26. A = 0; B = 1; C = 2; D = 3; E = 4; F = 5; G = 6; H = 7; I = 8 J = 9; K = 10; L = 11; M = 12; N = 13; N~ = 14; O = 15; P = 16; Q = 17 R = 18; S = 19; T = 20; U = 21; V = 22; X = 23; Y = 24; Z = 25 Para el aso d = 3 y la se uen ia AF G la lave sera: K = AFGAFGAFGAFGAFGAFGAFG Luego para ifrar el mensaje: M = UNCURSODECRIPTOGRAFIA K = AFGAFGAFGAFGAFGAFGAFG C = URIUXZUIKCXN~ PZUGXGFNG
18
CAPITULO 2. SISTEMAS CRIPTOGRAFICOS
2.1.4. El ifrador de Cesar
Este sistema de ifrado lo utilizaba Julio Cesar para enviar mensajes se retos. Es un sistema muy sen illo. 1. Asignamos a ada letra un numero entre 0 y 25: A = 0 B = 1 C = 2 : : : Z = 25
2. A ada letra del mensaje le sumamos 3 mod 26. Para des ifrar el mensaje lo uni o que hay que ha er es restar 3 a ada letra del mensaje ifrado.
2.2. Sistemas de Cifrado A la hora de ifrar un mensaje se puede ha er de dos formas: Cifrando smbolo a smbolo. Cifrando por bloques de smbolos. 2.2.1. Cifrado en ujo
En este tipo de ifrado el mensaje se ifra smbolo a smbolo. Por ejemplo el ifrado por simple sustitu ion1 es un ifrado en ujo, ya que permuta ada smbolo, empezando por el primero y terminando por el ultimo, de uno en uno. 2.2.2. Cifrado en bloque
En este tipo de ifrado se divide el mensaje en bloques de una determinada longitud d y se va ifrando bloque a bloque. Por ejemplo el ifrado por una transposi ion de orden d, en la pagina ??, es un ifrado en bloque, ya que divide el mensaje en bloques y ifra bloque a bloque. 1 Apartado
?? en la pagina ??.
2.3. TRANSFORMACIONES LINEALES
19
2.3. Transforma iones Lineales La idea basi a es dividir el mensaje en bloques de longitud d e identi ar
ada bloque on un ve tor x de enteros on dimension d y multipli ar di ho ve tor por una matriz no singular2 U . Este tipo de ifrado es un ifrado en bloque. El ifrado se llevara a abo de la siguiente manera: U x = y donde y es el texto ifrado. Para des ifrar el mensaje y habra que multipli arlo por U 1 , existe al ser U una matriz no singular: U 1y =x Para asegurarnos que todas las opera iones aritmeti as se realizan sobre un uerpo haremos los al ulos modulo un numero primo. Es de ir, si ha emos los al ulos modulo el numero primo p, signi a que estaremos trabajando en el uerpo nito de p elementos F q . Normalmente onsideraremos dos alfabetos: Un alfabeto de 29 smbolos3 donde: Las letras A-Z estan representadas por los enteros omprendidos entre 0 y 25, ambos in lusive. El espa io en blan o esta representado por 26. La oma esta representada por 27. El punto y nal esta representado por 28. Un alfabeto alfa-numeri o de 37 smbolos4 donde: Los enteros 0-9 estan representados por ellos mismos. El espa io en blan o esta representado por 10. Las letras A-Z estan representadas por los enteros omprendidos entre 11 y 36, ambos in lusive. 2 No
singular en el uerpo en el que estemos trabajando, el ual sera un uerpo nito. la pagina ??. 4 En la p agina ??. 3 En
20
CAPITULO 2. SISTEMAS CRIPTOGRAFICOS
Ejemplo 2.1
Utilizando el alfabeto de 37 letras y on una longitud de bloque d = 3 queremos
ifrar el mensaje \PRUEBA" utilizando omo lave la matriz: 0
5 0 3 1 U = 11 7 8 A 4 23 36 El mensaje sera:
M
= PRUEBA = 27 29 32 15 12 11
Luego para odi arlo: 0
5 0 3 1 0 27 15 1 0 231 108 1 0 9 34 1 11 7 8 A 29 12 A = 756 337 A 16 4 A mod 37 4 23 36 32 11 1927 732 3 29 de donde tenemos que el mensaje ifrado sera:
C = 9 16 3 34 4 29 = 9F3X4R Para des ifrar el mensaje tendremos que utilizar U 1 , es de ir la inversa de U . Como en este aso estamos utilizando un alfabeto de 37 smbolos su inversa, en F 37 , sera: 0 1
U 1=
32 2 1 5 29 25 A 21 9 23
El mensaje des ifrado:
32 2 1 1 0 9 34 1 0 323 1125 1 0 27 15 1 5 29 25 A 16 4 A = 584 1011 A 29 12 A mod 37 21 9 23 3 29 402 1417 32 11 C = 27 29 32 15 12 11 = PRUEBA 0
Observa ion: 2.3.1
En el ejemplo anterior hemos utilizado la matriz: 0
5 0 3 1 U = 11 7 8 A 4 23 36
21
2.3. TRANSFORMACIONES LINEALES
uyos oe ientes estan en F 37 , ya que estamos utilizando un alfabeto de smbolos. Su inversa en los numeros reales, R , es: 0 B B B B B
68 1015 52 145 45 203
69 1015 24 145 23 203
3 145 1 145 1 29
37
1 C C C C C A
Para al ular esta matriz en F 37 tendremos que al ular los oe ientes en di ho uerpo:
68 52 45 1015 29
31 22 8 16 29
mod mod mod mod mod
37 37 37 37 37
69 24 23 145
32 24 14 34
Cal ulemos los inversos en F 37 :
1015 1 7 203 1 35
en en
F 37 F 37
mod mod mod mod
37 3 37 1 37 1 37 203
145 1 12 29 1 23
34 36 1 18
en en
F 37 F 37
Los oe ientes de U 1 en F 37 son:
68 1015 69 1015 3 145 52 145 24 145 1 145 45 203 23 203 1 29
31 7 en F 37 = 217 32 mod 37 32 7 en F 37 = 224 2 mod 37 34 12 en F 37 = 408 1 mod 37 22 12 en F 37 = 264 5 mod 37 24 12 en F 37 = 288 29 mod 37 36 12 en F 37 = 432 25 mod 37 8 35 en F 37 = 280 21 mod 37 14 35 en F 37 = 490 9 mod 37 1 23 en F 37 = 23 23 mod 37
mod mod mod mod
37 37 37 37
22
CAPITULO 2. SISTEMAS CRIPTOGRAFICOS
Luego la matriz inversa de U , U 1 , en F 37 es: 0 1 32 2 1 U 1 = 5 29 25 A 21 9 23
2.4. Transforma iones A nes Este tipo de transforma ion es muy similar a la anterior, razon por la
ual no la expli aremos on mu ho detalle. Se trata de dividir el mensaje en bloque y ifrarlo on una apli a ion del tipo: T (u) = A u + B donde A es una matriz, de orden m m, invertible en Z=n, n es la antidad de smbolos que tiene nuestro alfabeto, y B un ve tor de longitud m. En este aso ifraremos el mensaje en bloques de m letras. Sean fuig el mensaje dividido en bloques de m letras, enton es para en riptar el mensaje haremos: T (ui ) = A ui + B = i donde i es el el bloque ui en riptado. Para desen riptar i bastara on despejar ui de la e ua ion anterior: ui = A 1 ( i B ) = A 1 i A 1 B Podemos despejar ya que A es invertible en Z=n.
Captulo 3 Complejidad Computa ional Para ifrar mensajes ne esitamos la existen ia de una fun ion e(M; K) la
ual ifrara el mensaje M utilizando la lave K, e(M; K) = C . Una vez ifrado el mensaje M es ne esaria una fun ion d(C; K) la ual des ifrara el mensaje
ifrado C on la lave K, d(C; K) = M . La existen ia de la fun ion inversa de la fun ion e, es de ir la fun ion d, impli a que ualquiera que onoz a di ha fun ion pueda des ifrar los mensajes ifrados. Para que un sistema riptogra o sea seguro sera ne esario que el al ulo de la fun ion d sea di il, es de ir, que tenga un alto oste omputa ional. Cuanto mas di il sea evaluar la fun ion d mas seguro sera el sistema riptogra o ya que requerira una antidad mayor de tiempo el des ifrar un mensaje ifrado. Es logi o pensar que s evaluar d requiere de un alto oste omputa ional no solo sera un impedimento para aquellas personas ajenas al emisor y re eptor del mensaje, sino que tambien lo sera para el re eptor del mensaje, y en prin ipio as es. Este problema lo trataremos mas adelante.
23
24
CAPITULO 3. COMPLEJIDAD COMPUTACIONAL
3.1. Como al ular el Coste Computa ional Podemos de nir el oste omputa ional omo el tiempo que se ne esita para realizar alguna tarea en un ordenador. Obviamente este tiempo dependera del ordenador que estemos utilizando y de las opera iones que ne esita ha er el ordenador para realizar la tarea. Obviamente en un ordenador no se tarda el mismo tiempo en sumar dos enteros que en multipli arlos, dividirlos o realizar una exponen ia ion. El oste omputa ional no solo depende del numero de opera iones a realizar, sino que ademas depende el tiempo ne esario para realizar ada una de ellas. Entenderemos por oste omputa ional: A una fun ion que depende del tama~no de la entrada, habitualmente denotada omo n. Para un tama~no dado n entenderemos por oste omputa ional el peor de todos los asos posibles. 3.1.1. Opera iones a nivel de \bits"
Cualquier numero on el que opere un ordenador estara en formato binario, es de ir expresado en base dos. Por lo tanto para al ular el oste
omputa ional de una opera ion al ularemos el numero de opera iones que son ne esarias, a nivel de \bits", para resolverla. \Bit" es la abreviatura, en ingles, de \binary digit". Sea n 2 Z un numero, enton es su expresion en binario sera: ar ar 1 : : : a1 a0 =
r X i=0
ai 2i = n
donde los ai 2 f0; 1g
los ai son los bits de n expresado en binario. Tenemos que: h log n i r = [log2 n℄ + 1 = log2 + 1 donde [log2 n℄ es el menor entero mayor que log2 n.
3.1. COMO CALCULAR EL COSTE COMPUTACIONAL
25
Supongamos que tenemos dos numeros a; b 2 Z y que ambos numeros tienen k bits de longitud1. Sean sus expresiones en binario las siguientes: a = ak ak 1 : : : a1 a0 b = bk bk 1 : : : b1 b0 vamos a determinar el numero de opera iones ne esarias para sumar ambos numeros, para ello veamos un ejemplo de la suma de dos numeros, en binario: 1 1 0 1 + 1 0 0 1 1 0 1 1 0 Figura 3.1: Suma de dos numeros en binario. Luego para sumar dos numeros de k bits ne esitaremos realizar 2 k opera iones. De igual forma se puede ver que multipli ar dos entereros de m y n bits ne esita m n opera iones. Ejemplo 3.1 (Numero de opera iones para al ular n!)
Sea n un numero entero uya expresion en binario requiere k bits, a lo sumo. Como el numero de bits del produ to de dos enteros es menor o igual que la suma de las longitudes de di hos enteros tendremos enton es que el numero de bits de n! sera menor o igual que k n. De la de ni ion de n! se tiene que:
n! = n (n
1) : : : 2
2 produ tos para al ular n!. El pro edimiento para al ular n! sera multipli ar j ! por j + 1, donde j = 2; : : : ; n 1. luego sera ne esario realizar n
1 En el aso de
no tener la misma longitud bastara on rellenar on eros, por la izquierda el mas peque~no de ellos.
26
CAPITULO 3. COMPLEJIDAD COMPUTACIONAL
Como 2 j n 1 tendremos que j tendra k bits a lo sumo, mientras que j ! tendra n k bits a lo sumo. Como multipli ar un numero de k bits por otro de n k bits requiere n k2 opera iones tendremos que el al ulo de j ! (j +1) requiere n k2 opera iones, y dado que para al ular n! ne esitamos ha er n 2 multipli a iones del tipo j ! (j + 1) tendremos que el numero de opera iones sera: (n 2) n k2 Como n tiene k bits tendremos que: k = [log2 n℄ + 1 Luego el numero de opera iones ne esarias para al ular n! sera: (n 2) n ([log2 n℄ + 1)2 (3.1) Podemos suponer que el numero de opera iones es propor ional a n2 [log 2n℄2 ya que si desarrollamos (??) vemos que el termino que mas aporta a la suma, a medida que re e n, es: n2 [log 2n℄2 diremos enton es que el numero de opera iones es del orden de n2 [log 2n℄2 y lo denotaremos omo: O(n2 [log2n℄2 )
3.2. Tiempo Polinomial Sea A un algoritmo. Diremos que tiene una omplejidad de tipo polinomial si existe algun polinomio p(x) tal que: tA (n) p(n) donde tA (n) denota el maximo tiempo que ne esita el algoritmo A sobre todas las entradas de tama~no n. Diremos que un problema se puede resolver en tiempo polinomial si existe algun algoritmo que lo resuelve y di ho algoritmo tiene una omplejidad de tipo polinomial, en este aso diremos que es un problema de lase P . Esta de ni ion de tiempo polinomial no es muy rigurosa, daremos una de ni ion mas rigurosa utilizando maquinas de Turing.
3.2. TIEMPO POLINOMIAL
27
3.2.1. Maquinas de Turing y el problema P
Utilizando las maquinas de Turing podemos dar una de ni ion mas rigurosa del problema P que la que hemos dado anteriormente. Sea un alfabeto y denotemos por al onjunto de todas las adenas nitas sobre el alfabeto . Sea M una maquina de Turing que para sea ual sea el elemento x 2 que utilizemos omo entrada de di ha maquina. Enton es el oste omputa ional de M vendra dado por la fun ion: + + tM : Z ! Z de nida de la siguiente manera: tM (n) = max t on x 2 jxj=n donde t es el tiempo que tarda M en parar utilizando omo entrada x, adena nita de longitud n. Diremos que una fun ion f tiene una omplejidad de tipo polinomial s f es omputable Turing2 y existe algun polinomio p(x) tal que tM (n) p(n) para todo n. 3.2.2. Problemas de tipo P
Todos aquellos problemas de tipo P son realizables, por un ordenador, en tiempo \razonable". Con esto queremos de ir que utilizando toda la poten ia omputa ional disponible en el momento se puede realizar el algoritmo, aunque el tiempo que nos lleve para ello sea de varios meses o a~nos. Si el algoritmo para des ifrar una lave riptogra a es de tiempo polinomial, es un problema de tipo P, di ho sistema no sera seguro ya que es posible romperlo en un tiempo determinado. Consideraremos que un sistema riptogra o es \seguro" si el algoritmo para romper di ho sistema es un algoritmo de tiempo exponen ial, es de ir, el tiempo ne esario para romperlo aumenta de forma exponen ial. 2 Existe
una maquina de Turing, M , que realiza f .
28
CAPITULO 3. COMPLEJIDAD COMPUTACIONAL
Parte II Criptografa Clasi a
29
Captulo 4 Algoritmos Simetri os Los algoritmos simetri os son algoritmos de ifrado en los que tanto el emisor omo el re eptor han de ono er las laves para ifrar y des ifrar, es de ir, tanto emisor omo re eptor utilizan la misma lave para ifrar y des ifrar. Este metodo posee una desventaja, y es que se deben transmitir las
laves por un anal seguro, algo muy di il de asegurar. Los algoritmos que hemos visto hasta aqui son todos algoritmos simetri os.
4.1. Sistemas de En ripta ion on Estru tura de Grupo Una osa a tener en uenta en los sistemas de en ripta ion es si poseen o no estru tura de grupo. De ni ion 4.1 (Estru tura de grupo para sistemas de En ripta ion) Se di e que un sistema de en ripta ion posee estru tura de grupo si se umple que: 8 K1 ; K2 9 K3 tal que EK2 (EK1 (M )) = EK3 (M )
es de ir, si ha emos dos ifrados en adenados on las laves K1 y K2 , existe una lave K3 que realiza la misma transforma ion.
Es interesante que un algoritmo riptogra o, sea simetri o o no, no posea estru tura de grupo, ya que si iframos un mensaje on una lave K1 y luego
iframos el resultado on otra lave K2, es omo si hubieramos empleado una lave de longitud doble, aumentando la seguridad del sistema. Si por el
ontrario el sistema riptogra o posee estru tura de grupo y realizamos el mismo pro eso no hubieramos adelantado nada, ya que omo posee estru tura 31
32
CAPITULO 4. ALGORITMOS SIMETRICOS
de grupo lo que hemos he ho es equivalente a ifrar el mensaje on una ierta
lave K3, una sola vez.
4.2. El Algoritmo DES El algoritmo DES es al algoritmo simetri o mas utilizado, su nombre proviene de \Data En ryption Standard". Este algoritmo fue presentado por IBM en el a~no 1;975 y fue adoptado omo estandar federal en los Estados Unidos a prin ipios de 1;977.
4.3. Des rip ion del DES Este sistema ifra bloques de 64 bits on una lave de 64 bits, donde hay 8 bits de paridad, el ultimo bit de ada byte es de paridad, on lo ual al
lave es una lave de 56 bits. Dado que la lave es de 56 bits tendremos que existen 256 posibles laves para este algoritmo. De la lave ini ial K se extraen 16 sub laves Ki, de 48 bits ada una. Tenemos 16 \dispositivos", a los que llamaremos SBB1, los uales requieren
omo entrada un bloque de 64 bits y una sub lave Ki de 48 bits, para produ ir omo salida un bloque de 64 bits. El algoritmo es el siguiente: 1. Se apli a una permuta ion ini ial, IP, a ada bloque de 64 bits. Esto produ e una salida Bj , donde Bj es el transformado del j -esimo bloque de 64 bits por IP, de 64 bits. 2. Pasamos Bj por el primer SBB, la salida la pasamos por el segundo SBB y asi su esivamente on los 16 SBB. La lave que utiliza el i-esimo SBB es la sub lave Ki. 3. A la salida del ultimo SBB le apli amos la permuta ion IP 1. Con lo
ual obtenemos el texto ifrado. 1 Standard
Building Blo k, onstru tor estandar de bloques.
33
CON DES 4.4. ENCRIPTACION
4.4. En ripta ion on DES El SBB es un \dispositivo" que toma omo entrada dos bloques, uno de ellos de 64 bits y el otro de 48 bits. Sea B = (b63 ; : : : ; b0 ) el primer bloque y B 0 = (b063 ; : : : ; b00 ) la salida produ ida por el SBB. Vamos a utilizar la siguiente nota ion: L = (b63 ; : : : ; b32 ) R = (b31 ; : : : ; b0 ) L0 = (b063 ; : : : ; b032 ) R0 = (b031 ; : : : ; b00 ) 4.4.1. Pro edimiento para obtener L
0
El pro edimiento para obtener L0 es muy sen illo basta on tomar L0 = R.
4.4.2. Pro edimiento para obtener R
0
El pro edimiento para obtener R0 es algo mas ompli ado: R0 = L + f (Ki ; R) donde la \suma" es en F 2 . La fun ion f (ki; R) se de ne de la siguiente manera: 1. Se apli a una permuta ion de expansion, a la que llamaremos E , al bloque de 32 bits R para transformarlo en un bloque de 48 bits. Denotemos a esta opera ion omo E (R) 2. A ontinua ion sumamos en binario E (R) on la sub lave Ki: E (R) + Ki 3. Apli amos la permuta ion P , la ual transforma un bloque de 48 bits en otro de 32 a la suma anterior: P (E (R) + Ki ) 4. Sumamos, en binario, este resultado on R: R + P (E (R) + Ki )
34
CAPITULO 4. ALGORITMOS SIMETRICOS
Luego tendremos que: f (Ki ; R) = R + P (E (R) + Ki )
de donde:
R0 = L + f (Ki; R) = L + [R + P (E (R) + Ki )℄ En las guras ?? y ?? podemos ver un esquema del dispositivo SBB y del
fun ionamiento del DES.
K
i
L0
L 32 bits
R
E
32 bits
48 bits 48 bits
32 bits
S
P
R0
32 bits
Figura 4.1: Dispositivo SBB. K1
64 bits
IP
32 bits 32 bits
K16
K2
32 bits SBB 32 bits
SBB
32 bits 32 bits
SBB
Figura 4.2: En ripta ion on DES.
IP
1
64 bits
CON DES 4.5. DESENCRIPTACION
35
4.5. Desen ripta ion on DES Una vez tenemos un mensaje en riptado on DES el pro edimiento para des ifrarlo se realiza on el mismo algoritmo de en ripta ion, pero usando las llaves en orden inverso. Supongamos que hemos en riptado un bloque de 64 bits on DES. Denotemos por: L = (b63 ; : : : ; b32 ) R = (b31 ; : : : ; b0 ) las partes izquierda y dere ha del bloque antes de la en ripta ion, y por: L0 = (b063 ; : : : ; b032 ) R0 = (b031 ; : : : ; b00 ) las partes izquierda y dere ha del bloque en riptado. Por el pro edimiento de en ripta ion sabemos que: L0 = R R0 = L + f (K; R) despejando R y L, que son las partes que forman el mensaje original, tenemos que: R = L0 L = R0 f (K; R) = R0 f (K; L0 )
on lo que obtenemos los bloques del mensaje original.
4.6. Debilidad de las laves en el DES Este algoritmo presenta algunas laves debiles. En general todos aquellos valores de la llave que ondu en a una se uen ia inade uada de las sub laves Ki seran po o re omendables. Podemos distinguir los siguientes asos: Claves debiles Son aquellas laves K que generan un onjunto de die iseis sub laves Ki iguales entre si y que veri an: EK (EK (M )) = M es de ir, en riptando un mensaje dos ve es on la misma lave obtenemos el mensaje original. El pro edimiento de en ripta ion, on esta
lave, es una involu ion.
36
CAPITULO 4. ALGORITMOS SIMETRICOS
Son aquellas laves K que generan dos posibles valores para las die iseis sub laves Ki, repitiendose o ho ve es ada posible valor. El numero de laves de este tipo es tan peque~no, en ompara ion on el numero total de laves para el DES, que este problema no debera suponer motivo de preo upa ion. Claves semidebiles
4.7. VARIANTES DEL DES
37
4.7. Variantes del DES A mediados de Julio de 1;998, una empresa sin animo de lu ro, llamada EFF2, logro onstruir una maquina apaz de desen riptar un mensaje en riptado on DES en menos de tres das. Curiosamente, po as semanas antes, un alto argo de la NSA haba de larado que di ho algoritmo segua siendo seguro, y que des ifrar un mensaje resultaba aun ex esivamente ostoso, in luso para organiza iones gubernamentales. DES-Cra ker osto menos de 40 millones de pesetas. A pesar de este he ho, DES sigue siendo ampliamente utilizado en multitud de apli a iones, omo por ejemplo en las transa
iones de los ajeros automati os. De todas formas, el problema real de DES no radi a en su dise~no, sino en que emplea una lave demasiado orta, 56 bits, lo ual ha e que on el avan e a tual de los ordenadores los ataques por fuerza bruta omien en a ser las op iones mas realistas. Mu ha gente se resiste a abandonar este algoritmo, pre isamente porque ha sido apaz de sobrevivir durante veinte a~nos sin mostrar ninguna debilidad en su dise~no, y pre eren proponer variantes que, de un lado evitaran el riesgo de tener que on ar en algoritmos nuevos, y de otro permitiran aprove har gran parte de las implementa iones por hardware existentes de DES. Algunas de las variantes del DES mas utilizadas son las siguientes: 4.7.1. DES Multiple
Consiste en apli ar varias ve es el algoritmo DES, on diferentes laves, al mensaje original. Se puede ha er ya que DES no presenta estru tura de grupo3. El mas utilizado es el llamado Triple-DES: C = EK1 (DK2 (EK1 (M ))) El pro edimiento es el siguiente: 1. En riptamos on la lave K1 . 2. Desen riptamos on la lave K2. 3. Volvemos a en riptar on la lave K1. La lave resultante es la on atena ion de las laves K1 y K2, on una longitud total de 112 bits. 2 Ele troni 3 Apartado
Frontier Foundation. ?? en la pagina ??.
38
CAPITULO 4. ALGORITMOS SIMETRICOS
4.7.2. DES on Sub laves Independientes
Consiste en emplear sub laves diferentes para ada una de las die iseis rondas de DES. Puesto que estas sub laves son de 48 bits, la lave resultante tendra 768 bits en total. Empleando una te ni a ono ida omo \ riptoanalisis diferen ial" esta variante poda ser rota on 261 textos planos es ogidos, por lo que en la pra ti a no presenta un avan e sustan ial sobre el DES estandar. 4.7.3. DES Generalizado
Esta variante emplea n trozos de 32 bits en ada ronda en lugar de dos, por lo que aumentamos tanto la longitud de la lave omo el tama~no de mensaje que se puede odi ar, manteniendo sin embargo el orden de omplejidad del algoritmo. Se ha demostrado sin embargo que no solo se gana po o en seguridad, sino que en mu hos asos in luso se pierde.
Parte III Breve introdu
ion a la Teora de Numeros
39
Captulo 5 Los Numeros Primos La riptografa moderna se apoya en los numeros primos. De ni ion 5.1 (Numeros primos) Sea a 2 Z diremos que es un numero primo uando no pueda ser dividido, de forma entera, por ningun otro numero entero salvo por el mismo o por la unidad.
Dados dos numeros ualesquiera diremos que son primos entre s uando su M.C.D. sea la unidad.
5.1. In nitud de los Numeros Primos Las laves para el ifrado mediante metodos riptogra os se basan en la fa toriza ion de numeros primos. S la antidad de numeros primos fuera nita podra suponer un problema a la hora de elegir laves \seguras". La
antidad de numeros primos es in nita, es de ir, dado un numero primo
ualquiera siempre existira otro numero primo mayor que el, luego siempre existiran in nitos numeros primos mayores que uno dado.
41
42
CAPITULO 5. LOS NUMEROS PRIMOS
Teorema 5.1 (Eu lides)
Hay in nitos numeros primos.
Demostra ion:
Supongamos que existe un numero nito de numeros primos:
(5.1) Consideremos el numero natural m = (p1 p2 : : : pn) + 1. Por el teorema ?? admitira una des omposi ion en numeros primos, luego sera multiplo de, al menos, un numero primo. Este numero primo sera distinto a ualquiera de los numeros primos de (??) ya que al dividir m por pi para i = 1; : : : ; n el resto es uno. Luego existe, al menos, un numero primo que no esta en (??). Si a~nadimos este numero primo a la lista de numeros primos y repetimos el pro eso volveremos a en ontrar otro numero primo que no habiamos onsiderado. Podemos repetir este pro eso de forma in nita y siempre en ontrariamos un numero primo que no hubieramos onsiderado, lo que demuestra la in nitud de los numeros primos. La demostra ion anterior esta in luida en \Los Elementos " de \Eu lides " y
omo se puede apre iar es una demostra ion simple e ingeniosa. p1 ; p2 ; : : : ; pn
5.2. Distribu ion de los Numeros Primos Hemos visto en la se
ion anterior que existen in nitos numeros primos, pero la forma en la que se distribuyen entre los numeros enteros es un misterio. Un numero es primo uando no es divisible por ningun numero, ex epto por el y la unidad. Cuanto mayor es un numero mas ondi iones tiene que veri ar para ser primo, ya que no puede ser divisible por una mayor antidad de numeros. Para poder omprender la di ultad de estable er una regla en la distribu ion de los numeros primos veremos que dado un numero natural ualquiera, n 2 N , siempre podremos en ontrar n numeros onse utivos no primos. Fijemos un numero ualquiera n 2 N y a ontinua ion onsideremos todos los numeros enteros omprendidos entre (n + 1)! + 2 y (n + 1)! + (n + 1),
DE LOS NUMEROS 5.2. DISTRIBUCION PRIMOS
43
todos estos numeros son ompuestos, es de ir, ninguno de ellos es primo. Cualquiera de estos numeros es de la forma (n +1)!+ i, donde 2 i n +1. Tendremos enton es que: (n + 1)! + i = (n + 1) n (n 1) : : : 3 2 1 + i y omo 0 i n +1 tendremos que i divide a los dos sumandos de (n +1)!+ i y omo i es distinto de 1 y de (n + 1)! + i tendremos que (n + 1)! + i no es un numero primo. Con este metodo podremos en ontrar tantos numeros ompuestos onse utivos omo queramos, por ejemplo, sabemos que los 100;000;000 de numeros enteros omprendidos entre 100;000;001!+2 y 100;000;001!+100;000;001 son
ompuestos. Esto indu e a pensar que despues de 100;000;001! + 100;000;001 no existen numeros primos, pero omo hemos visto en el apartado anterior existen in nitos numeros primos, luego despues de di ho numero podemos en ontrar numeros primos. La busqueda de numeros primos grandes, en la que se basa la riptografa de lave publi a, es un problema de di il solu ion, en lo que a oste omputa ional se re ere, por eso en la pra ti a se utilizan algoritmos probabilsti os para la busqueda de numeros primos. Este tipo de algoritmos no nos aseguran la primalidad de un determinado numero, uni amente nos aseguran que un determinado numero es primo on una probabilidad muy alta1. El siguiente teorema nos da una idea de omo estan distribuidos los numeros primos. Teorema 5.2 (Teorema de los numeros primos) Sea la fun ion (x) = numeros primos menores o iguales que x. Tenemos que:
uando x ! 1.
1 Aunque
(x) '
x ln x
la probabilidad es alta existe la posibilidad de que di ho numero no sea primo.
44
CAPITULO 5. LOS NUMEROS PRIMOS
5.3. Fa toriza ion de Numeros Enteros Proposi ion 5.1 Fijados b; 2 Z existen x0 ; y0 2 Z tales que:
M:C:D (b; ) = (b; ) = b x0 + y0 Demostra ion:
Consideremos el menor entero positivo, l, del siguiente onjunto: C = f b x + y on x; y 2 Z g luego l sera de la forma l = b x0 + y0. Si l no divide a b enton es existiran q; r tales que: b = l q + r on 0 < r < l por el algoritmo de Eu lides para la division entera. Luego: r = b q l = b q (b x0 + y0 ) = b (1 q x0 ) + ( q y0 ) de donde se dedu e que r 2 C y omo r es positivo y menor que l llegamos a ontradi
ion, ya que l es el menor entero positivo de C , luego l divide a b. Por el mismo motivo tendremos que l divide a . Luego l dividira a (b; ). Por de ni ion de M.C.D. tendremos que (b; ) divide a b y a , luego en parti ular dividira a b x0 + y0, lo que demuestra: l = b x0 + y0 = (b; )
DE NUMEROS 5.3. FACTORIZACION ENTEROS
45
Lema 5.1 (Lema de Eu lides)
Si un numero primo divide a un produ to de numeros enteros, enton es divide a algun fa tor.
Demostra ion: Sea p 2 N un numero primo tal que divide, de forma entera, a a n1 : : : ns,
on a; n1; : : : ; ns 2 N . Como n1 : : : ns 2 N llamando b = n1 : : : ns tendremos que p divide a a b, on lo ual redu imos el lema al aso en que un numero
primo divide al produ to de dos enteros. Si p no divide a a enton es (p; a) = 1 y por la proposi ion ?? tendremos que existen x0 ; y0 2 Z tales que: 1 = p x0 + a y0 multipli ando por b en esta igualdad tendremos: b = (b p) x0 + (b a) y0 p divide a (b p) x0 , y p tambien divide a (b a) y0 ya que por hipotesis: ab=pn n2Z luego p divide a b ya que divide a los dos sumandos en los que des ompone b.
46
CAPITULO 5. LOS NUMEROS PRIMOS
Teorema 5.3 (Teorema fundamental de la Aritmeti a)
Todo numero natural mayor que la unidad es produ to de numeros primos. Esta des omposi ion es uni a salvo el orden de los fa tores.
Demostra ion: La demostra ion la haremos por indu
ion. Para n = 2 el teorema es ierto. Supongamos ahora el teorema ierto hasta m y veamos que, en efe to, el teorema se veri a para m + 1. En el aso de que m + 1 sea un numero primo hemos terminado. Supongamos que m + 1 no es un numero primo, en ese aso m + 1 tendra dos divisores, al menos, distintos de 1 y m + 1. m + 1 = a1 a2 1 < a1 ; a2 < m + 1 a1 ; a2 2 N Por hipotesis de indu
ion tendremos que a1 y a2 des omponen en produ to de numeros primos por ser menores que m + 1: a1 = pn1 1 : : : pnr a2 = q1l1 : : : qsl
on fp1; : : : ; pr ; q1 ; : : : ; qsg numeros primos y fn1 ; : : : ; nr ; l1 ; ; lsg 2 N . Luego tendremos: m + 1 = a1 a2 = pn1 1 : : : pnr q1l1 : : : qsl es de ir m + 1 des ompone en produ to de numeros primos. Supongamos que un numero admite dos des omposi iones, distintas, en produ to de numeros primos: n = pn1 1 : : : pnr n = q1m1 : : : qsm reordenando si hi iera falta podemos suponer que p1 < p2 < : : : < pr y que q1 < q2 < : : : < qs , en estos asos diremos que la des omposi ion es normal. Tendremos que pi divide a q1l1 : : : qsl y por el Lema de Eu lides pi divide a alguno de los qj , pero omo los qj son primos enton es pi ha de ser uno de los qj . De la misma forma ada qj es uno de los pi. Luego r = s y omo las des omposi iones son normales enton es tendremos que pi = qi para todo i. Luego tenemos que: n = pn1 1 : : : pnr n = pm1 1 : : : pmr r
s
r
s
r
s
s
r
s
47
5.4. DIFERENTES CLASES DE NUMEROS PRIMOS
Supongamos que ni > mi enton es tendremos: n = pn1 1 : : : pin 11 pni m pin+1+1 : : : pnr = pm1 1 : : : pmi 1 1 pim+1+1 : : : pmr luego pi divide a pm1 1 : : : pmi 1 1 pim+1+1 : : : prm , lo ual es imposible al ser los pi numeros primos. Enton es ha de ser ni mi y razonando de la misma manera obtendremos que ni no puede ser menor que mi luego la uni a posibilidad es que ni = mi para todo i. i
i
i
i
i
r
i
i
i
r
r
5.4. Diferentes lases de Numeros Primos Los numeros primos los podemos lasi ar en varios tipos. Algunos de estos tipos son: 5.4.1. Numeros primos de Fermat
Estos numeros re iben su nombre en honor de \Pierre de Fermat ", que fue su des ubridor. Estos numeros primos tienen la propiedad de ser de la forma: p = 22 + 1 n2N Los uni os numeros primos de Fermat ono idos son: 3 = 2201 + 1 n = 0 5 = 22 2 + 1 n = 1 17 = 223 + 1 n = 2 257 = 224 + 1 n = 3 65;537 = 22 + 1 n = 4 n
Como uriosidad sobre estos numeros podemos itar que el matemati o \Carl Friedri h Gauss " ara terizo los polgonos regulares que podan ser onstruidos usando tan solo regla y ompas. Estos polgonos son aquellos que el numero de sus lados es una poten ia de dos o bien una poten ia de dos multipli ada por uno o mas primos de Fermat impares y distintos. 5.4.2. Numeros primos gemelos
Son numeros primos uya diferen ia es dos. Los siguientes pares son numeros primos gemelos: f3; 5g; f5; 7g; f11; 13g; f17; 19g
48
CAPITULO 5. LOS NUMEROS PRIMOS
5.4.3. Numeros primos de Mersenne
Los numeros de Mersenne son numeros enteros de la forma 2n 1, on n un entero positivo. Si el numero 2n 1 es un numero primo enton es n es un numero primo. Luego llamaremos numeros primos de Mersenne a todos aquellos numeros primos que sean de la forma 2p 1, donde p es un numero primo, y a di hos numeros los denotaremos omo Mp. En la a tualidad no se sabe si existe o no una in nidad de numeros de Mersenne primos. 5.4.4. Numeros primos fuertes
La riptografa moderna se basa en la fa toriza ion de un numero n en numeros primos. Normalmente n = p q, on p y q numeros primos. Para poder ifrar y des ifrar es ne esario ono er la fa toriza ion en numeros primos de n. Dado que n es un numero grande di ha fa toriza ion es una tarea
ompli ada. Podemos imponer una serie de ondi iones adi ionales a p y q para di ultar aun mas la fa toriza ion de n. Diremos que dos numeros primos p y q son primos fuertes si: 1. El maximo omun divisor de p 1 y q 1 debe ser peque~no. 2. p 1 y q 1 deben tener algun fa tor primo grande p0 y q0. 3. Tanto p0 1 omo q0 1 deben tener fa tores primos grandes. 4. Tanto p0 + 1 omo q0 + 1 deben tener fa tores primos grandes. Las dos primeras ondi iones se umplen si tanto (p 1)=2 omo (q 1)=2 son numeros primos.
Captulo 6 Fa toriza ion y primalidad La riptografa de lave publi a se basa en la fa toriza ion de numeros primos. Para romper un sistema riptogra o de este tipo es ne esario ser apaz de en ontrar la des omposi ion de un numero \grande" en fa tores primos. Los numeros utilizados en estos sistemas suelen ser produ to de dos numeros primos de mas de ien digitos. En ontrar la fa toriza ion de numeros de este tipo es una tarea que requiere mu ho tiempo. Es por este motivo que este tipo de sistemas riptogra os gozan de \gran" seguridad.
6.1. El Problema de la Fa toriza ion El problema de fa torizar un numero entero en fa tores primos es un problema para el que no se han en ontrado, todava, algoritmos e ientes. La fa toriza ion de numeros requieren de bastante tiempo de omputo. Para fa torizar un numero en fa tores primos podemos dividir un numero p n por todos los primos anteriores a n, pero para enteros de mas de 15
ifras los resultados son insatisfa torios, desde el punto de vista del tiempo de omputo.
49
50
Y PRIMALIDAD CAPITULO 6. FACTORIZACION
En el a~no 1;975 un ingeniero ingles, \John Pollard " reo un metodo igual de simple, pero mu ho mas rapido que permite fa torizar numeros de hasta 25 ifras sin demasiadas di ultades. Desgra iadamente este metodo es ine iente uando los numeros tienen mas de 30 ifras. Investiga iones posteriores han dado origen a otros mu hos algoritmos (metodo \rho" de Pollard, metodo p 1 de Pollard, riba uadrati a de Pomeran e, metodo de las urvas elpti as de Lenstra, riba algebrai a de Pollard1). Las te ni as son ada vez mas e a es y permiten fa torizar ada vez numeros mayores, por supuesto tambien in uye el progreso de los ordenadores. Las te ni as de fa toriza ion no han al anzado la e a ia que se tiene para los test de primalidad2. En el a~no 1;995 era posible fa torizar un numero de 90 ifras, utilizando solo un potente mi roordenador, en unas po as semanas. En el a~no 1;994, gra ias a miles de ordenadores inter one tados a traves de internet, un grupo de matemati os onsiguio fa torizar un numero de 129
ifras. Para los expertos en teora de numeros la fa toriza ion de numeros \grandes"
onstituye un importante reto de tipo pra ti o.
6.2. Algoritmos Los algoritmos que vamos a ver en este apartado son algoritmos muy basi os y no son utilizados en la pra ti a por ser algoritmos muy lentos, ya que en la pra ti a se utilizan numeros primos de mas de 100 ifras y no es razonable intentar omprobar la primalidad de uno de estos numeros on los siguientes algoritmos. De todas formas estos algoritmos nos permitiran
omprobar que la busqueda de algoritmos para determinar la primalidad de numeros \grandes" no es una tarea sen illa.
1 Este
ultimo es el mas potente de todos. para omprobar si un numero es primo o no.
2 Pruebas
6.2. ALGORITMOS
51
6.2.1. La riba de Erastotenes
Erastotenes fue un sabio Griego que vivio en el siglo III antes de nuestra era y dio un metodo para el al ulo de numeros primos. Di ho metodo se
ono e omo la riba de Erastotenes. La riba de Erastotenes es un metodo elemental para en ontrar los numeros primos que existen hasta un determinado valor entero. Por ejemplo, supongamos que queremos al ular todos los numeros primos omprendidos entre el 2 y el 100. Primero ta haremos todos los multiplos de 2, luego ta haremos todos los multiplos del siguiente numero que no este ta hado, a ontinua ion ta haremos todos los multiplos del siguiente numero no ta hado y as su esivamente. Cuando hayamos terminado on todos los numeros entre el 2 y el 100 los numeros no ta hados seran los numeros primos omprendidos entre el 1 y el 100. Este metodo es util para en ontrar numeros primos peque~nos, pero para numeros primos grandes es un metodo totalmente ine iente. 6.2.2. Algoritmo de fuerza bruta
Un numero es primo s y solo s los uni os numeros que lo dividen son el mismo y la unidad. Luego dado un numero si lo dividimos entre todos los numeros menores que el y distintos de la unidad y ninguno de ellos lo divide diremos que el numero es primo. Como todos los numeros pares son divisibles por dos tendremos que ningun numero par, a ex ep ion del dos, es primo. Luego podemos eliminar los numeros pares y bus ar numeros primos entre los numeros impares. Para al ular s un numero es primo o no on este metodo tendremos que dividirlo entre todos los numeros enteros, menores, positivos, no nulos y distintos de la unidad, omprobar los restos y si ningun resto es ero enton es di ho numero es un numero primo. A este algoritmo nos referiremos omo algoritmo I.
52
Y PRIMALIDAD CAPITULO 6. FACTORIZACION
6.2.3. Algoritmo II
Si utilizamos los algoritmos anteriores para al ular numeros primos, por ejemplo los 10;000, 25;000, 100;000, ... primeros numeros primos veremos que a medida que aumentamos el numero de primos que queremos al ular el tiempo de omputo se dispara. Para obtener un nuevo algoritmo de al ulo, mas rapido, podemos utilizar la des omposi ion de un numero en numeros primos: Todo numero entero des ompone en produ to de numeros primos. Para todo n 2 N se tiene: n = pn1 1 : : : pnr donde ni 2 N para i = 1; : : : ; r, pj 2 N son primos para todo j y 1 pj n para j = 1; : : : ; r. Esta des omposi ion es uni a salvo el orden. Sea n 2 N un numero ualquiera. Supongamos que queremos ver si es primo o no. En el aso de que no sea primo tendremos que existe m 2 N tal que 1 < m < n y veri ando n = m d. r
Sea n = pm1 1 : : :pms , omo m divide a n se tiene que ualquier numero que divida a m dividira a n, en parti ular los fa tores primos de m fp1; : : : ; psg. Esto se dedu e del he ho de que al dividir m a n tenemos que n es un multiplo de m. s
Este he ho nos permite simpli ar los al ulos para determinar s un numero no es primo, en lugar de dividir un numero por todos los anteriores tendremos que dividirlo por uni amente por los primos anteriores a el. Por ejemplo para determinar s 100 es un numero primo: Dividiendo por todos los anteriores a 100 tendriamos que dividir por 98 numeros. Dividiendo por los primos anteriores a 100 tendriamos que dividir por 25 numeros. Realmente no tendriamos que dividir por todos esos numeros, ya que bastara
on en ontrar un numero que dividiera a 100, en este aso es fa il 2, para determinar que no es primo.
53
6.2. ALGORITMOS
Para determinar si un numero es primo s que tendriamos que dividir por todos los numeros anteriores, pero s un numero no es divisible, de forma entera, por todos los primos anteriores a el podemos a rmar on toda seguridad que es primo. Por ejemplo para determinar que 287;117 es primo: Dividiendo por todos los anteriores a 287;117 tendriamos que dividir por 287;115 numeros. Dividiendo por todos los primos anteriores a 287;117 tendriamos que dividir por 24;999 numeros. Como se puede ver on este metodo se redu e onsiderablemente el tiempo ne esario para determinar s un numero es primo o no. 6.2.4. Compara ion de los algoritmos
Para omparar los diferentes algoritmos se han reado varios programas, en lenguaje C, que piden al usuario la antidad de numeros primos. El programa bus ara los 25;000, por ejemplo, primeros numeros primos. En todos los algoritmos se bus an numeros primos entre los numeros impares, a ex ep ion del numero dos. Los al ulos que muestra la tabla ?? se han realizado en un Pentium 166. El 10;000 numero primo es: 104;729 El 25;000 numero primo es: 287;117 El 35;000 numero primo es: 414;977 El 45;000 numero primo es: 545;747 El 55;000 numero primo es: 679;277 Cantidad 10;000 25;000 35;000 45;000 55;000
Algoritmo I 0 h 2 m 48 s 0 h 19 m 17 s 0 h 39 m 4 s 1h 6m 9s 1 h 40 m 40 s
Algoritmo II 0 h 0 m 16 s 0 h 1 m 43 s 0 h 3 m 24 s 0 h 5 m 34 s 0 h 8 m 19 s
Cuadro 6.1: Tiempos de busqueda de numeros primos.
54
Y PRIMALIDAD CAPITULO 6. FACTORIZACION
6.3. Algoritmos Probabilsti os Estos algoritmos son utiles para determinar si un numero es primo o no uando son numeros relativamente peque~nos. Cuando los numeros a determinar si son primos o no son grandes estos algoritmos son totalmente ine ientes, aun utilizando grandes ordenadores. 6.3.1. Segundo teorema de Fermat
El segundo teorema de Fermat es tambien ono ido omo \Congruen ia
de Fermat ", apartado (??) en la pagina ??.
Podemos enun iarlo de la siguiente manera: Sean p; a 2 Z tales que p sea un numero primo y no divida a a enton es ap 1 1 es divisible por p. Este teorema no impide la existen ia de numeros no primos p que satisfagan la ondi ion dada por el teorema, pero di hos numeros son raros. Este metodo permite determinar uando un numero grande no es primo, y es mas e az que los algoritmos dados en la se
ion (??) para numeros on
ientos de ifras. Comprobar si ap 1 1 es divisible por p no es una tarea dif il, aun uando p sea un numero enorme. Un metodo razonable para omprobar el ara ter primo de un numero impar n es el siguiente: 1. Comenzamos dividiendo el numero n por los numeros impares 3; 5; 7; : : : hasta un lmite bastante peque~no. Si n no es divisible por ninguno de ellos se supone que el numero es primo. 2. Ahora omprobamos la divisibilidad de 2n 1 1 por n. En el aso de que no sea divisible enton es el teorema de Fermat indi a que n no es primo, ya que si lo fuera debera dividir a 2n 1 1 para satisfa er el segundo teorema de Fermat. En el aso en que 2n 1 1 sea divisible por n no podemos asegurar que n sea un numero primo, pero es muy probable que lo sea.
6.3. ALGORITMOS PROBABILISTICOS
55
Este metodo es e iente para determinar uando un numero no es primo, independientemente del numero de ifras que tenga, pero tiene un in onveniente y es que no nos permite identi ar numeros primos. 6.3.2. Algoritmos APRCL y Atkin-Morain
En el a~no 1;878 el matemati o fran es \Edouart Lu as " hallo un test pare ido al de Fermat, pero valido para los numeros de Mersenne3 . Este test fue mejorado en el a~no 1;930 por el norteameri ano \Derri k H. Lehmer ", es un algoritmo fa il de programar en un ordenador y permite demostrar el
ara ter primo de numeros gigantes os. El test de \Lu as-Lehmer " se utiliza sistemati amente para omprobar la abilidad de los superordenadores CRAY. En el a~no 1;994 el mayor numero primo ono ido fue des ubierto por dos elebres azadores de numeros primos \David Slowinski " y \Paul Gage ", en Estados Unidos. Di ho numero es 2859;433 1 y tiene 258;716 ifras4, el ordenador utilizado para el al ulo de este numero fue un CRAY C-90. Pero este test posee el in onveniente de que solo es apli able a numeros de Mersenne. En el a~no 1;980 se logro desarrollar un algoritmo general apaz de demostrar el ara ter primo de numeros \grandes". La idea ini ial partio de \Len Adleman ", de la universidad de Carolina del sur, \Carl Pomeran e " y \Robert Rumely ", de la universidad de Georgia (Estados Unidos), y la version pra ti a es debida a \Hendrik Lensdra ", de la universidad de Berkeley, y \Henri Cohen ". Di ho test se ono e omo \APRCL", las ini iales de sus inventores. En 1;989 \Oliver Atkin ", de la universidad de Illinois en Estados Unidos, y \Fran ois Morain ", de la Es uela Polite ni a de Palaiseau en Fran ia,
rearon un algoritmo muy distinto de similar e a ia. La ventaja que tiene este metodo es la de poder omprobar, mediante los instrumentos de al ulo que suministra, la vera idad de que un numero que el metodo a rma que es primo lo es realmente. En el aso del test APRCL, en ambio, el uni o medio de omproba ion onsiste en reha erlo.
3 Apartado
4 Raz on
(??) en la pagina ??. por la que no indi amos \exa tamente\ di ho numero. ;-)
56
Y PRIMALIDAD CAPITULO 6. FACTORIZACION
Tanto el metodo APRCL omo el metodo de Atkin-Morain emplean so sti adas te ni as de teora de numeros. El test APRCL utiliza una generaliza ion del men ionado teorema de Fermat a los llamados uerpos i lotomi os. El test de Atkin-Morain re urre a una generaliza ion del mismo teorema a las urvas elpti as. En la pra ti a, estos dos modernos test permiten demostrar en po os minutos que un numero de 200 ifras es primo, lo que basta sobradamente para las ne esidades riptogra as. Comparando este resultado on los obtenidos en la tabla ?? y teniendo en uenta que el primo numero 55;000 es 679;277 y tiene 6 ifras podemos ha ernos una idea del tiempo que se tardara en omprobar la primalidad de un numero de 200
ifras on ualquiera de los metodos analizados en di ha tabla. Podemos onsiderar que el problema de la determina ion de la primalidad de un numero es un problema asequible gra ias a los algoritmos anteriores y al ontinuo avan e de la te nologa que permite la utiliza ion de ordenadores
ada vez mas rapidos y potentes. 6.3.3. Algoritmo de Lehmann
Es uno de los tests mas sen illos para saber si un numero p es primo o no. El algoritmo es el siguiente: 1. Es oger un numero aleatorio a < p. 2. Cal ulamos: 1 b = a 2 mod p 3. Si b 6= 1 mod p y b 6= p 1 mod p enton es p no es primo. 4. Si b 1 mod p o b p 1 mod p, la probabilidad de que p sea primo es igual o superior al 50%. Repitiendo el algoritmo n ve es, la probabilidad de que p supere el test y no sea primo es de 1 ontra 2n. p
6.3. ALGORITMOS PROBABILISTICOS
57
6.3.4. Algoritmo de Rabin-Miller
Es el algoritmo mas empleado, debido a su fa ilidad de implementa ion. Sea p el numero que queremos saber si es primo. Se al ula b, siendo b el numero de ve es que 2 divide a p 1, es de ir, 2b es la mayor poten ia de 2 que divide a p 1. Cal ulamos enton es m, tal que p = 1 + 2b m. 1. Es oger un numero aleatorio a < p. 2. Sea j = 0 y z = am mod p. 3. Si z = 1, o z = p 1, ento es p pasa el test y puede ser primo. 4. Si j > 0 y z = 1, p no es primo. 5. Sea j = j + 1. Si j = b y z 6= p 1, p no es primo. 6. Si j < b y z 6= p 1, z = z2 mod p. Volver al paso (4). 7. Si j < b y z = p 1, enton es p pasa el test y puede ser primo. 8. p no es primo. La probabilidad de que un numero ompuesto pase este algoritmo para un numero a es del 25%. Esto quiere de ir que ne esitaremos menos pasos para llegar al mismo nivel de on anza que el obtenido on el algoritmo de Lehmann. 6.3.5. En la pra ti a
Para determinar si un numero es primo o no el algorimo que normalmente se utiliza es: 1. Se genera un numero aleatorio p de n bits. 2. Se pone a uno el bit mas signi ativo para garantizar que el numero obtenido es de n bits. 3. Se pone a uno el bit menos signi ativo para garantizar que el numero es impar, ya que si fuera par no sera primo5. 4. Dividimos p por una tabla de primos pre al ulados, normalmente se utilizan primos menores que 2;000. Esto elimina gran antidad de numeros no primos de una forma rapida. 5. Eje utar el test de Rabin-Miller omo mnimo in o ve es. 5A
ex ep ion del 2, pero di ho numero no se onsidera.
58
Y PRIMALIDAD CAPITULO 6. FACTORIZACION
Captulo 7 La Fun ion de Euler y Congruen ias Clasi as 7.1. La Fun ion de Euler
Sea (Z; +; ) el anillo de los numeros enteros y n 2 Z un numero ualquiera de di ho anillo. Podemos onsiderar enton es el anillo o iente de lases residuales resultante de dividir por n, al ual denotaremos por Z=n. Z=n = 0; 1; ; n 1 El anillo Z=n no siempre es uerpo, es uerpo uando n es un numero primo. Denotaremos por (Z=n) al onjunto de todos los elementos de Z=n que son invertibles, di ho onjunto es un grupo multipli ativo. De la teoria de anillos sabemos que (Z=n) estara formado por los numeros enteros, no nulos, menores que n y primos on n. De ni ion 7.1 (Fun ion de Euler) Se de ne la fun ion de Euler omo: : Z ! Z n ! (n) donde (n) = j(Z=n) j. (n) tambien re ibe el nombre de indi ador de Euler de n. 59
DE EULER Y CONGRUENCIAS CLASICAS 60CAPITULO 7. LA FUNCION
Observa ion: 7.1.1 En el aso de que n = p sea un numero primo se tiene que:
(p) = p 1 ya que al ser p un numero primo todos los numeros menores que p son primos
on p. Z=p es uerpo por ser p primo, luego todos sus elementos, no nulos, son invertibles.
7.1.1. Propiedades de la fun ion de Euler Proposi ion 7.1 (Propiedades del indi ador de Euler) El indi ador de Euler veri a:
(pr ) = pr 1 (p 1) on p un numero primo y r 1. (n m) = (n) (m) on n y m primos entre s. Demostra ion:
(pr ) = pr 1 (p 1) on p un numero primo y r 1. Por de ni i on tendremos que (pr ) es el orden del grupo multipli ativo (Z=pr) , y este grupo esta formado por los numeros enteros menores que pr y que son primos on el. Los enteros menores que pr y que no son primos on pr son p, 2 p, ..., pr 1 p. Luego tenemos pr 1 numeros que no son primos on pr y omo jZ=prj = pr tendremos que: (pr ) = pr pr 1 = (p 1) pr 1 (n m) = (n) (m) on n y m primos entre s. Por el Teorema Chino de los restos tenemos que: Z = ( n m) = (Z=n) (Z=m) indu e un isomor smo de grupos: Z=(n m) = (Z=n) (Z=m) de donde se dedu e que (n m) = (n) (m).
7.2. CONGRUENCIAS CLASICAS
61
7.2. Congruen ias Clasi as El on epto de ongruen ia fue introdu ido en Matemati as por Gauss en su obra Disquisitiones Arithmeti ae, en el a~no 1;801. De ni ion 7.2 +(Numeros ongruentes) Sean a; b; m 2 Z f0g. Diremos que a y b son ongruentes modulo m si m divide a (a b) y lo denotaremos omo a b (mod m). Proposi ion 7.2 + Sean a; b; m 2 Z f0g. a b (mod m) () a y b tienen el mismo resto al dividir por m. Demostra ion: ) j Como a b (mod m) se tiene que m divide a (a b) enton es tendremos
por el algoritmo de Eu lides que: (a b) = m (7.1) Por el algoritmo de Eu lides tendremos: a = m a + ra b = m b + rb de donde se tiene que: (a b) = (a b) m + (ra rb) (7.2) De (??) y (??) se dedu e que: ra rb = 0 =) ra = rb ( j Sean a; b 2 Z tales que tienen el mismo resto al dividir por m, enton es: a = m a + r b = m b + r de donde se tiene que: a b = m a + r (m b + r) = (a b ) m Luego m divide a (a b), es de ir a b (mod m).
DE EULER Y CONGRUENCIAS CLASICAS 62CAPITULO 7. LA FUNCION
De esta proposi ion se dedu e que dos numeros son ongruentes modulo m s y solo s tienen el mismo resto al dividir por m. S a b (mod m) y d (mod m) se veri an las siguientes propiedades: 1. a + b + d (mod m). 2. k a k b (mod m) para todo k 2 Z. 3. a b d (mod m). 4. an bn (mod m) para todo n 2 Z+ . 5. f (a) f (b) (mod m) para todo polinomio on oe ientes enteros. 7.2.1. Congruen ia de Euler Proposi ion 7.3 (Congruen ia de Euler) S a; b 2 Z son primos entre s enton es: a(b) 1 (mod b ) Demostra ion: Como a es primo on m enton es la lase de a en Z=b es un elemento inver-
tible:
a 2 (Z=b)
y al ser (Z=b) un grupo multipli ativo de orden (b) se tiene que: 1 = a(b) = a(b)
7.2. CONGRUENCIAS CLASICAS
63
7.2.2. Conguen ia de Fermat
Un aso parti ular de la ongruen ia de Euler es la ongruen ia de Fermat:
Proposi ion 7.4 (Congruen ia de Fermat) Sea p 2 Z un numero primo y a 2 Z tal que no sea divisible por p enton es: ap 1 1 (mod p) Demostra ion: Como p es primo y no divide a a enton es a y p son primos entre s y por la
ongruen ia de Euler tendremos: a(p) 1(mod p) pero omo p es primo enton es (p) = p 1 luego: ap 1 1(mod p)
DE EULER Y CONGRUENCIAS CLASICAS 64CAPITULO 7. LA FUNCION
Captulo 8 El Algoritmo de Eu lides De ni ion 8.1 (Anillo ntegro) Diremos que un anillo A es ntegro uando para ualesquiera a; b 2 A tales que a b = 0 se tenga que: a=0
o
b=0
De ni ion 8.2 (Anillo Eu ldeo) Diremos que un anillo A es eu ldeo si es ntegro y se veri a el algoritmo de Eu lides para todo elemento del anillo.
Sea A un anillo Eu ldeo y a; d 2 A enton es: a=d +r (8.1) donde: a re ibe el nombre de dividendo. d re ibe el nombre de divisor.
re ibe el nombre de o iente. r re ibe el nombre de resto. Donde (??) re ibe el nombre de Algoritmo de Eu lides. S A = Z diremos que (??) es el Algoritmo de Eu lides para la division entera. Ejemplo de anillos Eu ldeos son Z y K [x℄, donde K [x℄ es el anillo de polinomios, en la variable x, on oe ientes en el uerpo K . 65
66
CAPITULO 8. EL ALGORITMO DE EUCLIDES
8.1. Cal ulo del M.C.D. mediante el Algoritmo de Eu lides Proposi ion 8.1 Sean a; d; ; r 2 Z tales que a = d + r enton es: M:C:D:(a; d) = M:C:D:(d; r) Demostra ion:
Por de ni ion de M.C.D. tendremos que: m1 = M:C:D:(a; d) () (m1 ) = (a) + (d) m2 = M:C:D:(d; r) () (m2 ) = (d) + (r) m1 y m2 existen y son uni os. Para demostrar la proposi ion veamos que (m1) = (m2). Esto es inmediato ya que: a = d + r 2 (d) + (r) r = a d r 2 (a) + (d) luego (a) + (d) = (d) + (r) luego m1 = m2 . Utilizando la proposi ion ?? podemos obtener un algoritmo rapido para determinar el M.C.D. de dos numeros, ya que la fa toriza ion en numeros primos de un numero puede ser una tarea lenta y ostosa, sobre todo s el numero es grande.
8.2. CALCULO DE INVERSOS EN Z/N
67
8.1.1. Algoritmo de al ulo Sean a; b 2 Z, on a > b 6= 0. Por el algoritmo de Eu lides tendremos: a = 1 b + r1 b = 2 r1 + r2 r1 = 3 r3 + r4 ::: ::: ::::::::: rn 2 = n rn 1 + rn rn 1 = n+1 rn + 0
por la proposi ion ?? tendremos: M:C:D:(a; b) = M:C:D:(b; r1 ) = M:C:D:(r1 ; r2 ) = M:C:D:(r2 ; r3 ) = = : : : = M:C:D:(rn 2; rn 1) = M:C:D:(rn 1; rn) = = M:C:D:(rn; 0) = rn
8.2. Cal ulo de Inversos en Z/n Sea n 2 Z ualquiera, por la teora de anillos sabemos que Z/n no es
uerpo siempre. Z/n es uerpo () n es primo. Mu has ve es ne esitaremos al ular el inverso de a 2 Z/n on n no primo. No todos los elementos de Z/n son invertibles, ya que de serlo Z/n sera
uerpo, on lo ual n forzosamente tendra que ser un numero primo y no lo es. Los elementos de Z/n los denotaremos por a. Z/n es el onjunto de restos posibles al dividir por n luego: Z=n = 0; 1; : : : ; n 1
68
CAPITULO 8. EL ALGORITMO DE EUCLIDES
8.2.1. Cara teriza ion de los invertibles de Z/n Proposi ion 8.2 m 2 Z/n es invertible () (m; n) = 1, m y n son primos entre s. Demostra ion: ) j m es invertible, enton es existe a 2 Z/n tal que: a m 1 mod n =) a m
1 0 mod n
de donde se dedu e que: a m n = 1 on 2 Z
y por el ejer i io ??, en la pagina ??, se tiene que 1 = (m; n). ( j Como (m; n) = 1 por el ejer i io ??, en la pagina ??, tendremos que existen ; 2 Z tales que: m+n=1 de donde se dedu e: m 1 = n () m 1 mod n luego 2 Z/n es el inverso de m. Al onjunto de elementos invertibles de Z=n lo denotaremos por (Z=n) y estara formado por todos los elementos que son primos on n. Este onjunto es un grupo multipli ativo de orden (n).
69
8.2. CALCULO DE INVERSOS EN Z/N
8.2.2. E ua iones diofanti as en Z De ni ion 8.3 (E ua ion diofanti a en Z) Dados a; b; 2 Z llamaremos e ua ion diofanti a a la siguiente e ua ion: ax+by = Diremos que tiene solu ion uando existan x; y 2 Z que la veri quen.
El ejer i io ??, en la pagina ??, nos indi a uando una e ua ion diofanti a tiene solu ion. Una e ua ion diofanti a, omo la anterior, tiene solu ion () es multiplo de maximo omun divisor de a y b. Sea (a; b) = d y = d, tendremos que a = a d y b = b d enton es la siguientes e ua ion diofanti as tendran las mismas solu iones: ax+by = (8.2) ax+by = (8.3) Dada una e ua ion diofanti a ualquiera, que tenga solu ion, omo la (??) podemos redu irla a otra e ua ion diofanti a que tiene las mismas solu iones y veri ando (a; b) = 1, e ua ion (??). Cuando tengamos una e ua ion diofanti a del tipo (??) la redu iremos al tipo (??) al ulando el maximo omun divisor de a y b, mediante el algoritmo de Eu lides por ejemplo, y tendremos que: a=
a d
b=
b d
=
d
Supondremos de ahora en adelante que si a x + b y = es una e ua ion diofanti a enton es a y b son primos entre s, y diremos que la e ua ion esta en forma redu ida. Sea a x + b y = una e ua ion diofanti a en forma redu ida, si x0 ; y0 2 Z son solu ion de di ha e ua ion enton es (x0 + b; y0 a) son solu iones de la e ua ion para todo 2 Z.
70
CAPITULO 8. EL ALGORITMO DE EUCLIDES
Ejemplo 8.1 (Resolu ion de una e ua ion diofanti a) Resolver la e ua ion diofanti a siguiente:
238 x + 165 y = 1 Lo primero que tenemos que ver es si tiene solu ion. Cal ulemos el maximo
omun divisor por el algoritmo de Eu lides:
238 = 165 1 + 73 =) 73 = 238 165 1 165 = 73 2 + 19 =) 19 = 165 73 2 73 = 19 3 + 16 =) 16 = 73 19 3 19 = 16 1 + 3 =) 3 = 19 16 1 16 = 3 5 + 1 3 = 13 luego (238; 165) = 1 enton es son primos entre s, la e ua ion tiene solu ion.
Para en ontrar una solu ion pro ederemos de la siguiente manera:
16 = |(19 {z16 1)} 5 + 1 3 1 = (73 19 3)} 6 + 19 ( 5) {z | 16 1 = (165 73 2)} ( 23) + 73 6 | {z 19 1 = (238 165 1)} 52 + 165 ( 23) | {z 73
=) 16 6 + 19 ( 5)
= 1
=) 73 6 + 19 ( 23)
= 1
=) 73 52 + 165 ( 23) = 1 =) 238 52 + 165 ( 75) = 1
Luego las solu iones de la e ua ion diofanti a son x0 = 52 e y0 = 75, (52; 75). Todas las solu iones de la e ua ion son: (52 + 165; 75 238) on 2 Z
8.2. CALCULO DE INVERSOS EN Z/N
71
8.2.3. Cal ulo de inversos on el algoritmo de Eu lides Sea n; m 2 Z, on n positivo, no nulo y no primo, y que queremos al ular
el inverso de m en Z=n, que no es uerpo ya que n no es primo. Podemos
al ularlo utilizando el algoritmo de Eu lides: 1. Comprobaremos que, efe tivamente, m es invertible en Z=n. Es de ir que (m; n) = 1. Una forma de ha erlo es la des rita en el apartado (??), en la pagina ??. 2. En el aso en que m sea invertible tendremos que existira x 2 Z tal que: x m = 1 mod n Que un numero sea ongruente on 1 modulo n signi a que: x m = b n + 1 on b 2 Z Luego tenemos la siguiente e ua ion diofanti a: xm+bn=1 Resolvemos la e ua ion diofanti a omo hemos visto en el apartado (??), en la pagina ??, y m 1 = x mod n.
72
CAPITULO 8. EL ALGORITMO DE EUCLIDES
Parte IV Criptografa Moderna
73
Captulo 9 Fun iones de un Sentido Habamos visto en el aptulo ?? que para que un sistema riptogra o sea seguro era ne esario que la fun ion d(; ) requiera mu ho tiempo de
al ulo, on lo ual sera dif il des ifrar un mensaje. Pero esto representa un problema, y es que no solo sera dif il para un intruso, ademas tambien lo sera para el re eptor del mensaje. Una solu ion a esto la dieron DiÆe y Hellman, onsistia en utilizar fun iones matemati as tales que el al ulo de la fun ion dire ta1 sea fa il, pero el al ulo de la fun ion inversa2 sea d il, pero que di ha fun ion inversa tenga una \trampa", y el ono imiento de di ha trampa permita un sen illo
al ulo de la fun ion inversa. Este tipo de fun iones re iben el nombre de fun iones de un sentido o fun iones on trampa. De esta de ni ion podemos observar que el he ho de que una fun ion sea de un sentido depende del tiempo de al ulo utilizado por un ordenador para su fun ion inversa, es de ir que depende del ordenador utilizado, ya que no es lo mismo realizar una opera ion en un ordenador personal que en una esta ion de trabajo o un superordenador, omo pudiera ser un CRAY. De esto tambien se dedu e que una fun ion que hoy en da es onsiderada omo de un sentido dentro de unos a~nos no lo sea debido a que la te nologa ha avanzado lo su iente omo para fabri ar ordenadores on los que sea posible
al ular la inversa de la fun ion en un tiempo razonable, en di ho momento la fun ion dejara de ser una fun ion de un sentido. 1 La
2 La
fun ion que ifra el mensaje. que des ifra el mensaje.
75
76
CAPITULO 9. FUNCIONES DE UN SENTIDO
9.1. El Logaritmo Dis reto El logartimo dis reto es la fun ion mas omunmente usada omo fun ion de un sentido. Por la proposi ion ??, en la pagina ??, tenemos que (Z=n) on n 2 N esta formado por los enteros menores que n y primos on el. Ademas tenemos que j (Z=n) j = (n). Por la ongruen ia de Fermat3 tenemos que: a(p) = ap 1 1 mod p donde p es primo y a 2 Z=p. Sea n 2 N , un entero positivo, y a un ualquier entero tal que 1 a n veri ando que a 2 (Z=n) y veri ando la siguiente propiedad: ad 6= 1 mod n
on 1 d < (n) enton es diremos que a es una raiz primitiva de n. No todo entero tiene rai es primitivas. Aquellos enteros que tienen rai es primitivas estan ara terizados por el siguiente teorema elemental de la teoria de numeros: Teorema 9.1 1. El entero n tiene una raz primitiva si y solo si n es 1, 2, o 4, o si es de la forma pk o 2 pk , donde p es un primo impar.
((n)) ra es primitivas. Preguntas omo la forma en la que las ra es primitivas estan distribuidas o que enteros son ra es primitivas de algun primo son preguntas a las que todava no se ha en ontrado respuesta. Existe una famosa onjetura de Artin(1;927): Cada entero que no es un uadrado perfe to es raz primitiva de algun primo. Dado un entero n no se ono e ningun algoritmo para al ular una raz primitiva suya en tiempo polinomial. 2. Si n tiene una raz primitiva enton es tiene
3 En
el apartado ?? en la pagina ??.
9.1. EL LOGARITMO DISCRETO
77
Teniendo en uenta todo lo visto hasta aqu vamos a de nir el logaritmo dis reto. 9.1.1. El problema del Logaritmo Dis reto Sea n 2 Z un entero ualquiera que tenga una raz primitiva, a la que denotaremos a. Para ualquier x tal que 0 x < (n) si: y = ax mod n
(9.1) enton es diremos que x es el logaritmo dis reto de y en la base a modulo n y lo denotaremos omo x = loga y (mod n). La e ua ion ?? tiene solu ion uni a y ello es debido a que a es una raz primitiva. Teorema 9.2 (El logaritmo dis reto esta bien de nido) Sea n 2 Z un entero ualquiera que tenga una raz primitiva, a la que denotaremos a. Existe un uni o x tal que 0 x < (n) veri ando: y = ax mod n Demostra ion:
Como a es raz primitiviva de n tendremos: a 2 (Z=n)
on ad 6= 1 mod n para ualquier d tal que 1 d < (n) Supongamos que existen dos solu iones x1 ; x2 enton es tendremos: y = ax1 mod n 1 x1 < (n) y = ax2 mod n 1 x2 < (n) o lo que es lo mismo: x1 = loga y mod n x2 = loga y mod n Si restamos ambas solu iones modulo n: x1 x2 = loga y loga y = 0
78
CAPITULO 9. FUNCIONES DE UN SENTIDO
on lo que tenemos que x1 x2 = n on 2 Z. Tenemos enton es que x1 = x2 + n on lo ual llegamos a ontradi
ion ya que tanto x1 omo x2 son menores que (n) < n. Luego no pueden existir x1 y x2 en las ondi iones dadas veri ando la e ua ion, es de ir y no puede tener dos logaritmos dis retos. Hemos demostrado que no pueden existir dos logaritmos dis retos, pero no hemos demostrado la existen ia de solu ion, es de ir la existen ia del logaritmo dis reto. Veamos ahora la existen ia del logaritmo dis reto. Por de ni ion el logaritmo dis reto es x = loga y y para que exista solu ion y debe ser positivo y no nulo. Que y sea positivo no plantea ningun problema, luego el uni o problema es que y sea no nulo. Pero omo tenemos que y = ax
on 0 x < (n) y a 2 (Z=n) , el ual es un grupo multipli ativo al ual no
pertene e el 0, tenemos que existe el logartimo dis reto.
Tenemos que la fun ion exponen ial de nida por la e ua ion (??) es una fun ion \fa il" de al ular, pero ono idos a; y; n en ontrar x = loga y (mod n), el logaritmo dis reto, es d il de al ular ya que no se ono e ningun algoritmo apaz de ha erlo en tiempo polinomial, mientras que la exponen ia ion se puede realizar en 2 [log2 n℄ multipli a iones modulo n. Luego la exponen ia ion se puede resolver en tiempo polinomial. 9.1.2. Algoritmo de Exponen ia ion Rapida
Cualquier sistema riptogra o que utilize este tipo de fun iones ne esitara al ular exponen ia iones modulares. Para al ular ab el algoritmo usual es multipli ar a por s mismo b ve es, pero uando b es un entero grande este algoritmo es po o efe tivo. Podemos utilizar otro algoritmo mas optimizado para al ular ab .
Sea (b0 ; b1; : : : ; bn)2 la expresion en binario de b10 : b10 = b0 20 + b1 21 + : : : + bn 2n on bi 2 f0; 1g utilizando esto tendremos que: 0 1 ab = 2b0 2 +b1 2 +:::+b 2 n
n
=
n Y i=0
a2 b i
i
79
9.1. EL LOGARITMO DISCRETO
Para al ular ab solo tendremos que multipli ar1 los a2 orrespondientes a los bi que sean 1. Ademas tenemos que a2 = (a2 )2 , on lo que partiendo de a podemos al ular el valor siguiente de la su esion fa2 gi elevando al uadrado el termino anterior. i
i
i
i
80
CAPITULO 9. FUNCIONES DE UN SENTIDO
Captulo 10 El Algoritmo RSA El algoritmo RSA es el algoritmo del lave publi a mas utilizado en la a tualidad, tambien es el mas sen illo tanto en uanto a omprension se re ere omo a implementa ion. Su nombre proviene de sus tres inventores: Ron Rivest, Adi Shamir y Leonard Adleman. Desde su na imiento nadie ha onseguido demostrar que el metodo es inseguro. Este algoritmo se basa en la di ultad para fa torizar grandes numeros. Tanto la lave publi a omo la privada se obtienen omo el produ to de dos numeros primos \grandes", de unos 200 digitos ada uno.
10.1. Ele
ion de Claves en el Algoritmo RSA El RSA es un algoritmo de lave publi a on lo ual tendremos dos laves para ifrar y des ifrar: La lave publi a, la ual es ono ida por todos los usuarios y es utilizada para odi ar mensajes y mandarselos al usuario propietario de di ha
lave. A esta lave la denotaremos omo KP b. La lave privada, la ual no es publi a y uni amente ono e el propietario de la lave. Esta lave se utiliza para des ifrar los mensajes ifrados
on la lave publi a. A esta lave la denotaremos omo KP v . Para estable er las laves el usuario eligira dos numeros p; q primos y relativamente grandes, unos 200 digitos, enton es llamaremos n al siguiente numero n = p q. 81
82
CAPITULO 10. EL ALGORITMO RSA
10.1.1. Ele
ion de la Clave Privada, K
Pv
Bus aremos un numero e tal que sea primo on (n) = (p 1) (q 1). Dado que e y (n) son primos entre s tendremos que existe d tal que: e d 1 mod (n) = (p 1) (q 1) = n + 1 p q d se puede al ular mediante el algoritmo de Eu lides. Enton es la lave privada sera KP v = (d; n). 10.1.2. Ele
ion de la Clave Publi a, K
Pb
La lave publi a sera KP b = (e; n). Cualquier usuario que onoz a nuestra lave publi a sabe que: e d 1 mod (n) pero omo des ono e la fa toriza ion en numeros primos de n el al ulo de d es pra ti amente imposible realizarlo por fuerza bruta ya que n es un numero de unos 400 digitos. 10.1.3. Datos Privados
Los datos privados seran: La des omposi ion en numeros primos del numero n, es de ir los primos p y q. El valor (n). El numero d el ual veri a: e d 1 mod (n)
Cualquiera que onoz a estos datos podra des ifrar los mensajes del propietario de esta lave.
DEL ALGORITMO 10.2. DESCRIPCION
83
10.1.4. Datos Publi os
Los datos publi os seran: El numero n. El numero e el ual veri a: e d 1 mod (n)
Cualquiera que onoz a estos datos podra mandar mensajes ifrados al usuario propietario de esta lave, siendo este el uni o apaz de des ifrar el mensaje1 .
10.2. Des rip ion del Algoritmo Tenemos n = p q y las laves KP b = (n; e) y KP v = (n; d). A ontinua ion elegimos un alfabeto, por ejemplo el alfabeto de 36 letras de la pagina ??. Sea N la antidad de smbolos que tiene el alfabeto utilizado. Cifraremos el mensaje por bloques, luego elegiremos la longitud de ada bloque asi omo la longitud en la que vamos a ifrar di ho bloque. Matemati amente la fun ion de en ripta ion sera: Z=N k ! Z=N l y la desen ripta ion sera: Z=N l ! Z=N k donde k sera la longitud del bloque que vamos a ifrar y l la longitud del bloque ifrado. k debera veri ar que N k < n.
1 Siempre
uando sea el uni o que ono e los datos privados.
84
CAPITULO 10. EL ALGORITMO RSA
10.2.1. Pro edimiento de En ripta ion
Sea T0T1 : : : Tg 1 un texto que queremos ifrar. Lo primero que ha emos es asignar a ada Ti un numero segun un alfabeto: a0 ; a1 ; : : : ; ag 1
seguidamente dividimos la expresion anterior en bloques de k numeros y pro ederemos on ada bloque de la siguiente manera: (a0 ; a1; : : : ; ak 1) 2 Z=N k on ai 2 Z=N luego podemos onsiderar a (a0 ; a1; : : : ; ak 1) omo la expresion en base N de: a0 N 0 + a1 N + : : : + ak 1 N k 1 = m < n a ontinua ion ha emos: C = me mod n seguidamente transformamos C en un elemento de Z=N l: C = 0 N 0 + 1 N + : : : + l 1 N l 1 = ( 0 ; 1 ; : : : ; l 1) 2 Z=N l Hemos ifrado el bloque (a0 ; a1; : : : ; ak 1) omo ( 0; 1; : : : ; l 1). 10.2.2. Pro edimiento de Desen ripta ion
Supongamos que re ibimos ( 0; 1 ; : : : ; f ), enton es para des ifrarlo primero lo dividiremos en bloques de longitud l, ( 0; 1 : : : ; l 1) y para ada bloque haremos: C = 0 N 0 + 1 N + : : : + l 1 N l 1 = ( 0 ; 1 ; : : : ; l 1) 2 Z=N l a ontinua ion al ulamos: m = C d mod n ahora al ulamos la expresion de m en base N : m = a0 N 0 + a1 N + : : : + ak 1 N k 1 enton es el mensaje transmitido sera: T0 T1 : : : Tk 1
donde Ti es la letra orrespondiente a ai segun el alfabeto utilizado.
10.3. EJEMPLO PRACTICO DEL ALGORITMO RSA
85
10.3. Ejemplo Pra ti o del Algoritmo RSA Consideremos p = 281, q = 167, on lo ual: n = 281 167 = 46;921 (46;921) = (281 1) (167 1) = 46;480 Busquemos e y d tal que e d 1 mod (46;921): e = 39;423 d = 26;767 Luego las laves seran: KP b = (46;921; 39;423) KP v = (46;921; 26;767) Supongamos que queremos mandar el mensaje \HOLA" utilizando el alfabeto de 36 smbolos, en la pagina ??, ifrando bloques de dos letras en bloques de tres. 10.3.1. Pro edimiento de En ripta ion
Segun el alfabeto tendremos que: HOLA = (17; 24; 21; 10) Como vamos a ifrar utilizando bloques de dos letras, los bloques a ifrar seran: (17; 24) y (21; 10) Estos bloques entendidos omo elementos de (Z=36)2 son: (17; 24) = 17 360 + 24 36 = 881 (21; 10) = 21 360 + 10 36 = 381 tendremos enton es: 88139;423 45;840 mod 46;927 38139;423 26;074 mod 46;927 Ahora expresamos estos numeros omo elementos de (Z=36)3 : 45;840 = 12 360 + 13 36 + 35 362 = (12; 13; 35) 2 (Z=36)3 26;074 = 10 360 + 4 36 + 20 362 = (10; 4; 20) 2 (Z=36)3
86
CAPITULO 10. EL ALGORITMO RSA
Segun el alfabeto utilizado tendremos: (12; 13; 35) =) CDZ (10; 4; 20) =) A4K Luego el mensaje \HOLA" ifrado es \CDZA4K". 10.3.2. Pro edimiento de Desen ripta ion
Supongamos que hemos re ibido el mensaje en riptado \CDZA4K", vamos a desen riptarlo. Como sabemos que el mensaje ha sido en riptado en riptando bloques de dos letras en bloques de tres tendremos que dividirlo en bloques de tres letras y asignar a ada letra un numero de a uerdo on el alfabeto utilizado: CDZ = (12; 13; 35) A4K = (10; 4; 20) Considerando estos ve tores omo elementos de (Z=36)3 tendremos: (12; 13; 35) = 12 360 + 13 36 + 35 362 = 45;840 (10; 4; 20) = 10 360 + 4 36 + 20 362 = 26;074 tendremos enton es que: 45;84026;767 881 mod 46;927 26;07426;767 381 mod 46;927 expresamos estos numeros omo elementos de (Z=36)2: 881 = 17 360 + 24 36 = (17; 24) 2 (Z=36)2 381 = 21 360 + 10 36 = (21; 10) 2 (Z=36)2 Consultando el alfabeto utilizado tendremos que: (17; 24) =) HO (21; 10) =) LA Luego el texto en riptado \CDZA4K" es \HOLA".
MATEMATICA 10.4. JUSTIFICACION DEL ALGORITMO RSA
87
10.4. Justi a ion Matemati a del Algoritmo RSA Sea n = p q, on p y q primos y sean e y d dos numeros veri ando: e d 1 mod (n) (10.1) la en ripta ion la hemos llevado a abo ha iendo:
= me mod n mientras que la desen ripta ion la hemos llevado a abo ha iendo: m = d mod n pero esta ultima expresion no la hemos justi ado: (1) (2)
d = (me )d = mk(n)+1 = mk(n) m = m (1) por (??). (2) por la proposi ion ??, en la pagina ??.
10.5. Seguridad del Algoritmo RSA El algoritmo RSA basa su seguridad en la omplejidad del logaritmo dis reto, ya que no existe ningun algoritmo ono ido que pueda realizarlo en tiempo polinomial. Ademas nadie ha demostrado que se pueda elaborar un algoritmo para des ifrar mensajes ifrados on RSA sin ono er la lave privada. La seguridad de este algoritmo se basa en mantener en se reto p y q, asi
omo (n), ya que ono er (n) equivale a ono er p y q. n = pq (n) = p + q (n + 1) ) p + q = n + 1 (n) p y q son las rai es de la e ua ion: x2 + (n + 1 (n)) x + n = 0 luego si ono emos (n) podemos al ular p y q resolviendo la e ua ion de segundo grado anterior2, lo ual nos dara p y q y habremos roto la seguridad del sistema. 2 Re ordar
que
n
es un dato publi o.
88
CAPITULO 10. EL ALGORITMO RSA
10.5.1. Algoritmo RSA y el Algoritmo de Shor
A tualmente se esta investigando sobre ordenadores y omputa ion uanti a. Existe un algoritmo, el algoritmo de Shor, un algoritmo uanti o, el
ual eje utado sobre un ordenador uanti o es apaz de fa torizar ualquier numero en tiempo polinomial. Debido a esto en el momento en el que se logren desarrollar este tipo de ordenadores ualquier metodo riptogra o basado en la omplejidad del logaritmo dis reto sera un metodo inseguro, ya que existiran herramientas que nos permitiran romper di hos metodos en tiempo polinomial. Se puede en ontrar mas informa ion sobre este tema en: P.W.Shor, in Pro eedings of the 35th Annual Symposium on the Foundations of Computer S ien e, editado por S.Goldwasser(IEEE Computer So iety Press, CA), en 1;994. 10.5.2. Claves Debiles en RSA
Existen iertos asos para los uales el algoritmo RSA deja el mensaje original sin ambio alguno: me = m mod n Se puede omprobar que, siendo n = p q y e el exponente para odi ar n = (1 + M.C.D.(e 1; p 1))(1 + M.C.D.(e-1,q-1)) es el numero de valores de m fque quedan igual al ser odi ados. Si ha emos qeu p = 1+2 p0 y q = 1+2 q0 , on p0 y q0 primos, enton es M.C.D.(e 1,p 1) puede valer 1, 2 o p0, ananalogamente o urre on q0. Los valores posibles de n seran enton es 4, 6, 9, 2 (p0 + 1), 2 (q 0 + 1), 3 (p0 + 1), 3 (q 0 + 1) y (p0 +1) (q0 +1). Los in o ultimos son bastante improbables, luego no deben preo uparnos. Como medida de pre au ion se puede al ular n a la hora de generar las llaves publi a y privada.
10.5. SEGURIDAD DEL ALGORITMO RSA
89
10.5.3. Claves Demasiado Cortas
Para uso del RSA se re omiendan laves de, al menos, 1;024 bists. Hasta ha e po o se utilizaban laves de 512 bits, pero en Mayor de 1;999, Adi Shamir presento el dispositivo Twinkle, un ingenio apaz de fa torizar numeros de manera muy rapida, aprove hando los ultimos avan es en la optimiza ion de algoritmos espe os para esta tarea. Este dispositivo, aun no onstruido, podra ser in orporado en ordenadores de bajo oste y pondra en serio peligro los mensajes ifrdos on laves de menos de 512 bits. Teniendo en uenta los avan es de la te nologa, y suponiendo que el RSA no sea roto analti amente, deberemos es oger la longitud de la lave en fun ion del tiempo que queramos que nuestra informa ion permanez a en se reto. 10.5.4. Ataques de Intermediario
Este tipo de ataque puede darse a ualquier algoritmo de lave publi a. Supongamos que el usuario A quiere omuni arse on el usuario B. El usuario A soli ita la lave publi a del usuario B, KB , enton es un er er usuario, el usuario C, inter epta su omuni a ion y suministra a A su lave publi a KC . Enton es el usuario A tiene la lave publi a KC reyendo que es la de el usuario B. Manda un mensaje al usuario B odi ado on KC , este mensaje es inter eptado por C, des odi ado, vuelto a odi ar a onvenien ia de C
on la lave KB , lave publi a de B, y enviado a B suplantando la identidad de A. Ni A ni B se han dado uenta de que sus mensajes han sido inter eptados y modi ados. La uni a forma de evitar este tipo de ataques onsiste en asegurar a A que la lave publi a de B es autenti a. Para esto existen organismos, de on anza, que erti an las laves publi as de los usuarios, on lo ual no se puede llevar a abo este tipo de ataque si los usuarios utilizan algun tipo de erti a ion de este tipo.
90
CAPITULO 10. EL ALGORITMO RSA
10.5.5. Ataques de Texto Plano Es ogido
Existe una familia de ataques a RSA que explotan la posibilidad de que un usuario odi que y rme un uni o mensaje empleando el mismo par de llaves. Para que el ataque surta efe to, la rma debe ha erse odi ando el mensaje ompleto, no el resultado de una fun ion resumen o fun ion hash sobre el. Por ello se re omienda que las rmas digitales se lleven a abo siempre sobre una fun ion resumen del mensaje, nun a sobre el mensaje.
Otro tipo de ataque on texto plano es ogido podra ser el siguiente: para falsi ar una rma sobre un mensaje m, se pueden al ular dos mensajes individuales m1 y m2 , aparentemente inofensivos, tales que m1 m2 = m y enviarlos a la v tima para que los rme. Enton es obtendramos md1 y md2 . Aunque des onoz amos d tendremos: md1 md2 = md mod n obtendremos el mensaje m rmado. 10.5.6. Ataques de Modulo Comun
Podra pensarse que, una vez generados p y q, sera mas rapido generar tantos pares de llaves omo queramos, en lugar de tener que emplear dos numeros primos diferentes en ada aso. Sin embargo, si lo ha emos as, un ata ante podra des ifrar nuestros mensajes sin ne esidad de llave privada. sea m el texto plano, que odi amos empleando dos laves de ifrado diferentes e1 y e2 . Los riptogramas que obtenemos son:
1 = me1 mod n
2 = me2 mod n el ata ante ono era n, e1 , e2 , 1 y 2. Si e1 y e2 son primos entre s, algo muy probable, la e ua ion diofanti a: r e1 + s e2 = 1 tiene solu ion, on lo ual:
r1 s2 = me1 r me2 s = mre1 +se2 = m1 mod n Como onse uen ia de esto se deben generar p y q diferentes para ada par de laves.
10.5. SEGURIDAD DEL ALGORITMO RSA
10.5.7. Firmas digitales y RSA
91
Con el algoritmo RSA nun a se debe rmar un mensaje despues de ifrarlo, debe rmarse primero. Existen atques que aprove han mensajes primero
ifrados y luego rmados,aunque se empleen fun iones resumen.
92
CAPITULO 10. EL ALGORITMO RSA
Parte V Criptografa on Curvas Elpti as
93
Captulo 11 Curvas Elpti as En lo su esivo uando hablemos de un uerpo K supondremos uno de los siguientes asos: K = C. K = R. K = Q. K = F q on q = pr , p primo1 y r 2 N .
11.1. De ni ion de Curvas Elpti as Una urva elpti a es una urva plana, en el plano, de nida por la siguiente e ua ion: y 2 = x3 + a x + b donde a, b 2 K . De ni ion 11.1 (Curva Elpti a)
Llamaremos Curva Elpti a al siguiente onjunto:
E=
(x; y) 2 K K
tales que y 2 = x3 + a x + b [ f
Og
El punto O re ibe el nombre de punto del in nito de la urva elpti a, este punto no esta en el plano. Este punto se introdu e para poder dotar a la urva de estru tura de grupo. 1 Distinto
de 2 y 3.
95
96
CAPITULO 11. CURVAS ELIPTICAS
De ni ion 11.2 (Dis riminante de una Curva Elpti a)
Llamaremos dis riminante de una Curva Elpti a y lo denotaremos por
:
= 4 a3 + 27 b2 2 K Supondremos que x3 + a x + b no tiene rai es multiples. x3 + a x + b no tiene rai es multiples () = 4 a3 + 27 b2 6= 0. 4 2 0 -2 -4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .......................................................................................................................................... ................................................................................................................................................................................................................................................................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
Figura 11.1: Ejemplo de urva elipti a sobre R .
3
11.2. ESTRUCTURA DE GRUPO DE LAS CURVAS ELIPTICAS
97
11.2. Estru tura de grupo de las Curvas Elpti as Sea E la Curva Elpti a de nida por: y 2 = x3 + a x + b vamos a de nir la siguiente ley de grupo en E : E E +! E (P; Q) ! P + Q 1. P + O = P 8 P 2 E . O es el elemento neutro. 2. Si P 6= O y (x; y) son las oordenadas de P , se de ne P omo el punto de E de oordenadas (x; y). De nimos O omo O. 3. Si P; Q 2 E tales que P; Q 6= O se de ne P + Q del siguiente modo: a ) P 6= Q, donde P y Q tienen distinta oordenada x. Sea l =< P; Q > la uni a re ta del plano que pasa por P y Q. Tendremos que l \ E son tres puntos: l \ E = f P; Q; R g Sean (x; y) = R las oordenadas de R, enton es se de ne la suma de P y Q omo: P +Q= R donde R es el punto uyas oordenadas son (x; y). La gura ?? muestra la interpreta ion geometri a de esta suma. b ) P 6= Q, donde P y Q tienen la misma oordenada x. En este aso tendremos que Q = P , on lo ual tendremos: P + Q = P + ( P) = O
98
CAPITULO 11. CURVAS ELIPTICAS
4 2
P2
0
P1 -2
P1 + P2
-4 -1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
3
Figura 11.2: Ejemplo de la suma de dos elementos.
) P
=Q
Cuando P = Q ha emos tender el punto Q a P enton es la re ta l es la re ta tangente en el punto P , luego: l \ E = f P; R g
on lo que de ninos la suma de P onsigo mismo omo: P +P = R La gura ?? muestra la interpreta ion geometri a de esta suma. De ni ion 11.3 (Produ to por un es alar) 2 E y n 2 N podemos de nir n P :
Dado P
nP
= P + :n:): +P
De ni ion 11.4 ( E[n℄)
E[n℄ = fP 2 E tales que n P = Og Tenemos que E[n℄ E y ademas es un subgrupo nito.
99
11.2. ESTRUCTURA DE GRUPO DE LAS CURVAS ELIPTICAS
4 2 0 -2 -4
.. ... .. .. . . .. ... .. ... .. ... .. ... . . .. .. ... . . .. ... .. ... .. ... .. ............................................................................................................................................................................................................................................................................................................................................................................................................................. . .. ... .. ... .. ... .. ... ... .. ... .. ... .. ... .. ... ... .. ... .. ... .. ..
-1.5
P
P +P
-1
-0.5
0
0.5
1
1.5
2
2.5
3
Figura 11.3: Ejemplo de la suma de un elemento onsigo mismo. Si K = C tenemos que:
E [n℄ = Z=n Z=n
lo ual tiene rela ion on el he ho de que: n ' Z=n donde n son las rai es n-esimas de la unidad y se tiene que E[n℄=n2 . Teorema 11.1 (Estru tura de grupo de las Curvas Elpti as) (E; +) es un grupo abeliano. Donde E esta de nida por: y 2 = x3 + a x + b Demostra ion: 1. En primer lugar veamos que si P = (x; y) 2 E enton es el P = (x; y ) 2 E :
Como P 2 E enton es tendremos: y 2 = x3 + a x + b ) y 2 x3 a x b = 0 enton es tendremos que: ( y)2 x3 a x b = 0 ) ( y)2 = x3 + a x + b luego P = (x; y) 2 E .
punto
100
CAPITULO 11. CURVAS ELIPTICAS
2. En segundo lugar veamos que P + Q 2 E 8 P; Q 2 E : P o Q son O: O+Q = Q2E P +O = P 2E O+O = O 2E P; Q 6= O: Se dedu e inmediatamente de las de ni iones y del he ho de que si P 2 E enton es P 2 E . 3. O es el elemento neutro y la suma de un punto P on su opuesto P es el elemento neutro. Si sumamos un elemento on su opuesto se puede ver que la re ta que los une no orta a la urva elpti a mas que en dos puntos, no en tres. Es por esta razon que se introdu e O omo punto del in nito para dotar al onjunto E de estru tura de grupo. Luego por de ni ion la suma de un punto on su opuesto es O. Un ejemplo de esto se puede ver en la gura ??. 4. El elemento opuesto es uni o: Sea P = (x:y) 2 E un punto de la urva elpti a, enton es por de ni ion su elemento opuesto sera P = (x; y), al estar la oordenada y determinada de forma uni a enton es la segunda oordenada de P esta determinada tambien de forma uni a. Corolario 11.1 jE j P = O 8 P 2 E , donde jE j es el numero de puntos de E .
101
11.3. CURVAS ELIPTICAS SOBRE CUERPOS FINITOS
11.3. Curvas Elpti as sobre Cuerpos Finitos Los uerpos nitos sobre los que vamos a onsiderar las urvas elpti as seran de la forma F q , on q = pr , donde p 6= 2; 3 y primo. Puesto que en los uerpos nitos tenemos un numero nito de puntos enton es ualquier urva sobre un uerpo nito tiene un numero nito de puntos distintos. Teorema 11.2 (de Hasse)
Sea E una urva elpti a sobre F q on q = pr . Si denotamos por N (E ) al numero de puntos de di ha urva sobre F q enton es tenemos que:
j N ( E ) q 1j 2 p q
Este resultado es analogo para urvas elpti as que veri quen la hipotesis de Riemann. Este resultado nos permite a otar el numero de puntos que tiene una urva elpti a sobre un uerpo nito. Existe un algoritmo para el al ulo de N(E), el tiempo de omputo de di ho algoritmo es O(log pr ), es un algoritmo polinomi o y su autor es Rene S hoof. 4 2 0 -2 -4
... ... .. .. . . .. ... .. ... .. ... .. ... . . .. ... .. ... .. ... .. ... . . .. . ............................................................................................................................................................................................................................................................................................................................................................................................................................. ... .. ... .. ... .. ... ... .. ... .. ... .. ... .. ... ... .. ... .. ... .. ... .. .
-1.5
P
P
-1
-0.5
0
0.5
1
1.5
2
2.5
3
Figura 11.4: Ejemplo de la suma de un elemento y su opuesto.
102
CAPITULO 11. CURVAS ELIPTICAS
11.3.1. Orden de las Curvas Elpti as de nidas sobre Cuerpos de Cara teristi a 2 Teorema 11.3 (de Weil) Sea E una urva elpti a de nida sobre F p on p primo y m 2 Z, enton es m
se veri a:
N (E ) = pm + 1
( m + m )
donde y son las ra es omplejas de la e ua ion: x2 + (N (E )0 p 1) x + p = 0 y N (E )0 es el orden de la urva E de nida sobre F m0 on p primo y m0 tal que m0 <<< m.
2Z
Consideremos la siguiente urva elpti a: y 2 + x y = x3 + x2 + 1 vamos a al ular su orden en el uerpo F 28 . 1. Consideremos di ha urva en otro uerpo de ara tersti a 2 \bastante menor" que F 28 , por ejemplo F 21 . En F 21 di ha urva uni amente tiene dos puntos: (0; 1). O. Luego N (E )0 = 2. 2. Cal ulamos y , que seran solu ion de la e ua ion: x2 + (N (E )0 p 1) x + p = x2 x + 2 = 0 p 7i 1 + = p2 1 7i = 2 3. Cal ulamos N (E ): N (E ) = 28 + 1
1
p
2
7i
!8
p ! 1 + 7 i 8 = 288 2
Luego la urva y2 + x y = x3 + x2 + 1 tiene 288 puntos sobre F 28 .
11.3. CURVAS ELIPTICAS SOBRE CUERPOS FINITOS
11.3.2. Ca ulos en Coordenadas Proye tivas
103
Uno de los mayores in onvenientes que tiene la suma de puntos en urvas elpti as es el al ulo de inversos modulares, el ual requiere mas tiempo de
omputo que las sumas y multipli a iones modulares. Chudnovsky y Chudnovsky propusieron un metodo para sumar puntos de urvas elpti as, sin ne esidad de realizar inversiones modulares, mediante oordenadas proye tivas. Lo primero que tenemos que ha er es transformar la e ua ion que de ne la urva elpti a mediante el ambio de las oordenadas a nes (x; y) a las
oordenadas proye tivas (x0; y0; z0 ) de nido por: (x; y) 7 ! (x0; y0) = (x0 =z02 ; y0=z03 )
on z0 2 F q . La e ua ion de la urva en oordenadas proye tivas sera: y 02 = x03 + a z 04 x0 + b z 06 Tenemos que ada punto (x; y) de la urva original, en oordenadas a nes, tiene multiples representa iones en oordenadas proye tivas (x0 ; y0; z0) dependiendo del valor que tome z0 . Una representa ion trivial del punto (x; y), en
oordenadas a nes, a oordenadas proye tivas es (x; y; 1). Cada punto en
oordenadas proye tivas solo tiene una uni a representa ion en oordenadas a nes. Sean P1 = (x1 ; y1), P2 = (x2 ; y2) dos puntos de la urva en oordenadas a nes y sea P3 = (x3 ; y3) su suma en oordenadas a nes tambien. Sean P10 = (x01 ; y10 ; z10 ) y P2 = (x02 ; y20 ; z20 ) dos de las posibles representa iones en
oordenadas proye tivas de los puntos P1 = (x1 ; y1) y P2 = (x2 ; y2). Para
al ular las oordenadas proye tivas P30 = (x03 ; y30 ; z30 ) del punto P3 = (x3 ; y3) de nimos los siguientes parametros: U1 = x01 z202 U2 = x02 z102 S1 = y10 z203 S2 = y20 z103 y realizamos las siguientes opera iones: Si U1 6= U2 o S1 6= S2 se al ula W = z10 z20 y se apli an las e ua iones: x03 = (U1 + U2 ) (x01 x02 + a W 2 ) + 2 b W 4 2 y10 y20 W y30 = z20 (U1 + 3 U2 ) (a S1 z10 x012 y20 ) + + z10 (3 U1 + U2 ) (x022 y10 a S2 z20 ) + 4 b W 3 (S1 S2 ) z30 = U2 U1
104
CAPITULO 11. CURVAS ELIPTICAS
Si U1 = U2 y S1 = S2 de nimos los siguientes parametros: S = 4 x01 y102 M = 3 x012 + a z104 T = M2 2 S y apli amos las siguientes e ua iones: x03 = T y30 = M (S T ) 8 y104 z30 = 2 y10 z10 Ahora ya tenemos las oordenadas proye tivas de P30 : P30 = (x03 ; y30 ; z30 ) para obtener las oordenadas a nes de P3: x0 y 0 P3 = (x3 ; y3 ) = ( 032 ; 033 ) z3 z3
Se puede ver que no es ne esario el al ulo de ningun inverso modular, pero se realizan mas multipli a iones on respe to a las utilizadas en el al ulo
on oordenadas a nes. A pesar de esto este metodo es un 30 % mas rapido que si usaramos oordenadas a nes.
11.4. Como obtener los multiplos de puntos de una Curva Elpti a P
Mu has ve es en riptogra a es ne esario al ular n P on n 2 F q y 2 E , veamos algunos de los pro edimientos utilizados para ello.
Supongamos que tenemos una urva elpti a de nida por la e ua ion: y 2 = x3 + a x + b sobre F q , on q = pr , p primo y r 2 N .
11.4. COMO OBTENER LOS MULTIPLOS DE PUNTOS DE UNA CURVA ELIPTICA
11.4.1. Pro edimiento de Izquierda a Dere ha Para al ular n P = Q, lo primero que tenemos que ha er es expresar n
en binario:
n10 = (nk 1 ; : : : ; n0 )2 on ni 2 f0; 1g
El algoritmo es el siguiente: 1. Q = O. 2. Para i = k 1 hasta i = 0: a ) Q = 2 Q. b ) Si bi = 1 enton es: 1) Q = Q + P . 3. i = i 1 y vuelta al paso 2. 4. Obten ion de Q.
Ejemplo 11.1 (Pro edimiento de Izquierda a Dere ha)
Sea la urva elpti a de nida por la e ua ion:
y 2 = x3
563
x
en F 751 , y sea P = (484; 590) un punto de di ha urva. Supongamos que queremos al ular el punto Q = 20 (484; 590).
20 es el siguiente: 2010 = (1; 0; 1; 0; 0)2
El desarrollo en binario de
apli ando el algoritmo tendremos:
i hi
5 4 3 2 1 0
-
Q
O
1 2 O + (484; 590) = (484; 590) 0 2 (484; 590) = (159; 124) 1 2 (159; 124) + (484; 590) = (172; 255) + (484; 590) = (514; 201) 0 2 (514; 201) = (79; 418) 0 2 (79; 418) = (317; 181)
105
106 Luego
CAPITULO 11. CURVAS ELIPTICAS
20 (484; 590) = (317; 181).
El in onveniente de este metodo es que en ada suma elemental de puntos es ne esario el al ulo de un inverso modular2 para la pendiente de la re ta de nida por los sumandos. Una forma de evitar este in onveniente es utilizando las denominadas \ oordenadas proye tivas3 ". Para la realiza ion pra ti a de este ejemplo hemos utilizado el programa Mathemati a usando el algoritmo de al ulo en oordenadas proye tivas para
al ular tanto la suma de dos puntos distintos de la urva elpti a omo para el al ulo de la suma de un punto onsigo mismo.
11.4.2. Fun iones de S hoof Siempre que n P =6 O se tiene que:
2 2 n 2 n+1 n 1 n+1 n+2 n 1 n P (x; y ) = x 2n ; 4 y 3n Las fun iones i se de nen de forma re ursiva: 1(x; y) = 1 0 (x; y) = 0 1 (x; y) = 1 2 (x; y) = 2 y 3 (x; y) = 3 x4 + 6 a x2 + 12 b x a2 4 (x; y) = 4 y (x6 + 5 a x4 + 20 b x3 5 a2 x2 4 a b x 8 b2
:::::::::::::::::::::::::::
2n(x; y)
2 2 = n( n+2 n 21 y n 2 n+1) para n = 3; 4; : : :
2n+1(x; y) = n 2 3n n 1 3n+1 para n = 3; 4; : : : Este metodo no es re omendable ya que, en general, resulta algo mas lento que el de izquierda a dere ha des rito en el apartado anterior. 2 El
al ulo de inversos modulares tiene un mayor oste omputa ional que las sumas o multipli a iones modulares. 3 Apartado ?? en la p agina ??.
a3 )
11.5. SISTEMA CRIPTOGRAFICO DE MASSEY-OMURA
107
11.5. Sistema Criptogra o de Massey-Omura Supongamos que tenemos dos usuarios A y B que desean omuni arse entre s utilizando un sistema riptogra o basado en urvas elpti as. Supongamos que tenemos: y 2 = x3 + a x + b
E, F q on q = pr , donde p >> 0 y p primo. Los datos publi os seran los siguientes: a; b 2 F q . N(E), numero de elementos de la urva elpti a. Cada usuario elige un numero e tal que: M.C.D (e; N (E )) = 1 () e 2 (Z=N (E )) por el algoritmo de Eu lides al ulamos d = e 1 mod N(E). Los mensajes que queramos transmitir se identi aran on puntos Pm 2 E . E = f (x; y ) 2 F q F q j y 2 = x3 + a x + b g La situa ion es la siguiente: La llave del usuario A es (eA; dA). La llave del usuario B es (eB ; dB ). Sea m el mensaje que quiere mandar el usuario A al usuario B : 1. El usuario A identi a el punto Pm 2 E que se orresponde on m. 2. El usuario A manda al usuario B el mensaje en riptado eA Pm. 3. El usuario B manda al usuario A el mensaje eB eA Pm . 4. El usuario A manda al usuario B el mensaje dA eB eA Pm.
108
CAPITULO 11. CURVAS ELIPTICAS
Luego el usuario B re ibe el mensaje m en riptado omo dA eB eA Pm, veamos omo se obtiene el original: eA dA 1 mod N(E) eA dA = 1 + N (E ) on 2 Z apli ando esto tendremos: dA eB eA Pm = eA dA eB Pm = (1 + N (E ))eB Pm = = eB Pm + eB N (E ) Pm (=) eB Pm (*) ya que N (E ) Pm = 0 al ser N (E ) el numero de puntos de E y Pm 2 E . Luego el usuario B lo que re ibe realmente es eB Pm , luego para des ifrar el mensaje: Pm = dB eB Pm Una vez que el usuario B ono e Pm 2 E tiene que identi ar el mensaje m. Este metodo es util para mandar mensajes entre dos personas y ademas es seguro. 11.5.1. Debilidades de este Sistema Criptogra o
Supongamos que tenemos dos usuarios que van a omuni arse entre s utilizado este sistema riptogra o, el usuario A y el usuario B. Supongamos tambien que hay un ter er usuario, el usuario C. Las laves de los usuarios son las siguientes: Claves privadas Usuario A Usuario B Usuario C e d
eA dA
eB dB
eC dC
Un posible situa ion que se puede dar es la siguiente: 1. El usuario A manda al usuario B un mensaje ifrado eA Pm. 2. El usuario C inter epta el mensaje, impidiendo que el usuario B lo re iba. El usuario C asume la identidad del usuario B y devuelve al usuario A el mensaje re ibido, pero en lugar de estar multipli ado por la lave de en ripta ion del usuario B, la ual no ono e, lo manda multipli ado por su lave de en ripta ion eC , luego manda al usuario A el mensaje eC eA Pm .
11.5. SISTEMA CRIPTOGRAFICO DE MASSEY-OMURA
109
3. El usuario A re ibe el mensaje eC eA Pm , reyendo que es la respuesta del usuario B y devuelve el mensaje al usuario B multipli ado por su
lave de desen ripta ion dA eC eA Pm = eC Pm. 4. El usuario C vuelve a inter eptar la omuni a ion, impidiendo que el usuario B re iba el mensaje. A ontinua ion multipli a el mensaje por su lave de desen ripta ion dC eC Pm = Pm, on lo ual el usuario C obtiene el mensaje que el usuario A haba mandado al usuario B. 5. El usuario C modi a a su onvenien ia, si lo estima ne esario, el mensaje Pm. Llamemos Pm0 a di ho mensaje modi ado. Enton es el usuario C asume la identidad del usuario A y manda al usuario B el mensaje modi ado multipli ado por su lave de en ripta ion eC Pm0 . 6. El usuario B re ibe el mensaje del usuario C, reyendo que es del usuario A, y lo devuelve al usuario A multipli ado por su lave de en ripta ion eB eC Pm0 . 7. El usuario C inter epta la omuni a ion, impidiendo que el mensaje llege al usuario A, y manda al usuario B el mensaje multipli ado por su lave de desen ripta ion dC eB eC Pm0 = eB Pm0 . 8. El usuario B re ibe el mensaje del usuario C, reyendo que es del usuario A y lo desen ripta utilizando su lave de en ripta ion. Luego el mensaje que re ibe el usuario B es dB eB Pm0 = Pm0 . Podemos ver que el usuario B re ibe una informa ion a la que ya ha tenido a
eso otro usuario, el usuario C, pudiendola haber modi ado di ho usuario. Este problema se redu e al problema de la autenti a ion. Para veri ar la autenti idad de un mensaje, o lo que es lo mismo que proviene de quien di e provenir, se utilizan las rmas digitales. Esta sera una buena solu ion para evitar un ataque del tipo que aqui hemos expuesto.
110
CAPITULO 11. CURVAS ELIPTICAS
11.6. Equivalen ia entre puntos de una Curva Elpti a y Mensajes Ya hemos visto un sistema riptogra o basado en urvas elpti as, pero quedan pendientes dos detalles: Como asignar los puntos de una urva elpti a al mensaje que queremos
ifrar. Como re uperar un mensaje a partir de los puntos de la urva elpti a. Supongamos que tenemos una urva elpti a E de nida sobre un uerpo F q , donde q = pr , on p primo y r 2 N . Sea m un texto que queremos en riptar utilizando algun algoritmo basado en urvas elpti as. 11.6.1. Como en ontrar los puntos de la urva
Los pasos a realizar son los siguientes: 1. Asignaremos a ada letra del mensaje un valor numeri o de a uerdo
on un alfabeto previamente estable ido, omo puede ser alguno de los alfabetos mostrados en el apendi e ?? en la pagina ??. A ada letra del mensaje le asignaremos un punto de la urva elpti a. En lo su esivo entenderemos por mi al entero que representa a la letra i-esima del mensaje m, y a Pm al punto de E orrespondiente a mi . 2. Estable eremos un entero >> 0 tal que la probabilidad de no poder asignar a mi un punto de la urva E sea de 1 entre 2, esto es ne esario ya que en F q no todos los elementos poseen raz uadrada. En la pra ti a = 30, y, en el peor de los asos on = 50 debera ser su iente. i
Ademas de todo esto supondremos lo siguiente: 0 mi < M para todo mi. q > M. Podemos es oger M omo un entero mayor o igual que el numero de smbolos que estemos utilizando. Pero hay que tener uidado, ya que en el sistema riptogra o de Massey-Omura hay que es oger M de tal forma que veri que: ((M 1) +) < N (E )
111
11.6. EQUIVALENCIA ENTRE PUNTOS DE UNA CURVA ELIPTICA Y MENSAJES
3.
Pm
i
= (xi; yi) 2 E .
Podemos estable er una orresponden ia biye tiva entre el onjunto: fmi + j gj=1 (11.1) y un onjunto de puntos de F q . Tenemos que: F q = F p = F p :r:): F p y expresando ada elemento de (??) en base p obtendremos un elemento4 de F q : r 1 X ai pi = (ar 1 ; : : : ; a0 ) 2 F q a= i=0 llamemos a este elemento de F q xi , y a ontinua ion al ulemos yi de la siguiente forma: yi2 = x3i + a xi + b yi sera la raz uadrada de yi en F q . Para saber si un elemento de F q posee rai es uadradas podemos utilizar la \Ley de re ipro idad
uadrati a", y aunque esto no nos da la solu ion, en el aso de que exista, yi de la e ua ion yi2 yi mod p, existen algoritmos para determinar la solu ion, uando exista. Podemos en ontrarnos dos asos: La e ua ion yi2 yi mod p tiene solu ion, enton es Pm = (xi; yi). La e ua ion yi2 yi mod p no tiene solu ion. r
i
Tenemos que xi = mi +j , para un ierto j 2 f1; : : : ; g, enton es sumamos 1 a j , on lo que: xi = mi + j + 1
al ulamos el nuevo yi2 y omprobamos si la e ua ion yi2 yi mod p tiene solu ion. En el aso de no tener solu ion para ningun valor de j tendremos que in rementar y volver a empezar desde el prin ipio5. Con este metodo hemos asignado a ada letra mi un punto de la urva elpti a E , pero no hemos en riptado el mensaje. Una vez al ulados los puntos de la urva que forman el mensaje hay que pro eder a en riptarlos on algun metodo. 4 De
r
5 Para
digitos. todos los mi del mensaje.
112
CAPITULO 11. CURVAS ELIPTICAS
11.6.2. Como obtener el mensaje
Una vez re ibido el texto en riptado pro ederemos a desen riptarlo, enton es obtendremos una serie de puntos de la urva E , los uales tenemos que transformar en letras para poder leer el mensaje. Supongamos que estamos utilizando un alfabeto de n smbolos y que ya hemos desen riptado el mensaje re ibido, obteniendo de esta forma una su esion de puntos fPm = (xi ; yi)gsi=1 de la urva elpti a E . i
Para obtener la letra orrespondiente a ada punto Pm pro ederemos de la siguiente forma: 1. Cal ulamos 1 en F q . 2. mi = (xi 1) 1 en F q . a ) Si mi 2 f0; : : : ; n 1g pasamos al siguiente punto. b ) Si mi 2= f0; : : : ; n 1g tomamos xi = xi 1 y repetimos el al ulo hasta que obtengamos que mi 2 f0; : : : ; n 1g 3. Consultamos en el alfabeto utilizado que letra se orresponde on mi. i
11.7. El Logaritmo Elpti o La opera ion de suma de puntos en una urva elpti a de nida en un
uerpo nito F q es una opera ion ostosa de realizar. Si ono emos P; Q 2 E de tal forma que: Q = n P = P + :n:): +P donde n es un entero no ono ido. El al ulo del entero n no es fa il, sobre todo uando trabajamos en uerpos de dimension elevada. Este problema se ono e omo el problema del \logaritmo elpti o ", de nido en el grupo aditivo de una urva elpti a. Es un problema analogo al del \logaritmo dis reto " en un grupo multipli ativo nito. De esto se dedu e que podemos utilizar el logaritmo elpti o omo una fun ion de una sola dire
ion para dise~nar sistemas riptogra os de lave publi a. La seguridad de un sistema
riptogra o basado en fun iones de este tipo depende de la omplejidad de
al ulo del logaritmo elpti o, la ual es mu ho mayor que la del logaritmo dis reto.
11.7. EL LOGARITMO ELIPTICO
113
Por ejemplo, el al ulo de un logaritmo elpti o on p un entero de 30 dgitos requiere aproximadamente unos 3;000 a~nos de un superordenador Cray, mientras que el al ulo de un logaritmo dis reto en un uerpo nito de esa misma dimension requiere, solamente, un da en ese mismo ordenador. En la tabla6 ??, en la pagina ??, podemos ver una ompara ion entre metodos de urvas elpti as y el RSA. El ordenador utilizado es un ordenador de 109 FLOPS. Dgitos Sistema Tiempo de ruptura 30 RSA 003 Segundos 30 Curvas Elpti as 11 Das 0 35 RSA 1 2 Segundos 35 Curvas Elpti as 1 A~no 0 40 RSA 6 0 Segundos 40 Curvas Elpti as 3 103 A~nos 50 RSA 200 Minutos 50 Curvas Elpti as 3 106 A~nos 85 RSA 1 Da 85 Curvas Elpti as | 100 RSA 28 Das 100 Curvas Elpti as | 0 200 RSA 3 8 106 A~nos 200 Curvas Elpti as | Figura 11.5: Compara ion entre los metodos RSA y urvas elpti as.
6 Obtenida
del libro \Criptografa Digital, Fundamentos y Apli a iones" de Jose Pastor Fran o y Miguel Angel Sarasa Lopez.
114
CAPITULO 11. CURVAS ELIPTICAS
11.8. Test de Primalidad on Curvas Elpti as Proposi ion 11.1
Consideremos la urva elpti a E dada por:
y 2 = x3 + a x + b y de nida sobre Z, es de ir a; b 2 Z. Sea En la redu
ion modulo n de E , es de ir las solu iones de la urva modulo n. Sea m un entero y q un primo que divida a m y p 4 ( n + 1)2, enton es si existe un punto P 2 E tal que:
que sea mayor que
= O. m P 6= O . q
mP
enton es n es primo.
Demostra ion:
Supongamos que n no es primo, enton es existira p 2 N primo tal que p pn y que divide a n. Sea E 0 la urva elpti a E onsiderada modulo p y sea m0 = N (E 0 ), enton es por el teorema de Hasse tendremos: p p p m0 p + 1 + 2 p = ( p + 1)2 4 n + 1 2 < q
dado que q es primo y m0 existira u 2 Z tal que:
tendremos que M.C.D (m',q) = 1, luego u q 1 mod m0 Sea P 0 el punto P onsiderado modulo p, por hipotesis tenemos que: m P = O ) m P 0 = O ) u (m P 0 ) = O (11.2) m m P = O ) P0 = O (11.3) q q Desarrollando y teniendo en uenta (??) tenemos que: m 0 m P = u q P0 = u m P0 = O (11.4) q q lo ual esta en ontradi
ion on (??). Luego la suposi ion de que n no es primo es falsa, n es primo. < q
11.8. TEST DE PRIMALIDAD CON CURVAS ELIPTICAS
115
11.8.1. Des rip ion pra ti a del Algoritmo Sea n 2 Z un numero del que queremos determinar su primalidad. El
algoritmo es el siguiente: 1. Sele
ionamos, aleatoriamente, tres enteros a; x; y modulo n. 2. Cal ulamos b de la siguiente forma: b y 2 x3 a x mod n Enton es tenemos que P = (x; y) es un elemento de E , donde E viene dado por: y 2 = x3 + a x + b 3. Utilizamos el algoritmo de S ho7 para en ontrar un numero m el ual, si n es primo, es igual al orden de E sobre F n . Una vez en ontrado m si no podemos ponerlo de la forma m = k q , donde k 2 y es un entero peque~no y q es un \probable primo"8 enton es elegimos, de forma aleatoria otros a; x; y y repetimos el pro eso hasta que obtenemos un m que satisfaga las ondi iones anteriores. 4. Cal ulamos m P y k P . Si m P 6= O enton es n es un numero ompuesto, no es primo, ya que si fuera primo m sera el orden de E y enton es m P = O para todo P 2 E . Si k P = O, lo ual no es muy probable, deberemos elegir otros a; x; y y empezar desde ero. Si m P = O y k P 6= O, k = m=q, enton es por la proposi ion anterior n es primo, suponiendo que q sea primo9. Una vez llegado hasta este paso el problema se redu e a probar la primalidad de q, el ual tiene una magnitud de n=2, omo mu ho. Repetimos el mismo pro eso, pero sustituyendo n por q, reiterando el test de primalidad t ve es. t no sera mayor que log2 n. Enton es habremos obtenido un numero qt del ual queremos ono er si es o no primo, pero del que sabemos que qt 1 es realmente primo, no probablemente, y repitiendo el mismo razonamiento tendremos que qt 2 es primo y as su esivamente hasta llegar a q1 = q , y al ser q primo tendremos que n es primo. 7U
otro algoritmo para determinar el orden de una urva elpti a. numero q satisfa e algun algoritmo probabilisti o de primalidad. 9 S olo sabemos que primo on una probabilidad alta.
8 El
116
CAPITULO 11. CURVAS ELIPTICAS
Parte VI Apendi es
117
Apendi e A Alfabetos Para onstruir un alfabeto, hemos de onsiderar los smbolos que ne esitamos utilizar y etiquetarlos on un numero a ada uno. Hay que tener en
uenta que si la antidad de smbolos utilizada no es un numero primo hay que tener uidado a la hora de dividir, ya que no todos los numeros tendran inverso en Z=n, por eso hemos in luido un par de alfabetos, el de 29 y 37 smbolos, los uales ontienen una antidad \prima" de smbolos, de esta manera en algunos ejemplos no tenemos la ne esidad de omprobar la existen ia de elementos inversos.
119
120
APENDICE A. ALFABETOS
A.1. Alfabeto on 29 smbolos No onsideramos la letra W dada su po a fre uen ia en el idioma espa~nol. Smbolo Entero Smbolo Entero \A" 0 \O" 15 \B" 1 \P" 16 \C" 2 \Q" 17 \D" 3 \R" 18 \E" 4 \S" 19 \F" 5 \T" 20 \G" 6 \U" 21 \H" 7 \V" 22 \I" 8 \X" 23 \J" 9 \Y" 24 \K" 10 \Z" 25 \L" 11 \" 26 \M" 12 \," 27 \N" 13 \." 28 \N~ " 14 Cuadro A.1: Alfabeto de 29 smbolos.
A.2. ALFABETO CON 36 SIMBOLOS
A.2. Alfabeto on 36 smbolos Smbolo Entero Smbolo Entero \0" 0 \I" 18 \1" 1 \J" 19 \2" 2 \K" 20 \3" 3 \L" 21 \4" 4 \M" 22 \5" 5 \N" 23 \6" 6 \O" 24 \7" 7 \P" 25 \8" 8 \Q" 26 \9" 9 \R" 27 \A" 10 \S" 28 \B" 11 \T" 29 \C" 12 \U" 30 \D" 13 \V" 31 \E" 14 \W" 32 \F" 15 \X" 33 \G" 16 \Y" 34 \H" 17 \Z" 35 Cuadro A.2: Alfabeto de 36 smbolos.
121
122
APENDICE A. ALFABETOS
A.3. Alfabeto on 37 smbolos No onsideramos la letra W dada su po a fre uen ia en el idioma espa~nol. Smbolo Entero Smbolo Entero \0" 0 \I" 19 \1" 1 \J" 20 \2" 2 \K" 21 \3" 3 \L" 22 \4" 4 \M" 23 \5" 5 \N" 24 ~ \6" 6 \N" 25 \7" 7 \O" 26 \8" 8 \P" 27 \9" 9 \Q" 28 \" 10 \R" 29 \A" 11 \S" 30 \B" 12 \T" 31 \C" 13 \U" 32 \D" 14 \V" 33 \E" 15 \X" 34 \F" 16 \Y" 35 \G" 17 \Z" 36 \H" 18 Cuadro A.3: Alfabeto de 37 smbolos.
Apendi e B Maquinas de Turing En las maquinas de Turing tendremos: Un onjunto de smbolos: S = fs1 ; s2 ; : : : ; sn g
on n < 1. Un onjunto de estados: E = fq0 ; q1 ; : : : ; qr g
on r < 1. Un onjunto de a
iones para la abeza le tora: L = fI; D; N g donde: 1. I indi a que la abeza le tora se desplazara ha ia la izquierda. 2. D indi a que la abeza le tora se desplazara ha ia la dere ha. 3. N indi a que la abeza le tora no se movera. Una maquina de Turing onsiste en una inta in nita en la que hay una su esion in nita de smbolos del onjunto S y una abeza le tora que va a tuando sobre los elementos de la inta.
123
124
APENDICE B. MAQUINAS DE TURING
La maquina posee un estado, que es el que determina la a
ion de la
abeza le tora: 1. Cambia el smbolo. 2. Cambia el estado. 3. Se mueve ha ia la izquierda, dere ha o no se mueve. 4. La maquina para. mientras la maquina no pare realiza 1, 2 y 3. El ambio de smbolo y estado depende del estado en el que se en uentre la maquina. Por ejemplo: S = fa; bg E = fq0 ; q1 ; q2 g La forma de a tuar de la abeza le tora dependera del estado de la maquina y del smbolo que haya leido, luego su forma de a tuar vendra dada por la siguiente tabla: a b q0 a,q1 ,I a,q0,D q1 b,q2 ,N PARAR q2 PARAR b,q1 ,N Cuadro B.1: Tabla de estados y smbolos de una Maquina de Turing. Donde P indi a que la maquina para, es de ir s la maquina esta en el estado q0 y lee de la inta el smbolo b la maquina para y de igual forma para el estado q2 y el smbolo a. Por ejemplo supongamos que el estado ini ial de la maquina de Turing es q0 , podemos ver en la gura ?? el fun ionamiento de la maquina de Turing
orrespondiente a la tabla ??. Diremos que una fun ion es omputable Turing s existe una maquina que la realiza, es de ir, existe una maquina de Turing que para ualquier elemento del dominio de la fun ion produ e la misma salida que la fun ion.
125
...
5
4
3
2
1
0
1
2
3
4
5
6
7
8
a
b
b
b
a
a
b
a
b
b
a
b
a
a
...
q0
...
5
4
3
2
1
0
1
2
3
4
5
6
7
8
a
b
b
b
a
a
b
a
b
b
a
b
a
a
...
q1
...
5
4
3
2
1
0
1
2
3
4
5
6
7
8
a
b
b
b
b
a
b
a
b
b
a
b
a
a
...
q2
...
5
4
3
2
1
0
1
2
3
4
5
6
7
8
a
b
b
b
b
a
b
a
b
b
a
b
a
a
...
q1
...
5
4
3
2
1
0
1
2
3
4
5
6
7
8
a
b
b
b
b
a
b
a
b
b
a
b
a
a
La m aquina de Turing para, ya que lee b en el estado q1 .
Figura B.1: Fun ionamiento de una Maquina de Turing.
...
126
APENDICE B. MAQUINAS DE TURING
Apendi e C Ejer i ios propuestos en lase Ejer i io 1 Dados m; n 2 Z probar que existe d 2 Z tal que:
(m; n) = (d) donde (m; n) = f m + n tal que ; 2 Z g y (d) es el ideal generado
por d.
Solu ion:
(m; n) (d) Sea m + n 2 (m; n) y d = M.C.D (m; n) enton es tendremos: m = 1 d on 1 2 Z n = 2 d on 2 2 Z luego: m + n = (1 d) + (2 d) = ( 1 + 2 ) d 2 (d) (d) (m; n) on d = M.C.D (m; n) Por de ni ion de d tenemos: m = 1 d on 1 2 Z n = 2 d on 2 2 Z luego m; n 2 (d) y ualquier ombina ion lineal suya pertene era a (d), enton es: (1 d) + (2 d) 2 (d) 127
128
APENDICE C. EJERCICIOS PROPUESTOS EN CLASE
segun variemos y sobre Z iremos obteniendo los elementos de (d) y todos estos elementos pertene eran a (m; n). Ejer i io 2 Sea n un numero entero positivo. Demostrar que todo entero a se puede es ribir de la siguiente forma:
a = a0 + a1 n + a2 n2 + : : : + ar nr Solu ion:
Utilizando el algoritmo de Eu lides tendremos: a = q0 n + a0 q0 = q1 n + a1 q1 = q2 n + a2
::::::::::::::: qr n + ar qr+1 b + 0
= =
on ai < n para todo i. En algun momento llegaremos a obtener un resto
ero ya que los qi van de re iendo y a que estamos operando on numeros nitos. Si vamos sustituyendo en la primera expresion q0 por su valor, depues q1 y asi su esivamente on todos los qi llegaremos a una expresion de este tipo: a = a0 + a1 n + a2 n2 + : : : + ar nr qr 1 qr
129 Ejer i io 3 Sean P (x); Q(x) 2 Z[x℄ dos polinomios: P ( x) =
n X i=1
ai
xi
y
Q(x) =
m X i=1
bi xi
donde ai ; bi 2 Z . Determinar el tiempo ne esario para al ular P (x) Q(x) sabiendo que n m y que ai ; bi t. +
Solu ion:
En primer lugar tenemos que: P (x) Q(x) = H (x) =
nX +m k=0
k xk
donde k =
X i+j =k
ai bj
puesto que un polinomio de grado m tiene m + 1 oe ientes y que m n tendremos que el al ulo de ada oe iente k supondra, omo mu ho, el
al ulo de m + 1 multipli a iones y m sumas. Sabemos, por las hipotesis, que ai y bj son menores o iguales que un ierto t para todos los i; j , luego los numeros que estaremos sumando seran menores o iguales que t2 . Y omo tenemos que sumar m de estos numeros tendremos que el mayor numero que podemos obtener de estas opera iones es m t2. Sabemos que el numero de bits ne esarios para representar t sera: [log2 t℄ + 1 y de igual modo el numero de bits ne esarios para representar m t2 sera: log2(m t2) + 1 De todo esto se dedu e que el numero de opera iones para multipli ar m + 1 numeros menores que t es: (m + 1) ([log2 t℄ + 1)2 y que el numero de opera iones ne esarias para sumar m numeros menores o iguales que m t2 son: m log2 (m t2 ) + 1 2
130
APENDICE C. EJERCICIOS PROPUESTOS EN CLASE
por lo tanto el numero de opera iones ne esario para el al ulo de ada
oe iente sera: (m + 1) ([log2 t℄ + 1)2 + m log2 (m t2 ) + 12 Como el polinomio H (x) = P (x) Q(x) es de grado n + m tiene n + m + 1
oe ientes, luego el numero de opera iones, a nivel de bits, ne esario para
al ular di ho polinomio sera: (n + m + 1) (m + 1) ([log2 t℄ + 1)2 + m log2(m t2 ) + 12 Ejer i io 4 + Sean n; m 2 Z on n m. Determinar el tiempo ne esario para al ular:
n m
= m! (nn!
n (n 1) : : : (n = m)! m!
m + 1)
Solu ion:
Tenemos que realizar m 1 multipli a iones y luego m 1 divisiones. Tenemos que n (n 1) : : : (n m + 1) < nm = n nm 1 . Como el numero de bits de n es [log2 n℄ + 1 y teniendo en uenta que el numero de bits de un produ to es menor o igual que la suma de los bits de los numeros multipli ados tendremos que el numero de bits de nm es menor o igual que m ([log2 n℄ + 1), y omo para al ular nm tenemos que realizar m 1 multipli a iones enton es tendremos que el numero de opera iones, a nivel de bits, que tenemos que realizar es: (m 1) m ([log2 n℄ + 1)2 y omo tambien tenemos que realizar m 1 divisiones el numero total de opera iones sera: 2 (m 1) m ([log2 n℄ + 1)2
131 Ejer i io 5 Sea:
on aij
A=
2 Z=n.
Probar que existe A 1
a11 a12 a21 a22
() jAj 2 (Z=n)
Solu ion:
) j A es invertible, enton es existe A 1 : AA 1 =I
de esta identidad tenemos: jA A 1 j = jI j = 1
luego:
jA A 1 j = jAj jA 1 j = 1
luego jAj 2 (Z=n) . ( j jAj = (a11 a22 ) (a12 a21 ) 2 (Z=n) . De namos la siguiente matriz: 1 B = 1 a22 a12 a21 a11 jAj jAj Esta matriz es la inversa de A: 1 1 a a a a 11 12 22 12 A jAj B = jAj a21 a22 a21 a11 = 1 a a a a a ( a ) + a a 11 22 12 21 11 12 11 12 = jAj a21 a22 a22 a21 a21 a12 + a11 a22 = 1 j A j 0 1 0 = jAj 0 jAj = 0 1 De forma analoga se omprueba para 1=(jAj) B A = I . Luego existe la inversa.
132
APENDICE C. EJERCICIOS PROPUESTOS EN CLASE
Ejer i io 6 Sea n = 26, E = Z=26 Z=26 y on la matriz de en ripta ion:
2 3 A= 7 8
des ifrar \FWMDIQ".
Solu ion:
Primero tenemos que al ular la inversa de la matriz en Z=26. 1 8 3 1 A = jAj 7 2 Como jAj = 21, por el algoritmo de Eu lides resolvemos a 21 + 26 b = 1 y obtenemos que a = 5, luego 21 1 = 5 mod 26. Luego tendremos que: 14 11 8 3 1 A =5 7 2 = 17 10 mod 26 Como n = 26 el alfabeto que estamos utilizando A = 0, B = 1, ..., Z = 25. Luego: FWMDIQ = (5; 22; 12; 3; 8; 16) Para des ifrar el mensaje: 312 201 288 5 12 8 14 11 22 3 16 = 305 234 296 = C = 17 10 0 19 2 = 19 0 10 mod 26 Consultando el alfabeto utilizado tendremos que: (0; 19; 19; 0; 2; 10) = ATTACK
133 Ejer i io 7
Dada la siguiente urva elpti a:
y 02 + y 0 = x3
x
la ual se sabe que tiene 727 puntos en F 751 realizar de forma efe tiva el algoritmo de Massey-Omura.
Solu ion:
Aunque podemos apli ar el algoritmo a la urva dada originalmente vamos a transformarla para tenerla en la forma en que hemos utilizado en los ejemplos. Ha iendo el ambio de variable y0 = y 376 tenemos: y 2 751y + 141;000 = x3 x
omo la ara teristi a de F 751 es 751 tendremos que la e ua ion de la urva sera: y 2 = x3 x 563 N (E ) = 727. Vamos a utilizar el alfabeto de 36 smbolos1. Para ver si un determinado elemento de F 751 posee raz uadrada utilizamos el programa Mathemati a. Claves privadas Usuario A Usuario B e 20 91 d 618 8 Fijamos = 20 y supongamos que el usuario A quiere transmitir la palabra \HOLA" al usuario B: 1. Lo primero es en ontrar los puntos de la urva aso iados a la palabra: H = 17. x1 = 17 20 + 1 = 341. Cal ulamos y12 en F 751 : y12 = 3413 341 563 = 370 La raz uadrada, una de ellas, en F 751 de 370 es 362. Tenemos que a la letra \H" le asignaremos el siguiente punto: PH = (341; 362) 2 E 1 P agina
??.
134
APENDICE C. EJERCICIOS PROPUESTOS EN CLASE
O = 24. x2 = 24 20 + 1 = 481. Cal ulamos y22 en F 751 : y22 = 4813 481 563 = 417 Como 417 no tiene raz uadrada en F 751 in rementamos en 1 x3 hasta en ontrar un valor que tenga raz uadrada. Tenemos que a la letra \O" le asignaremos el siguiente punto: PO = (484; 590) 2 E L = 21. x3 = 21 20 + 1 = 421. Cal ulamos y32 en F 751 : y32 = 4213 421 563 = 370 La raz uadrada, una de ellas, en F 751 de 370 es 362. Tenemos que a la letra \L" le asignaremos el siguiente punto: PL = (421; 362) 2 E A = 10. x4 = 10 20 + 1 = 201. Cal ulamos y42 en F 751 : y42 = 2013 201 563 = 25 La raz uadrada, una de ellas, en F 751 de 25 es 5. Tenemos que a la letra \A" le asignaremos el siguiente punto: PA = (201; 5) 2 E 2. El mensaje, sin en riptar, que el usuario A quiere mandar es: (341; 362)(484; 590)(421; 362)(201; 5) Como el pro edimiento es el mismo para todos los puntos uni amente lo haremos para el punto (484; 362), que representa a la letra \O". Los multiplos de los puntos de la urva elpti a los hemos al ulado utilizando el algoritmo de \izquierda a dere ha "2, y para al ular la 2 Apartado
?? en la pagina ??.
135 suma de dos puntos de la urva elpti a hemos utilizado el algoritmo de al ulo en \ oordenadas proye tivas "3, utilizando el programa Mathemati a4. Re ordemos que: donde P 2 E elpti a.
= P + : n: : +P y n 2 F q , uerpo sobre el que esta de nida la urva nP
El pro edimiento sera el siguiente: a ) El usuario A manda al usuario B el punto multipli ado por su
lave de en ripta ion, eA = 20: 20 (484; 590) = (317; 181) b)
El usuario B manda al usuario A el mensaje re ibido, pero multipli ado por su lave de en ripta ion, eB = 91: 91 (317; 181) = (311; 640)
)
El usuario A devuelve al usuario B el mensaje multipli ado por su lave de desen ripta ion, dA = 618: 618 (311; 640) = (663; 494)
d)
El usuario B re ibe (663; 494), para obtener el punto original solo tiene que multipli ar por su lave de desen ripta ion, dB = 8: 8 (663; 494) = (484; 590)
3. Ahora el usuario B tiene un punto de la urva elpti a E . Para re uperar la letra del mensaje utilizaremos la siguiente formula, teniendo en uenta que estamos utilizando un alfabeto on 36 smbolos: x 1 m = i mod 751 2 f0; : : : ; 35g i
3 Apartado
?? en la pagina ??. la pagina ?? se puede ver un ejemplo pra ti o de omo se ha al ulado el primer paso del algoritmo. 4 En
136
APENDICE C. EJERCICIOS PROPUESTOS EN CLASE
Lo primero es al ular 1 en F 751 : 20 1 = 338 en F 751 m2 = (x2 1) 338 = (484 1) 338 = 287, omo 287 2= f0; : : : ; 35g enton es tomamos x2 omo x2 1 y repetimos el al ulo hasta que obtengamos un elemento de f0; : : : ; 35g: m2 = ((x2 1) 1) 338 = ((481 1) 1) 338 = 24 Consultando el alfabeto que hemos utilizado tendremos: m2 = 24 ) m2 = O Luego la palabra transmitida por el usuario A es \O".
Bibliografa [1℄ Apuntes de lase. [2℄ \Codes and Cryptography ". Domini Welsh. Oxford S ien e Publi ations. [3℄ \A Course in Number Theory and Cryptography ", Se ond Edition. Neal Koblitz. Springer. [4℄ \Criptografa Digital, Fundamentos y Apli a iones ". Jose Pastor Fran o y Miguel Angel Sarasa Lopez. Cole
ion textos do entes Prensas Universitarias de Zaragoza. [5℄ \Criptografa y Seguridad en Computadores ", Segunda Edi ion. Manuel Jose Lu ena Lopez. [6℄ Arti ulo \Zoologa de los numeros " de Mauri e Mashall. Publi ado en la revista \Mundo Cient o " 161 volumen 15. [7℄ Arti ulo \Los numeros primos " de Henri Cohen. Publi ado en la revista \Mundo Cient o " 161 volumen 15.
137