Tema 10

10. RSA en profundidad: generación de claves, cifrado, firma y consideraciones de seguridad

RSA es uno de los algoritmos más influyentes de la criptografía asimétrica. Su importancia histórica y práctica es enorme porque ayudó a consolidar el paradigma de clave pública y durante años fue central en cifrado, intercambio de secretos y firmas digitales. Entender RSA es entender una parte esencial de la seguridad moderna.

Objetivo Comprender cómo funciona RSA de forma realista
Enfoque Matemático, conceptual y práctico
Resultado Entender claves, cifrado, firma y límites de RSA

10.1 Introducción

RSA toma su nombre de Rivest, Shamir y Adleman, quienes publicaron el esquema en 1977. Fue uno de los primeros algoritmos prácticos de clave pública ampliamente difundidos y mostró que la criptografía asimétrica no era solo una idea elegante, sino una herramienta utilizable en sistemas reales.

Su diseño se apoya en conceptos matemáticos que ya vimos: números primos, aritmética modular, exponenciación modular, inversos y función phi de Euler. RSA es un excelente ejemplo de cómo esas piezas teóricas se convierten en un mecanismo concreto de seguridad.

10.2 La intuición detrás de RSA

La idea central de RSA es construir un sistema donde sea sencillo realizar ciertas operaciones con una clave pública, pero computacionalmente muy difícil invertirlas sin la clave privada. La seguridad se apoya en la dificultad de factorizar un número grande que resulta del producto de dos primos secretos.

El algoritmo usa exponenciación modular tanto para cifrado como para firma, pero el verdadero corazón está en cómo se eligen los parámetros para que esas operaciones formen un par matemáticamente coherente.

10.3 Los ingredientes matemáticos

RSA necesita varios elementos básicos:

  • Dos números primos grandes: p y q.
  • Su producto: n = p x q.
  • La función phi de Euler del módulo: φ(n) = (p - 1)(q - 1).
  • Un exponente público e.
  • Un exponente privado d que sea inverso modular de e respecto de φ(n).

La clave pública usa típicamente (n, e), mientras que la clave privada usa (n, d) junto con información auxiliar protegida.

10.4 Generación de claves RSA

La generación de claves sigue una secuencia lógica:

  1. Se eligen dos primos grandes y aleatorios, p y q.
  2. Se calcula n = p x q.
  3. Se calcula φ(n) = (p - 1)(q - 1).
  4. Se elige un valor e coprimo con φ(n).
  5. Se calcula d como el inverso modular de e módulo φ(n).

El resultado final es un par de claves complementarias: una pública y otra privada.

10.5 El papel de p y q

Los primos p y q son secretos críticos. Si un atacante logra obtenerlos, puede reconstruir la clave privada. Por eso no basta con elegir primos grandes: deben generarse correctamente, con suficiente entropía y sin patrones que faciliten ataques.

Además, una vez calculado n, lo que protege a RSA no es que el producto sea misterioso en sí mismo, sino que factorizarlo en sus primos originales resulte computacionalmente muy difícil.

10.6 El exponente público e

El valor e se elige de modo que sea coprimo con φ(n). En la práctica suele utilizarse un valor pequeño y eficiente, como 65537, porque ofrece un buen equilibrio entre rendimiento y seguridad cuando el resto del esquema está bien implementado.

Elegir e no es una cuestión estética. Debe cumplir las condiciones matemáticas necesarias para que exista el inverso modular correspondiente y para evitar configuraciones débiles.

10.7 El exponente privado d

El valor d se calcula como el inverso modular de e respecto de φ(n). Esto significa que:

e x d ≡ 1 (mod φ(n))

Esa relación es la que permite que las operaciones de cifrado y descifrado, o de firma y verificación, funcionen como procesos complementarios.

10.8 Clave pública y clave privada en RSA

La clave pública está formada por (n, e). Puede distribuirse libremente para que otros cifren mensajes destinados al propietario o verifiquen sus firmas.

La clave privada incluye d y normalmente también se conservan datos auxiliares como p y q, porque ayudan a optimizar operaciones privadas. Esa información debe resguardarse con extremo cuidado.

10.9 Cifrado con RSA

En la forma más simple, si el mensaje se representa como un número m menor que n, el cifrado se calcula como:

c = me mod n

El texto cifrado resultante es c. La operación usa la clave pública, por lo que cualquiera puede aplicarla si conoce (n, e).

10.10 Descifrado con RSA

El destinatario recupera el mensaje calculando:

m = cd mod n

La relación matemática entre e y d garantiza que esta operación revierta el cifrado en las condiciones previstas. La clave privada es indispensable para este paso.

10.11 Firma con RSA

RSA también puede usarse para firma digital. En esencia, se aplica una operación con la clave privada sobre un valor derivado del mensaje, típicamente un hash. Así se obtiene una firma que otros pueden verificar con la clave pública.

La idea importante es que la firma no prueba solo que el contenido existe, sino que fue asociado por quien posee la clave privada correspondiente.

10.12 Verificación de firma

La verificación consiste en usar la clave pública para comprobar que la firma corresponde al hash esperado del mensaje. Si todo coincide, se concluye que el mensaje no fue alterado y que la firma fue producida por la clave privada asociada.

Esto convierte a RSA en una herramienta valiosa no solo para confidencialidad, sino también para autenticidad, integridad y no repudio en ciertos contextos.

10.13 Por qué RSA no suele usarse para cifrar grandes datos directamente

