0% encontró este documento útil (0 votos)
18 vistas37 páginas

Algoritmo RSA

El documento aborda el algoritmo RSA, un sistema de criptografía asimétrica desarrollado en 1977, que permite el cifrado seguro de información mediante un par de claves. Se exploran sus fundamentos matemáticos, aplicaciones en seguridad informática, así como sus ventajas y desventajas frente a otros métodos. Además, se discuten los retos actuales que enfrenta el algoritmo, especialmente ante el avance de la computación cuántica.

Cargado por

Roco Rockin
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas37 páginas

Algoritmo RSA

El documento aborda el algoritmo RSA, un sistema de criptografía asimétrica desarrollado en 1977, que permite el cifrado seguro de información mediante un par de claves. Se exploran sus fundamentos matemáticos, aplicaciones en seguridad informática, así como sus ventajas y desventajas frente a otros métodos. Además, se discuten los retos actuales que enfrenta el algoritmo, especialmente ante el avance de la computación cuántica.

Cargado por

Roco Rockin
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

I

FACULTAD DE INGENIERÍA

ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA INFORMATICA Y

SISTEMAS

ALGORITMO RSA

ASIGNATURA: Matemática discreta II

DOCENTE: Ing. Elvio Tintaya Zegarra

INTEGRANTES: Hans Andre Perez Sequeiros, Jeancarlos David Barauna Lucana,

Rildo Ccañahua Camargo

ABANCAY-APURIMAC

2025
II

Contenido

Introducción ........................................................................................................................ 4

Criptografía y Seguridad Informática Definición de Polimorfismo ................................... 6

Concepto de Criptografía ................................................................................................ 6

Evolución Histórica de la Criptografía ........................................................................... 7

Tipos de Criptografía ...................................................................................................... 8

Criptografía Simétrica ................................................................................................. 8

Criptografía Asimétrica ............................................................................................... 9

El Algoritmo RSA ............................................................................................................. 11

Origen y Creadores ....................................................................................................... 11

Fundamento Matemático .............................................................................................. 11

Proceso del Algoritmo RSA .......................................................................................... 12

Aplicaciones del Algoritmo RSA...................................................................................... 14

Seguridad en Internet .................................................................................................... 14

Comercio Electrónico y Banca en Línea ...................................................................... 14

Firmas Digitales ............................................................................................................ 15

Correos Electrónicos y Mensajería ............................................................................... 15

Ventajas y Desventajas del Algoritmo RSA...................................................................... 16

Ventajas ......................................................................................................................... 16
III

Desventajas ................................................................................................................... 17

Avances y Retos Actuales ................................................................................................. 18

Tamaños de Clave Recomendados ................................................................................ 19

Vulnerabilidades Potenciales ........................................................................................ 19

RSA vs Otros Algoritmos.............................................................................................. 20

Implementación Práctica en Python.................................................................................. 21

Parte Práctica del Algoritmo RSA .................................................................................... 32

Conclusiones ..................................................................................................................... 35

Bibliografia ....................................................................................................................... 36
4

Introducción

En la actualidad, la sociedad se encuentra inmersa en un mundo digital interconectado en

el que la información se ha convertido en un recurso de gran valor. Millones de datos personales,

financieros, empresariales y gubernamentales circulan a diario a través de redes locales e

internacionales, lo que incrementa los riesgos de robo, manipulación o pérdida de información.

Frente a esta realidad, surge la necesidad de aplicar mecanismos que garanticen la seguridad,

confidencialidad e integridad de los datos.

La criptografía es una de las herramientas más importantes dentro de la seguridad

informática, ya que permite proteger la información mediante procesos matemáticos que la

transforman en datos ilegibles para usuarios no autorizados. Esta disciplina, que se remonta a la

antigüedad con técnicas de cifrado simples como el “cifrado César”, ha evolucionado

significativamente con el avance de la informática y las telecomunicaciones, dando lugar a

algoritmos modernos capaces de enfrentar las amenazas actuales.

Entre los sistemas criptográficos más influyentes se encuentra el algoritmo RSA,

desarrollado en 1977 por Ronald Rivest, Adi Shamir y Leonard Adleman. Este algoritmo introdujo

el concepto práctico de criptografía asimétrica, basada en un par de claves —una pública y otra

privada—, lo que permitió un avance fundamental en el intercambio seguro de información. Su

importancia radica en que brinda soluciones a problemas que los métodos simétricos no podían

resolver, como la distribución segura de claves y la verificación de autenticidad mediante firmas

digitales.

El presente trabajo tiene como propósito analizar de manera detallada los fundamentos

teóricos de la criptografía, explicar el origen y el funcionamiento matemático del algoritmo RSA,


