Está en la página 1de 16

ALGORITMOS RSA

Presentado por:

Julián Martínez Arévalo – Cód. 20171373012


Giovany Bohórquez – Cód. 20172373006
Michael Martínez Chacón – Cód. 20172373028

Universidad Distrital Francisco José de Caldas

Criptografía y Seguridad en Redes


Prof. Jorge Rodríguez Rengifo

MARCO TEORICO

Resumen: La criptografía se encarga del estudio de los algoritmos, protocolos y sistemas que se
utilizan para proteger la información, y dotar de seguridad a las comunicaciones y a las entidades
que se comunican. Es una herramienta muy útil cuando se desea tener seguridad informática, ya
que puede garantizar las propiedades de confidencialidad, integridad y disponibilidad de los
recursos de un sistema, teniendo claros los conceptos de los sistemas criptográficos modernos,
como su clasificación, el funcionamiento de los sistemas de cifrado y sus algoritmos, y cómo se
forman los documentos digitales.

Dentro de la criptografía, existen los sistemas criptográficos de clase publica que utilizan un par de
claves para el envío de mensajes, RSA es el primer y más utilizado algoritmo de este tipo que utiliza
una clave de cifrado publica y otra privada, y es válido tanto para cifrar como para firmar
digitalmente, inventado por Ronald Rivest, Adi Shamir y Len Adleman consta de tres pasos:
generación de claves, cifrado y descifrado.

El criptosistema de Rabin es una técnica criptográfica asimétrica cuya seguridad, al igual que RSA,
se basa en la complejidad de la factorización de números enteros.

Palabras clave: Criptografía, cifrado, seguridad informática, clase pública, algoritmos RSA, teorema
chino, criptosistema Rabin.

Criptografía: La palabra criptografía proviene en un sentido etimológico del griego Kriptos=ocultar,


Graphos=escritura, lo que significaría ocultar la escritura, o en un sentido más amplio sería aplicar
alguna técnica para hacer ininteligible un mensaje.
En su clasificación dentro de las ciencias, la criptografía proviene de una rama de las matemáticas,
que fue iniciada por el matemático Claude Elwood Shannon en 1948, denominada: “Teoría de la
Información”.

Esta rama de las ciencias se divide en: “Teoría de Códigos” y en “Criptología”. Y a su vez la Criptología
se divide en Criptoanálisis y Criptografía, como se muestra en la siguiente figura:

Ilustración 1: Origen de la Criptografía.

En un sentido más amplio, la Criptografía es la ciencia encargada de diseñar funciones o dispositivos,


capaces de transformar mensajes legibles o en claro a mensajes cifrados de tal manera que esta
transformación (cifrar) y su transformación inversa (descifrar) sólo pueden ser factibles con el
conocimiento de una o más llaves.

En contraparte, el criptoanálisis es la ciencia que estudia los métodos que se utilizan para, a partir
de uno o varios mensajes cifrados, recuperar los mensajes en claro en ausencia de la(s) llave(s) y/o
encontrar la llave o llaves con las que fueron cifrados dichos mensajes.

Clasificación de la criptografía: La criptografía se puede clasificar históricamente en dos: La


criptografía clásica y la criptografía moderna.

La criptografía clásica es aquella que se utilizó desde antes de la época actual hasta la mitad del siglo
XX. También puede entenderse como la criptografía no computarizada o mejor dicho no digitalizada.
Los métodos utilizados eran variados, algunos muy simples y otros muy complicados de
criptoanalizar para su época.

Se puede decir que la criptografía moderna se inició después de tres hechos: el primero fue la
publicación de la “Teoría de la Información” por Shannon; el segundo, la aparición del estándar del
sistema de cifrado DES (Data Encryption Standard) en 1974 y finalmente con la aparición del estudio
realizado por Whitfield Diffie y Martin Hellman sobre la aplicación de funciones matemáticas de un
solo sentido a un modelo de cifrado, denominado cifrado de llave pública en 1976.
Tanto la criptografía clásica como la moderna se clasifican de acuerdo a las técnicas o métodos que
se utilizan para cifrar los mensajes. Esta clasificación la podemos ver en la siguiente figura:

Ilustración 2: Clasificación de la Criptografía.

En la criptografía moderna se pueden clasificar dos grandes grupos: la criptografía de llave secreta
o asimétrica y la criptografía de llave pública o asimétrica.

