Está en la página 1de 15

Universidad de la Repblica u Facultad de Ingenier a Instituto de Matemtica y Estad a stica

Criptograf a
Matemtica Discreta 2 a Curso 2007

Material terico para estudiantes o

Criptograf de Clave P blica a u


1. Criptosistemas Csar y Vigenere e

Para comenzar comenzaremos introduciendo dos criptosistemas sencillos para ilustrar algunas tcnicas de cifrado. e

1.1. Mtodo de cifrado Csar. Lleva este nombre en honor a Julio Csar, que lo e e e usaba para comunicarse con sus generales. El mtodo comienza enumerando las letras del e abecedario, por ejemplo la letra A tiene asignado el 0, la letra B el 1, . . ., la letra Z el 25. Luego denimos la clave k como un nmero entre 0 y 25. Para encriptar un mensaje lo u que hacemos es sumarle a cada letra la clave k y reducir mdulo 26. Para desencriptar el o mensaje debemos restar k a cada letra y reducir mdulo 26. o Por ejemplo supongamos que queremos encriptar el mensaje ATACAREMOS POR LA NOCHE, y que el valor de la clave es k = 15 (correspondiente a la letra P): A T A C A R E M O S 0 19 0 2 0 17 4 12 14 18 15 8 15 17 15 6 19 1 3 7 P I P R P G T B D H P O R 15 14 17 4 3 6 E D G L A 11 0 0 15 A P N O C H E 13 14 2 7 4 2 3 17 22 19 C D R W T

En la primer la se ha colocado el texto plano (mensaje sin encriptar), en la segunda se ha sustituido cada letra por su correspondiente nmero, en la tercer la se ha sumado u k = 15 mdulo 26 a cada elemento de la segunda la, nalmente sustituimos cada nmero o u de la tercer la y obtenemos el texto cifrado PIPRPGTBDH EDG AP CDRWT. Para evitar que se vean en el texto cifrado los tamaos de las palabras originales se le n puede asignar tambin un nmero al caracter espacio, por ejemplo el 26, y tratarlo como e u una letra ms, esta vez eligiendo una clave k entre 0 y 26 y realizando las operaciones a mdulo 27. o De todas formas, es muy sencillo romper este criptosistema por fuerza bruta, pues solo habr que chequear con las 27 posibles claves y ver cul tiene sentido. a a Para el criptosistema Csar podemos denir la funcin de encriptado: e o E : Zn Zn , E(x) = x + k (md n) o

donde k es la clave utilizada. Entonces podemos decir que el criptosistema Csar consiste e en aplicar a cada letra del texto, dicha funcin de encriptar. o
3

CRIPTOGRAF DE CLAVE PUBLICA IA

Para desencriptar, restamos a cada letra la clave k, con lo que la funcin de desencripo tado viene dada en este caso por: D : Zn Zn , E(x) = x k (md n) o

Una posible variante del criptosistema Csar es el criptosistema af cambiando la e n, funcin de encriptado por una funcin lineal: o o E : Zn Zn , E(x) = ax + k (md n) o

Pero para poder desencriptar el mensaje original la funcin de encriptado debe ser o inyectiva. Queda como ejercicio para el lector probar que la inyectividad de la funcin de o encriptado denida anteriormente es equivalente a pedirle que mcd(a, n) = 1. Ejercicio. Probar que la funcin o E : Zn Zn , es biyectiva si y solo si mcd(a, n) = 1. De ahora en adelante supondremos que mcd(a, n) = 1, en dicho caso la funcin de o desencriptar en el criptosistema af viene dado por n D : Zn Zn , ax + k y D(y) = a (y k) (md n) o E(x) = ax + k (md n) o

donde a es un inverso de a mdulo n. Esto ultimo es fcil de ver, en efecto: o a (md n) ax y k o (md n) x a (y k) (md n) o o