5

y describir sus principales aplicaciones en la vida cotidiana, así como las ventajas, limitaciones y

retos que enfrenta frente a las nuevas tecnologías emergentes, especialmente la computación

cuántica. De esta manera, se busca comprender no solo la relevancia de este algoritmo en la

seguridad digital contemporánea, sino también su papel en la construcción de un futuro más seguro

en el ámbito de las comunicaciones electrónicas.


6

Criptografía y Seguridad Informática Definición de Polimorfismo

La criptografía constituye un pilar fundamental dentro de la seguridad informática, al ser

una disciplina que busca resguardar la información frente a accesos no autorizados. En un contexto

donde el uso de internet y las comunicaciones digitales son parte de la vida cotidiana, la protección

de los datos resulta esencial para mantener la confianza en transacciones financieras,

comunicaciones personales y procesos gubernamentales. Según Stallings (2017), la criptografía

puede considerarse tanto un arte como una ciencia, pues combina aspectos históricos con

fundamentos matemáticos avanzados.

En la actualidad, la criptografía no solo se utiliza para el cifrado de mensajes, sino también

para garantizar otros principios de seguridad informática, como la autenticidad, la integridad y el

no repudio, lo que la convierte en una herramienta indispensable en la era digital.

Concepto de Criptografía

La criptografía puede definirse como la ciencia que estudia las técnicas para transformar

un mensaje o dato original en una representación ilegible para todo aquel que no posea la clave

adecuada para descifrarlo. Esta definición resalta su papel como mecanismo de protección de la

información frente a posibles ataques o accesos indebidos (Menezes, van Oorschot, & Vanstone,

1996).

Entre sus objetivos principales se encuentran:

• Confidencialidad: asegurar que la información solo sea accesible por las partes

autorizadas.

• Integridad: garantizar que los datos no sean modificados durante la transmisión o

almacenamiento.
7

• Autenticidad: verificar la identidad de los emisores y receptores de un mensaje.

• No repudio: impedir que una de las partes niegue haber enviado o recibido un

mensaje (Katz & Lindell, 2020).

Evolución Histórica de la Criptografía

La criptografía no es una disciplina nueva, sino que ha acompañado a la humanidad a lo

largo de su historia. Su evolución refleja la necesidad constante de proteger la información en

contextos militares, políticos y comerciales.

• Antigüedad: El cifrado César, atribuido a Julio César, es uno de los primeros

ejemplos documentados de criptografía. Consistía en desplazar las letras del

alfabeto un número fijo de posiciones, generando un mensaje incomprensible para

quienes no conocieran la regla (Schneier, 2015).

• Edad Media: Durante este periodo se usaron técnicas como la escítala espartana, un

método de cifrado que consistía en enrollar una tira de pergamino sobre un cilindro

para escribir el mensaje y solo se podía leer correctamente al colocarlo en otro

cilindro del mismo diámetro. Asimismo, la diplomacia y las guerras impulsaron el

uso de cifrados manuales más sofisticados.

• Siglo XX: La criptografía alcanzó un papel crucial durante la Segunda Guerra

Mundial, con el uso de la máquina Enigma por parte de la Alemania nazi. Este

dispositivo mecánico-electrónico permitía generar mensajes cifrados

extremadamente complejos para la época. Sin embargo, el trabajo de Alan Turing

y su equipo en Bletchley Park permitió descifrar Enigma, lo que fue determinante

en el desenlace del conflicto (Stallings, 2017).


8

• Época moderna: Con el desarrollo de la informática y la teoría de la información,

la criptografía comenzó a fundamentarse en algoritmos matemáticos complejos.

Entre los más importantes se encuentran el DES (Data Encryption Standard),

utilizado desde los años 70; el AES (Advanced Encryption Standard), que lo

reemplazó en 2001 por su mayor seguridad; y el RSA (Rivest-Shamir-Adleman),

que introdujo la criptografía asimétrica basada en la dificultad de factorizar

números grandes (Rivest, Shamir & Adleman, 1978).

Tipos de Criptografía

A lo largo de su evolución, la criptografía se ha desarrollado en torno a dos grandes

enfoques: la criptografía simétrica y la criptografía asimétrica. Ambas comparten el objetivo

de proteger la información, pero se diferencian en la manera en que gestionan las claves de cifrado

y descifrado.

Criptografía Simétrica

La criptografía simétrica, también llamada de clave secreta, se caracteriza por el uso de

una misma clave tanto para el proceso de cifrado como para el de descifrado. Es decir, el remitente

y el receptor deben poseer la misma clave para comunicarse de manera segura. Matemáticamente,