Para nuestro caso, se realizará un enfoque en el análisis de la criptografía de clase publica que
incluye el criptosistema RSA, el teorema chino, el criptosistema Rabin, ventajas y desventajas y los
tipos de ataques que se pueden realizar a los mismos, entre otros.

Criptografía Asimétrica o de clave pública: Se basa en la imposibilidad computacional de factorizar


números enteros grandes usando dos claves diferentes, en donde una clave puede desencriptar lo
que la otra ha encriptado. Utiliza por definición dos claves diferentes para cada usuario, una para
cifrar denominada Clave Pública (conocida por todos), es usada por el propietario para encriptar los
mensajes, mientras que la otra, llamada Clave Privada (conocida sólo por el propietario), es usada
para desencriptar o descifrar el mensaje cifrado.

Si se observa la siguiente figura, que ilustra la idea de criptografía de llave pública, se puede ver
claramente que no existe simetría en ella, ya que de un lado de la figura se cifra o descifra con una
llave pública y en el otro lado con una privada. De este hecho es de donde la criptografía asimétrica
debe su nombre.

Ilustración 3: Criptografía asimétrica.


Es importante destacar que para este tipo de criptografía lo que se cifra con una llave se puede
descifrar con la otra llave. Es decir, yo puedo cifrar con la llave pública y descifrar con la privada y
viceversa. Esto es de gran ayuda ya que el número de llaves que debo de poseer se reduce
considerablemente.

Por ejemplo, si alguien quisiera enviar un mensaje cifrado a N personas, necesitaría saber N llaves
públicas una de cada persona, pero si N personas le quiere enviar un mensaje cifrado sólo es
necesario que los demás conozcan su llave pública. Así, sólo tengo que preocuparme de que la llave
pública sea de la persona que dice ser. Este es el problema de la criptografía asimétrica, la
autenticidad de las llaves públicas. Algunos ejemplos de este tipo de criptografía son RSA, El Gamal
y Curvas Elípticas.

Cómo solución al problema de intercambio de llaves secretas usando criptografía asimétrica, se


supone que alguien va a enviar la llave secreta k a una persona para que puedan cifrar entre ellos
mensajes. Lo que se hace es que se toma la llave pública de la persona a la que se le va a enviar el
mensaje y se cifra con un sistema asimétrico la llave secreta, esto implica que sólo la persona
poseedora de la llave privada pueda descifrar lo que se está enviando y con ello tener la llave
secreta, tal y como se muestra en la siguiente figura.

Ilustración 4: Intercambio de llaves secretas.


ALGORITMO RSA

El algoritmo de clave pública RSA fue creado en 1978 por Rivest, Shamir y Adlman, es el sistema
criptográfico asimétrico más conocido y usado. Estos señores se basaron en el artículo de Diffie-
Hellman sobre sistemas de llave pública, crearon su algoritmo y fundaron la empresa RSA Data
Security Inc., que es actualmente una de las más prestigiosas en el entorno de la protección de
datos.

El sistema RSA se basa en el hecho matemático de la dificultad de factorizar números muy grandes.
Para factorizar un número el sistema más lógico consiste en empezar a dividir sucesivamente éste
entre 2, entre 3, entre 4, y así sucesivamente, buscando que el resultado de la división sea exacto,
es decir, de resto 0, con lo que ya tendremos un divisor del número.

Ahora bien, si el número considerado es un número primo (el que sólo es divisible por 1 y por él
mismo), tendremos que para factorizar habría que empezar por 1, 2, 3, hasta llegar a él mismo, ya
que por ser primo ninguno de los números anteriores es divisor suyo. Y si el número primo es lo
suficientemente grande, el proceso de factorización es complicado y lleva mucho tiempo.

Basado en la exponenciación modular de exponente y módulo fijos, el sistema RSA crea sus claves
de la siguiente forma:

Se buscan dos números primos lo suficientemente grandes: p y q (de entre 100 y 300 dígitos).

Se obtienen los números n = p * q y Ø = (p-1) * (q-1).

Se busca un número e tal que no tenga múltiplos comunes con Ø.

Se calcula d = e-1 mod Ø, con mod = resto de la división de números enteros.

Y ya con estos números obtenidos, n es la clave pública y d es la clave privada. Los números p, q y Ø
se destruyen. También se hace público el número e, necesario para alimentar el algoritmo.

El cálculo de estas claves se realiza en secreto en la máquina en la que se va a guardar la clave


privada, y una vez generada ésta conviene protegerla mediante un algoritmo criptográfico
simétrico.