A modo de ejemplo encriptemos nuevamente el texto ATACAREMOS POR LA NOCHE, pero esta vez utilizando un sistema af con clave (a, k) = (5, 2). Como la n vez pasada asignemos a cada letra un nmero de la siguiente manera: a A le asignaremos u el nmero 0, a B el 1, a C el 2 y as sucesivamente hasta la letra Z a la cual le corresponde u el nmero 25. Asignemos por ultimo al caracter espacio el nmero 26, de modo que para u u este caso la cantidad de caracteres codicados es n = 27. A T A C A R E M O S P O R L A N O C H E 0 19 0 2 0 17 4 12 14 18 26 15 14 17 26 11 0 26 13 14 2 7 4 2 16 2 12 2 6 22 8 18 11 24 23 18 6 24 3 2 24 13 18 12 10 22 C Q C M C G W I S L Y X S G Y D C Y N S M K W Al igual que en el criptosistema Csar, la primer la representa el texto plano, la e segunda de sustituir cada letra por su correspondiente valor, la tercer la de aplicar la funcin de encriptado a cada nmero de la segunda la (en este caso E(x) = 5x + 2 o u (md 27)), la ultima la de sustituir cada letra de la tercer la por su correspondiente o valor, obteniendo as el texto cifrado CQCMCGWISLYXSGYDCYNSMKW. Aqu se vuelve una tarea ms dura poder desencriptar el texto sin conocimiento de a la clave, por lo menos a mano, pues a fuerza bruta en el peor de los casos deber amos chequear (27) 27 = 18 27 = 486 casos (contra 27 del sistema Cesar). No obstante con una computadora llevar un tiempo insignicante, y puede acelerarse el ataque si a agregamos un anlisis de frecuencias. a A continuacin veremos otra mejora del mtodo Csar; el mtodo Vigenere. En lugar o e e e de realizar una sustitucin en el texto letra a letra, lo haremos bloque a bloque. o

1. CRIPTOSISTEMAS CESAR Y VIGENERE

1.2. Mtodo de cifrado Vigenere. Aqu la clave consiste en una palabra, el mtoe e do consiste en repetir debajo del texto cifrado la palabra clave, luego sumar cada letra del texto plano, con la letra de la palabra clave que est debajo de ella (codicando cada letra a con un natural como vimos anteriormente) y reduciendo mdulo la cantidad de caracteres o codicados (por ejemplo 27 en el caso que utilizemos la letras de la A a la Z y el caracter espacio). A modo de ejemplo encriptaremos nuevamente el texto plano ATACAREMOS POR LA NOCHE, esta vez utilizando el mtodo Vigenere con la palabra clave PRUEBA: e A T A C A R E M O S P O R L A N O C H E P R U E B A P R U E B A P R U E B A P R U E B P J U G B R T C H W A P C H T P B B E W L F donde la primer la consiste en el texto plano, en la segunda hemos repetido la palabra clave varias veces, en este caso PRUEBA. En la tercera aparece el texto cifrado, que fue construido sumando las dos letras que aparecen arriba en la misma columna. De esa forma obtenemos el texto cifrado PJUGBRTCHWAPCHTPH BEWLF. Para sumar las letras lo que hemos hecho es sumar sus valores nmericos correspondiente mdulo 27 y u o luego sustituimos este valor por su caracte correspondiente, por ejemplo: A+P= 0 + 15 15 (md 27), la letra que corresponde a 15 es P, luego A+P=P. o T+R= 19 + 17 = 36 9 (md 27), la letra que corresponde a 9 es J, luego T+R=J y o as sucesivamente. Para desencriptar el texto simplemente repetimos la palabra clave debajo del texto plano, pero esta vez en vez de sumar, restamos. Ejercicio. A cada letra del alfabeto le asignamos un nmero de la siguiente manera u a A le correspondemos un 1, a B un 2, a C un 3, y asi sucesivamente hasta la Z que le corresponde un 25 y asignemos al caracter espacio el nmero 26 (o sea que en este ejemplo u n = 27). Desencriptar el mensaje CUIAPGT GZOBQZGO si se sabe que fue encriptado con la palabra clave COPA. Observemos que ahora no es tan fcil chequear a fuerza bruta, la cantidad de claves a posibles crece exponencialmente con el tamao del texto. Este mtodo de cifrado fue n e bastante utilizado e incluso considerado invulnerable hasta el siglo XIX, cuando fueron introducido algunos mtodos para romper este criptosistema. e Un mtodo para romper este criptosistema es el denominado mtodo de Kasiski. Este e e mtodo consiste primero en hallar el tamao de clave (supongamos que la clave tenga e n largo k), luego las letras que ocupan lugares congruentes mdulo k en el texto fueron o cifrados con la misma letra de la palabra clave, luego es posible hallar esa letra con un anlisis de frecuencias. Para hallar el largo de clave bsicamente lo que se hace es buscar a a secuencias de dos letras (bigramas) o de tres (trigramas) que se repiten en el texto cifrado, se conjetura que si el texto es sucientemente largo, entonces la distancias entre bigramas o entre trigramas ser mltiplo del tamao de la clave, y se obtiene el tamao de clave a u n n probable como el mximo comn divisor de tales distancias. a u

