Está en la página 1de 9

Proyecto Final

Rodrigo Eduardo Gómez Cáceres

Proyecto final de Criptografía I


Sistema criptográfico RSA
Introducción
Los sistemas de cifra con clave pública tuvieron su inicio con la propuesta de Diffie y Hellman en
noviembre del año 1976 para realizar un intercambio de clave computacionalmente seguro,
usando para ello el problema del logaritmo discreto.

El algoritmo fue descrito en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman, del Instituto
Tecnológico de Massachusetts (MIT). Debido al elevado coste de las computadoras necesarias para
implementarlo en la época su idea no trascendió. Sin embargo, no fue revelado hasta 1997 ya que
era confidencial, por lo que Rivest, Shamir y Adleman desarrollaron RSA de forma independiente.

El algoritmo fue patentado por el MIT en 1983 en Estados Unidos. Esta patente expiró el 21 de
septiembre de 2000. Como el algoritmo fue publicado antes de patentar la aplicación, esto impidió
que se pudiera patentar en otros lugares del mundo.

Antecedentes
Los criptosistemas de clave pública (también llamados criptosistemas asimétricos) se caracterizan
por utilizar claves distintas para el cifrado y descifrado de la información. Su principal ventaja es
que facilitan el proceso de distribución e intercambio de claves entre los participantes de la
comunicación segura, que era un problema importante de los criptosistemas simétricos o de clave
privada.

Los algoritmos asimétricos emplean generalmente longitudes de clave mucho mayores que los
simétricos, que usan una única clave secreta. Por ejemplo, mientras que para algoritmos
simétricos se considera segura una clave de 128 bits, para la mayoría de algoritmos asimétricos
(incluido el del RSA), se recomiendan actualmente claves de al menos 1024 bits de longitud.
Además, la complejidad de cálculo que comportan los algoritmos de los criptosistemas asimétricos
los hace considerablemente más lentos que los algoritmos de cifrado simétricos.

La criptografía basada en criptosistemas de clave pública es relativamente reciente, pues los


primeros algoritmos asimétricos aparecen después de 1975. El criptosistema de esta clase más
importante y extendida hoy en día es el RSA, que utiliza la exponenciación modular para cifrar y
descifrar y basa su seguridad en la complejidad del problema de la factorización de enteros
grandes.

Desarrollo
Proyecto Final
Rodrigo Eduardo Gómez Cáceres

El algoritmo consta de tres pasos: generación de llaves, cifrado y descifrado.

Pero antes una idea de lo que tratara el desarrollo…

Supongamos que Bob quiere enviar a Alicia un mensaje secreto que solo ella pueda leer. Alicia
envía a Bob una caja con una cerradura abierta, de la que solo Alicia tiene la llave. Bob recibe la
caja, escribe el mensaje, lo pone en la caja y la cierra con su cerradura (ahora Bob no puede leer el
mensaje). Bob envía la caja a Alicia y ella la abre con su llave. En este ejemplo, la caja con la
cerradura es la «clave pública» de Alicia, y la llave de la cerradura es su «clave privada».

Bob envía a Alicia un mensaje M en forma de un número m menor que otro número n .

Luego se genera el mensaje cifrado c

c ≡m e mod ( n ) donde e es la llave publica de Alicia

Ahora Alicia descifra el mensajec mediante la operación inversa dada por:

m≡ c d mod ( n ) donde d es la llave privadaque sólo Alicia conoce

Algoritmo
Proyecto Final
Rodrigo Eduardo Gómez Cáceres

Antes de empezar a explicar cada paso del algoritmo necesitamos los siguientes programas que
nos ayudaran en el proceso: Importar el paquete “random” para la generación de llaves aleatorias,
el Algoritmo de Euclides para el mcd, el Algoritmo Extendido de Euclides para hallar inversos
multiplicativos modulo n, y un programa para determinar que nuestros números que
proporcionemos sean primos.
Proyecto Final
Rodrigo Eduardo Gómez Cáceres

Generación de llaves

Paso 1. Se eligen dos números primos distintos p y q

Nota: Estos números deben escogerse de forma aleatoria y deben tener una longitud en bits
parecida.