En cuanto a las longitudes de claves, el sistema RSA permite longitudes variables, siendo aconsejable
actualmente el uso de claves de no menos de 1024 bits (se han roto claves de hasta 512 bits, aunque
se necesitaron más de 5 meses y casi 300 ordenadores trabajando juntos para hacerlo).

RSA basa su seguridad es ser una función computacionalmente segura, ya que, si bien realizar la
exponenciación modular es fácil, su operación inversa, la extracción de raíces de módulo Ø no es
factible a menos que se conozca la factorización de e, clave privada del sistema.

RSA es el más conocido y usado de los sistemas de clave pública, y también el más rápido de ellos.
Presenta todas las ventajas de los sistemas asimétricos, incluyendo la firma digital, aunque resulta
más útil a la hora de implementar la confidencialidad el uso de sistemas simétricos, por ser más
rápidos. Se suele usar también en los sistemas mixtos para encriptar y enviar la clave simétrica que
se usará posteriormente en la comunicación cifrada.
TEOREMA CHINO DEL RESTO

El Teorema de los Restos Chinos, es llamado así, debido a que las versiones más antiguas sobre estos
problemas de congruencias se encuentran en trabajos matemáticos chinos.

El problema más antiguo se encuentra en el texto Sun Zi Suan Ching (Manual de Matemática de Sun
Zi) escrito aproximadamente en el siglo III por el matemático chino Sun Zi, y corresponde al
problema 26.

El enunciado del problema de Sun Zi es el siguiente:

Tenemos un número de cosas, pero no sabemos exactamente la cantidad. Si las contamos de a tres,
quedan dos sobrando. Si las contamos de a cinco, quedan tres sobrando. Si las contamos de a siete,
quedan dos sobrando. ¿Cuántas cosas pueden ser?

A continuación, se describe la solución dada por Sun Zi en su obra:

• Determinó que se podía resolver usando los números 70, 21 y 15, que eran múltiplos de 5⋅7, de
3⋅7 y de 3⋅5 respectivamente.

• Observó que la suma 2⋅70 + 3⋅ 21+ 2⋅15 igual a 233, es una solución del problema.

• Luego, restó a 233 múltiplos de 3⋅5⋅7 tantas veces como fuera posible, obteniendo el número 23,
siendo este número el menor entero positivo que resuelve el problema.

Desafortunadamente, en el texto se encuentra solo el problema 26 que ilustra el Teorema. No se


sabe si Sun Zi desarrolló un método general para resolver tales problemas.

Una versión más popular del problema de Sun Zi, conocida por el nombre Han Xing Dian Bing, que
significa Han Xing cuenta sus soldados, es el siguiente:

¿Cuántos soldados puede tener el ejército de Han Xing si al formarlos en tres columnas quedan dos
soldados, si se ordenan en 5 columnas quedan tres soldados, y al ordenarlos en 7 columnas, quedan
dos soldados?

Un primer enunciado del Teorema, se encuentra en el libro escrito por el matemático chino Qin
Jiushao1 (1202-1261), publicado en el año 1247. En su libro, Qin ofrece un método práctico para
resolver este tipo de problemas.

Aproximadamente mil años después, el matemático italiano conocido como Fibonacci (1170-1250)
trabajó el problema de Sun Zi, pero no descifró el método presentado. Posteriormente, el
matemático suizo Leonhard Euler (1707-1783) se interesó en el teorema y en el método chino y
presentó una versión moderna y más generalizada del teorema.

Luego, el matemático alemán Carl F. Gauss (1777-1885) descubrió un nuevo método para resolver
sistemas de congruencias lineales alrededor del año 1801.

El método de Qin Jiushao fue difundido en Europa por el misionero inglés Alexander Wylie (1815-
1887) en su tratado Jottings on the science of Chinese arithmetic, publicado en 1852
CRIPTOSISTEMA RSA

El RSA es un algoritmo bastante sencillo, ya que su fortaleza radica en las bases matemáticas que
posee, dentro de las cuales se incluyen:

• Anillo de enteros.
• División de enteros. A = b*(cociente) + residuo.
• Múltiplos y divisores de enteros.
• Máximo común divisor (M.C.D.).
• Mínimo común múltiplo (M.C.M.).
• Números primos y números primos entre sí. (Lo que hace fuerte al RSA).
• Descomposición en factores primos.
• Algoritmo de Euclides.
• Algoritmo extendido de Euclides.
• Función multiplicativa de Euler.

Dentro de estas bases matemáticas, las ultimas serán definidas y explicadas a continuación:

Algoritmo de Euclides: Este es un método para calcular el máximo común divisor de dos números
cualesquiera, sin necesidad de descomponerlos en factores primos. Esto es muy importante desde
el punto de vista de la computación, porque descomponer un número en factores primos, según se
sabe, es un algoritmo de coste exponencial en el tamaño del número, es decir, el tiempo que cuesta
ejecutarlo crece exponencialmente con dicho tamaño. Sin embargo, el costo del algoritmo de
Euclides es un tiempo lineal con el tamaño.

El algoritmo usa la siguiente proposición: Dados dos enteros positivos a y b, si se divide el mayor
entre el menor, lo cual da un cociente q y un resto r, es decir, a = bq + r, se cumple que mcd (a, b) =
mcd (b, r). es decir que dados a y b, se calcula la división entera entre ellos, obteniendo un cociente
q y un resto r, entonces se calcula de nuevo la división entera entre b y r, obteniendo un nuevo
cociente y un nuevo resto, el proceso se itera hasta que el resto sea 0, en cuyo caso el último divisor
b es el máximo común divisor, la sucesión de los restos es estrictamente decreciente, y como se
trata de una sucesión de números positivos, llegará a valer 0, con lo que el algoritmo finaliza.

Ejemplo: sean a = 643 y b = 412. Entonces, escribiendo en cada línea a = qb + r

▪ 643 = 1 x 412 + 231 (Al dividir 643 entre 412)


▪ 412 = 1 x 231 + 181 (Al dividir 412 entre 231)
▪ 231 = 1 x 181 + 50 (Al dividir 231 entre 181)
▪ 181 = 3 x 50 + 31
▪ 50 = 1 x 31 + 19
▪ 31 = 1 x 19 + 12
▪ 19 = 1 x 12 + 7
▪ 12 = 1 x 7 + 5
▪ 7=1x5+2
▪ 5=2x2+1
▪ 2=2x1+0
Por tanto, el M.C.D de 643 y 412 es el último divisor b, o sea, 1. En este caso particular se ha
encontrado que 643 y 412 son primos entre sí. En general, obsérvese que en cada paso el algoritmo
sustituye cada dividendo por el último resto obtenido, y cada divisor por el penúltimo resto,
calculando entonces de nuevo la división para generar los actuales cociente y resto. Cabe destacar
que esto no vale para los dos primeros pasos, en los que aún no se tienen dos restos anteriores.

Algoritmo extendido de Euclides: Una variación interesante del algoritmo de Euclides que es muy
útil para el RSA, es el algoritmo extendido. Es posible probar que el máximo común divisor de dos
enteros d = M.C.D(a, b) (y en general cualquier otro divisor) se puede escribir siempre como
combinación lineal de ambos, o sea, existen dos enteros ʎ y µ tales que d = ʎ a + µ b. A esta igualdad
se la llama "Identidad de Bezout".

Para encontrar dichos enteros basta recorrer los pasos del algoritmo de Euclides visto antes, al
revés, realizando en cada paso solo las sustituciones hacia atrás que sean pertinentes. En el paso i-
ésimo se debe sustituir en el despeje del resto correspondiente a dicho paso; debe hacerse en uno
de sus dos sumandos cada vez, y usando para ello la igualdad del paso (i – 2), excepto en el primero,
en que se usa la igualdad del paso inmediatamente anterior.

Función multiplicativa de Euler: Si se tiene un entero p, éste será divisible por algunos, aunque no
todos, los enteros anteriores a él (en el caso extremo de que fuese primo, por ninguno). O sea,
algunos de estos enteros serán primos relativos con p y otros no. La función de Euler dice, para cada
p, cuántos lo son.

Definición: Se define la función multiplicativa de Euler, ɸ(r), como el número de números enteros
mayores o iguales que 1 y menores que r que son primos relativos con él, es decir:

ɸ(r) = # {s / s >= 1 y s < r y mcd (s, r) = 1}, Donde # denota el cardinal del conjunto.

Véase ahora como, dado un número r, se puede calcular el valor de ɸ(r):

1. Si r es primo, ɸ(r) = r – 1

2. Si r es el producto de dos números primos entre sí, o sea, r = pq con mcd (p, q) = 1,
entonces ɸ(r) = ɸ(p) ɸ(q)

3. Si r = pk con p primo, entonces ɸ(r) = pk – pk-1 = pk (p - 1)