CRIPTOGRAF DE CLAVE PUBLICA IA

Una mejora sobre el cifrado Vigenere fue introducida por el sistema de Vernam, utilizando una clave aleatoria de longitud igual a la del mensaje; la conanza en este nuevo criptosistema hizo que se utilizase en las comunciaciones condenciales entre la Casa Blanca y el Kremlin, hasta, por lo menos, el ao 1987. n 2. Criptosistemas de clave privada - mtodos de intercambio de clave e

Se llaman criptosistemas de clave privada a aquellos criptosistemas que se puede obtener facilmente la clave de desencriptar a partir de la de encriptar. Por ejemplo los criptosistemas vistos anteriormente son ejemplos de criptosistemas que son muy faciles de desencriptar conociendo la clave de encriptar. En el mtodo Csar e e se restaba la clave de encriptar a cada letra, en el af basicamente hay que hallar un n inverso modular que se puede hacer facilmente a travs del Algoritmo de Euclides y luego e obtenemos la funcin de desencriptado que se la aplicamos a cada letra. En el Vigenere o es restar la palabra clave reiteradas veces como ya vimos, al igual que en el criptosistema Vernam. Entonces en estos sistemas, la clave de encriptar ha de ser condencial entre las personas que llevan la comunicacin, dado que a partir de ellas un esp puede calcular la o a clave de desencriptar con facilidad. Pero: cmo hacer para intercambiar claves a distancia o para que alguien que intercepte la conversacin no descubra la clave? o Existen varios mtodos para intercambiar claves entre dos personas, entre ellos el que e veremos a continuacin denominado Mtodo de Die-Hellman de intercambio de clave. o e 2.1. Mtodo Die-Helmann de intercambio de clave. Supongamos que Alie cia y Bob quieren ponerse de acuerdo en una clave comn que sea secreta (o sea que solo u ellos conozcan la clave). Pero ellos se encuentran lejos uno del otro y la unica forma de comunicarse entre ellos es a travs de un canal. El problema es que el canal est intercepe a 1 tado por esp que pueden acceder a la conversacin de Alicia y Bob. Die-Helman nos as o da un posible mtodo para resolver el problema: e 1. 2. 3. 4. 5. 6. Alicia y Bob se ponen de acuerdo en un primo p y un nmero g con 1 < g < p. u Alicia elige un nmero al azar n u Bob elige un nmero al azar m u Alicia calcula g n (md p) y se lo manda por el canal. o Bob calcula g m (md p) y se lo manda por el canal. o La clave comn es g nm = (g n )m = (g m )n que tanto Alicia como Bob pueden u calcular.

El esp que accede a la conversacin puede conocer p, g, g n y g m . Si el esp con esa o a os datos fuese capaz de calcular g nm entonces hemos fallado en el intento de acordar la clave comn, pero la unica manera (conocida) de calcular g nm es calculando previamente u n m. Esto en general es un problema computacionalmente dif y es conocido como el o cil problema del logaritmo discreto en Zp .
1Estamos suponiendo que los esp son atacantes pasivos, es decir, tienen la capacidad de acceder a as

la informacin, pero no de modicarla o

2. CRIPTOSISTEMAS DE CLAVE PRIVADA - METODOS DE INTERCAMBIO DE CLAVE

