RSA: qué es, algoritmo y aplicación del cifrado

Autor: IT Sectr Publicado: 2026-04-02 Tiempo de lectura: 9 min

RSA es un criptosistema de clave pública que proporciona cifrado y firmas digitales basado en la complejidad computacional de la factorización de números grandes. Según NIST Special Publication 800-56B Rev. 2 (2023), RSA con una longitud de clave de 2048 bits sigue siendo el estándar de seguridad para sistemas gubernamentales y comerciales. El algoritmo se utiliza ampliamente en protocolos TLS, firmas digitales y cifrado de datos en aplicaciones móviles.

Puntos clave

  • RSA es un algoritmo de cifrado asimétrico que utiliza un par de claves: pública y privada.
  • La seguridad del algoritmo se basa en la dificultad matemática de descomponer un número grande en sus factores primos.
  • El tamaño de clave de 2048 bits se considera el estándar mínimo confiable desde 2023 según NIST.
  • RSA se utiliza en certificados TLS, firmas digitales y protocolos de autenticación.
  • El desarrollo móvil utiliza RSA a través de bibliotecas criptográficas integradas: Android Keystore y iOS Security Framework.

¿Qué es RSA?

RSA es un algoritmo criptográfico de clave pública desarrollado en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman. El nombre se forma a partir de las primeras letras de los apellidos de los autores. El algoritmo se convirtió en el primer criptosistema asimétrico prácticamente aplicable donde las claves de cifrado y descifrado difieren.

Historia de la creación

El algoritmo RSA fue publicado en 1977 en la revista Scientific American y se basa en trabajos anteriores de Whitfield Diffie y Martin Hellman sobre criptografía de clave pública. El Instituto de Tecnología de Massachusetts obtuvo una patente para RSA en 1983, que duró hasta el año 2000. Según el informe de RSA Laboratories (2023), el algoritmo sigue siendo uno de los más extendidos estándares criptográficos del mundo: se utiliza en miles de millones de dispositivos a diario.

El principio de asimetría

A diferencia de los cifrados simétricos donde se utiliza la misma clave tanto para cifrar como para descifrar, RSA opera con un par de claves matemáticamente vinculadas. La clave pública puede publicarse para cualquier persona sin riesgo de comprometer el sistema. La clave privada solo la conoce el propietario y nunca se transmite por la red. Según el estudio IBM Security X-Force Threat Intelligence Index (2024), el cifrado asimétrico se utiliza en el 96% de los protocolos modernos de transmisión segura de datos.

Fundamentos matemáticos

La seguridad de RSA se basa en el problema de factorización: descomponer el producto de dos números primos grandes en factores. Si se eligen números primos p y q de 1024 bits cada uno, su producto n tendrá 2048 bits. Calcular p y q conociendo solo n mediante métodos modernos es prácticamente imposible: según la evaluación de expertos del CNRS (2024), descifrar RSA-2048 requeriría más de 300 mil millones de años de cálculo en una computadora clásica.

Cómo funciona el algoritmo RSA

Consideremos el ciclo completo de trabajo de RSA desde la generación de claves hasta el cifrado y descifrado de mensajes. Comprender estas etapas es necesario para una implementación correcta del algoritmo en aplicaciones móviles.

Generación de claves

El proceso comienza con la selección de dos números primos grandes p y q. Se calcula el módulo n = p x q, que determina la longitud de la clave. Luego se calcula la función totiente de Euler phi(n) = (p-1)(q-1). Se elige un exponente público e que sea coprimo con phi(n). El exponente privado d se calcula como el inverso multiplicativo modular de e módulo phi(n). Según NIST SP 800-56B Rev. 2, la longitud mínima de n debe ser de 2048 bits para garantizar una protección adecuada.

java
import java.security.KeyPairGenerator;
import java.security.KeyPair;
import java.security.SecureRandom;

public class RSAKeyGenerator {
    public static KeyPair generateKeyPair() throws Exception {
        KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
        generator.initialize(2048, new SecureRandom());
        return generator.generateKeyPair();
    }
}

Cifrado y descifrado

Para cifrar un mensaje m, el remitente lo convierte en un número entero menor que n y calcula el texto cifrado c = m^e mod n. El destinatario utiliza la clave privada d para recuperar el mensaje original: m = c^d mod n. Es importante señalar que RSA no está diseñado para cifrar grandes volúmenes de datos debido a su bajo rendimiento: el tamaño máximo del mensaje es igual a la longitud de la clave menos los bytes de sobrecarga (aproximadamente 190 bytes para RSA-2048 con OAEP).

java
import javax.crypto.Cipher;
import java.security.PublicKey;
import java.util.Base64;