si CCC es el texto cifrado, PPP el texto plano y KKK la clave, se cumple:

donde EEE es la función de cifrado y DDD la función de descifrado (Stallings, 2017).


9

Ejemplos de algoritmos simétricos:

• DES (Data Encryption Standard): usado ampliamente desde 1977, aunque hoy

considerado inseguro por el tamaño reducido de su clave (56 bits).

• 3DES (Triple DES): mejora de DES, aplicando el cifrado tres veces para aumentar

la seguridad.

• AES (Advanced Encryption Standard): adoptado como estándar por el NIST en

2001. Actualmente es el algoritmo simétrico más utilizado en aplicaciones como

banca en línea, VPN y redes inalámbricas (Katz & Lindell, 2020).

Ventajas:

• Alta velocidad y eficiencia en el procesamiento de datos.

• Ideal para cifrar grandes volúmenes de información.

Desventajas:

• Requiere que las partes intercambien la clave secreta de manera segura antes de

comunicarse, lo que representa un riesgo si un atacante logra interceptarla (Menezes, van

Oorschot & Vanstone, 1996).

Criptografía Asimétrica

La criptografía asimétrica, también llamada de clave pública, se diferencia de la

simétrica en que utiliza un par de claves diferentes, pero matemáticamente relacionadas:

• Clave pública: utilizada para cifrar los mensajes.

• Clave privada: utilizada para descifrar los mensajes.


10

De este modo, una persona puede compartir libremente su clave pública sin comprometer

la seguridad, mientras mantiene en secreto su clave privada. Matemáticamente, si PPP es el texto

plano, CCC el texto cifrado, KpubK_{pub}Kpub la clave pública y KprivK_{priv}Kpriv la clave

privada, se cumple:

El ejemplo más conocido de criptografía asimétrica es el algoritmo RSA, desarrollado en

1977. Su seguridad se basa en la dificultad de factorizar números enteros grandes, lo que lo hace

altamente confiable para comunicaciones seguras y firmas digitales (Rivest, Shamir & Adleman,

1978).

Ventajas:

• No requiere compartir previamente una clave secreta.

• Permite implementar firmas digitales, garantizando autenticidad y no repudio.

Desventajas:

• Es más lento que los algoritmos simétricos debido a su complejidad matemática.

• No resulta práctico para cifrar grandes cantidades de información, por lo que suele

combinarse con criptografía simétrica en protocolos híbridos como SSL/TLS (Schneier,

2015).
11

El Algoritmo RSA

Origen y Creadores

El algoritmo RSA fue desarrollado en 1977 por Ronald Rivest, Adi Shamir y Leonard

Adleman, tres investigadores del Instituto Tecnológico de Massachusetts (MIT). Su nombre

proviene de las iniciales de sus apellidos: R, S y A. La publicación de este método en 1978 supuso

un hito en la historia de la criptografía, pues se trataba del primer sistema práctico de criptografía

asimétrica de clave pública.

Antes de RSA, la mayoría de los sistemas de seguridad se basaban en criptografía

simétrica, que requería compartir una misma clave entre el emisor y el receptor. Esto generaba

problemas en la distribución de claves, sobre todo cuando se trataba de comunicaciones en redes

abiertas. RSA resolvió esta dificultad al introducir un esquema en el que la clave de cifrado podía

hacerse pública sin comprometer la seguridad del sistema (Rivest, Shamir & Adleman, 1978).

Este avance permitió desarrollar aplicaciones como la firma digital, el intercambio

seguro de información y la autenticación de identidades, sentando las bases de la seguridad en

internet tal como la conocemos hoy. De hecho, tecnologías modernas como TLS/SSL, utilizadas

en navegadores web para conexiones seguras, están fuertemente apoyadas en RSA.

Fundamento Matemático

El RSA se fundamenta en la teoría de números, particularmente en la dificultad de

factorizar números enteros muy grandes. La base es el producto de dos primos grandes ppp y qqq.

Aunque es sencillo multiplicarlos para obtener n=p×qn = p \times qn=p×q, es extremadamente

complejo hacer el proceso inverso: factorizar nnn para encontrar ppp y qqq.
12

Este problema, conocido como factorización entera, es considerado de alta complejidad

computacional. Mientras que los ordenadores pueden multiplicar primos de cientos o miles de

dígitos en segundos, factorizar el resultado puede llevar años o incluso siglos con los algoritmos

actuales, dependiendo del tamaño de los números (Stinson & Paterson, 2019).

Además, el algoritmo utiliza la función totiente de Euler φ(n)\varphi(n)φ(n), definida

como:

Esta función es crucial para la generación de claves, pues permite calcular el exponente