2.2. Problema del logaritmo discreto en Zp . Dado un primo p y dos nmeros u g y a = g n (md p), hallar un m tal que g m a (md p). A un tal m se le llama o o logaritmo discreto de a en base g y se lo nota por m = dlogg a. Se puede probar fcilmente que el logaritmo discreto de un nmero, si existe, no es a u unico sino que est determinado mdulo el orden de g mdulo p (i.e. el menor s 1 tal que a o o g s 1 (md p), cuya existencia est garantizada por ejemplo, por el Pequeo Teorema o a n de Fermat). La prueba se deja como ejercicio para el lector. Hay que observar que el problema del logaritmo discreto puede ser fcil de resolver si a no se escogen bien los parmetros, por ejemplo el primo p debe elegirse grande (200 d a gitos o ms es razonable). Tambin hay que cuidar que el orden de g mdulo p no sea pequeo, a e o n sabemos por el Pequeo Teorema de Fermat que ese orden es a lo sumo p 1, se puede n probar que para todo primo p, siempre es posible hallar elementos de orden exactamente p 1 (a esos elementos se lo conocen como ra primitiva mdulo p). z o Otra cosa a observar es que tanto Alicia en el paso 4 como Bob en el paso 5 necesitan calcular g n (md p) (y g m (md p) respectivamente). Un algoritmo eciente es el algoo o ritmo egipcio de exponenciacin rpida (antes podemos utilizar Fermat para achicar an o a u ms el exponente) visto en el curso que es un algoritmo lineal en la cantidad de bits de n a y por lo tanto muy eciente en la prctica. a Para ilustrar el mtodo veamos un ejemplo con nmeros pequeos: e u n Bob y Alicia eligen p = 97 y g = 5. Alicia elige n = 31, calcula 531 7 (md 97) y o le comunica el 7 a Bob por el canal. Bob elige m = 95, calcula 595 39 (md 97) y le o comunica el 39 por el canal. Ahora Alicia calcula 3931 14 (md 97) y Bob 795 14 o (md 97), as que ambos tienen a k = 14 como su clave secreta. o Un ejemplo un poco ms real puede obtenerse tomando: a Como primo p = 93450983094850938450983409623 y g = 2 (que resulta ser una ra z primitiva mdulo p). Supongamos que los nmeros secretos de Alicia y Bob vienen dados o u por: n = 18319922375531859171613379181 y m = 82335836243866695680141440300 Alicia le envia a Bob: g n = 45416776270485369791375944998 Bob le envia a Alicia: g m = 15048074151770884271824225393 La clave secreta comn viene dada por: u g nm = 85771409470770521212346739540

CRIPTOGRAF DE CLAVE PUBLICA IA

3.

Criptosistemas de clave p blica u

Los criptosistema de clave pblica basan su seguridad en que no haya un mtodo eu e ciente de calcular la clave de desencriptado, an conociendo la clave de encriptar. Estos u sistemas tienen la ventaja de que, como la clave de encriptar no nos ayuda a calcular la clave de desencriptar, puede almacenarse todas las claves de encriptar de muchos usuarios en una gu pblica a la cual todos tengan acceso, evitando as que cada vez que dos a u usuarios quieran comunicarse tengan que ponerse de acuerdo en una clave comn. Veremos u como ejemplo de criptosistema de clave pblica el RSA. u

3.1. Criptosistema RSA. Este criptosistema creado por Rivest, Shamir y Adleman (RSA) es uno de los criptosistemas de clave pblica ms famosos. La idea atrs de u a a este criptosistema es construir una funcin que sea fcil de calcular (en este caso multio a plicar dos primos), pero que su inversa sea dif de calcular (en este caso dado un nmero cil u que es producto de 2 primos, hallar esos primos). Veamos en que consiste. 1. Alicia elige dos primos (distintos) grandes p y q y calcula n = pq. 2. Luego calcula: (n) = (p)(q) = (p 1)(q 1) 3. Luego elige un nmero aleatorio e con: u 1 < e < (n) y mcd(e, (n)) = 1 4. Con ayuda del Algoritmo de Euclides Alicia calcula d Z+ tal que: de 1 (md (n)) o 5. Finalmente Alicia tiene denida una funcin (funcin de encriptado) denida por: o o E : Zn Zn : E(x) = xe (md n) o

La clave pblica de Alicia viene dado por el par (n, e) que puede ser publicada en u una gu de claves pblica. Observemos que el par (n, e) nos brinda toda la informacin a u o necesaria para calcular la funcin de encriptado E. o Alguien que desee mandarle un mensaje condencial x a Alicia, busca la clave pblica de u Alicia en la gu y le envia el mensaje encriptado E(x). a Denimos la funcin de desencriptado como: o D : Zn Zn : D(x) = xd (md n) o

Para calcular la funcin de desencriptado es necesario conocer a d, que resulta equivo alente a conocer los primos p y q que factorizan n. Si los parmetros estn bien elegidos, a a factorizar n llevar demasiado tiempo, an usando los mejores algoritmos de factorizacin a u o conocidos hasta el momento y las computadoras ms rpidas en la actualidad. Entonces a a la seguridad de dicho criptosistema se basa en la dicultad de factorizar nmeros grandes. u Por otra parte observemos que Alicia, conociendo d no tiene problema en, dado x, calcular D(x), pues cuenta para ello con algoritmos ecientes para calcular potencias mdulo o n con el mtodo de exponenciacin rpida. e o a

3. CRIPTOSISTEMAS DE CLAVE PUBLICA