Descripción del cifrado: El algoritmo RSA puede ser explicado de la siguiente manera: Tenemos dos
sujetos A y B que quieren comunicarse, pero solo lo pueden hacer a través de un medio en el que
cualquier otro sujeto C, puede coger ese mensaje y leerlo sin problema. ¿De qué manera pueden
enviar un mensaje que no pueda ser leído por otra persona ajena a A y B?

A envía una caja fuerte con un candado abierto, a B. Luego de esto B mete su mensaje en la caja y
cierra esta con el candado que venía en ella, de modo que cuando la caja es enviada a A de regreso,
este puede abrirla, ya que es él quien posee la llave de dicho candado.
Técnicamente, A envía a B un «mensaje llano» M en forma de un número m menor que otro número
n, mediante un protocolo reversible conocido como padding scheme («patrón de relleno»). A
continuación, genera el «mensaje cifrado» c mediante la siguiente operación:

c = me (mod n), Donde e es la clave pública de B.

Ahora A descifra el mensaje en clave c mediante la operación inversa dada por:

m = cd (mod n), Donde d es la clave privada que solo A conoce.

Como se notará a continuación, RSA es un algoritmo bastante sencillo, y es posible que no se note
su fortaleza, pero sus principios matemáticos, basados en números primos son los que hacen que
este pequeño pueda ser una fortaleza.

Construcción de la clave: Inicialmente es necesario generar aleatoriamente dos números primos


suficientemente grandes (64 bits como mínimo), a los que se llamaran p y q.

A continuación, se calcula n como producto de p y q:

n=p*q

Se calcula ɸ:

ɸ(n) = (p-1) (q-1), Donde ɸ es la función de Euler.

Se calcula un número natural “e” de manera que MCD (e, ɸ(n)) = 1, es decir, “e” debe ser primo
relativo de ɸ(n). Es lo mismo que buscar un número impar por el que dividir ɸ(n) de cero como
resto.

Mediante el algoritmo extendido de Euclides se calcula d = inverso de “e” en Zn:

d: e.d (mod ɸ(n)) = 1

Puede calcularse:

d = ((Y * ɸ(n)) + 1) / e, Para Y = 1,2,3, hasta encontrar un d entero.

Ya se tiene la clave publica que son el par de números (e, n), y se tiene la clave privada que son el
par de números (d, n). La dificultad de descifrado de RSA radica en la dificultad del cálculo de ɸ(n),
por ello se debe tomar p y q lo suficientemente grandes.

Envío y recepción de un mensaje cifrado: La persona que envía el mensaje, ha de conocer la parte
pública de la clave del destinatario.

Supóngase que se tiene el siguiente mensaje: x1, x2, x3, …, xn.

Se procede a hacer xe mod n = y. En otras palabras, la función de cifrado es C = Me mod n

En el extremo receptor, se utiliza la función de descifrado es M = Cd mod n.


ATAQUES CONTRA RSA

Los ataques contra un sistema de comunicaciones se pueden agrupar en cuatro categorías:

• Interrupción: algún elemento del sistema es puesto fuera de servicio.

• Interceptación: alguien no autorizado accede a cierta información o a cualquier elemento


de la red.

• Modificación: alguien no autorizado, tras haber accedido a un mensaje o a cualquier


elemento de la red, altera su contenido.

• Fabricación: alguien no autorizado, falsificando su identidad, inserta información en el


sistema.

El ataque por interceptación se considera “pasivo”, mientras que los otros tres tipos se clasifican
como ataques “activos”. Para poder detectar y prevenir estos ataques, las redes deben incorporar
mecanismos que proporcionan servicios de seguridad. Estos servicios pueden resumirse en:

Confidencialidad: Solo las personas o maquinas autorizadas pueden acceder a la información


transmitida a través de una red de comunicaciones o al contenido de la información guardada en
un sistema informático. En algunos casos, no solo hay que proteger el contenido de los mensajes
(confidencialidad del mensaje), sino también las identidades del emisor y del receptor
(confidencialidad del tráfico de mensajes).

Integridad: Ninguna persona no autorizada ha de poder modificar la información transmitida o


almacenada. El mensaje debe llegar a su destino sin haber sufrido alteración alguna en su contenido
o en el orden de la recepción de sus unidades si se compone de varios bloques.

Autenticación: El origen de un mensaje ha de estar perfectamente identificado.

No repudio: Debe quedar constatado si un usuario envía o recibe algún mensaje. De esta manera,
ni el emisor del mensaje ni el receptor del mismo pueden negar que se haya efectuado la
transmisión.