privado ddd, que es el inverso modular de eee.

La seguridad de RSA no depende de ocultar el algoritmo, sino de la imposibilidad práctica

de factorizar nnn cuando este tiene cientos o miles de bits. Por ejemplo, hoy en día se recomienda

que nnn tenga al menos 2048 bits para resistir los intentos de factorización con los ordenadores

más potentes.

Proceso del Algoritmo RSA

El funcionamiento de RSA se puede dividir en tres fases principales: generación de claves,

cifrado y descifrado.

a) Generación de Claves

1. Se eligen dos números primos grandes ppp y qqq.

2. Se calcula n=p×qn = p \times qn=p×q, el módulo que se usará en todas las operaciones.

3. Se obtiene φ(n)=(p−1)(q−1)\varphi(n) = (p-1)(q-1)φ(n)=(p−1)(q−1).


13

4. Se selecciona un número eee tal que 1<e<φ(n)1 < e < \varphi(n)1<e<φ(n) y que sea

coprimo con φ(n)\varphi(n)φ(n).

5. Se calcula ddd, el inverso modular de eee respecto de φ(n)\varphi(n)φ(n), es decir:

• Clave pública: (e,n)(e, n)(e,n)

• Clave privada: (d,n)(d, n)(d,n)

b) Cifrado

El remitente convierte un mensaje MMM en un número (usando codificación ASCII, por ejemplo)
y calcula:

Este resultado CCC es el texto cifrado.

c) Descifrado

El receptor, usando su clave privada, aplica:


14

Aplicaciones del Algoritmo RSA

Seguridad en Internet

El algoritmo RSA constituye uno de los pilares fundamentales en la seguridad de la red. Se

utiliza en protocolos de comunicación segura como HTTPS (Hypertext Transfer Protocol Secure)

y SSL/TLS (Secure Sockets Layer / Transport Layer Security). Estos protocolos permiten

establecer un canal cifrado entre el cliente (navegador web) y el servidor, garantizando que la

información transmitida, como contraseñas, formularios o datos personales, no pueda ser

interceptada ni modificada por atacantes (Stallings, 2017).

En este proceso, RSA asegura el intercambio de claves necesario para iniciar una sesión

segura, ya que gracias al sistema de clave pública, el usuario no necesita compartir previamente

una clave secreta. De esta manera, el cifrado inicial permite establecer una comunicación

confidencial sobre redes públicas como Internet (Katz & Lindell, 2020).

Comercio Electrónico y Banca en Línea

En el comercio electrónico y en la banca digital, el algoritmo RSA juega un rol crucial al

proteger datos altamente sensibles. Durante las transacciones bancarias en línea, RSA asegura

información como números de tarjetas de crédito, contraseñas, credenciales de acceso o códigos

de verificación.

Por ejemplo, cuando un cliente introduce los datos de su tarjeta en una plataforma de pago,

estos se cifran mediante la clave pública del servidor. Solo el banco, con su clave privada, puede

descifrar y procesar dicha información, garantizando la confidencialidad y reduciendo el riesgo de

fraude o robo de datos (William & Stallings, 2018).


15

Asimismo, los sistemas de banca en línea utilizan RSA dentro de protocolos como 3D

Secure y otras soluciones de autenticación avanzada para reforzar la seguridad en transferencias

internacionales y pagos en tiempo real.

Firmas Digitales

Una de las aplicaciones más relevantes del algoritmo RSA es la generación de firmas

digitales. A diferencia del cifrado clásico, donde se busca proteger la confidencialidad de la

información, las firmas digitales se enfocan en garantizar la autenticidad, integridad y no repudio.

El proceso funciona de la siguiente manera: el remitente aplica su clave privada sobre un

resumen (hash) del mensaje, generando una firma digital única. El receptor, a su vez, verifica dicha

firma usando la clave pública del emisor. Si la firma es válida, se confirma que el mensaje no ha

sido alterado y que proviene realmente de quien dice enviarlo (Menezes, van Oorschot & Vanstone,

2018).

Este mecanismo se utiliza en múltiples escenarios, como la validación de certificados

digitales, documentos electrónicos con validez legal y contratos en línea, siendo uno de los pilares

de la confianza digital en la actualidad.

Correos Electrónicos y Mensajería

Los sistemas de mensajería y correos electrónicos también emplean RSA como parte de

sus mecanismos de seguridad. Protocolos como PGP (Pretty Good Privacy) y su evolución GPG

(GNU Privacy Guard) utilizan el cifrado asimétrico para garantizar que solo los destinatarios

autorizados puedan leer un mensaje.

En este contexto, el remitente cifra el mensaje utilizando la clave pública del receptor, lo