Comenzaremos viendo que efectivamente la funcin D denida arriba es una funcin o o de desencriptado. Proposicin. Sean p, q, n, d y e denidos como antes, y las funciones de encriptado o E(x) = xe (md n) y D(x) = xd (md n). Entonces se tiene que: o o D(E(x)) = x (md n), x Zn o

Dem. Como D(E(x)) = xde (md n), debemos probar que xde x (md n) para o o todo x Z. Conviene aqu separar en casos. Caso 1: p y q dividen a x. En este caso tenemos que pq = n|x y por lo tanto tambin n|xde , luego xde 0 x e (md n). o Para los siguientes casos conviene recordar que d fue elegido tal que de 1 (md (n)), o donde (n) = (p 1)(q 1), por lo tanto existe un k entero tal que de = (p 1)(q 1)k + 1. Caso 2: p divide a x pero q no divide a x. Como x 0 (md p) entonces xde 0 (md p). Por otra parte xde = x(p1)(q1)k+1 = o o x 1 x = x (md q), donde se ha usado el Pequeo Teorema de Fermat o n dado que q no divide a x. Asi que tenemos: (xq1 )(p1)k xde x (md p) o xde x (md q) o Luego por la unicidad del Teorema Chino del Resto xde x (md n). o Caso 3: Ni p ni q dividen a x. Tenemos que x y n son coprimos, luego por el Teorema de Fermat-Euler: x(n) 1 as que: xde = x(n)k+1 = (x(n) )k x 1 x = x (md n) o . (md n) o

3.2. Mtodo de cifrado de bloques. Una manera ingenua de encriptar usando e RSA es encriptando letra a letra, es decir asignamos a cada letra un valor del 0 al 25 y luego aplicamos la funcin de encriptado a cada letra. Es fcil hacer una tabla de valores de o a E(n) para n = 0, 1, 2, . . . , 25 y luego en el mensaje encriptado ver a que letra corresponde cada valor, de esa manera cualquier esp tendr acceso a una conversacin condencial. a a o Otra forma es usando un mtodo de cifrado de bloques, si bien existen varios mtodos e e nos centraremos en el ECB (Electronic Codebook), no por ser el ms eciente, sino por a

10

CRIPTOGRAF DE CLAVE PUBLICA IA

ser el ms fcil de describir. a a Este como los otros mtodos de cifrado en bloques es independiente del cirptosistema e utilizado, aunque aqu a modo de ejemplo veamos como se emplea para un cifrado RSA. El esquema para RSA ser el siguiente, supongamos que tenemos la clave pblica a u (n, e) y que los caracteres que aparecen en nuestro texto son las 26 letras del alfabeto y el espacio en blanco (en total 27 caracteres) y sea k entero tal 27k < n < 27k+1 (observar que ambas desigualdades son estrictas pues n es producto de 2 primos). Ahora separamos nuestro texto en bloques de tamao k: n b1 b2 b3 . . . bt Donde bi es el bloque i-simo, supongamos que bi = lk1 lk2 lk3 . . . l1 l0 donde los li e son caracteres (en nuestro caso las letras del alfabeto y el espacio). Para cada caracter li , sea li el nmero asociado, es decir A = 0, B = 1, C = 2, . . . Z = 25 y Space = 26. u Ahora a cada bloque le asignamos un valor entre 0 y 27k 1 de la siguiente manera: bi = lk1 27k1 + lk2 27k2 + lk3 27k3 + . . . + l1 27 + l0 Rec procamente, cada nmero entre 0 y 27k 1 tiene un k-bloque (bloque de tamao k) u n asociado. Para hallarlo basta escribir al nmero en base 27 y luego sustituir cada d u gito por su correspondiente letra. b1 b2 b3 b1 b2 b3 c1 c2 c3 c1 c2 c3 . . . bt . . . bt . . . ct . . . ct

En la primer la est el texto plano separado en bloques, en la segunda la cada bloque a ha sido sustituido por su valor correpondiente, en la tercer la se ha aplicado la funcin o de encriptado E, a cada bloque, es decir E(bi ) = ci (recordemos que como E : Zn Zn tenemos que 0 E(bi ) < n). Se puede armar que E(bi ) < 27k+1 puesto que n < 27k+1 , pero podr suceder que a k+1 as que podemos escribir: E(bi ) 27 ci = sk 27k + . . . + s1 27 + s0 donde cada sj es un entero entre 0 y 26 (sj es su caracter correspondiente). Finalmente el (k + 1)-bloque ci se dene como ci = sk sk1 . . . s1 s0 y concatenando dichos bloques obtenemos la cuarta la que es el texto cifrado. Veamos esto con un ejemplo. Ejemplo. Supongamos que Ana tiene la clave pblica (n, e) = (25573, 1089) y que le u queremos enviar a Ana el mensaje PEPITO PIDE PAPA PELADA utilizando el mtodo e