Control de acceso: Solo los usuarios autorizados debidamente identificados pueden obtener
permiso de acceso a los recursos del sistema.

Disponibilidad: El sistema no debe permitir que usuarios no autorizados dejen fuera de


funcionamiento elementos de la red e impidan, así, las comunicaciones.

Para el estudio de los sistemas criptográficos es conveniente conocer la situación del enemigo. Se
tienen los siguientes ataques posibles:

• Ataque sólo con texto cifrado. Esta es la peor situación posible para el criptoanalista, ya
que se presenta cuando sólo conoce el criptograma.

• Ataque con texto original conocido. Consiste en que el criptoanalista tiene acceso a una
correspondencia del texto inicial y cifrado. Se de este caso, por ejemplo, cuando conoce el tema del
que trata el mensaje, pues eso proporciona una correspondencia entre las palabras más probables
y las palabras cifradas más repetidas.

• Ataque con texto original escogido. Este caso se da cuando el enemigo puede obtener,
además del criptograma que trata de descifrar, el cifrado de cualquier texto que él elija,
entendiéndose que no es que él sepa cifrarlo, sino que lo obtiene ya cifrado.

• Ataque con texto cifrado escogido. Se presenta cuando el enemigo puede obtener el texto
original correspondiente a determinados textos cifrados de su elección.

En particular para el criptosistema RSA, se destacan los siguientes tipos de ataques:

Ataque a modulo común: Una posible implementación de RSA consiste en asignar el mismo modulo
n a distintos usuarios, pero distintos valores para los exponentes e y d. Esto tiene el fallo de que si
el mismo mensaje se cifra con distintos exponentes y el mismo modulo y ambos exponentes son
primos entre sí (y generalmente lo serán), el texto en claro puede recuperarse sin ninguno de los
exponentes privados.

Sea P el texto en claro. Sean e1 y e2 los exponentes públicos (claves de cifrado) y n el módulo. Los
textos cifrados son:

C1 = pe1 mod n

C2 = pe2 mod n

El criptoanalista tiene acceso a C1, C2, e1, e2 y n. Así es como recupera p.

Ataque basado en un exponente publico “bajo”: Aunque el exponente bajo acelera el cifrado,
también lo hace mas inseguro. Si se encriptan e (e+1) /2 mensajes linealmente dependientes con
diferentes claves publicas y el mismo valor de e hay un ataque contra el sistema. Si los mensajes son
idénticos entonces es suficiente con e mensajes. La solución más sencilla a este problema es añadir
a los mensajes valores aleatorios independientes.

Ataque basado en un exponente privado “bajo”: Otro ataque permite recuperar d cuando este no
supera un cuarto de n y e es menor que n. Esto ocurre raramente si e se elige al azar. El fundamento
matemático del ataque es la representación de los números racionales como fracciones continuas
finitas.

Ataque por iteración: Conocidos n, e y C, un enemigo puede producir una sucesión de mensajes C1
= Ce mod n, C2 = C1e mod n … Ck = Ck-1e mod n. Si existe un Cj tal que C = Cj se deduce que M = Cj-
1 ya que Cj-1e=Cj=C.

Este ataque se vuelve impracticable si p-1 y q-1 contienen factores primos grandes.
ALGORITMO RABIN

El criptosistema de Rabin es una técnica criptográfica asimétrica cuya seguridad, al igual que RSA,
se basa en la complejidad de la factorización. Sin embargo, la ventaja del criptosistema de Rabin es
que se ha demostrado que la complejidad del problema en el que se basa, es tan dura como la
factorización de enteros, cosa que se desconoce si es cierto en el caso del RSA simple. El
inconveniente que tiene es que cada salida de la función de Rabin puede ser generado por 4 posibles
entradas, y si cada salida es un texto cifrado se requiere un tiempo extra en el descifrado para
identificar cuál de las 4 posibles entradas era el correcto texto en claro. El algoritmo se publicó en
enero de 1979 por Michael O. Rabin.

El sistema de llave asimétrica de Rabin se basa en el problema de calcular raíces cuadradas módulo
un número compuesto. Este problema se ha demostrado que es equivalente al de la factorización
de dicho número.

El sistema de llave asimétrica de Rabin se basa en el problema de calcular raíces cuadradas módulo
un número compuesto. Este problema se ha demostrado que es equivalente al de la factorización
de dicho número. En primer lugar, escogemos dos números primos, p y q, ambos congruentes con
3 módulo 4 (los dos últimos bits a 1). Estos primos son la clave privada. La clave pública es su
producto,