que asegura que únicamente la clave privada de este último pueda descifrarlo. Además, pueden
16

emplearse firmas digitales basadas en RSA para confirmar la identidad del emisor y la integridad

del mensaje (Schneier, 2015).

De esta forma, RSA protege la privacidad en la comunicación digital, evitando la

interceptación, manipulación o suplantación de identidad en los correos electrónicos, lo que resulta

esencial en un mundo cada vez más interconectado.

Ventajas y Desventajas del Algoritmo RSA

Ventajas

a) Seguridad robusta basada en un problema matemático difícil

La principal fortaleza de RSA radica en la factorización de enteros grandes, un problema

considerado computacionalmente intratable con los recursos actuales. El algoritmo se fundamenta

en la dificultad de descomponer un número compuesto de cientos o miles de bits en sus factores

primos, lo que hace prácticamente imposible romper la clave por fuerza bruta (Katz & Lindell,

2020). Esta característica lo convierte en uno de los algoritmos más seguros y confiables en el

ámbito de la criptografía moderna.

b) Posibilidad de usarlo tanto para cifrado como para firmas digitales

A diferencia de otros métodos criptográficos, RSA es versátil, ya que puede emplearse

tanto en la confidencialidad de datos (cifrado) como en la autenticidad e integridad (firmas

digitales). En el cifrado, asegura que la información solo pueda ser leída por el receptor autorizado;

en las firmas digitales, permite verificar el origen y la integridad de los mensajes. Esta doble
17

funcionalidad ha convertido a RSA en un estándar ampliamente adoptado en protocolos de

seguridad como SSL/TLS, HTTPS y PGP (Stallings, 2017).

c) No requiere el intercambio previo de una clave secreta

En los algoritmos simétricos, ambas partes deben compartir de manera segura una clave

secreta antes de iniciar la comunicación, lo que representa un desafío logístico y de seguridad.

RSA soluciona este problema mediante el uso de un par de claves asimétricas (pública y privada).

Cualquier persona puede usar la clave pública para cifrar, mientras que solo el poseedor de la clave

privada puede descifrar. Esto elimina la necesidad de transmitir claves secretas por canales

inseguros, facilitando la seguridad en comunicaciones abiertas como Internet (Menezes, van

Oorschot & Vanstone, 2018).

Desventajas

a) Es más lento que los algoritmos simétricos

Una de las limitaciones más notables de RSA es su bajo rendimiento en comparación con

algoritmos simétricos como AES (Advanced Encryption Standard). RSA requiere operaciones

matemáticas muy complejas con números de gran tamaño, lo que incrementa el tiempo de

procesamiento. Por este motivo, en la práctica se suele utilizar RSA solo para intercambio de claves

y luego emplear algoritmos simétricos más rápidos para cifrar grandes volúmenes de datos

(Schneier, 2015).

b) Puede ser vulnerable si se usan primos pequeños o claves débiles


18

La seguridad de RSA depende directamente de la calidad y longitud de la clave. Si los

números primos utilizados son pequeños o generados de manera inadecuada, un atacante podría

factorizar el número compuesto y obtener la clave privada. Asimismo, claves demasiado cortas

(por ejemplo, menores a 1024 bits) son vulnerables a ataques modernos. Por ello, actualmente se

recomienda utilizar claves de 2048 o 4096 bits para mantener un nivel de seguridad adecuado

(Stallings, 2017).

c) El desarrollo de la computación cuántica podría amenazar su seguridad futura

Aunque RSA es seguro frente a los métodos de cómputo clásicos, el avance en la

computación cuántica representa una amenaza potencial. En particular, el algoritmo de Shor puede

factorizar enteros grandes en tiempo polinómico utilizando un ordenador cuántico, lo que

comprometería la seguridad de RSA. Si bien todavía no existen computadores cuánticos a gran

escala capaces de ejecutar este ataque, la comunidad científica ya está trabajando en criptografía

poscuántica, con algoritmos alternativos resistentes a este tipo de amenazas (Chen et al., 2016).

Avances y Retos Actuales

El algoritmo RSA, a pesar de ser uno de los métodos criptográficos más utilizados en la

seguridad digital, no está exento de desafíos frente al avance tecnológico. La evolución del poder

de cómputo, los nuevos algoritmos de factorización y el surgimiento de la computación cuántica

obligan a replantear constantemente sus parámetros de seguridad y su aplicabilidad futura.


19

Tamaños de Clave Recomendados

En las primeras décadas de uso, particularmente en los años 90, era suficiente utilizar claves

de 512 bits para garantizar un nivel de seguridad aceptable. Sin embargo, con el crecimiento

