141

Introduccion a La Criptografia

Embed Size (px)

DESCRIPTION

Introduccion de Perez

Citation preview

  • Introdu

    ion a la riptografa

    Jose Angel de Bustos Perez

    Version 1;0

  • ii

  • Prefaio

    El origen de este doumento 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 doumento, pero debido, fundamen-

    talmente, a la falta de tiempo esa labor la ire realizando lentamente.

    Este doumento esta orientado a los fundamentos matematios de la rip-

    tografa, esto lo orregire en posteriores versiones para ofreer un aspeto mas

    pratio sobre la riptografa. Si las demostraiones matematias no te in-

    teresan mi onsejo es que te las saltes y uniamente te jes en los resultados

    que nos ofreen los teoremas matematios.

    Cualquier sugerenia, ritia y/o orre

    ion sera bienvenida para la mejo-

    ra y ampliaion de este doumento.

    Mi dire

    ion de orreo eletronio es jadebustosaugyl.org. Sientete

    libre de distribuir, siempre y uando sea de forma gratuita y altruista, este

    doumento. Queda expresamente prohibida la modiaion o alteraion de

    este doumento sin la expresa autorizaion del autor del mismo.

    Jose Angel de Bustos Perez, Agosto 2;001.

    iii

  • iv PREFACIO

  • Indie general

    1

  • 2

    INDICE GENERAL

  • Indie de guras

    3

  • 4

    INDICE DE FIGURAS

  • Indie 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 tenia para proteger in-

    formaion de tal forma que solo pueda ser a

    edida por aquellas personas

    autorizadas para ello.

    La riptografa se utiliza, basiamente, en las transmisiones digitales de

    informaion.

    1.1. Utilidades de la Criptografa

    Mediante la riptografa podemos evitar que un doumento digital que

    ha sido transmitido por un anal, sin prote

    ion alguna, sea modiado in-

    tenionadamente.

    1. Podemos garantizar el origen de un doumento, es deir, podemos ve-

    riar que el doumento proviene de quien die provenir.

    2. Podemos garantizar la autentiidad del doumento, es deir, que no ha

    sido modiado por ninguna persona.

    3. Podemos veriar que el reeptor es el reeptor adeuado del doumen-

    to, es deir, podemos evitar el entregar un doumento a un impostor.

    La riptografa nos ofree seguridad en las omuniaiones digitales, siem-

    pre que se aplique de una forma orreta.

    9

  • 10 CAP

    ITULO 1. INTRODUCCI

    ON

    1.2. Criptografa Clasia

    La riptografa es una forma de oultar informaion, es deir una manera

    de transmitir informaion de forma ondenial. El hombre, desde los ori-

    genes de su existenia, ha tenido la neesidad de poder transmitir mensajes

    de una forma segura y ondenial.

    Podemos onsiderar las formas mas primitivas

    1

    de lenguaje esrito omo

    tenias riptograas, ya que eran muy poos los apaitados para inter-

    pretar los smbolos utilizados. A pesar de esto era neesario enmasarar los

    smbolos que formaban los mensajes ya que aunque haba poas personas

    apaitadas para entender los mensajes no todas estaban autorizadas para

    haerlo.

    Una de las primeras formas de enmasarar informaion fue mediante una

    tenia onoida omo esteganografa, la ual onsistia en oultar un mensaje

    sereto en otro mensaje inteligible. Por ejemplo:

    Haer oriios sobre los arateres que omponan el mensaje sereto,

    por entre los uales se haan pasar lamentos onstituyendo un tren-

    zado que enmasaraba el mensaje original. As pues, para leer diho

    mensaje era neesario deshaer la mara~na.

    Algunos espas en la Segunda Guerra Mundial esriban mensajes se-

    retos on tinta invisible enima de otros mensajes en laro que enmas-

    araban a los primeros.

    En la riptografa lasia los mensajes se transmitan ifrados on una

    lave sereta, de tal forma que el reeptor pudiera desifrarlos utilizando la

    lave sereta on la que el emisor los ifro. Este tipo de riptografa tambien

    reibe el nombre de riptografa simetria de lase sereta, puesto que emisor

    y reeptor deben poseer la misma lave, sereta, para ifrar y desifrar los

    mensajes.

    Las laves seretas utilizadas en la riptografa lasia deban ser transmi-

    tidas 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 reeptor, este

    quedaba inomuniado.

    1

    Por ejemplo las esrituras jeroglas del antiguo Egipto.

  • 1.3. CRIPTOGRAF

    IA MODERNA 11

    1.3. Criptografa Moderna

    El a~no 1;976 fue un a~no lave para la riptografa simetria. En ese a~no un

    metodo de ifrado simetrio denominado DES

    2

    fue adoptado omo estandar

    para la riptografa simetria de lave sereta en los Estados Unidos y poste-

    riormente en todo el mundo. El metodo fue desarrolado por IBM y refrendado

    por la NSA

    3

    y el NIST

    4

    . Este proedimiento de ifrado es todava hoy uno

    de los mas utilizados, puesto que hasta el momento presente ha resistido to-

    dos los ataques onoidos y publiados en el mundo aademio, si bien se

    ignora si suede lo mismo on los ataques llevados a abo por las distintas

    agenias de inteligenia gubernamentales. Sin embargo, aun en este nuevo

    proedimiento de ifrado, exista el problema del interambio y distribuion

    de laves seretas entre los omuniantes, atividades que deban llevarse a

    abo a traves de anales seguros. Este problema fue resuelto en ese mismo a~no

    por W. Die y M. E. Hellman

    5

    de la Universidad de Stanford en California

    mediante un protoolo riptograo que permita distribuir laves seretas a

    traves de anales abiertos sin prote

    ion. Este invento fue el primer onepto

    innovador y revoluionario desde los tiempos de la riptografa lasia.

    El proedimiento de interambio de laves seretas de Die y Hellman

    estaba basado en funiones matematias uyo alulo direto es fail pero

    el inverso tiene tal omplejidad que o bien es imposible realizarlo on los

    onoimientos y ordenadores atuales o bien el tiempo neesario para reali-

    zarlo es tal que, uando se logra desifrar la informaion on el ifrada diha

    informaion no tiene utilidad. Con el metodo de Die y Hellman unia-

    mente se podan interambiar, pero predijeron que si se pudiesen enontrar

    funiones de una sola dire

    ion on trampa, el onoimiento de diha tram-

    pa permitira el alulo de la funion inversa on la misma failidad, y por

    tanto sera posible no solo transmitir laves seretas a traves de anales abier-

    tos, sino tambien realizar operaiones de ifrado y desifrado de mensajes,

    as omo produir rmas digitales.

    2

    Data Enryption Standard.

    3

    National Seurity Ageny.

    4

    Naional Institute of Standards and Tehnology.

    5

    Die, W., Hellman, M. E. \New Diretions in Cryptograhpy", IEEE Transations on

    Information Theory, 1;976. IT-22, pp. 644-654.

  • 12 CAP

    ITULO 1. INTRODUCCI

    ON

    En el a~no 1;977 R. Rivest, A. Shamir y L. Adleman del MIT

    6

    des-

    ubrieron una de dihas funiones y rearon en elegante metodo de ifrado

    y rma digital denominado RSA

    7

    . Esta aportaion, junto on el protoolo

    de interambio de laves de Die y Hellman fue el origen de la riptografa

    moderna o de lave publia.

    En la riptografa de lave publia ada individuo posee dos laves, una

    sereta y otra publia, de forma que los ifrados realizados on una de las

    laves se desifran on la otra, siendo tanto el ifrado omo el desifrado ope-

    raiones matematias realizables en tiempo real.

    Las laves estan relaionadas matematiamente de tal forma que el o-

    noimiento de la lave publia y la matematia que sustenta su relaion on

    la sereta no es suiente para el alulo de esta ultima. Para su alulo se

    neesita onoer la \trampa", que es sereta. En el aso de no onoer la

    \trampa" el alulo de la lave sereta es tan omplejo que no existe apai-

    dad de alulo suiente para realizarlo a tiempo de utilizar diha informaion

    on beneio.

    La \trampa" en el RSA es el onoimiento de la fatorizaion de un

    numero ompuesto. Los numeros que se utilizan son del orden de 300 dgitos,

    uya fatorizaion requiere ientos de miles de a~nos de CPU de superorde-

    nadores.

    1.4. Ataques a la Seguridad Criptograa

    Como la riptografa surgio para esonder informaion a determinadas

    personas u organismos, luego siempre habra alguien interesado en obten-

    er una informaion ifrada. Por esta razon existen distintos metodos para

    obtener diha informaion, los dos tipos basios son:

    Ataques pasivos.

    El intruso intenta obtener la informaion sin modiarla. Este tipo de

    ataque no puede ser detetado por los interesados, pero la riptografa

    ofree prote

    ion ontra este tipo de ataques, ya que evita que la infor-

    maion optenida mediante la esuha sea inutil al estar ifrada.

    6

    Massahusetts Institute of Tehnology.

    7

    Rivest, R., Shamir, A., w,L. \A Method for Obtaining Digital Signatures and Publi-

    Key Crytosystems" Communiations of the ACM, 21 (1;978), pp. 120-126.

  • 1.4. ATAQUES A LA SEGURIDAD CRIPTOGR

    AFICA 13

    Ataques ativos.

    El intruso intenta obtener la informaion y modiarla a su onvenien-

    ia.

    1.4.1. Ataque a partir del ifrado

    El ataante solamente tiene a

    eso al texto ifrado y a partir de el trata

    de enontrar la lave sereta on la que se ifro diho texto.

    Un metodo de ifrado que sea vulnerable a este tipo de ataque se on-

    sidera absolutamente inseguro. La riptografa lasia fue vtima de estos

    ataques mediante el analisis estadstio de freuenias de los smbolos en los

    distintos idiomas.

    Los siguientes ataques son los mas onoidos:

    1.4.2. Ataque a partir del texto en laro

    El ataante tiene a

    eso a textos en laro y a sus orrespondientes ifrados,

    a traves de los uales se intenta averiguar la lave sereta.

    1.4.3. Ataque a partir del texto en laro elegido

    El ataante tiene la posibilidad de elegir un texto en laro y obtener su

    orrespondiente ifrado.

    1.4.4. Ataque a partir de texto en laro ondiionado

    El ataante puede elegir un texto en laro ondiionado por los ifrados

    previamente intereptados.

    1.4.5. Ataque a partir de ifrado elegido

    El ataante elige un ifrado y obtiene el orrespondiente texto en laro,

    es deir, el ataante tiene a

    eso al ifrador, pero no a la lave.

    1.4.6. Ataque a partir de ifrado ondiionado

    Es igual que el anterior, pero on la diferenia de que el ifrado elegido

    esta ondiionado por los textos en laro previamente obtenidos.

  • 14 CAP

    ITULO 1. INTRODUCCI

    ON

    1.4.7. Ataque on lave onoida

    En este ataque el oponente obtiene algunas laves utilizadas en ifrados

    previos e intenta determinar nuevas laves.

    1.4.8. Reutilizaion del protoolo

    En este aso el oponente realiza el ataque registrando una de las omuni-

    aiones, o parte de ella, e intenta utilizarla insertandola en una omuniaion

    posterior.

    1.4.9. Suplantaion de personalidad

    El ataante asume la identidad de uno de los omuniantes registrados

    en la red digital de omuniaion.

    1.4.10. Compilaion de un di

    ionario

    Este ataque es tpio de los sistemas que tienen un ontrol de a

    eso.

    Cuando el usuario introdue su lave de a

    eso al sistema es transforma-

    da mediante una funion y omparada on las transformadas en la base de

    datos del ordenador. Si la funion de transformaion es publia y el ata-

    ante tiene a

    eso a la lnea de omuniaion por la que se transmiten dihas

    transformadas, entones puede almaenarlas 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 oinida on otra de las

    previamente intereptadas.

    1.4.11. Busqueda exhaustiva

    Este ataque es similar al anterior y se lleva a abo generando aleatoria-

    mente 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 oinida

    on la intereptada.

    1.4.12. Ataque mediante intromision

    El ataante se introdue en la lnea entre dos usuarios registrados, rei-

    biendo la informaion de uno de ellos y enviandosela al otro despues de

    modiarla.

  • Captulo 2

    Sistemas Criptograos

    La idea basia de la riptografa ha permaneido onstante a lo largo del

    tiempo, y basiamente es la siguiente:

    Codiar un mensaje M en una adena nita de smbolos, donde

    ada smbolo pertenee a un alfabeto nito denominado .

    Deniion 2.1 (Codiador)

    Llamaremos odiador a una apliaion e tal que e(M) = C, donde M es el

    mensaje a odiar y C es el mensaje odiado. Tambien es habitual que el

    odiador dependa de varios parametros, por ejemplo e(M;K) = C donde

    K se denomina lave, C varia segun el valor de K.

    Deniion 2.2 (Deodiador)

    Llamaremos deodiador a una apliaion d tal que d(C) =M , donde C es

    un texto odiado y M es el texto sin odiar. Al igual que en el odiador

    tambien es habitual utilizar una lave K, por ejemplo d(C;K) =M .

    El textoM se suele denominar texto plano y C se suele denominar ifrado.

    Deniion 2.3 (Sistema riptograo)

    Llamaremos sistema riptograo a la terna (M;K;C) donde M y C son

    adenas de alfabetos nitos

    1

    y

    2

    respetivamente y K es un onjunto

    nito de laves on la hipotesis de que existan las funiones e y d:

    e :M K ! C

    d : C K !M

    tales que d(e(M;K); K) =M .

    15

  • 16 CAP

    ITULO 2. SISTEMAS CRIPTOGR

    AFICOS

    Deniion 2.4 (Sistema riptograo monoalfabetio)

    Un sistema riptograo se die monoalfabetio si la odiaion de ada

    smbolo es independiente del mensaje que se esta odiando.

    Deniion 2.5 (Sistema riptograo polialfabetio)

    Un sistema riptograo se die polialfabetio si la odiaion de algun

    smbolo depende del mensaje que se esta odiando.

    El primer requisito para que un sistema riptograo sea \seguro" es que sea

    polialfabetio.

    2.1. Algunos Sistemas Criptograos

    Veamos algunos de los sistemas riptograos mas simples:

    2.1.1. Simple sustituion

    Sea el onjunto de los simbolos del lenguaje, por ejemplo el abeedario.

    Tomemos omo una permutaion de , es deir una apliaion biyetiva:

    :

    !

    obviamente 6= Id.

    Cifrar on este metodo sera sustituir ada palabra del mensaje por su

    imagen en la permutaion .

    Este sistema es monoalfabetio y es extremadamente vulnerable a ataques

    por analsis de freuenias. Este sistema tiene el inonveniente de que si a

    lo largo del mensaje M se repite, por ejemplo, la adena el varias vees y

    (l) = r y (e) = g entones en el ifrado C se repetira el mismo numero de

    vees la adena rg, lo ual nos da un patron de omportamiento del algoritmo

    de ifrado.

    2.1.2. Transposiion de orden d

    Dado un entero positivo d dividimos el mensajeM en bloques de longitud

    d. Entones tomanos una permutaion de f1; 2; : : : ; dg y apliamos a ada

    bloque. Por ejemplo para d = 5 y la siguiente permutaion:

    =

    1 2 3 4 5

    4 1 3 2 5

  • 2.1. ALGUNOS SISTEMAS CRIPTOGR

    AFICOS 17

    si tomamos el mensaje M = Un urso de riptografa: para odiarlo

    hemos de dividir el mensaje en bloques de longitud 5:

    M = Un ujrso dje rijptogrjafa:

    y en ada bloque apliamos la permutaion , luego:

    C = U nuj rosdjre ijgpotrjaaf: = U nu rosdre igpotraaf:

    Para deodiar el mensaje uniamente tendremos que dividir C en bloques

    de longitud 5 y apliar a ada bloque la permutaion inversa

    1

    :

    1

    =

    1 2 3 4 5

    2 4 3 1 5

    Como C = U nuj rosdjre ijgpotrjaaf: entones:

    M = Un ujrso dje rijptogrjafa: = Un urso de riptografa:

    Este metodo onserva la freuenia de distribuion de los smbolos, pero des-

    truye los patrones de repetiion 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 abeedario, A = 0,. . . ,Z = 25. Se situa debajo del

    mensaje el onjunto de d letras de forma repetida y se suman, olvidando los

    espaios en blano, 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 seuenia AFG la lave sera:

    K = AFGAFGAFGAFGAFGAFGAFG

    Luego para ifrar el mensaje:

    M = UNCURSODECRIPTOGRAFIA

    K = AFGAFGAFGAFGAFGAFGAFG

    C = URIUXZUIKCX

    ~

    NPZUGXGFNG

  • 18 CAP

    ITULO 2. SISTEMAS CRIPTOGR

    AFICOS

    2.1.4. El ifrador de Cesar

    Este sistema de ifrado lo utilizaba Julio Cesar para enviar mensajes

    seretos. Es un sistema muy senillo.

    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 desifrar el mensaje lo unio que hay que haer es restar 3 a ada letra

    del mensaje ifrado.

    2.2. Sistemas de Cifrado

    A la hora de ifrar un mensaje se puede haer 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 sustituion

    1

    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

    transposiion 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. Transformaiones Lineales

    La idea basia es dividir el mensaje en bloques de longitud d e identiar

    ada bloque on un vetor x de enteros on dimension d y multipliar diho

    vetor por una matriz no singular

    2

    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 desifrar el mensaje y habra que multipliarlo

    por U

    1

    , existe al ser U una matriz no singular:

    U

    1

    y = x

    Para asegurarnos que todas las operaiones aritmetias se realizan so-

    bre un uerpo haremos los alulos modulo un numero primo. Es deir, si

    haemos los alulos modulo el numero primo p, signia que estaremos tra-

    bajando en el uerpo nito de p elementos F

    q

    .

    Normalmente onsideraremos dos alfabetos:

    Un alfabeto de 29 smbolos

    3

    donde:

    Las letras A-Z estan representadas por los enteros omprendidos

    entre 0 y 25, ambos inlusive.

    El espaio en blano esta representado por 26.

    La oma esta representada por 27.

    El punto y nal esta representado por 28.

    Un alfabeto alfa-numerio de 37 smbolos

    4

    donde:

    Los enteros 0-9 estan representados por ellos mismos.

    El espaio en blano esta representado por 10.

    Las letras A-Z estan representadas por los enteros omprendidos

    entre 11 y 36, ambos inlusive.

    2

    No singular en el uerpo en el que estemos trabajando, el ual sera un uerpo nito.

    3

    En la pagina ??.

    4

    En la pagina ??.

  • 20 CAP

    ITULO 2. SISTEMAS CRIPTOGR

    AFICOS

    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:

    U =

    0

    5 0 3

    11 7 8

    4 23 36

    1

    A

    El mensaje sera:

    M = PRUEBA = 27 29 32 15 12 11

    Luego para odiarlo:

    0

    5 0 3

    11 7 8

    4 23 36

    1

    A

    0

    27 15

    29 12

    32 11

    1

    A

    =

    0

    231 108

    756 337

    1927 732

    1

    A

    0

    9 34

    16 4

    3 29

    1

    A

    mod 37

    de donde tenemos que el mensaje ifrado sera:

    C = 9 16 3 34 4 29 = 9F3X4R

    Para desifrar el mensaje tendremos que utilizar U

    1

    , es deir la inversa

    de U . Como en este aso estamos utilizando un alfabeto de 37 smbolos su

    inversa, en F

    37

    , sera:

    U

    1

    =

    0

    32 2 1

    5 29 25

    21 9 23

    1

    A

    El mensaje desifrado:

    0

    32 2 1

    5 29 25

    21 9 23

    1

    A

    0

    9 34

    16 4

    3 29

    1

    A

    =

    0

    323 1125

    584 1011

    402 1417

    1

    A

    0

    27 15

    29 12

    32 11

    1

    A

    mod 37

    C = 27 29 32 15 12 11 = PRUEBA

    Observaion: 2.3.1

    En el ejemplo anterior hemos utilizado la matriz:

    U =

    0

    5 0 3

    11 7 8

    4 23 36

    1

    A

  • 2.3. TRANSFORMACIONES LINEALES 21

    uyos oeientes estan en F

    37

    , ya que estamos utilizando un alfabeto de 37

    smbolos. Su inversa en los numeros reales, R, es:

    0

    B

    B

    B

    B

    B

    68

    1015

    69

    1015

    3

    145

    52

    145

    24

    145

    1

    145

    45

    203

    23

    203

    1

    29

    1

    C

    C

    C

    C

    C

    A

    Para alular esta matriz en F

    37

    tendremos que alular los oeientes en

    diho uerpo:

    68 31 mod 37 69 32 mod 37 3 34 mod 37

    52 22 mod 37 24 24 mod 37 1 36 mod 37

    45 8 mod 37 23 14 mod 37 1 1 mod 37

    1015 16 mod 37 145 34 mod 37 203 18 mod 37

    29 29 mod 37

    Calulemos los inversos en F

    37

    :

    1015

    1

    7 en F

    37

    145

    1

    12 en F

    37

    203

    1

    35 en F

    37

    29

    1

    23 en F

    37

    Los oeientes de U

    1

    en F

    37

    son:

    68

    1015

    31 7 en F

    37

    = 217 32 mod 37

    69

    1015

    32 7 en F

    37

    = 224 2 mod 37

    3

    145

    34 12 en F

    37

    = 408 1 mod 37

    52

    145

    22 12 en F

    37

    = 264 5 mod 37

    24

    145

    24 12 en F

    37

    = 288 29 mod 37

    1

    145

    36 12 en F

    37

    = 432 25 mod 37

    45

    203

    8 35 en F

    37

    = 280 21 mod 37

    23

    203

    14 35 en F

    37

    = 490 9 mod 37

    1

    29

    1 23 en F

    37

    = 23 23 mod 37

  • 22 CAP

    ITULO 2. SISTEMAS CRIPTOGR

    AFICOS

    Luego la matriz inversa de U , U

    1

    , en F

    37

    es:

    U

    1

    =

    0

    32 2 1

    5 29 25

    21 9 23

    1

    A

    2.4. Transformaiones Anes

    Este tipo de transformaion es muy similar a la anterior, razon por la

    ual no la expliaremos on muho detalle. Se trata de dividir el mensaje en

    bloque y ifrarlo on una apliaion del tipo:

    T (u) = A u+B

    donde A es una matriz, de orden mm, invertible en Z=n, n es la antidad

    de smbolos que tiene nuestro alfabeto, y B un vetor de longitud m. En

    este aso ifraremos el mensaje en bloques de m letras. Sean fu

    i

    g el mensaje

    dividido en bloques de m letras, entones para enriptar el mensaje haremos:

    T (u

    i

    ) = A u

    i

    +B =

    i

    donde

    i

    es el el bloque u

    i

    enriptado. Para desenriptar

    i

    bastara on de-

    spejar u

    i

    de la euaion anterior:

    u

    i

    = A

    1

    (

    i

    B) = A

    1

    i

    A

    1

    B

    Podemos despejar ya que A es invertible en Z=n.

  • Captulo 3

    Complejidad Computaional

    Para ifrar mensajes neesitamos la existenia de una funion e(M;K) la

    ual ifrara el mensaje M utilizando la lave K, e(M;K) = C. Una vez ifrado

    el mensaje M es neesaria una funion d(C;K) la ual desifrara el mensaje

    ifrado C on la lave K, d(C;K) =M .

    La existenia de la funion inversa de la funion e, es deir la funion d,

    implia que ualquiera que onoza diha funion pueda desifrar los men-

    sajes ifrados.

    Para que un sistema riptograo sea seguro sera neesario que el alulo

    de la funion d sea diil, es deir, que tenga un alto oste omputaional.

    Cuanto mas diil sea evaluar la funion d mas seguro sera el sistema rip-

    tograo ya que requerira una antidad mayor de tiempo el desifrar un

    mensaje ifrado.

    Es logio pensar que s evaluar d requiere de un alto oste omputaional

    no solo sera un impedimento para aquellas personas ajenas al emisor y re-

    eptor del mensaje, sino que tambien lo sera para el reeptor del mensaje, y

    en prinipio as es. Este problema lo trataremos mas adelante.

    23

  • 24 CAP

    ITULO 3. COMPLEJIDAD COMPUTACIONAL

    3.1. Como alular el Coste Computaional

    Podemos denir el oste omputaional omo el tiempo que se neesita

    para realizar alguna tarea en un ordenador. Obviamente este tiempo depen-

    dera del ordenador que estemos utilizando y de las operaiones que neesita

    haer el ordenador para realizar la tarea. Obviamente en un ordenador no se

    tarda el mismo tiempo en sumar dos enteros que en multipliarlos, dividirlos

    o realizar una exponeniaion.

    El oste omputaional no solo depende del numero de operaiones a rea-

    lizar, sino que ademas depende el tiempo neesario para realizar ada una de

    ellas.

    Entenderemos por oste omputaional:

    A una funion que depende del tama~no de la entrada, habitualmente

    denotada omo n.

    Para un tama~no dado n entenderemos por oste omputaional el peor

    de todos los asos posibles.

    3.1.1. Operaiones a nivel de \bits"

    Cualquier numero on el que opere un ordenador estara en formato bi-

    nario, es deir expresado en base dos. Por lo tanto para alular el oste

    omputaional de una operaion alularemos el numero de operaiones que

    son neesarias, a nivel de \bits", para resolverla.

    \Bit" es la abreviatura, en ingles, de \binary digit". Sea n 2 Z un numero,

    entones su expresion en binario sera:

    a

    r

    a

    r1

    : : : a

    1

    a

    0

    =

    r

    X

    i=0

    a

    i

    2

    i

    = n donde los a

    i

    2 f0; 1g

    los a

    i

    son los bits de n expresado en binario. Tenemos que:

    r = [log

    2

    n + 1 =

    h

    logn

    log 2

    i

    + 1

    donde [log

    2

    n es el menor entero mayor que log

    2

    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 longitud

    1

    . Sean sus expresiones en binario las siguientes:

    a = a

    k

    a

    k1

    : : : a

    1

    a

    0

    b = b

    k

    b

    k1

    : : : b

    1

    b

    0

    vamos a determinar el numero de operaiones neesarias 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 neesitaremos realizar 2 k opera-

    iones.

    De igual forma se puede ver que multipliar dos entereros de m y n bits

    neesita m n operaiones.

    Ejemplo 3.1 (Numero de operaiones para alular n!)

    Sea n un numero entero uya expresion en binario requiere k bits, a lo sumo.

    Como el numero de bits del produto de dos enteros es menor o igual que la

    suma de las longitudes de dihos enteros tendremos entones que el numero

    de bits de n! sera menor o igual que k n.

    De la deniion de n! se tiene que:

    n! = n (n 1) : : : 2

    luego sera neesario realizar n 2 produtos para alular n!.

    El proedimiento para alular n! sera multipliar j! por j + 1, donde

    j = 2; : : : ; n 1.

    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 CAP

    ITULO 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 multipliar un numero de k bits

    por otro de n k bits requiere n k

    2

    operaiones tendremos que el alulo de

    j! (j+1) requiere n k

    2

    operaiones, y dado que para alular n! neesitamos

    haer n 2 multipliaiones del tipo j! (j + 1) tendremos que el numero de

    operaiones sera:

    (n 2) n k

    2

    Como n tiene k bits tendremos que:

    k = [log

    2

    n + 1

    Luego el numero de operaiones neesarias para alular n! sera:

    (n 2) n ([log

    2

    n + 1)

    2

    (3.1)

    Podemos suponer que el numero de operaiones es proporional a n

    2

    [log 2n

    2

    ya que si desarrollamos (??) vemos que el termino que mas aporta a la suma,

    a medida que ree n, es:

    n

    2

    [log 2n

    2

    diremos entones que el numero de operaiones es del orden de n

    2

    [log 2n

    2

    y lo denotaremos omo:

    O(n

    2

    [log 2n

    2

    )

    3.2. Tiempo Polinomial

    Sea A un algoritmo. Diremos que tiene una omplejidad de tipo polino-

    mial si existe algun polinomio p(x) tal que:

    t

    A

    (n) p(n)

    donde t

    A

    (n) denota el maximo tiempo que neesita el algoritmo A sobre to-

    das las entradas de tama~no n.

    Diremos que un problema se puede resolver en tiempo polinomial si existe

    algun algoritmo que lo resuelve y diho algoritmo tiene una omplejidad de

    tipo polinomial, en este aso diremos que es un problema de lase P .

    Esta deniion de tiempo polinomial no es muy rigurosa, daremos una

    deniion 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 deniion mas rig-

    urosa 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 diha maquina. Entones el oste omputa-

    ional de M vendra dado por la funion:

    t

    M

    : Z

    +

    ! Z

    +

    denida de la siguiente manera:

    t

    M

    (n) = max

    jxj=n

    t on x 2

    donde t es el tiempo que tardaM en parar utilizando omo entrada x, adena

    nita de longitud n.

    Diremos que una funion f tiene una omplejidad de tipo polinomial s f

    es omputable Turing

    2

    y existe algun polinomio p(x) tal que t

    M

    (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 deir que utilizando toda la poten-

    ia omputaional 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 desifrar una lave riptograa es de tiempo poli-

    nomial, es un problema de tipo P, diho sistema no sera seguro ya que es

    posible romperlo en un tiempo determinado.

    Consideraremos que un sistema riptograo es \seguro" si el algoritmo

    para romper diho sistema es un algoritmo de tiempo exponenial, es deir,

    el tiempo neesario para romperlo aumenta de forma exponenial.

    2

    Existe una maquina de Turing, M , que realiza f .

  • 28 CAP

    ITULO 3. COMPLEJIDAD COMPUTACIONAL

  • Parte II

    Criptografa Clasia

    29

  • Captulo 4

    Algoritmos Simetrios

    Los algoritmos simetrios son algoritmos de ifrado en los que tanto el

    emisor omo el reeptor han de onoer las laves para ifrar y desifrar, es

    deir, tanto emisor omo reeptor utilizan la misma lave para ifrar y de-

    sifrar. Este metodo posee una desventaja, y es que se deben transmitir las

    laves por un anal seguro, algo muy diil de asegurar.

    Los algoritmos que hemos visto hasta aqui son todos algoritmos simetrios.

    4.1. Sistemas de Enriptaion on Estrutura

    de Grupo

    Una osa a tener en uenta en los sistemas de enriptaion es si poseen o

    no estrutura de grupo.

    Deniion 4.1 (Estrutura de grupo para sistemas de Enriptaion)

    Se die que un sistema de enriptaion posee estrutura de grupo si se umple

    que:

    8 K

    1

    ; K

    2

    9 K

    3

    tal que E

    K

    2

    (E

    K

    1

    (M)) = E

    K

    3

    (M)

    es deir, si haemos dos ifrados enadenados on las laves K

    1

    y K

    2

    , existe

    una lave K

    3

    que realiza la misma transformaion.

    Es interesante que un algoritmo riptograo, sea simetrio o no, no posea

    estrutura de grupo, ya que si iframos un mensaje on una lave K

    1

    y luego

    iframos el resultado on otra lave K

    2

    , es omo si hubieramos empleado

    una lave de longitud doble, aumentando la seguridad del sistema. Si por el

    ontrario el sistema riptograo posee estrutura de grupo y realizamos el

    mismo proeso no hubieramos adelantado nada, ya que omo posee estrutura

    31

  • 32 CAP

    ITULO 4. ALGORITMOS SIM

    ETRICOS

    de grupo lo que hemos heho es equivalente a ifrar el mensaje on una ierta

    lave K

    3

    , una sola vez.

    4.2. El Algoritmo DES

    El algoritmo DES es al algoritmo simetrio mas utilizado, su nombre

    proviene de \Data Enryption Standard". Este algoritmo fue presentado por

    IBM en el a~no 1;975 y fue adoptado omo estandar federal en los Estados

    Unidos a prinipios de 1;977.

    4.3. Desripion 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 2

    56

    posibles laves

    para este algoritmo.

    De la lave iniial K se extraen 16 sublaves K

    i

    , de 48 bits ada una.

    Tenemos 16 \dispositivos", a los que llamaremos SBB

    1

    , los uales requieren

    omo entrada un bloque de 64 bits y una sublave K

    i

    de 48 bits, para pro-

    duir omo salida un bloque de 64 bits.

    El algoritmo es el siguiente:

    1. Se aplia una permutaion iniial, IP, a ada bloque de 64 bits. Esto

    produe una salida B

    j

    , donde B

    j

    es el transformado del j-esimo bloque

    de 64 bits por IP, de 64 bits.

    2. Pasamos B

    j

    por el primer SBB, la salida la pasamos por el segundo

    SBB y asi suesivamente on los 16 SBB. La lave que utiliza el i-esimo

    SBB es la sublave K

    i

    .

    3. A la salida del ultimo SBB le apliamos la permutaion IP

    1

    . Con lo

    ual obtenemos el texto ifrado.

    1

    Standard Building Blok, onstrutor estandar de bloques.

  • 4.4. ENCRIPTACI

    ON CON DES 33

    4.4. Enriptaion 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 = (b

    63

    ; : : : ; b

    0

    ) el primer bloque y B

    0

    = (b

    0

    63

    ; : : : ; b

    0

    0

    ) la salida pro-

    duida por el SBB. Vamos a utilizar la siguiente notaion:

    L = (b

    63

    ; : : : ; b

    32

    )

    R = (b

    31

    ; : : : ; b

    0

    )

    L

    0

    = (b

    0

    63

    ; : : : ; b

    0

    32

    )

    R

    0

    = (b

    0

    31

    ; : : : ; b

    0

    0

    )

    4.4.1. Proedimiento para obtener L

    0

    El proedimiento para obtener L

    0

    es muy senillo basta on tomar L

    0

    = R.

    4.4.2. Proedimiento para obtener R

    0

    El proedimiento para obtener R

    0

    es algo mas ompliado:

    R

    0

    = L + f(K

    i

    ; R)

    donde la \suma" es en F

    2

    . La funion f(k

    i

    ; R) se dene de la siguiente manera:

    1. Se aplia una permutaion de expansion, a la que llamaremos E, al

    bloque de 32 bits R para transformarlo en un bloque de 48 bits. De-

    notemos a esta operaion omo E(R)

    2. A ontinuaion sumamos en binario E(R) on la sublave K

    i

    :

    E(R) +K

    i

    3. Apliamos la permutaion P , la ual transforma un bloque de 48 bits

    en otro de 32 a la suma anterior:

    P (E(R) +K

    i

    )

    4. Sumamos, en binario, este resultado on R:

    R + P (E(R) +K

    i

    )

  • 34 CAP

    ITULO 4. ALGORITMOS SIM

    ETRICOS

    Luego tendremos que:

    f(K

    i

    ; R) = R + P (E(R) +K

    i

    )

    de donde:

    R

    0

    = L + f(K

    i

    ; R) = L + [R + P (E(R) +K

    i

    )

    En las guras ?? y ?? podemos ver un esquema del dispositivo SBB y del

    funionamiento del DES.

    K

    i

    L

    32 bits

    R

    32 bits

    L

    0

    R

    0

    48 bits

    48 bits

    32 bits

    32 bits

    E S P

    Figura 4.1: Dispositivo SBB.

    64

    bits

    bits

    K

    1

    32

    32

    bits

    bits

    32

    32

    bits

    K

    2

    SBB

    bits

    32

    32

    bits

    K

    16

    64

    bits

    SBBSBB IP

    1

    IP

    Figura 4.2: Enriptaion on DES.

  • 4.5. DESENCRIPTACI

    ON CON DES 35

    4.5. Desenriptaion on DES

    Una vez tenemos un mensaje enriptado on DES el proedimiento para

    desifrarlo se realiza on el mismo algoritmo de enriptaion, pero usando las

    llaves en orden inverso.

    Supongamos que hemos enriptado un bloque de 64 bits on DES. De-

    notemos por:

    L = (b

    63

    ; : : : ; b

    32

    )

    R = (b

    31

    ; : : : ; b

    0

    )

    las partes izquierda y dereha del bloque antes de la enriptaion, y por:

    L

    0

    = (b

    0

    63

    ; : : : ; b

    0

    32

    )

    R

    0

    = (b

    0

    31

    ; : : : ; b

    0

    0

    )

    las partes izquierda y dereha del bloque enriptado. Por el proedimiento

    de enriptaion sabemos que:

    L

    0

    = R

    R

    0

    = L+ f(K;R)

    despejando R y L, que son las partes que forman el mensaje original, tenemos

    que:

    R = L

    0

    L = R

    0

    f(K;R) = R

    0

    f(K;L

    0

    )

    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 onduen a una seuenia inadeuada de las sublaves

    K

    i

    seran poo reomendables. Podemos distinguir los siguientes asos:

    Claves debiles Son aquellas laves K que generan un onjunto de dieiseis

    sublaves K

    i

    iguales entre si y que verian:

    E

    K

    (E

    K

    (M)) =M

    es deir, enriptando un mensaje dos vees on la misma lave obte-

    nemos el mensaje original. El proedimiento de enriptaion, on esta

    lave, es una involuion.

  • 36 CAP

    ITULO 4. ALGORITMOS SIM

    ETRICOS

    Claves semidebiles Son aquellas laves K que generan dos posibles valores

    para las dieiseis sublaves K

    i

    , repitiendose oho vees ada posible

    valor.

    El numero de laves de este tipo es tan peque~no, en omparaion on el

    numero total de laves para el DES, que este problema no debera suponer

    motivo de preoupaion.

  • 4.7. VARIANTES DEL DES 37

    4.7. Variantes del DES

    A mediados de Julio de 1;998, una empresa sin animo de luro, llamada

    EFF

    2

    , logro onstruir una maquina apaz de desenriptar un mensaje enrip-

    tado on DES en menos de tres das. Curiosamente, poas semanas antes,

    un alto argo de la NSA haba delarado que diho algoritmo segua siendo

    seguro, y que desifrar un mensaje resultaba aun exesivamente ostoso, in-

    luso para organizaiones gubernamentales. DES-Craker osto menos de 40

    millones de pesetas.

    A pesar de este heho, DES sigue siendo ampliamente utilizado en multi-

    tud de apliaiones, omo por ejemplo en las transa

    iones de los ajeros au-

    tomatios. De todas formas, el problema real de DES no radia en su dise~no,

    sino en que emplea una lave demasiado orta, 56 bits, lo ual hae que on

    el avane atual de los ordenadores los ataques por fuerza bruta omienen

    a ser las opiones mas realistas. Muha gente se resiste a abandonar este

    algoritmo, preisamente porque ha sido apaz de sobrevivir durante veinte

    a~nos sin mostrar ninguna debilidad en su dise~no, y preeren proponer va-

    riantes que, de un lado evitaran el riesgo de tener que onar en algoritmos

    nuevos, y de otro permitiran aprovehar gran parte de las implementaiones

    por hardware existentes de DES.

    Algunas de las variantes del DES mas utilizadas son las siguientes:

    4.7.1. DES Multiple

    Consiste en apliar varias vees el algoritmo DES, on diferentes laves,

    al mensaje original. Se puede haer ya que DES no presenta estrutura de

    grupo

    3

    . El mas utilizado es el llamado Triple-DES:

    C = E

    K

    1

    (D

    K

    2

    (E

    K

    1

    (M)))

    El proedimiento es el siguiente:

    1. Enriptamos on la lave K

    1

    .

    2. Desenriptamos on la lave K

    2

    .

    3. Volvemos a enriptar on la lave K

    1

    .

    La lave resultante es la onatenaion de las lavesK

    1

    yK

    2

    , on una longitud

    total de 112 bits.

    2

    Eletroni Frontier Foundation.

    3

    Apartado ?? en la pagina ??.

  • 38 CAP

    ITULO 4. ALGORITMOS SIM

    ETRICOS

    4.7.2. DES on Sublaves Independientes

    Consiste en emplear sublaves diferentes para ada una de las dieiseis

    rondas de DES. Puesto que estas sublaves son de 48 bits, la lave resultante

    tendra 768 bits en total.

    Empleando una tenia onoida omo \riptoanalisis diferenial" esta

    variante poda ser rota on 2

    61

    textos planos esogidos, por lo que en la

    pratia no presenta un avane sustanial 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 odiar, manteniendo sin embargo el orden de omplejidad

    del algoritmo. Se ha demostrado sin embargo que no solo se gana poo en

    seguridad, sino que en muhos asos inluso 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.

    Deniion 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. Innitud de los Numeros Primos

    Las laves para el ifrado mediante metodos riptograos se basan en

    la fatorizaion 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 innita, es deir, dado un numero primo

    ualquiera siempre existira otro numero primo mayor que el, luego siempre

    existiran innitos numeros primos mayores que uno dado.

    41

  • 42 CAP

    ITULO 5. LOS N

    UMEROS PRIMOS

    Teorema 5.1 (Eulides)

    Hay innitos numeros primos.

    Demostraion:

    Supongamos que existe un numero nito de numeros primos:

    p

    1

    ; p

    2

    ; : : : ; p

    n

    (5.1)

    Consideremos el numero natural m = (p

    1

    p

    2

    : : : p

    n

    ) + 1. Por el teorema

    ?? admitira una desomposiion 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 p

    i

    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 proeso volveremos a enontrar otro numero primo que no habiamos on-

    siderado. Podemos repetir este proeso de forma innita y siempre enontrari-

    amos un numero primo que no hubieramos onsiderado, lo que demuestra la

    innitud de los numeros primos.

    La demostraion anterior esta inluida en \Los Elementos" de \Eulides" y

    omo se puede apreiar es una demostraion simple e ingeniosa.

    5.2. Distribuion de los Numeros Primos

    Hemos visto en la se

    ion anterior que existen innitos numeros primos,

    pero la forma en la que se distribuyen entre los numeros enteros es un mis-

    terio.

    Un numero es primo uando no es divisible por ningun numero, exepto

    por el y la unidad. Cuanto mayor es un numero mas ondiiones tiene que

    veriar para ser primo, ya que no puede ser divisible por una mayor anti-

    dad de numeros.

    Para poder omprender la diultad de estableer una regla en la distribu-

    ion de los numeros primos veremos que dado un numero natural ualquiera,

    n 2 N , siempre podremos enontrar n numeros onseutivos no primos.

    Fijemos un numero ualquiera n 2 N y a ontinuaion onsideremos todos

    los numeros enteros omprendidos entre (n + 1)! + 2 y (n + 1)! + (n + 1),

  • 5.2. DISTRIBUCI

    ON DE LOS N

    UMEROS PRIMOS 43

    todos estos numeros son ompuestos, es deir, ninguno de ellos es primo.

    Cualquiera de estos numeros es de la forma (n+1)!+ i, donde 2 i n+1.

    Tendremos entones 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 enontrar 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 indue a pensar que despues de 100;000;001! + 100;000;001 no exis-

    ten numeros primos, pero omo hemos visto en el apartado anterior existen

    innitos numeros primos, luego despues de diho numero podemos enontrar

    numeros primos.

    La busqueda de numeros primos grandes, en la que se basa la riptografa

    de lave publia, es un problema de diil soluion, en lo que a oste omputa-

    ional se reere, por eso en la pratia se utilizan algoritmos probabilstios

    para la busqueda de numeros primos. Este tipo de algoritmos no nos asegu-

    ran la primalidad de un determinado numero, uniamente nos aseguran que

    un determinado numero es primo on una probabilidad muy alta

    1

    .

    El siguiente teorema nos da una idea de omo estan distribuidos los

    numeros primos.

    Teorema 5.2 (Teorema de los numeros primos)

    Sea la funion (x) = numeros primos menores o iguales que x. Tenemos

    que:

    (x) '

    x

    lnx

    uando x!1.

    1

    Aunque la probabilidad es alta existe la posibilidad de que diho numero no sea primo.

  • 44 CAP

    ITULO 5. LOS N

    UMEROS PRIMOS

    5.3. Fatorizaion de Numeros Enteros

    Proposiion 5.1

    Fijados b; 2 Z existen x

    0

    ; y

    0

    2 Z tales que:

    M:C:D (b; ) = (b; ) = b x

    0

    + y

    0

    Demostraion:

    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 x

    0

    + y

    0

    .

    Si l no divide a b entones existiran q; r tales que:

    b = l q + r on 0 < r < l

    por el algoritmo de Eulides para la division entera. Luego:

    r = b q l = b q (b x

    0

    + y

    0

    ) = b (1 q x

    0

    ) + (q y

    0

    )

    de donde se dedue 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 deniion de M.C.D. tendremos que (b; ) divide a b y a , luego en

    partiular dividira a b x

    0

    + y

    0

    , lo que demuestra:

    l = b x

    0

    + y

    0

    = (b; )

  • 5.3. FACTORIZACI

    ON DE N

    UMEROS ENTEROS 45

    Lema 5.1 (Lema de Eulides)

    Si un numero primo divide a un produto de numeros enteros, entones divide

    a algun fator.

    Demostraion:

    Sea p 2 N un numero primo tal que divide, de forma entera, a a n

    1

    : : : n

    s

    ,

    on a; n

    1

    ; : : : ; n

    s

    2 N . Como n

    1

    : : :n

    s

    2 N llamando b = n

    1

    : : :n

    s

    tendremos

    que p divide a a b, on lo ual reduimos el lema al aso en que un numero

    primo divide al produto de dos enteros.

    Si p no divide a a entones (p; a) = 1 y por la proposiion ?? tendremos

    que existen x

    0

    ; y

    0

    2 Z tales que:

    1 = p x

    0

    + a y

    0

    multipliando por b en esta igualdad tendremos:

    b = (b p) x

    0

    + (b a) y

    0

    p divide a (b p) x

    0

    , y p tambien divide a (b a) y

    0

    ya que por hipotesis:

    a b = p n n 2 Z

    luego p divide a b ya que divide a los dos sumandos en los que desompone

    b.

  • 46 CAP

    ITULO 5. LOS N

    UMEROS PRIMOS

    Teorema 5.3 (Teorema fundamental de la Aritmetia)

    Todo numero natural mayor que la unidad es produto de numeros primos.

    Esta desomposiion es unia salvo el orden de los fatores.

    Demostraion:

    La demostraion la haremos por indu

    ion. Para n = 2 el teorema es ierto.

    Supongamos ahora el teorema ierto hasta m y veamos que, en efeto, el

    teorema se veria para m + 1.

    En el aso de que m + 1 sea un numero primo hemos terminado. Supon-

    gamos 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 = a

    1

    a

    2

    1 < a

    1

    ; a

    2

    < m+ 1 a

    1

    ; a

    2

    2 N

    Por hipotesis de indu

    ion tendremos que a

    1

    y a

    2

    desomponen en produto

    de numeros primos por ser menores que m+ 1:

    a

    1

    = p

    n

    1

    1

    : : : p

    n

    r

    r

    a

    2

    = q

    l

    1

    1

    : : : q

    l

    s

    s

    on fp

    1

    ; : : : ; p

    r

    ; q

    1

    ; : : : ; q

    s

    g numeros primos y fn

    1

    ; : : : ; n

    r

    ; l

    1

    ; ; l

    s

    g 2 N . Luego

    tendremos:

    m+ 1 = a

    1

    a

    2

    = p

    n

    1

    1

    : : : p

    n

    r

    r

    q

    l

    1

    1

    : : : q

    l

    s

    s

    es deir m+ 1 desompone en produto de numeros primos.

    Supongamos que un numero admite dos desomposiiones, distintas, en

    produto de numeros primos:

    n = p

    n

    1

    1

    : : : p

    n

    r

    r

    n = q

    m

    1

    1

    : : : q

    m

    s

    s

    reordenando si hiiera falta podemos suponer que p

    1

    < p

    2

    < : : : < p

    r

    y que

    q

    1

    < q

    2

    < : : : < q

    s

    , en estos asos diremos que la desomposiion es normal.

    Tendremos que p

    i

    divide a q

    l

    1

    1

    : : : q

    l

    s

    s

    y por el Lema de Eulides p

    i

    divide

    a alguno de los q

    j

    , pero omo los q

    j

    son primos entones p

    i

    ha de ser uno de

    los q

    j

    . De la misma forma ada q

    j

    es uno de los p

    i

    . Luego r = s y omo las

    desomposiiones son normales entones tendremos que p

    i

    = q

    i

    para todo i.

    Luego tenemos que:

    n = p

    n

    1

    1

    : : : p

    n

    r

    r

    n = p

    m

    1

    1

    : : : p

    m

    s

    r

  • 5.4. DIFERENTES CLASES DE N

    UMEROS PRIMOS 47

    Supongamos que n

    i

    > m

    i

    entones tendremos:

    n = p

    n

    1

    1

    : : : p

    n

    i1

    i1

    p

    n

    i

    m

    i

    i

    p

    n

    i+1

    i+1

    : : : p

    n

    r

    r

    = p

    m

    1

    1

    : : : p

    m

    i1

    i1

    p

    m

    i+1

    i+1

    : : : p

    m

    r

    r

    luego p

    i

    divide a p

    m

    1

    1

    : : : p

    m

    i1

    i1

    p

    m

    i+1

    i+1

    : : : p

    m

    r

    r

    , lo ual es imposible al

    ser los p

    i

    numeros primos. Entones ha de ser n

    i

    m

    i

    y razonando de la

    misma manera obtendremos que n

    i

    no puede ser menor que m

    i

    luego la unia

    posibilidad es que n

    i

    = m

    i

    para todo i.

    5.4. Diferentes lases de Numeros Primos

    Los numeros primos los podemos lasiar en varios tipos. Algunos de

    estos tipos son:

    5.4.1. Numeros primos de Fermat

    Estos numeros reiben su nombre en honor de \Pierre de Fermat", que

    fue su desubridor. Estos numeros primos tienen la propiedad de ser de la

    forma:

    p = 2

    2

    n

    + 1 n 2 N

    Los unios numeros primos de Fermat onoidos son:

    3 = 2

    2

    0

    + 1 n = 0

    5 = 2

    2

    1

    + 1 n = 1

    17 = 2

    2

    2

    + 1 n = 2

    257 = 2

    2

    3

    + 1 n = 3

    65;537 = 2

    2

    4

    + 1 n = 4

    Como uriosidad sobre estos numeros podemos itar que el matematio \Carl

    Friedrih Gauss" araterizo los polgonos regulares que podan ser onstrui-

    dos usando tan solo regla y ompas. Estos polgonos son aquellos que el

    numero de sus lados es una potenia de dos o bien una potenia de dos

    multipliada por uno o mas primos de Fermat impares y distintos.

    5.4.2. Numeros primos gemelos

    Son numeros primos uya diferenia es dos. Los siguientes pares son

    numeros primos gemelos:

    f3; 5g; f5; 7g; f11; 13g; f17; 19g

  • 48 CAP

    ITULO 5. LOS N

    UMEROS PRIMOS

    5.4.3. Numeros primos de Mersenne

    Los numeros de Mersenne son numeros enteros de la forma 2

    n

    1, on n

    un entero positivo. Si el numero 2

    n

    1 es un numero primo entones n es un

    numero primo.

    Luego llamaremos numeros primos de Mersenne a todos aquellos numeros

    primos que sean de la forma 2

    p

    1, donde p es un numero primo, y a dihos

    numeros los denotaremos omo M

    p

    . En la atualidad no se sabe si existe o

    no una innidad de numeros de Mersenne primos.

    5.4.4. Numeros primos fuertes

    La riptografa moderna se basa en la fatorizaion de un numero n en

    numeros primos. Normalmente n = p q, on p y q numeros primos. Para

    poder ifrar y desifrar es neesario onoer la fatorizaion en numeros pri-

    mos de n. Dado que n es un numero grande diha fatorizaion es una tarea

    ompliada. Podemos imponer una serie de ondiiones adiionales a p y q

    para diultar aun mas la fatorizaion 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 fator primo grande p

    0

    y q

    0

    .

    3. Tanto p

    0

    1 omo q

    0

    1 deben tener fatores primos grandes.

    4. Tanto p

    0

    + 1 omo q

    0

    + 1 deben tener fatores primos grandes.

    Las dos primeras ondiiones se umplen si tanto (p 1)=2 omo (q 1)=2

    son numeros primos.

  • Captulo 6

    Fatorizaion y primalidad

    La riptografa de lave publia se basa en la fatorizaion de numeros pri-

    mos. Para romper un sistema riptograo de este tipo es neesario ser apaz

    de enontrar la desomposiion de un numero \grande" en fatores primos.

    Los numeros utilizados en estos sistemas suelen ser produto de dos numeros

    primos de mas de ien digitos. Enontrar la fatorizaion de numeros de este

    tipo es una tarea que requiere muho tiempo. Es por este motivo que este

    tipo de sistemas riptograos gozan de \gran" seguridad.

    6.1. El Problema de la Fatorizaion

    El problema de fatorizar un numero entero en fatores primos es un pro-

    blema para el que no se han enontrado, todava, algoritmos eientes. La

    fatorizaion de numeros requieren de bastante tiempo de omputo.

    Para fatorizar un numero en fatores primos podemos dividir un numero

    n por todos los primos anteriores a

    p

    n, pero para enteros de mas de 15

    ifras los resultados son insatisfatorios, desde el punto de vista del tiempo

    de omputo.

    49

  • 50 CAP

    ITULO 6. FACTORIZACI

    ON Y PRIMALIDAD

    En el a~no 1;975 un ingeniero ingles, \John Pollard" reo un metodo igual

    de simple, pero muho mas rapido que permite fatorizar numeros de hasta

    25 ifras sin demasiadas diultades. Desgraiadamente este metodo es ine-

    iente uando los numeros tienen mas de 30 ifras. Investigaiones posteriores

    han dado origen a otros muhos algoritmos (metodo \rho" de Pollard, meto-

    do p 1 de Pollard, riba uadratia de Pomerane, metodo de las urvas

    elptias de Lenstra, riba algebraia de Pollard

    1

    ). Las tenias son ada vez

    mas eaes y permiten fatorizar ada vez numeros mayores, por supuesto

    tambien inuye el progreso de los ordenadores.

    Las tenias de fatorizaion no han alanzado la eaia que se tiene para

    los test de primalidad

    2

    . En el a~no 1;995 era posible fatorizar un numero de

    90 ifras, utilizando solo un potente miroordenador, en unas poas semanas.

    En el a~no 1;994, graias a miles de ordenadores interonetados a traves de

    internet, un grupo de matematios onsiguio fatorizar un numero de 129

    ifras.

    Para los expertos en teora de numeros la fatorizaion de numeros \grandes"

    onstituye un importante reto de tipo pratio.

    6.2. Algoritmos

    Los algoritmos que vamos a ver en este apartado son algoritmos muy

    basios y no son utilizados en la pratia por ser algoritmos muy lentos, ya

    que en la pratia 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 senilla.

    1

    Este ultimo es el mas potente de todos.

    2

    Pruebas para omprobar si un numero es primo o no.

  • 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 alulo de numeros primos. Diho metodo se

    onoe omo la riba de Erastotenes.

    La riba de Erastotenes es un metodo elemental para enontrar los numeros

    primos que existen hasta un determinado valor entero. Por ejemplo, supon-

    gamos que queremos alular todos los numeros primos omprendidos entre

    el 2 y el 100. Primero taharemos todos los multiplos de 2, luego taharemos

    todos los multiplos del siguiente numero que no este tahado, a ontinuaion

    taharemos todos los multiplos del siguiente numero no tahado y as sue-

    sivamente. Cuando hayamos terminado on todos los numeros entre el 2 y el

    100 los numeros no tahados seran los numeros primos omprendidos entre

    el 1 y el 100.

    Este metodo es util para enontrar numeros primos peque~nos, pero para

    numeros primos grandes es un metodo totalmente ineiente.

    6.2.2. Algoritmo de fuerza bruta

    Un numero es primo s y solo s los unios 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 exepion del dos, es primo. Luego podemos eliminar los

    numeros pares y busar numeros primos entre los numeros impares.

    Para alular 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 entones

    diho numero es un numero primo.

    A este algoritmo nos referiremos omo algoritmo I.

  • 52 CAP

    ITULO 6. FACTORIZACI

    ON Y PRIMALIDAD

    6.2.3. Algoritmo II

    Si utilizamos los algoritmos anteriores para alular 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 alular

    el tiempo de omputo se dispara.

    Para obtener un nuevo algoritmo de alulo, mas rapido, podemos utilizar

    la desomposiion de un numero en numeros primos:

    Todo numero entero desompone en produto de numeros primos. Para

    todo n 2 N se tiene:

    n = p

    n

    1

    1

    : : : p

    n

    r

    r

    donde n

    i

    2 N para i = 1; : : : ; r, p

    j

    2 N son primos para todo j y

    1 p

    j

    n para j = 1; : : : ; r. Esta desomposiion es unia 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 veriando n = m d.

    Sea n = p

    m

    1

    1

    : : :p

    m

    s

    s

    , omom divide a n se tiene que ualquier numero que

    divida a m dividira a n, en partiular los fatores primos de m fp

    1

    ; : : : ; p

    s

    g.

    Esto se dedue del heho de que al dividir m a n tenemos que n es un multi-

    plo de m.

    Este heho nos permite simpliar los alulos para determinar s un

    numero no es primo, en lugar de dividir un numero por todos los anteriores

    tendremos que dividirlo por uniamente 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 enontrar un numero que dividiera a 100, en este aso es fail 2, para

    determinar que no es primo.

  • 6.2. ALGORITMOS 53

    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 armar on toda seguri-

    dad 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 redue onsiderablemente el tiempo

    neesario para determinar s un numero es primo o no.

    6.2.4. Comparaion 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 pro-

    grama busara los 25;000, por ejemplo, primeros numeros primos. En todos

    los algoritmos se busan numeros primos entre los numeros impares, a ex-

    epion del numero dos.

    Los alulos 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 Algoritmo I Algoritmo II

    10;000 0 h 2 m 48 s 0 h 0 m 16 s

    25;000 0 h 19 m 17 s 0 h 1 m 43 s

    35;000 0 h 39 m 4 s 0 h 3 m 24 s

    45;000 1 h 6 m 9 s 0 h 5 m 34 s

    55;000 1 h 40 m 40 s 0 h 8 m 19 s

    Cuadro 6.1: Tiempos de busqueda de numeros primos.

  • 54 CAP

    ITULO 6. FACTORIZACI

    ON Y PRIMALIDAD

    6.3. Algoritmos Probabilstios

    Estos algoritmos son utiles para determinar si un numero es primo o

    no uando son numeros relativamente peque~nos. Cuando los numeros a de-

    terminar si son primos o no son grandes estos algoritmos son totalmente

    ineientes, aun utilizando grandes ordenadores.

    6.3.1. Segundo teorema de Fermat

    El segundo teorema de Fermat es tambien onoido omo \Congruenia

    de Fermat", apartado (??) en la pagina ??.

    Podemos enuniarlo de la siguiente manera:

    Sean p; a 2 Z tales que p sea un numero primo y no divida a a

    entones a

    p1

    1 es divisible por p.

    Este teorema no impide la existenia de numeros no primos p que satisfagan

    la ondiion dada por el teorema, pero dihos numeros son raros.

    Este metodo permite determinar uando un numero grande no es primo,

    y es mas eaz que los algoritmos dados en la se

    ion (??) para numeros on

    ientos de ifras.

    Comprobar si a

    p1

    1 es divisible por p no es una tarea difil, aun uando

    p sea un numero enorme.

    Un metodo razonable para omprobar el arater 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 2

    n1

    1 por n. En el aso de

    que no sea divisible entones el teorema de Fermat india que n no es

    primo, ya que si lo fuera debera dividir a 2

    n1

    1 para satisfaer el

    segundo teorema de Fermat.

    En el aso en que 2

    n1

    1 sea divisible por n no podemos asegurar que n

    sea un numero primo, pero es muy probable que lo sea.

  • 6.3. ALGORITMOS PROBABIL

    ISTICOS 55

    Este metodo es eiente para determinar uando un numero no es primo,

    independientemente del numero de ifras que tenga, pero tiene un inonve-

    niente y es que no nos permite identiar numeros primos.

    6.3.2. Algoritmos APRCL y Atkin-Morain

    En el a~no 1;878 el matematio franes \Edouart Luas" hallo un test

    pareido al de Fermat, pero valido para los numeros de Mersenne

    3

    . Este test

    fue mejorado en el a~no 1;930 por el norteameriano \Derrik H. Lehmer",

    es un algoritmo fail de programar en un ordenador y permite demostrar el

    arater primo de numeros gigantesos.

    El test de \Luas-Lehmer" se utiliza sistematiamente para omprobar la

    abilidad de los superordenadores CRAY. En el a~no 1;994 el mayor numero

    primo onoido fue desubierto por dos elebres azadores de numeros pri-

    mos \David Slowinski" y \Paul Gage", en Estados Unidos. Diho numero es

    2

    859;433

    1 y tiene 258;716 ifras

    4

    , el ordenador utilizado para el alulo de

    este numero fue un CRAY C-90.

    Pero este test posee el inonveniente de que solo es apliable a numeros de

    Mersenne. En el a~no 1;980 se logro desarrollar un algoritmo general apaz de

    demostrar el arater primo de numeros \grandes". La idea iniial partio de

    \Len Adleman", de la universidad de Carolina del sur, \Carl Pomerane" y

    \Robert Rumely", de la universidad de Georgia (Estados Unidos), y la ver-

    sion pratia es debida a \Hendrik Lensdra", de la universidad de Berkeley,

    y \Henri Cohen". Diho test se onoe omo \APRCL", las iniiales de sus

    inventores.

    En 1;989 \Oliver Atkin", de la universidad de Illinois en Estados Unidos,

    y \Franois Morain", de la Esuela Politenia de Palaiseau en Frania,

    rearon un algoritmo muy distinto de similar eaia. La ventaja que tiene

    este metodo es la de poder omprobar, mediante los instrumentos de alulo

    que suministra, la veraidad de que un numero que el metodo arma que es

    primo lo es realmente. En el aso del test APRCL, en ambio, el unio medio

    de omprobaion onsiste en rehaerlo.

    3

    Apartado (??) en la pagina ??.

    4

    Razon por la que no indiamos \exatamente\ diho numero. ;-)

  • 56 CAP

    ITULO 6. FACTORIZACI

    ON Y PRIMALIDAD

    Tanto el metodo APRCL omo el metodo de Atkin-Morain emplean

    sostiadas tenias de teora de numeros. El test APRCL utiliza una ge-

    neralizaion del menionado teorema de Fermat a los llamados uerpos i-

    lotomios. El test de Atkin-Morain reurre a una generalizaion del mismo

    teorema a las urvas elptias. En la pratia, estos dos modernos test per-

    miten demostrar en poos minutos que un numero de 200 ifras es primo,

    lo que basta sobradamente para las neesidades riptograas. 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 haernos una idea

    del tiempo que se tardara en omprobar la primalidad de un numero de 200

    ifras on ualquiera de los metodos analizados en diha tabla.

    Podemos onsiderar que el problema de la determinaion de la primalidad

    de un numero es un problema asequible graias a los algoritmos anteriores y

    al ontinuo avane de la tenologa que permite la utilizaion de ordenadores

    ada vez mas rapidos y potentes.

    6.3.3. Algoritmo de Lehmann

    Es uno de los tests mas senillos para saber si un numero p es primo o

    no. El algoritmo es el siguiente:

    1. Esoger un numero aleatorio a < p.

    2. Calulamos:

    b = a

    p1

    2

    mod p

    3. Si b 6= 1 mod p y b 6= p 1 mod p entones 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 vees, la probabilidad de que p supere el test y

    no sea primo es de 1 ontra 2

    n

    .

  • 6.3. ALGORITMOS PROBABIL

    ISTICOS 57

    6.3.4. Algoritmo de Rabin-Miller

    Es el algoritmo mas empleado, debido a su failidad de implementaion.

    Sea p el numero que queremos saber si es primo. Se alula b, siendo b el

    numero de vees que 2 divide a p 1, es deir, 2

    b

    es la mayor potenia de 2

    que divide a p 1. Calulamos entones m, tal que p = 1 + 2

    b

    m.

    1. Esoger un numero aleatorio a < p.

    2. Sea j = 0 y z = a

    m

    mod p.

    3. Si z = 1, o z = p 1, entoes 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 = z

    2

    mod p. Volver al paso (4).

    7. Si j < b y z = p 1, entones 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 deir que neesitaremos menos pasos

    para llegar al mismo nivel de onanza que el obtenido on el algoritmo de

    Lehmann.

    6.3.5. En la pratia

    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 signiativo para garantizar que el numero

    obtenido es de n bits.

    3. Se pone a uno el bit menos signiativo para garantizar que el numero

    es impar, ya que si fuera par no sera primo

    5

    .

    4. Dividimos p por una tabla de primos prealulados, normalmente se uti-

    lizan primos menores que 2;000. Esto elimina gran antidad de numeros

    no primos de una forma rapida.

    5. Ejeutar el test de Rabin-Miller omo mnimo ino vees.

    5

    A exepion del 2, pero diho numero no se onsidera.

  • 58 CAP

    ITULO 6. FACTORIZACI

    ON Y PRIMALIDAD

  • Captulo 7

    La Funion de Euler y

    Congruenias Clasias

    7.1. La Funion de Euler

    Sea (Z;+; ) el anillo de los numeros enteros y n 2 Z un numero ualquiera

    de diho anillo. Podemos onsiderar entones el anillo oiente de lases resid-

    uales 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, diho onjunto es un grupo multipliativo.

    De la teoria de anillos sabemos que (Z=n)

    estara formado por los numeros

    enteros, no nulos, menores que n y primos on n.

    Deniion 7.1 (Funion de Euler)

    Se dene la funion de Euler omo:

    : Z ! Z

    n ! (n)

    donde (n) = j(Z=n)

    j.

    (n) tambien reibe el nombre de indiador de Euler de n.

    59

  • 60CAP

    ITULO 7. LA FUNCI

    ON DE EULER YCONGRUENCIAS CL

    ASICAS

    Observaion: 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 funion de Euler

    Proposiion 7.1 (Propiedades del indiador de Euler)

    El indiador de Euler veria:

    (p

    r

    ) = p

    r1

    (p 1) on p un numero primo y r 1.

    (n m) = (n) (m) on n y m primos entre s.

    Demostraion:

    (p

    r

    ) = p

    r1

    (p 1) on p un numero primo y r 1.

    Por deniion tendremos que (p

    r

    ) es el orden del grupo multipliativo

    (Z=p

    r

    )

    , y este grupo esta formado por los numeros enteros menores

    que p

    r

    y que son primos on el. Los enteros menores que p

    r

    y que no

    son primos on p

    r

    son p, 2 p, . . . , p

    r1

    p. Luego tenemos p

    r1

    numeros

    que no son primos on p

    r

    y omo jZ=p

    r

    j = p

    r

    tendremos que:

    (p

    r

    ) = p

    r

    p

    r1

    = (p 1) p

    r1

    (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)

    indue un isomorsmo de grupos:

    Z=(n m)

    =

    (Z=n)

    (Z=m)

    de donde se dedue que (n m) = (n) (m).

  • 7.2. CONGRUENCIAS CL

    ASICAS 61

    7.2. Congruenias Clasias

    El onepto de ongruenia fue introduido en Matematias por Gauss

    en su obra Disquisitiones Arithmetiae, en el a~no 1;801.

    Deniion 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).

    Proposiion 7.2

    Sean a; b;m 2 Z

    +

    f0g.

    a b (mod m) () a y b tienen el mismo resto al dividir por m.

    Demostraion:

    ) j Como a b (mod m) se tiene que m divide a (ab) entones tendremos

    por el algoritmo de Eulides que:

    (a b) = m (7.1)

    Por el algoritmo de Eulides tendremos:

    a = m

    a

    + r

    a

    b = m

    b

    + r

    b

    de donde se tiene que:

    (a b) = (

    a

    b

    ) m + (r

    a

    r

    b

    ) (7.2)

    De (??) y (??) se dedue que:

    r

    a

    r

    b

    = 0 =) r

    a

    = r

    b

    ( j Sean a; b 2 Z tales que tienen el mismo resto al dividir por m, entones:

    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 deir a b (mod m).

  • 62CAP

    ITULO 7. LA FUNCI

    ON DE EULER YCONGRUENCIAS CL

    ASICAS

    De esta proposiion se dedue 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 verian 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. a

    n

    b

    n

    (mod m) para todo n 2 Z

    +

    .

    5. f(a) f(b) (mod m) para todo polinomio on oeientes enteros.

    7.2.1. Congruenia de Euler

    Proposiion 7.3 (Congruenia de Euler)

    S a; b 2 Z son primos entre s entones:

    a

    (b)

    1 (mod b )

    Demostraion:

    Como a es primo on m entones la lase de a en Z=b es un elemento inver-

    tible:

    a 2 (Z=b)

    y al ser (Z=b)

    un grupo multipliativo de orden (b) se tiene que:

    1 = a

    (b)

    = a

    (b)

  • 7.2. CONGRUENCIAS CL

    ASICAS 63

    7.2.2. Conguenia de Fermat

    Un aso partiular de la ongruenia de Euler es la ongruenia de Fermat:

    Proposiion 7.4 (Congruenia de Fermat)

    Sea p 2 Z un numero primo y a 2 Z tal que no sea divisible por p entones:

    a

    p1

    1 (mod p)

    Demostraion:

    Como p es primo y no divide a a entones a y p son primos entre s y por la

    ongruenia de Euler tendremos:

    a

    (p)

    1(mod p)

    pero omo p es primo entones (p) = p 1 luego:

    a

    p1

    1(mod p)

  • 64CAP

    ITULO 7. LA FUNCI

    ON DE EULER YCONGRUENCIAS CL

    ASICAS

  • Captulo 8

    El Algoritmo de Eulides

    Deniion 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

    Deniion 8.2 (Anillo Euldeo)

    Diremos que un anillo A es euldeo si es ntegro y se veria el algoritmo

    de Eulides para todo elemento del anillo.

    Sea A un anillo Euldeo y a; d 2 A entones:

    a = d + r (8.1)

    donde:

    a reibe el nombre de dividendo.

    d reibe el nombre de divisor.

    reibe el nombre de oiente.

    r reibe el nombre de resto.

    Donde (??) reibe el nombre de Algoritmo de Eulides. S A = Z diremos

    que (??) es el Algoritmo de Eulides para la division entera.

    Ejemplo de anillos Euldeos son Z y K [x, donde K [x es el anillo de

    polinomios, en la variable x, on oeientes en el uerpo K .

    65

  • 66 CAP

    ITULO 8. EL ALGORITMO DE EUCLIDES

    8.1. Calulo del M.C.D. mediante el Algorit-

    mo de Eulides

    Proposiion 8.1

    Sean a; d; ; r 2 Z tales que a = d + r entones:

    M:C:D:(a; d) =M:C:D:(d; r)

    Demostraion:

    Por deniion de M.C.D. tendremos que:

    m

    1

    =M:C:D:(a; d) () (m

    1

    ) = (a) + (d)

    m

    2

    =M:C:D:(d; r) () (m

    2

    ) = (d) + (r)

    m

    1

    y m

    2

    existen y son unios. Para demostrar la proposiion veamos que

    (m

    1

    ) = (m

    2

    ).

    Esto es inmediato ya que:

    a = d + r 2 (d) + (r)

    r = a d r 2 (a) + (d)

    luego (a) + (d) = (d) + (r) luego m

    1

    = m

    2

    .

    Utilizando la proposiion ?? podemos obtener un algoritmo rapido para de-

    terminar el M.C.D. de dos numeros, ya que la fatorizaion en numeros pri-

    mos de un numero puede ser una tarea lenta y ostosa, sobre todo s el

    numero es grande.

  • 8.2. C

    ALCULO DE INVERSOS EN Z/N 67

    8.1.1. Algoritmo de alulo

    Sean a; b 2 Z, on a > b 6= 0. Por el algoritmo de Eulides tendremos:

    a =

    1

    b+ r

    1

    b =

    2

    r

    1

    + r

    2

    r

    1

    =

    3

    r

    3

    + r

    4

    : : : : : : : : : : : : : : :

    r

    n2

    =

    n

    r

    n1

    + r

    n

    r

    n1

    =

    n+1

    r

    n

    + 0

    por la proposiion ?? tendremos:

    M:C:D:(a; b) = M:C:D:(b; r

    1

    ) =M:C:D:(r

    1

    ; r

    2

    ) =M:C:D:(r

    2

    ; r

    3

    ) =

    = : : : =M:C:D:(r

    n2

    ; r

    n1

    ) =M:C:D:(r

    n1

    ; r

    n

    ) =

    = M:C:D:(r

    n

    ; 0) = r

    n

    8.2. Calulo 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.

    Muhas vees neesitaremos alular 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 CAP

    ITULO 8. EL ALGORITMO DE EUCLIDES

    8.2.1. Caraterizaion de los invertibles de Z/n

    Proposiion 8.2

    m 2 Z/n es invertible () (m;n) = 1, m y n son primos entre s.

    Demostraion:

    ) j m es invertible, entones existe a 2 Z/n tal que:

    a m 1 mod n =) a m 1 0 mod n

    de donde se dedue que:

    a m n = 1 on 2 Z

    y por el ejeriio ??, en la pagina ??, se tiene que 1 = (m;n).

    ( j Como (m;n) = 1 por el ejeriio ??, en la pagina ??, tendremos que

    existen ; 2 Z tales que:

    m+ n = 1

    de donde se dedue:

    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 multipliativo de orden (n).

  • 8.2. C

    ALCULO DE INVERSOS EN Z/N 69

    8.2.2. Euaiones diofantias en Z

    Deniion 8.3 (Euaion diofantia en Z)

    Dados a; b; 2 Z llamaremos euaion diofantia a la siguiente euaion:

    a x+ b y =

    Diremos que tiene soluion uando existan x; y 2 Z que la veriquen.

    El ejeriio ??, en la pagina ??, nos india uando una euaion diofantia

    tiene soluion.

    Una euaion diofantia, omo la anterior, tiene soluion ()

    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 entones la

    siguientes euaion diofantias tendran las mismas soluiones:

    a x+ b y = (8.2)

    a x+ b y = (8.3)

    Dada una euaion diofantia ualquiera, que tenga soluion, omo la (??)

    podemos reduirla a otra euaion diofantia que tiene las mismas soluiones

    y veriando (a; b) = 1, euaion (??).

    Cuando tengamos una euaion diofantia del tipo (??) la reduiremos al

    tipo (??) alulando el maximo omun divisor de a y b, mediante el algoritmo

    de Eulides 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 euaion

    diofantia entones a y b son primos entre s, y diremos que la euaion esta

    en forma reduida.

    Sea a x+b y = una euaion diofantia en forma reduida, si x

    0

    ; y

    0

    2 Z

    son soluion de diha euaion entones (x

    0

    + b; y

    0

    a) son soluiones

    de la euaion para todo 2 Z.

  • 70 CAP

    ITULO 8. EL ALGORITMO DE EUCLIDES

    Ejemplo 8.1 (Resoluion de una euaion diofantia)

    Resolver la euaion diofantia siguiente:

    238 x + 165 y = 1

    Lo primero que tenemos que ver es si tiene soluion. Calulemos el maximo

    omun divisor por el algoritmo de Eulides:

    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 = 1 3

    luego (238; 165) = 1 entones son primos entre s, la euaion tiene soluion.

    Para enontrar una soluion proederemos de la siguiente manera:

    16 = (19 16 1)

    | {z }

    3

    5 + 1 =) 16 6 + 19 (5) = 1

    1 = (73 19 3)

    | {z }

    16

    6 + 19 (5) =) 73 6 + 19 (23) = 1

    1 = (165 73 2)

    | {z }

    19

    (23) + 73 6 =) 73 52 + 165 (23) = 1

    1 = (238 165 1)

    | {z }

    73

    52 + 165 (23) =) 238 52 + 165 (75) = 1

    Luego las soluiones de la euaion diofantia son x

    0

    = 52 e y

    0

    = 75,

    (52;75). Todas las soluiones de la euaion son:

    (52 + 165;75 238) on 2 Z

  • 8.2. C

    ALCULO DE INVERSOS EN Z/N 71

    8.2.3. Calulo de inversos on el algoritmo de Eulides

    Sea n;m 2 Z, on n positivo, no nulo y no primo, y que queremos alular

    el inverso de m en Z=n, que no es uerpo ya que n no es primo. Podemos

    alularlo utilizando el algoritmo de Eulides:

    1. Comprobaremos que, efetivamente, m es invertible en Z=n. Es deir

    que (m;n) = 1. Una forma de haerlo es la desrita 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 signia que:

    x m = b n + 1 on b 2 Z

    Luego tenemos la siguiente euaion diofantia:

    x m+ b n = 1

    Resolvemos la euaion diofantia omo hemos visto en el apartado

    (??), en la pagina ??, y m

    1

    = x mod n.

  • 72 CAP

    ITULO 8. EL ALGORITMO DE EUCLIDES

  • Parte IV

    Criptografa Moderna

    73

  • Captulo 9

    Funiones de un Sentido

    Habamos visto en el aptulo ?? que para que un sistema riptogra-

    o sea seguro era neesario que la funion d(; ) requiera muho tiempo de

    alulo, on lo ual sera difil desifrar un mensaje. Pero esto representa un

    problema, y es que no solo sera difil para un intruso, ademas tambien lo

    sera para el reeptor del mensaje.

    Una soluion a esto la dieron Die y Hellman, onsistia en utilizar fun-

    iones matematias tales que el alulo de la funion direta

    1

    sea fail, pero

    el alulo de la funion inversa

    2

    sea dil, pero que diha funion inversa

    tenga una \trampa", y el onoimiento de diha trampa permita un senillo

    alulo de la funion inversa. Este tipo de funiones reiben el nombre de

    funiones de un sentido o funiones on trampa.

    De esta deniion podemos observar que el heho de que una funion sea

    de un sentido depende del tiempo de alulo utilizado por un ordenador para

    su funion inversa, es deir que depende del ordenador utilizado, ya que no

    es lo mismo realizar una operaion en un ordenador personal que en una

    estaion de trabajo o un superordenador, omo pudiera ser un CRAY. De

    esto tambien se dedue que una funion que hoy en da es onsiderada omo