public class RSAEncryptor {
    public static String encrypt(String data, PublicKey publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encrypted = cipher.doFinal(data.getBytes());
        return Base64.getEncoder().encodeToString(encrypted);
    }
}

Firma digital con RSA

RSA también se utiliza para crear firmas digitales, un mecanismo para verificar la autenticidad e integridad de los datos. El propietario firma el hash del mensaje con su clave privada, y cualquier persona puede verificar la firma utilizando la clave pública. Según el informe Sectigo Certificate Transparency (2025), más del 85% de los certificados TLS en internet utilizan RSA para firmas digitales, lo que convierte al algoritmo en la base de confianza de las comunicaciones web.

kotlin
import java.security.Signature

fun signData(data: ByteArray, privateKey: java.security.PrivateKey): ByteArray {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initSign(privateKey)
    signature.update(data)
    return signature.sign()
}

fun verifySignature(
    data: ByteArray, signedData: ByteArray, publicKey: java.security.PublicKey
): Boolean {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initVerify(publicKey)
    signature.update(data)
    return signature.verify(signedData)
}

Tamaños de clave y nivel de seguridad

La longitud de la clave afecta directamente la fortaleza criptográfica de RSA. A medida que aumenta la potencia de cálculo, el tamaño mínimo aceptable de la clave se revisa periódicamente por parte de los organismos internacionales de normalización. Examinemos las recomendaciones actuales de NIST y otros reguladores.

Longitud de claveEquivalente simétricoEstado
1024 bits80 bitsProhibido desde 2023
2048 bits112 bitsEstándar mínimo
3072 bits128 bitsRecomendado para nuevos sistemas
4096 bits256 bitsPara datos confidenciales

Impacto en el rendimiento

El aumento de la longitud de la clave RSA afecta significativamente el tiempo de ejecución de las operaciones. Generar una clave de 4096 bits toma aproximadamente 10 veces más tiempo que una de 2048 bits. Las operaciones de cifrado y descifrado con una clave más larga requieren más recursos computacionales, lo cual es crítico para los dispositivos móviles con consumo de energía limitado.

Amenaza cuántica

Con el desarrollo de la computación cuántica, RSA puede ser vulnerado mediante el algoritmo de Shor en tiempo polinómico. Este algoritmo, propuesto por Peter Shor en 1994, permite factorizar números grandes en O((log n)^3) operaciones. Según IBM Quantum Roadmap (2025), se espera que la vulneración práctica de RSA-2048 no ocurra antes de 2035, sin embargo NIST ya recomienda una transición gradual hacia los algoritmos poscuánticos CRYSTALS-Kyber y CRYSTALS-Dilithium.

Aplicación de RSA en el desarrollo móvil

RSA se aplica activamente en aplicaciones móviles para garantizar la transmisión segura de datos, la verificación de la autenticidad de los servidores y la protección de transacciones digitales. La integración se realiza a través de las API criptográficas estándar de ambas plataformas principales.

Android Keystore

La plataforma Android proporciona Android Keystore, un almacenamiento systemático de claves criptográficas protegido por el nivel de hardware Trusted Execution Environment. Las claves RSA generadas en KeyStore no pueden extraerse del dispositivo incluso si la aplicación se ve comprometida. Esto proporciona protección contra una amplia gama de ataques, incluido el malware con acceso root.

kotlin
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
import java.security.KeyPairGenerator

fun generateKeyInAndroidKeystore() {
    val generator = KeyPairGenerator.getInstance(
        KeyProperties.KEY_ALGORITHM_RSA,
        "AndroidKeyStore"
    )
    val spec = KeyGenParameterSpec.Builder(
        "rsa_key_pair",
        KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
    )
        .setKeySize(2048)
        .setBlockModes(KeyProperties.BLOCK_MODE_ECB)
        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
        .build()
    generator.initialize(spec)
    val keyPair = generator.generateKeyPair()
}

iOS Security Framework

En iOS, RSA se maneja a través de Security Framework con acceso a Secure Enclave en dispositivos con chip A7 y posteriores. Secure Enclave es un coprocesador dedicado aislado del procesador principal que realiza operaciones criptográficas y almacena claves en una bóveda de hardware. Las claves RSA pueden generarse tanto dentro de Secure Enclave como en el Keychain de software con varios niveles de acceso.

Cifrado híbrido en la práctica

En aplicaciones móviles reales, RSA rara vez se utiliza para el cifrado directo de grandes datos. La práctica estándar es un esquema híbrido: la aplicación genera una clave de sesión AES, la cifra con la clave pública RSA del servidor y la envía al servidor. Todo el tráfico posterior se cifra con AES, que es 100-1000 veces más rápido que la transmisión directa de datos a través de RSA.