exponencial de la capacidad de procesamiento de las computadoras y el desarrollo de algoritmos

de factorización más rápidos, estos tamaños de clave se volvieron inseguros.

Actualmente, organismos como el NIST (National Institute of Standards and Technology)

recomiendan que las claves RSA tengan una longitud mínima de 2048 bits, mientras que para

sistemas de alta seguridad y a largo plazo se sugieren claves de 4096 bits o superiores (NIST,

2019). Esta ampliación de tamaños responde a la necesidad de mantener la resistencia del

algoritmo frente a ataques de fuerza bruta y factorización asistida por supercomputadoras.

El uso de claves más largas, sin embargo, implica un aumento en el costo computacional,

tanto en el cifrado como en el descifrado. Por ello, se busca un equilibrio entre seguridad y

eficiencia según la aplicación específica (Katz & Lindell, 2020).

Vulnerabilidades Potenciales

A pesar de su fortaleza matemática, RSA no es invulnerable. Existen algoritmos de

factorización cada vez más eficientes, como el General Number Field Sieve (GNFS), considerado

actualmente el método más rápido para factorizar enteros grandes. Aunque factorizar claves de

2048 o 4096 bits sigue siendo prácticamente imposible con los recursos actuales, se han logrado

romper claves más cortas (512 y 768 bits) utilizando redes de supercomputadoras y cooperación

internacional de investigadores (Lenstra et al., 2010).


20

Estas vulnerabilidades sugieren que la ventana de seguridad de RSA podría reducirse con

el paso del tiempo, a medida que la capacidad computacional siga creciendo. Aunque hoy en día

RSA continúa siendo seguro en la práctica, existe un consenso en la comunidad científica de que

su futuro depende de las nuevas amenazas tecnológicas, en particular de la computación cuántica

(Chen et al., 2016).

RSA vs Otros Algoritmos

a) ECC (Criptografía de Curvas Elípticas)

La Criptografía de Curvas Elípticas (ECC, por sus siglas en inglés) ha surgido como una

alternativa más eficiente a RSA. La principal ventaja de ECC es que permite alcanzar el mismo

nivel de seguridad que RSA pero con claves mucho más pequeñas. Por ejemplo, una clave ECC

de 256 bits ofrece una seguridad comparable a una clave RSA de 3072 bits (Stallings, 2017).

Esto implica una reducción significativa en el consumo de recursos, lo que convierte a ECC

en una opción ideal para dispositivos con capacidad limitada como teléfonos móviles, sistemas

embebidos o dispositivos de Internet de las Cosas (IoT).

b) Criptografía poscuántica

Otro frente de comparación es la criptografía poscuántica, que busca diseñar algoritmos

resistentes a los ordenadores cuánticos. El algoritmo de Shor, ejecutado en un ordenador cuántico

lo suficientemente potente, podría factorizar enteros grandes en tiempo polinómico,

comprometiendo la seguridad de RSA.


21

Por esta razón, organismos internacionales como el NIST llevan a cabo procesos de

estandarización de algoritmos poscuánticos basados en problemas matemáticos distintos, como

redes euclidianas, códigos de corrección de errores y multivariados polinomiales (Chen et al.,

2016). Estos algoritmos representan una posible transición futura, cuando la computación cuántica

sea una realidad práctica.

Implementación Práctica en Python

En esta sección se presenta un programa en Python que ejemplifica el funcionamiento del

algoritmo RSA de forma didáctica. El código permite generar llaves, cifrar y descifrar tanto

números como texto sencillo, a través de una interfaz por consola.

# rsa_app.py — RSA didáctico con entrada por consola

import math

import sys

# ---------------- Utilidades ----------------

def egcd(a, b):

if a == 0:

return (b, 0, 1)

g, y, x = egcd(b % a, a)