Paso 2. Se calcula n= p∗q

Paso 3. Se calcula φ ( n )=( p−1 )∗(q−1)

Paso 4. Se escoge un entero positivo e <φ ( n ) tal que mcd ( e , φ ( n ) ) =1

Nota: e se conoce como el exponente de la llave pública y además un número e muy pequeño
podría suponer un riesgo para la seguridad.

Paso 5. Se determinara un d que satisfaga la congruencia e∗d ≡1 mod (φ ( n ) ) , es decir, que d sea
el multiplicador modular inverso de e mod (φ ( n ))

Nota: Esto se calculará mediante el algoritmo extendido de Euclides.

d se guardará como el exponente de la clave privada.

Entonces ya tenemos nuestro par de llaves:

Llave pública: (n , e) y Llave privada: (n , d )


Proyecto Final
Rodrigo Eduardo Gómez Cáceres

Cifrado

Alicia comunica su llave pública (n , e) a Bob y guarda la llave privada en secreto.

Ahora Bob desea enviar un mensaje M a Alicia.

Primero, Bob convierte M en un número entero m menor que n acordado de antemano. Luego
calcula el ciphertext c mediante la operación:

c ≡m e mod ( n )

Nota: Esto se puede calcular rápido mediante el método de exponenciación binaria (FPA).

Ahora Bob le transmite c a Alicia

Descifrado

Alicia puede recuperar m a partir de c usando su exponented de la llave privada mediante el


siguiente cálculo:
Proyecto Final
Rodrigo Eduardo Gómez Cáceres

m≡ c d mod ( n )

Ahora que tiene m, puede recuperar el mensaje original M .


d
Esto funciona porque c d =( m e ) ≡m ed mod n

Esto es así porque, como tenemos d y e tal que ed =1+ kφ ( n ) , se cumple que

m ed =m 1+kφ ( n)=m(m φ (n) )k ≡ m(mod n)

Nota: Esta última congruencia se sigue del teorema de Euler m es primo relativo con n . Puede
demostrarse que las ecuaciones se cumplen para todo m usando congruencias y el teorema chino
del residuo.

Esto prueba que se recupera el mensaje original:

m≡ c d mod ( n )

Ahora para correr el programa y que imprima lo que necesitemos:


Proyecto Final
Rodrigo Eduardo Gómez Cáceres

Ataques y Seguridad
La seguridad del algoritmo RSA se basa en la dificultad computacional que conlleva encontrar los
dos factores primos de un número compuesto muy grande, resultado del producto de éstos,
donde sus primos también son números grandes. Esto es lo que matemáticamente se conoce
como el problema de la factorización entera, uno de los problemas denominados No Polinomiales
o de tipo NP, muy usados en la criptografía.

Se trata de un problema que en un sentido el cálculo es muy fácil y rápido (por ejemplo multiplicar
dos números primos) pero que en sentido contrario (por ejemplo, encontrar esos dos factores
conocido el producto) se vuelve computacionalmente intratable a medida que la entrada es cada
vez mayor. Es decir, requiere de unos recursos informáticos excesivos y, por tanto, de un tiempo
de cálculo exorbitante.

Con el algoritmo RSA los valores de los factores primos deben ser mínimo de 155 dígitos, lo que
aproximadamente son unos 512 bits. El producto de estos factores tiene alrededor de 310 dígitos,
que representa 1024 bits, lo cual puede dar una idea de lo complejo que puede llegar volverse su
factorización en materia de recursos tecnológicos. Claro que dado el crecimiento en capacidad de
cómputo.

El uso de este algoritmo se ha extendido hasta tal punto que se publicó el RSA Cryptography
Standard, que contiene las recomendaciones para la implementación de métodos criptográficos
de clave pública basados en el algoritmo RSA. Esta documentación contiene algunas nociones
básicas sobre cifrado y descifrado y sobre firma y verificación de mensajes. Además contiene
algunos esquemas donde se describen las operaciones de cifrado y el proceso inverso. Lo
interesante de este estándar es que es compatible con las recomendaciones para implementar
métodos basados en clave pública de la IEEE.