Ventajas y limitaciones de RSA

Como cualquier algoritmo criptográfico, RSA tiene fortalezas y debilidades que deben tenerse en cuenta al diseñar sistemas seguros. Una evaluación objetiva ayuda a elegir la herramienta adecuada para una tarea específica.

Ventajas principales

La principal ventaja de RSA es resolver el problema fundamental de distribución de claves: la clave pública puede publicarse libremente sin riesgo de comprometer todo el sistema. La versatilidad del algoritmo se manifiesta en el soporte tanto de cifrado como de firmas digitales con un solo par de claves. Además, RSA cuenta con un amplio ecosistema de soporte: hay bibliotecas disponibles para todos los lenguajes y plataformas.

Limitaciones principales

El principal inconveniente de RSA es su bajo rendimiento en comparación con los algoritmos simétricos. El descifrado de RSA-2048 en un procesador móvil moderno toma aproximadamente 5-15 milisegundos, mientras que AES-256 procesa gigabytes de datos en el mismo tiempo. Además, RSA es vulnerable a ataques cuánticos mediante el algoritmo de Shor, lo que limita su uso en sistemas que requieren protección de datos a largo plazo.

Recomendaciones de uso

Para proyectos móviles, los expertos de NIST recomiendan: utilizar RSA solo para cifrado de claves y firmas digitales, elegir una longitud de clave de al menos 3072 bits para proyectos nuevos, combinar RSA con AES en un esquema híbrido y monitorear el desarrollo de estándares poscuánticos para una migración planificada a largo plazo.

Preguntas frecuentes

¿Cuál es la diferencia entre RSA y AES?

RSA es un algoritmo asimétrico con un par de claves utilizado para cifrar pequeños volúmenes de datos y firmas digitales. AES es un algoritmo simétrico con una única clave compartida, que funciona 100-1000 veces más rápido que RSA. En los sistemas modernos se combinan: RSA protege la transmisión de la clave de sesión AES, mientras que AES cifra el tráfico principal.

¿Qué tamaño de clave RSA se considera seguro hoy en día?

El tamaño mínimo seguro desde 2023 es RSA-2048 según NIST SP 800-131A Rev. 2. Las claves de 1024 bits están oficialmente prohibidas para los sistemas gubernamentales de EE. UU. Para proyectos nuevos se recomiendan 3072 bits, lo que proporciona un margen de seguridad y una fortaleza equivalente al cifrado simétrico de 128 bits.

¿Se puede utilizar RSA en aplicaciones móviles?

Sí, RSA se utiliza ampliamente en aplicaciones móviles. Android proporciona Android KeyStore para la generación por hardware y el almacenamiento seguro de claves RSA. iOS proporciona Security Framework con soporte de Secure Enclave. Para el cifrado de grandes datos se recomienda un esquema híbrido RSA + AES, donde RSA cifra solo la clave de sesión.

¿Se puede vulnerar RSA-2048?

En computadoras clásicas, vulnerar RSA-2048 es prácticamente imposible: según estimaciones actuales, se necesitarían más de 300 mil millones de años de cálculo continuo. Sin embargo, una computadora cuántica con suficientes qubits podría vulnerar RSA-2048 en minutos utilizando el algoritmo de Shor. Según estimaciones de IBM, dicha computadora no aparecerá antes de 2035.

¿Qué alternativas a RSA existen?

Entre los algoritmos asimétricos, es popular ECC (Criptografía de Curva Elíptica), que proporciona una seguridad equivalente con una longitud de clave menor: ECC de 256 bits equivale a RSA-3072. Para la era poscuántica, NIST seleccionó CRYSTALS-Kyber para cifrado y CRYSTALS-Dilithium para firmas digitales en 2024.

Resumen

  • RSA es un algoritmo de cifrado asimétrico basado en la dificultad de factorizar números grandes.
  • Par de claves: pública para cifrar y privada para descifrar, resuelve el problema de distribución de claves.
  • Tamaño de 2048 bits es el estándar mínimo de seguridad desde 2023.
  • Rendimiento de RSA es 2-3 órdenes de magnitud inferior al de los cifrados simétricos, por lo que se utiliza en esquemas híbridos.
  • Firmas digitales con RSA se utilizan en el 85% de los certificados TLS de internet.
  • Plataformas móviles Android e iOS proporcionan API integradas para trabajar con RSA.
  • Migración poscuántica: hasta 2035, RSA seguirá siendo el estándar principal, luego comenzará la transición a nuevos algoritmos.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también