3. CRIPTOSISTEMAS DE CLAVE PUBLICA

11

de encriptado en bloque ECB codicando cada letra y cada bloque como ms arriba. a Primero observamos que 273 < 25573 < 274 y procedemos a partir el texto plano en 3-bloques: PEP ITO PI DE PAP A P ELA DA

Recordemos la asociacin entre los caracteres y los nmeros: o u A B C D E ... I ... L ... O P ... T ... Z 0 1 2 3 4 . . . 8 . . . 11 . . . 14 15 . . . 19 . . . 25 26 Ahora calculamos el valor asociado a cada uno de esos 3-bloques: PEP = 15 272 + 4 27 + 15 = 11058 ITO = 8 272 + 19 27 + 14 = 6359 PI = 26 272 + 15 27 + 8 = 19367 . . . As que el primer pasaje del texto plano a bloques de nmeros nos queda: u PEP ITO PAP A P ELA DA 11058 6359 19367 2321 10950 717 3213 2213 PI DE

Ahora aplicamos nuestra funcin de encriptado a cada bloque de nmeros de la segunda o u la obteniendo los siguientes valores: 110581089 (md 25573) = 18461 o 63591089 (md 25573) = 2977 o 193671089 (md 25573) = 4494 o . . . As construimos la tercer la, formada por el texto cifrado dado como bloques de nmeros: u PAP A P ELA DA 11058 6359 19367 2321 10950 717 3213 2213 18461 2977 4494 7817 7311 6453 10431 19891 Finalmente escribimos a cada nmero de la tercer la en base 27 (con 4 d u gitos) para ver el bloque correspondiente a cada nmero. u Por ejemplo 18461 = 0 273 + 25 272 + 8 27 + 20. Recordemos la correspondencia 0 A, 25 Z, 8 I, 20 U , entonces 18461 AZIU . Y as sucesivamente hasta obtener el texto cifrado: PEP ITO PI DE

12

CRIPTOGRAF DE CLAVE PUBLICA IA

PAP A P ELA DA 11058 6359 19367 2321 10950 717 3213 2213 18461 2977 4494 7817 7311 6453 10431 19891 AZIU AECH AGEM AKTO AKAV AIXA AOIJ BAHT As que el texto cifrado enviado a Alicia nos queda: AZIUAECHAGEMAKTOAKAVAIX AAOIJBAHT. Para desencriptar, Alicia separar en bloques de a 4 y decodicar bloque a bloque. A a a cada bloque desencriptado lo escribe con 3-d gitos en base 27 y luego lo pasa a un bloque formado por 3 caracteres. Hay que aclarar que lo expuesto aqu es solo una simplicacin de la realidad. Por o ejemplo vimos que los bloques del texto plano y los del texto cifrado nos quedaron de distinta longitud, para evitar esto lo que se hace es agrandar el tamao de los bloques, a n los bloques del texto plano se le agrega para rellenar un nmero aleatorio, esto tiene la u ventaja de que bloques asociados a nmeros pequenos ya no son tan fciles de descifrar u n a a fuerza bruta. Otra cuestin es que nosotros utilizamos en general un sistema en base 27, o pues fueron la cantidad de caracteres que usamos en nuestro texto, en la prctica suele a usarse la base 128 (cantidad de caracteres del cdigo ASCII) o 256 (cantidad de caracteres o del cdigo ASCII extendido). o Este mtodo de cifrado en bloques (nos referimos al ECB) tiene la debilidad de que e un esp podria buscar la manera de descifrar cada bloque por separado. Como descifrar a cada bloque puede ser (y lo ser en general) ms fcil que descifrar el texto entero esto a a a puede ser una desventaja. Otros mtodos de cifrado en bloques empleados son: e CBC (Cipher-block chaining) PCBC (Propating cipher-block chaining) CFB (Cipher feedback) OFB (Output feedback) SIC (Segmented integer counter) Para ver como funcionan dichos mtodos recomendamos al lector ver por ejemplo la e pgina web: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation a 3.3. Ataques al RSA. Observemos que si podemos factorizar n, es decir hallar los primos p y q tales que n = pq entonces podemos calcular (n) = (p 1)(q 1) y usar el Algoritmo de Euclides para calcular d tal que: de 1 (md (n)) o y de esa forma poder desencriptar todos los mensajes que le llegan a Alicia. Vale resaltar que existe un Algoritmo probabil stico que permite factorizar n conociendo la funcin de o desencriptado D (es decir, conociendo d). De forma que resulta equivalente encontrar la funcin de desencriptado D a factorizar n. o