n = pq.

Para codificar un mensaje m, simplemente se calcula

c = m2 (mod n)

La descodificación del mensaje se hace calculando lo siguiente:

m1 = c(p+1)/4 (mod p)

m2 = (p - c(p+1)/4) (mod p)

m3 = c(p+1)/4 (mod q)

m4 = (q -c(p+1)/4) (mod q)

Luego se escogen a y b tales que

a = q (q -1 (mod p)) y b = p (p -1 (mod q)).

Los cuatro posibles mensajes originales son

ma = (am1 + bm3) (mod n)

mb = (am1 + bm4) (mod n)

mc = (am2 + bm3) (mod n)

md = (am2 + bm4) (mod n)


Desgraciadamente, no existe ningún mecanismo para decidir cuál de los cuatro es el auténtico, por
lo que el mensaje deberá incluir algún tipo de información para que el receptor pueda distinguirlo
de los otros.

Fundamentación del Algoritmo de Rabin.

Ahora presentaremos el Criptosistema de Rabin, el cual es computacionalmente seguro contra todo


ataque de texto plano elegido bajo el supuesto que es computacionalmente in factible factorizar
números de la forma n = p * q, donde p y q son primos. Sea n el producto de dos primos distintos p
y q, con p, q ≡ 3(mod A).

Sea P = C = Ζn y definamos

𝐾 = {(𝑛, 𝑝, 𝑞, 𝐵): 0 ≤ 𝐵 ≤ (𝑛 − 1)}


Para K = (n, p, q, B) definimos

𝐸𝑘 (𝑥) = 𝑥 (𝑥 + 𝐵) (𝑚𝑜𝑑 𝑛)
y

𝐵2 𝐵
𝑑𝑘 (𝑦) = √ 4 + 𝑦 − 2

La clave pública es (n, B), y p y q se mantienen secretos.

La función de encripción no es inyectiva, así que la decripción es ambigua. En efecto si w es una raíz
cuadrada no trivial de 1, entonces para todo texto plano x hay tres valores distintos que producen
el mismo texto cifrado, y son

x,

-x – B,

w (x + B/2) – B/2,

-w (x + B/2) – B/2.

Por ejemplo:

Ek (w (x + B/2) – B/2) = (w (x + B/2) – B/2) *(w (x + B/2) – B/2)

= w2 (x + B/2) 2 – B2/4

= x(x-B) (mod n)

= x(x-B) (mod n)
En general, el receptor del mensaje no tiene forma de distinguir entre estos cuatro textos planos
posibles a menos que el texto plano contenga suficiente redundancia como para eliminar tres de las
cuatro posibilidades.

Para decriptar debemos resolver

𝑥 2 + 𝐵𝑥 ≡ 𝑦 (𝑚𝑜𝑑 𝑛)
o equivalentemente,
𝐵2
𝑥12 ≡ 𝑦 + 4
(𝑚𝑜𝑑 𝑛)

donde x1 = x + B/2.

Sea entonces C = y + B2. Observemos que C es un residuo cuadrático si la encripción se hizo


correctamente. Las soluciones de la ecuación (x1)2 = C (mod n) se pueden obtener mediante el
Teorema Chino del Resto a partir de las soluciones de las ecuaciones:

𝑥12 ≡ 𝐶 (𝑚𝑜𝑑 𝑝)

𝑥12 ≡ 𝐶 (𝑚𝑜𝑑 𝑞)
Cada una de estas ecuaciones tiene dos raíces. Estas se pueden combinar para obtener las cuatro
soluciones de la ecuación original (por el TCR). Por el criterio de Euler sabemos que si se encriptó
correctamente C es un residuo cuadrático módulo p y módulo q. Pero esto no basta para poder
resolver las ecuaciones. En realidad, el elemento clave para esto es el hecho que

p ≡ 3(mod 4) y q ≡ 4, pues en este caso tenemos un algoritmo determinista polinomial que nos
permite calcular las raíces cuadradas de residuos cuadráticos módulo p o q. Las raíces de la primera
ecuación vienen dadas por

±C(p+1) /4(mod p).

En efecto:

(±C(p+1)/4) 2

≡ C(p+1)/2(mod p).

≡ C(p-1)/2 C (mod p).

≡ C (mod p).

esto debido a que C es residuo cuadrático, luego por el criterio de Euler se tiene que: C(p-1) /2 ≡
1(mod p).