Ahora pasemos a los distintos tipos de ataques posibles del RSA:

Ataque cíclico

Si estamos trabajando dentro de un cuerpo finito, cuando multiplicamos un valor por otro
repetidamente, acabaremos obteniendo el resultado inicial. Si Alicia cifra un mensaje para Bob
haciendo c=me mod n, Eva puede volver a cifrar repetidamente c usando la clave pública de Bob.
En algún momento obtendrá de nuevo el valor c , lo que querrá decir que el valor que cifró en el
paso anterior era el mensaje m .

Este ataque es muy lento para claves grandes, e incluso menos eficiente que los métodos de
factorización nombrados más arriba.

Ataque por exponente pequeño


Proyecto Final
Rodrigo Eduardo Gómez Cáceres

Es común elegir un exponente pequeño -por ejemplo, 3- para agilizar los cálculos. Esto tiene el
problema de que si, por ejemplo, Alicia, Bob y Carlos eligieron todos el mismo exponente (mismo
exponente y distinto módulo) podemos obtener el mensaje original

m e mod n1=c 1

me mod n2=c 2

m e mod n3=c 3

Usando el Teorema Chino del Residuo es posible resolver el sistema.

Ejemplos
Un ejemplo aplicado al programa hecho

Con p=53 y q=61

Ciframos el mensaje: la razón de la sinrazón que a mi razón se hace

Y finalmente recuperamos el mensaje original.

Aplicaciones del RSA

SSH (Secure Shell). Es un protocolo de red con el que podemos acceder a una computadora
remota, e incluso ejecutar aplicaciones en ella. Permite una comunicación segura sobre un canal
inseguro. Se utiliza RSA para realizar la conexión, pero para el cifrado de los datos se utilizan
procedimientos simétricos como AES. (Willems, 2009).

SSL (Secure Socket Layer). Es un protocolo de cifrado utilizado en todas las conexiones https que
hay en la Web. Fue desarrollado por Netscape para la transmisión de datos por Internet en 1994.
La versión más utilizada de SSL es la 3.0 (Gutierrez, 2003).
Proyecto Final
Rodrigo Eduardo Gómez Cáceres

PGP (Prety Goog Privacy). Es un software de uso privado para cifrar mensajes electrónicos. Fue
desarrollado por Phil Zimmermann, quien al principio utilizó RSA para el intercambio de claves.
Desde 2002 utiliza el procedimiento de ElGamal (1985).

Una de las aplicaciones más comunes que podemos encontrar en el día a día es el uso de Firma
Electrónica. De acuerdo con la Ley de Firma Electrónica Avanzada, en México los documentos que
cuenten con firma electrónica producen los mismos efectos que los presentados con firma
autógrafa, y deben cumplir los principios de Equivalencia Funcional, Autenticidad, Integridad y
Neutralidad Tecnológica. (H. Congreso de la Unión, 2012)

Es por eso que ahora en cualquier empresa mexicana los empleadores entregan un recibo de
nómina digital en vez de uno sellado y firmado a mano, y los comercios proporcionan facturas
digitales que cuentan con sellos o firmas digitales y que tienen la misma validez que antes tenían
las facturas de imprenta.

Conclusiones
El sistema RSA ha sido uno de los más estudiados hasta el momento y por lo tanto se considera
que es uno de los más seguros, ya que ha podido superar todo tipo de controversia, así que es por
hoy uno de los sistemas criptográficos de llave pública más usados en la industria, en el comercio,
en los gobiernos, en la milicia y en general en toda actividad que requiera que su información
tenga un alto grado de seguridad criptográfica.

Bueno es decir que hasta hoy se han desarrollado una gran cantidad de sistemas de llave pública
con el fin de substituir, generalizar o simplemente competir con RSA, sólo que no han tenido gran
éxito, en principio deben de pasar un riguroso criptoanálisis por parte de la comunidad
criptográfica para después someterse a la competencia comercial.

Y lo importante su rigor matemático necesario para ponerlo en práctica y todo lo que ha hecho la
criptografía en la historia, se espera romper esas barreras que impiden descubrir y demostrar lo
que no se ha probado.