PEP ITO

PI DE

3. CRIPTOSISTEMAS DE CLAVE PUBLICA

13

Hace pocos aos se ha obtenido un gran avance al descubrirse un algoritmo que facn toriza n en tiempo polinomial en la cantidad de bits de n, aunque los coecientes son tan grandes que todav no es muy eciente en la prctica. Por otro lado en los aos 80 se ha a a n creado el modelo de las computadoras cunticas, que junto a un algoritmo de Shor nos a otorgar un mtodo efectivo para la factorizacin de un entero. Todav no se sabe si es a e o a posible en la prctica la construccin de dichos computadores cunticos. a o a Regresando a la parte matemtica, si hubiese algn mtodo efectivo para calcular (n) a u e entonces ser posible factorizar n en forma efectiva, esto queda como ejercicio para el leca tor. Ejercicio. Sea n = pq con p y q primos. Conociendo (n) describir un mtodo para e hallar los primos p y q. Otra debilidad del criptosistema puede surgir si no son bien elegidos los parmetros. a Por ejemplo si p y q son primos cercanos entonces el Mtodo de Fermat nos otorga un e mtodo efectivo de factorizar n. e

3.4. Mtodo de Fermat. Sea n = pq con p < q primos. Para s = 1, 2, . . . calcue lamos n + s2 y paramos cuando nos de un cuadrado perfecto, digamos n + s2 = t2 con t Z+ . Entonces p = t s y q = t + s. Para comenzar observemos que: n = pq = q+p 2
2

qp 2

as que el algoritmo se detiene (y por lo tanto es efectivamente un algoritmo) en a lo sumo s = qp pasos. 2 Por otra parte sean s y t los enteros positivos que nos otorga el algoritmo. Observemos que q p < n p < n 1 as que por la observacin previa s < (n 1)/2. o Como n + s2 = t2 entonces t > s y n = t2 s2 = (t s)(t + s). Si t s = 1 entonces t + s = n, luego t = (n + 1)/2 y s = (n 1)/2 lo cual es absurdo, por lo tanto t s y t + s son factores de n mayores que 1, as que t s = p y t + s = q. Observemos que q p = 2s, luego si q p es pequeo entonces s tambin lo es y el n e algoritmo termina rpido. a

Para terminar, si volvemos a analizar detalladamente los pasos a seguir por Alicia para la creacin de su clave pblica, nos topamos con un posible inconveniente en la primer o u parte. Alicia debe elegir dos primos grandes p y q para formar su nmero n = pq. El probleu ma es que como dijimos, no se conoce ningn algoritmo realmente efectivo para factorizar u nmeros grandes en tiempo razonable, entonces Cmo hace Alicia para saber elegir los u o

14

CRIPTOGRAF DE CLAVE PUBLICA IA

primos p y q que forman n? Alicia podria tomar dos nmeros al azar p y q y luego factoru izarlos para ver si es primo, pero eso podr llevarle mucho tiempo (aos o inclusive siglos!). a n Afortunadamente es posible decidir si un nmero es primo o compuesto sin necesidad u de encontrar sus factores. Por ejemplo con el Pequeo Teorema de Fermat, supongamos n que queremos ver si n > 2 es primo o no, entonces calculamos 2n1 (md n), si n fuese o primo entonces 2n1 1 (md n), asi que si esto no se verica podemos asegurar que o n es compuesto (Criterio de primalidad de Fermat) sin tener mayor informacin sobre su o factorizacin (si diese 1 no podr o amos armar que fuese primo, pero podr amos probar con otro a, 1 < a < n, calculando an1 (md n)). Una mejora de esta observacin lo da el o o test de primalidad conocido como Test de primalidad Miller-Rabin.

3.5. Test de primalidad Miller-Rabin. Tomamos como entrada del test un entero positivo n > 1 impar del cual queremos determinar si es primo o no, los pasos del algoritmo son los siguientes: 1. 2. 3. 4. 5. 6. 7. 8. 9. Escribir n 1 = 2 m donde m es un entero impar. Elegir un entero a al azar con 1 < a < n 1. Si am 1 (md n) Return n es probablemente primo. o Si = 1 Return n es compuesto Ingreso una nueva variable i = 0. i++ Si i = Return n es compuesto i Si a2 m 1 (md n) Return n es probablemente primo o Retornar al paso 6.