Aunque RSA permite cifrar, no es eficiente para proteger grandes volúmenes de datos de manera directa. Sus operaciones son costosas comparadas con la criptografía simétrica y el tamaño del mensaje manejable en cada operación está limitado por el módulo y el padding.

Por eso en sistemas reales RSA se usa sobre todo para cifrar claves simétricas o para participar en protocolos de establecimiento de secretos. Luego el tráfico o los datos masivos se cifran con algoritmos simétricos como AES.

10.14 El problema del padding

Uno de los errores más peligrosos al estudiar RSA es pensar que basta con aplicar directamente las fórmulas matemáticas al mensaje. En realidad, RSA sin padding seguro es vulnerable a múltiples ataques. El padding introduce estructura controlada, aleatoriedad y protección frente a manipulaciones o ataques adaptativos.

Esto aplica tanto a cifrado como a firma. RSA "en crudo" no es una práctica segura.

10.15 OAEP y padding seguro para cifrado

Para cifrado, una construcción importante es OAEP, que agrega una capa de aleatorización y estructura antes de aplicar la operación RSA. Esto ayuda a proteger contra ciertos ataques y convierte a RSA en un esquema mucho más robusto en práctica.

La lección general es clara: en criptografía aplicada no se usa solo el algoritmo abstracto, sino una construcción completa y segura alrededor de él.

10.16 PSS y firma segura

Para firmas, una construcción moderna relevante es RSA-PSS. Su objetivo es evitar debilidades asociadas a esquemas de firma demasiado rígidos o deterministas en contextos inseguros. De nuevo, el punto no es memorizar siglas, sino entender que la seguridad real depende de cómo se encapsula el algoritmo.

10.17 Seguridad de RSA y factorización

La seguridad de RSA se asocia fuertemente con la dificultad de factorizar el módulo n en los primos originales p y q. Si esa factorización se vuelve viable, la clave privada queda comprometida.

Por eso el tamaño del módulo importa mucho. Claves demasiado pequeñas ya no ofrecen protección suficiente frente a recursos modernos.

10.18 Tamaño de clave y longevidad

En criptografía no existe el tamaño "mágico" eterno. Lo que fue seguro en una época puede dejar de serlo cuando crece la capacidad de cómputo o mejoran los métodos de ataque. En RSA esto se traduce en necesidad de usar módulos de tamaño adecuado y revisar periódicamente las recomendaciones de seguridad.

Elegir una clave RSA demasiado corta es comprometer el sistema desde el inicio.

10.19 Optimización con CRT

En implementaciones reales, RSA suele optimizarse usando el Teorema Chino del Resto, también conocido como CRT. Esta técnica permite acelerar operaciones con la clave privada trabajando por separado sobre p y q y recombinando luego el resultado.

Es una mejora muy útil de rendimiento, aunque también introduce exigencias de implementación cuidadosa, porque ciertos errores de cálculo o fallas inducidas pueden tener impacto grave.

10.20 Riesgos frecuentes en implementaciones RSA

  • Usar claves demasiado pequeñas.
  • Generar primos con poca entropía o defectos de aleatoriedad.
  • Reutilizar configuraciones inseguras heredadas.
  • Aplicar RSA sin padding seguro.
  • Exponer la clave privada por mala gestión o almacenamiento débil.
  • No validar correctamente entradas, errores o condiciones de operación.

10.21 RSA en protocolos reales

Durante muchos años RSA fue protagonista en protocolos como TLS, firmas de software, certificados digitales, correo seguro y numerosos sistemas corporativos. Aunque algunos usos han sido desplazados por alternativas más modernas o eficientes, RSA sigue teniendo presencia importante en infraestructura, compatibilidad y PKI.

Comprender RSA sigue siendo clave porque una enorme cantidad de sistemas heredados y vigentes lo utilizan de una u otra forma.

10.22 Ventajas de RSA

  • Fue uno de los primeros esquemas asimétricos prácticos ampliamente adoptados.
  • Sirve tanto para cifrado como para firma en construcciones adecuadas.
  • Cuenta con décadas de análisis y experiencia de implementación.
  • Está profundamente integrado en certificados y sistemas de confianza digital.

10.23 Limitaciones de RSA

  • Es menos eficiente que muchas alternativas modernas para ciertos usos.
  • Requiere claves relativamente grandes.
  • No debe usarse "en crudo" sin esquemas de padding o encapsulado.
  • Para intercambio de claves, en muchos contextos ha sido desplazado por variantes basadas en Diffie-Hellman o curvas elípticas.

10.24 Qué debes recordar de este tema

  • RSA se basa en la dificultad de factorizar el producto de dos primos grandes.
  • La generación de claves usa n, φ(n), un exponente público e y un exponente privado d.
  • Puede usarse para cifrado y para firma, pero no debe aplicarse de forma "cruda".
  • Padding seguro como OAEP o PSS es parte esencial del uso correcto.
  • RSA no suele emplearse para cifrado masivo de datos, sino para tareas de clave pública y firma.
  • El tamaño de clave y la calidad de generación impactan directamente en su seguridad.

10.25 Conclusión

RSA es uno de los algoritmos más importantes de la historia de la criptografía porque convirtió en práctica la idea de clave pública y mostró cómo la matemática podía sostener cifrado y firma a escala real. Su estudio conecta directamente teoría de números, diseño criptográfico e implementación segura.

En el próximo tema estudiaremos Diffie-Hellman, que aborda otro problema fundamental: cómo establecer una clave compartida sobre un canal inseguro sin transmitirla directamente.