Análogamente, las raíces de la segunda ecuación son ±C(q+1) /4(mod q). Teniendo las soluciones de
ambas ecuaciones se obtienen directamente las cuatro raíces de C módulo n usando el Teorema
Chino del Resto.
Cabe hacer dos observaciones:

1. El adversario no sabe cuál de las cuatro es la decripción correcta, pero el receptor tampoco. Esto
se resuelve acordando ciertas reglas de redundancia en el mensaje (i.e. el mensaje se transmite
como dos copias concatenadas, el tercer bit se repite tres veces, etc.) para poder distinguir cuál de
las cuatro raíces corresponde al mensaje original.

2. Es interesante el hecho que para el caso en que un primo p es congruente a 1 modulo 4 no se


conoce ningún algoritmo polinomial determinista para determinar las raíces cuadradas de residuos
cuadráticos módulo p, i.e. el hecho que p ≡ 3 (mod 4) y q ≡ 4 (mod 3) es vital para el algoritmo de
decripción (Sin embargo, se conoce un algoritmo probabilista de tiempo polinomial que cumple este
propósito).

CONCLUSIONES

• Con el uso de la criptografía moderna podemos garantizar las propiedades de integridad y


confidencialidad, y con ello resolver casi en su totalidad el problema de la seguridad
informática, por lo menos de manera teórica. Pero su nivel de seguridad depende de
factores que la debilitan como un sistema mal diseñado o el factor humano, siendo este
último el eslabón más débil en todo esquema de seguridad informática.
• El tamaño de las llaves es fundamental para garantizar el nivel de seguridad de los
criptosistemas, debido a que los modernos programas de cómputo pueden realizar ataques
basados en los conceptos teóricos sobre los cuales fueron diseñados los algoritmos,
adicionalmente por bugs en el sistema, errores en las líneas de código o un sistema mal
programado, debilitando la seguridad informática.

• Ventajas de la criptografía con clave pública: Se debe guardar sólo la cave privada (la
autenticidad de las claves públicas debe ser garantizada). Dependiendo del modo de uso,
un par de clave privada/clave pública quedaría inalterado por ciertos períodos de tiempo.
En una red grande, el número de claves necesarias sería más pequeño que en el contexto
de clave simétrica.

• El método de encriptación de Rabin es sumamente rápido ya que sólo involucra una simple
raíz cuadrada modular en comparación con el sistema RSA. La desencriptación de Rabin es
más lenta que la encriptación, pero es comparable en rapidez con la desencriptación del
RSA.
BIBLIOGRAFÍA

1. Gil, P. C. (2002). Introducción a la Criptografía. Ra-ma. Página web:


https://revistasic.com/revista54/pdf_54/SIC_54_bibliografia.PDF
2. Morán Torres, O. C., Poveda Moreno, R. A., & Quintero Cadena, L. B. (2003). Criptografía
moderna:(criptosistemas de clave pública y privada) (Doctoral dissertation). Página web:
http://riul.unanleon.edu.ni:8080/jspui/bitstream/123456789/1181/1/188232.pdf
3. Lomparte, L., & Regina, K. (2005). Encriptación RSA de archivos de texto. Página web:
http://tesis.pucp.edu.pe/repositorio/handle/123456789/131
4. Contreras, J., & Claudio del Pino, O. (2007). El Teorema de los Restos Chinos. Revista del
Instituto de Matemática y Física. Año, 10(14). Página web:
http://www.matesup.cl/portal/revista/2007/4.pdf
5. Hernández Encinas, L. (2005). El criptosistema RSA. RA-MA Editorial. Página web:
https://digital.csic.es/handle/10261/15961
6. Paredes, G. G. (2006). Introducción a la Criptografía. Revista digital universitaria, 7(7), 1-17.
Página web: http://www.revista.unam.mx/vol.7/num7/art55/jul_art55.pdf
7. Marrero Travieso, Y. (2003). La Criptografía como elemento de la seguridad
informática. Acimed, 11(6), 0-0. Página web: http://scielo.sld.cu/scielo.php?pid=S1024-
94352003000600012&script=sci_arttext&tlng=pt
8. Cascante, G. D. (1991). Criptosistemas. Revista Ingeniería, 1(2), 69-76. Página web:
https://revistas.ucr.ac.cr/index.php/ingenieria/article/view/7581
9. Mendoza, J. C. (2008). Demostración de cifrado simétrico y asimétrico. Ingenius: Revista de
Ciencia y Tecnología, (3), 46-53. Página web:
https://dialnet.unirioja.es/servlet/articulo?codigo=5972695

También podría gustarte