Antes de comenzar a analizar el algoritmo vale recalcar que en el momento que este retorna n es probablemente primo n es compuesto entonces se detiene (es decir, no o seguimos con los siguientes pasos), entonces si hemos llegado a un paso, es porque en los pasos anteriores no ha retornado nada el algoritmo. En el paso 6, el i + + signica que se incrementa el valor de la variable en 1, es decir si en determinado paso i = j y nos toca el paso 6, entonces en el siguiente paso el valor de i es i = j + 1. Ahora veamos la eciencia del algoritmo, primero observemos que para el paso 1, lo que se puede hacer para hallar el y el m es simplemente dividir sucesivamente entre 2 comenzando por n 1 hasta que de un resultado impar (que es el m), la cantidad de veces que se ha divido entre 2 es . Entonces escribir a n de la forma que lo estipula el paso 1, lleva a lo sumo log2 (n) pasos. Luego en las iteraciones de los pasos 6,7,8 y 9 lo que se hace es ir calculando la lista de i nmeros a2 m (md n) con i = 1, 2, . . . , 1, observando que cada trmino de la lista es u o e 2i m )2 = a2i+1 m ). Entonces para calcular cada trmino a el cuadrado del anterior (es decir (a e partir del anterior solo hay que elevar al cuadrado y reducir mdulo n, tomando esto como o una sola operacin. As calcular los nmeros de la lista lleva a lo sumo 1 < log2 (n) o u pasos, as el algoritmo en s lleva un total de 2log2 (n) pasos, as que es lineal en la cantidad de bits de n.

3. CRIPTOSISTEMAS DE CLAVE PUBLICA

15

Ahora nalmente veamos que el algoritmo funciona, es decir que si retorna n es compuesto entonces n es compuesto, antes de ver esto veamos un lema previo. Lema. Si p es primo y x2 1 (md p) entonces x 1 (md p) o o

Dem. Si x2 1 (md p) entonces p|x2 1 = (x 1)(x + 1), luego p|x 1 p|x + 1 o o pues p es primo, en el primer caso x 1 (md p) en el segundo x 1 (md p) o o Volviendo al algoritmo, observemos que para que el algoritmo retorne n es compuesto solo son posibles dos casos: 1. Que = 1 y que am 1 (md n). o Tenemos que n = 2m, si n fuese primo entonces por el Pequeo Teorema de n Fermat tenemos que an1 1 (md n), pero an1 = (am )2 as que (am )2 1 o (md n). Luego por el lema am 1 (md n) ABS, por lo tanto n es compuesto. o o 2. Que > 1, que am 1 (md n) y para i = 1, 2, . . . , 1 ninguno de los o i nmeros a2 m es congruente con 1 mdulo n. u o Si n fuese primo entonces por Fermat: an1 = a2
m

= (am )2 1 (md n) o
i

consideremos el menor j tal que (am )2 1 (md n) para i = j, j + 1, j + o j1 2, . . . , , como am 1 (md n) entonces j > 1. Por otra parte x = (am )2 o j verica x2 1 (md n) (pues (am )2 1 (md n)). Luego por el lema x 1 o o (md n) as que concluimos que j 1 = 0, as que j 1 1, luego por hiptesis x o o no puede ser congruente con 1 mdulo n as que x 1 (md n) contradiciendo o o la minimalidad de j ABS, por lo tanto n es compuesto. Se puede probar que si el algoritmo devuelve n es probablemente primo entonces la probabilidad que n sea compuesto es aproximadamente 1/4. Tambin se prueba que si se e aplica el test k veces con el mismo n (eligiendo valores de a independientes) y supongamos que en las k iteradas retorna n es probablemente primo entonces la probabilidad de que n sea compuesto es del orden de 1/4k que decrece exponencialmente a medida que k aumenta, por eso si k es sucientemente grande el algoritmo es bastante seguro. Para culminar, dejaremos al lector como ejercicio sencillo que pruebe que el test de Rabin-Miller es efectivamente una generalizacin del criterio de de primalidad de Fermat. o Ejercicio. Si el a elegido en el paso 2 del Test de Miller-Rabin verica que an1 1 (md n) entonces el Test de Miller-Rabin devuelve n es compuesto. o

También podría gustarte