return (g, x - (b // a) * y, y)
22

def modinv(a, m):

g, x, _ = egcd(a, m)

if g != 1:

raise ValueError("No existe inverso modular: e y phi(n) no son coprimos.")

return x % m

def gcd(a, b):

while b:

a, b = b, a % b

return a

# Primalidad (Miller–Rabin determinista para 32 bits; suficiente para ejercicios)

def is_probable_prime(n):

if n < 2:

return False

# pequeños

small_primes = [2,3,5,7,11,13,17,19,23,29]
23

for p in small_primes:

if n == p:

return True

if n % p == 0:

return n == p

# descomponer n-1 = d * 2^s

d, s = n - 1, 0

while d % 2 == 0:

d //= 2

s += 1

# bases deterministas para 32 bits

for a in [2, 7, 61]:

if a % n == 0:

continue

x = pow(a, d, n)

if x == 1 or x == n - 1:

continue
24

for _ in range(s - 1):

x = pow(x, 2, n)

if x == n - 1:

break

else:

return False

return True

def choose_e(phi):

# preferimos 65537 si es coprimo con phi

for cand in (65537, 17, 11, 7, 5, 3):

if cand < phi and gcd(cand, phi) == 1:

return cand

# si nada funciona, buscamos el primer impar >=3 coprimo

e=3

while e < phi:

if gcd(e, phi) == 1:

return e
25

e += 2

raise ValueError("No se pudo elegir e.")

# Mapeo texto <-> números (A=1..Z, '_'=espacio)

ALPHABET = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ" # '_' index 0

def text_to_nums(s):

s = s.upper().replace(" ", "_")

out = []

for ch in s:

if ch in ALPHABET:

out.append(ALPHABET.index(ch))

else:

raise ValueError(f"Carácter no soportado: {ch!r}. Usa letras y espacio.")

return out

def nums_to_text(nums):

return "".join(ALPHABET[n] for n in nums).replace("_", " ")


26

# ---------------- Entrada por consola ----------------

def ask_int(msg):

try:

return int(input(msg).strip())

except Exception:

print("Entrada inválida. Debe ser un entero.")

sys.exit(1)

print("=== RSA didáctico ===")

p = ask_int("Ingresa p (primo): ")

q = ask_int("Ingresa q (primo): ")

if not is_probable_prime(p):

print("p no parece primo (para práctica).")

sys.exit(1)

if not is_probable_prime(q):

print("q no parece primo (para práctica).")


27

sys.exit(1)

if p == q:

print("p y q deben ser distintos.")

sys.exit(1)

n=p*q

phi = (p - 1) * (q - 1)

e_txt = input("Ingresa e (opcional; Enter para elegir automáticamente): ").strip()

if e_txt:

e = int(e_txt)

if not (1 < e < phi) or gcd(e, phi) != 1:

print("e inválido: debe cumplir 1 < e < phi y mcd(e,phi)=1.")

sys.exit(1)

else:

e = choose_e(phi)

try:

d = modinv(e, phi)
28

except ValueError as err:

print(err)

sys.exit(1)

print("\n--- Llaves ---")

print(f"n = {n}")

print(f"phi(n) = {phi}")

print(f"e = {e}")

print(f"d = {d}")

print(f"Llave pública (e, n) = ({e}, {n})")

print(f"Llave privada (d, n) = ({d}, {n})")

# ---------------- Operaciones ----------------

def encrypt_num(m, e, n):

if not (0 <= m < n):

raise ValueError(f"El mensaje numérico debe estar en [0, {n-1}]")

return pow(m, e, n)
29

def decrypt_num(c, d, n):

return pow(c, d, n)

while True:

print("\nElige una opción:")

print(" 1) Cifrar número")

print(" 2) Descifrar número")

print(" 3) Cifrar texto (A..Z, espacio)")

print(" 4) Descifrar texto (A..Z, espacio)")

print(" 0) Salir")

op = input("> ").strip()

if op == "1":

m = ask_int("Número a cifrar (0..n-1): ")

c = encrypt_num(m, e, n)

print(f"Cifrado: {c}")

elif op == "2":

c = ask_int("Número cifrado: ")


30

m = decrypt_num(c, d, n)

print(f"Descifrado: {m}")

elif op == "3":

t = input("Texto a cifrar: ")

nums = text_to_nums(t)

# Ciframos cada símbolo como un bloque independiente (didáctico)

cipher_nums = [encrypt_num(x, e, n) for x in nums]

print("Números originales:", nums)

print("Bloques cifrados:", cipher_nums)

elif op == "4":

raw = input("Ingresa los bloques cifrados separados por espacios: ").strip()

try:

blocks = [int(x) for x in raw.split()]

except Exception:

print("Formato inválido.")

continue
31

plain_nums = [decrypt_num(c, d, n) for c in blocks]

print("Bloques descifrados:", plain_nums)

try:

print("Texto:", nums_to_text(plain_nums))

except Exception:

print("(No se pudo convertir a texto; revisa que cada bloque sea 0..26)")

elif op == "0":

print("¡Listo!")

break

else:

print("Opción no válida.")
32

Parte Práctica del Algoritmo RSA

Con el objetivo de complementar la fundamentación teórica del algoritmo RSA, se

presentan a continuación ejercicios prácticos que ilustran el proceso de generación de claves,

cifrado y descifrado de mensajes utilizando valores pequeños para ppp y qqq.

Estos ejemplos permiten comprender de forma didáctica los pasos del RSA, aunque en la

práctica se emplean números primos de cientos o miles de bits para garantizar la seguridad.

1. Se quiere enviar el mensaje M=10 de forma segura usando el algoritmo de RSA

con p=11 y q=17

Ilustración 1 Ejemplo 1
33

2. Se quiere enviar el mensaje M=42 de forma segura usando el algoritmo de RSA

con p=13 y q=19

Ilustración 2 Ejemplo 2
34

3. Se quiere enviar el mensaje M=100 de forma segura usando el algoritmo de RSA

con p=17 y q=23

Ilustración 3 Ejemplo 3
35

Conclusiones

El algoritmo RSA ha representado, desde su creación en 1977, un hito fundamental en la

historia de la criptografía moderna, al introducir de manera práctica el concepto de clave pública.

Su implementación ha permitido garantizar aspectos esenciales de la seguridad de la información,

como la confidencialidad, integridad, autenticidad y el no repudio en las comunicaciones digitales

(Menezes, van Oorschot & Vanstone, 1996).

Gracias a su versatilidad, RSA ha sido adoptado en protocolos de Internet (SSL/TLS,

HTTPS), banca en línea, comercio electrónico, firmas digitales y correos electrónicos seguros,

consolidándose como un estándar de facto en la protección de datos sensibles (Stallings, 2017).

Estas aplicaciones han contribuido a establecer la confianza digital en una sociedad cada vez más

interconectada.

No obstante, el avance de la capacidad computacional y el desarrollo de algoritmos de

factorización más eficientes plantean un reto importante para la seguridad a largo plazo del RSA.

Actualmente, el uso de claves de 2048 o 4096 bits se considera suficiente, pero la amenaza

potencial de la computación cuántica podría comprometer su eficacia futura (Boneh & Shoup,

2020). Esto ha impulsado la investigación en criptografía post-cuántica, cuyo objetivo es diseñar

sistemas resistentes a la capacidad de cómputo de los ordenadores cuánticos.

En este sentido, el RSA no debe entenderse como un algoritmo obsoleto, sino como una

base sólida sobre la cual se ha construido la seguridad informática contemporánea. Sin embargo,
36

los especialistas coinciden en que es necesario preparar una transición gradual hacia algoritmos

alternativos como ECC y esquemas post-cuánticos, que aseguren la protección de la información

en las próximas décadas (NIST, 2022).

Bibliografia

Boneh, D., & Shoup, V. (2020). A Graduate Course in Applied Cryptography. Stanford

University. Recuperado de https://toc.cryptobook.us/

Chen, L., Jordan, S., Liu, Y.-K., Moody, D., Peralta, R., Perlner, R., & Smith-Tone, D.

(2016). Report on Post-Quantum Cryptography. U.S. Department of Commerce, National

Institute of Standards and Technology (NIST). https://doi.org/10.6028/NIST.IR.8105

Katz, J., & Lindell, Y. (2020). Introduction to Modern Cryptography (3rd ed.). CRC

Press. https://doi.org/10.1201/9780429466335

Lenstra, A. K., Kleinjung, T., & Thomé, E. (2010). The number field sieve for integer

factorization. In Algorithmic Number Theory (pp. 11–25). Springer. https://doi.org/10.1007/978-

3-642-14518-6_2

Menezes, A. J., van Oorschot, P. C., & Vanstone, S. A. (1996). Handbook of Applied

Cryptography. CRC Press. https://doi.org/10.1201/9780429466335


37

Menezes, A. J., van Oorschot, P. C., & Vanstone, S. A. (2018). Handbook of Applied

Cryptography. CRC Press. (Edición digital revisada).

NIST. (2019). Recommendation for Key Management: Part 1 – General (SP 800-57 Part

1 Rev. 5). National Institute of Standards and Technology. https://doi.org/10.6028/NIST.SP.800-

57pt1r5

NIST. (2022). Post-Quantum Cryptography Standardization Project. National Institute of

Standards and Technology. https://csrc.nist.gov/projects/post-quantum-cryptography

Rivest, R. L., Shamir, A., & Adleman, L. (1978). A method for obtaining digital

signatures and public-key cryptosystems. Communications of the ACM, 21(2), 120–126.

https://doi.org/10.1145/359340.359342

Schneier, B. (2015). Applied Cryptography: Protocols, Algorithms, and Source Code in C

(20th anniversary ed.). John Wiley & Sons.

Stallings, W. (2017). Cryptography and Network Security: Principles and Practice (7th

ed.). Pearson.

William, S., & Stallings, W. (2018). Computer Security: Principles and Practice (4th ed.).

Pearson.

Stinson, D., & Paterson, M. (2019). Cryptography: Theory and Practice (4th ed.). CRC

Press.

También podría gustarte