RSA: o que é, algoritmo e aplicação da criptografia

Autor: IT Sectr Publicado: 2026-04-02 Tempo de leitura: 9 min

RSA é um criptossistema de chave pública que fornece criptografia e assinaturas digitais baseado na complexidade computacional da fatoração de números grandes. De acordo com a NIST Special Publication 800-56B Rev. 2 (2023), RSA com comprimento de chave de 2048 bits continua sendo o padrão de segurança para sistemas governamentais e comerciais. O algoritmo é amplamente utilizado em protocolos TLS, assinaturas digitais e criptografia de dados em aplicações móveis.

Pontos principais

  • RSA é um algoritmo de criptografia assimétrica que usa um par de chaves: pública e privada.
  • A segurança do algoritmo baseia-se na dificuldade matemática de decompor um número grande em seus fatores primos.
  • O tamanho da chave de 2048 bits é considerado o padrão mínimo confiável desde 2023 segundo a NIST.
  • RSA é usado em certificados TLS, assinaturas digitais e protocolos de autenticação.
  • Desenvolvimento mobile utiliza RSA através de bibliotecas criptográficas integradas: Android Keystore e iOS Security Framework.

O que é RSA?

RSA é um algoritmo criptográfico de chave pública desenvolvido em 1977 por Ron Rivest, Adi Shamir e Leonard Adleman. O nome é formado pelas primeiras letras dos sobrenomes dos autores. O algoritmo tornou-se o primeiro criptossistema assimétrico praticamente aplicável onde as chaves de criptografia e descriptografia diferem.

História da criação

O algoritmo RSA foi publicado em 1977 na revista Scientific American e é baseado em trabalhos anteriores de Whitfield Diffie e Martin Hellman sobre criptografia de chave pública. O Instituto de Tecnologia de Massachusetts obteve uma patente para o RSA em 1983, que durou até o ano 2000. De acordo com o relatório da RSA Laboratories (2023), o algoritmo continua sendo um dos mais difundidos padrões criptográficos do mundo — é usado em bilhões de dispositivos diariamente.

O princípio da assimetria

Ao contrário das cifras simétricas onde a mesma chave é usada tanto para criptografia quanto para descriptografia, RSA opera com um par de chaves matematicamente vinculadas. A chave pública pode ser publicada para qualquer pessoa sem risco de comprometer o sistema. A chave privada é conhecida apenas pelo proprietário e nunca é transmitida pela rede. De acordo com o estudo IBM Security X-Force Threat Intelligence Index (2024), a criptografia assimétrica é usada em 96% dos protocolos modernos de transmissão segura de dados.

Fundamentos matemáticos

A segurança do RSA baseia-se no problema de fatoração — decompor o produto de dois grandes números primos em fatores. Se você escolher números primos p e q de 1024 bits cada, seu produto n terá 2048 bits. Calcular p e q conhecendo apenas n usando métodos modernos é praticamente impossível: de acordo com a avaliação de especialistas do CNRS (2024), quebrar o RSA-2048 exigiria mais de 300 bilhões de anos de computação em um computador clássico.

Como funciona o algoritmo RSA

Vamos considerar o ciclo completo de trabalho do RSA, desde a geração de chaves até a criptografia e descriptografia de mensagens. Compreender essas etapas é necessário para a implementação correta do algoritmo em aplicações móveis.

Geração de chaves

O processo começa com a seleção de dois grandes números primos p e q. O módulo n = p x q é calculado, o que determina o comprimento da chave. Em seguida, a função totiente de Euler phi(n) = (p-1)(q-1) é calculada. Um expoente público e é escolhido, que é coprimo com phi(n). O expoente privado d é calculado como o inverso multiplicativo modular de e módulo phi(n). De acordo com a NIST SP 800-56B Rev. 2, o comprimento mínimo de n deve ser de 2048 bits para garantir proteção adequada.

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();
    }
}

Criptografia e descriptografia

Para criptografar uma mensagem m, o remetente a converte em um número inteiro menor que n e calcula o texto cifrado c = m^e mod n. O destinatário usa a chave privada d para recuperar a mensagem original: m = c^d mod n. É importante notar que RSA não se destina a criptografar grandes volumes de dados devido ao baixo desempenho — o tamanho máximo da mensagem é igual ao comprimento da chave menos os bytes de overhead (aproximadamente 190 bytes para RSA-2048 com 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);
    }
}

Assinatura digital com RSA

RSA também é usado para criar assinaturas digitais — um mecanismo para verificar a autenticidade e integridade dos dados. O proprietário assina o hash da mensagem com sua chave privada, e qualquer pessoa pode verificar a assinatura usando a chave pública. De acordo com o relatório Sectigo Certificate Transparency (2025), mais de 85% dos certificados TLS na internet usam RSA para assinaturas digitais, tornando o algoritmo a base de confiança para comunicações 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)
}

Tamanhos de chave e nível de segurança

O comprimento da chave afeta diretamente a força criptográfica do RSA. À medida que o poder computacional aumenta, o tamanho mínimo aceitável da chave é regularmente revisado por organismos internacionais de normalização. Vamos examinar as recomendações atuais da NIST e de outros reguladores.

Comprimento da chaveEquivalente simétricoStatus
1024 bits80 bitsProibido desde 2023
2048 bits112 bitsPadrão mínimo
3072 bits128 bitsRecomendado para novos sistemas
4096 bits256 bitsPara dados confidenciais

Impacto no desempenho

O aumento do comprimento da chave RSA afeta significativamente o tempo de execução das operações. Gerar uma chave de 4096 bits leva aproximadamente 10 vezes mais tempo que uma chave de 2048 bits. As operações de criptografia e descriptografia com uma chave mais longa exigem mais recursos computacionais, o que é crítico para dispositivos móveis com consumo de energia limitado.

Ameaça quântica

Com o desenvolvimento da computação quântica, RSA pode ser quebrado usando o algoritmo de Shor em tempo polinomial. Este algoritmo, proposto por Peter Shor em 1994, pode fatorar grandes números em O((log n)^3) operações. De acordo com o IBM Quantum Roadmap (2025), espera-se que a quebra prática do RSA-2048 não ocorra antes de 2035, no entanto a NIST já recomenda uma transição gradual para os algoritmos pós-quânticos CRYSTALS-Kyber e CRYSTALS-Dilithium.

Aplicação de RSA no desenvolvimento mobile

RSA é ativamente usado em aplicações móveis para garantir transmissão segura de dados, autenticação de servidores e proteção de transações digitais. A integração é realizada através das APIs criptográficas padrão de ambas as plataformas principais.

Android Keystore

A plataforma Android fornece Android Keystore — um armazenamento sistêmico de chaves criptográficas protegido pelo nível de hardware Trusted Execution Environment. As chaves RSA geradas no KeyStore não podem ser extraídas do dispositivo mesmo se a aplicação for comprometida. Isso fornece proteção contra uma ampla gama de ataques, incluindo malware com acesso 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

No iOS, RSA é tratado através do Security Framework com acesso ao Secure Enclave em dispositivos com chip A7 e posteriores. O Secure Enclave é um coprocessador dedicado isolado do processador principal que realiza operações criptográficas e armazena chaves em um cofre de hardware. As chaves RSA podem ser geradas tanto dentro do Secure Enclave quanto no Keychain de software com vários níveis de acesso.

Criptografia híbrida na prática

Em aplicações móveis reais, RSA raramente é usado para criptografia direta de grandes dados. A prática padrão é um esquema híbrido: a aplicação gera uma chave de sessão AES, a criptografa com a chave pública RSA do servidor e a envia ao servidor. Todo o tráfego subsequente é criptografado com AES, que é 100-1000 vezes mais rápido que a transmissão direta de dados através do RSA.

Vantagens e limitações do RSA

Como qualquer algoritmo criptográfico, RSA tem pontos fortes e fracos que devem ser considerados ao projetar sistemas seguros. Uma avaliação objetiva ajuda a escolher a ferramenta certa para uma tarefa específica.

Principais vantagens

A principal vantagem do RSA é resolver o problema fundamental de distribuição de chaves — a chave pública pode ser publicada livremente sem risco de comprometer todo o sistema. A versatilidade do algoritmo se manifesta no suporte tanto para criptografia quanto para assinaturas digitais com um único par de chaves. Além disso, o RSA possui um vasto ecossistema de suporte: bibliotecas estão disponíveis para todas as linguagens e plataformas.

Principais limitações

A principal desvantagem do RSA é o baixo desempenho em comparação com algoritmos simétricos. A descriptografia do RSA-2048 em um processador móvel moderno leva aproximadamente 5-15 milissegundos, enquanto o AES-256 processa gigabytes de dados no mesmo tempo. Além disso, RSA é vulnerável a ataques quânticos através do algoritmo de Shor, o que limita seu uso em sistemas que exigem proteção de dados a longo prazo.

Recomendações de uso

Para projetos móveis, os especialistas da NIST recomendam: usar RSA apenas para criptografia de chaves e assinaturas digitais, escolher um comprimento de chave de pelo menos 3072 bits para novos projetos, combinar RSA com AES em um esquema híbrido e monitorar o desenvolvimento de padrões pós-quânticos para migração planejada a longo prazo.

Perguntas frequentes

Qual é a diferença entre RSA e AES?

RSA é um algoritmo assimétrico com um par de chaves usado para criptografar pequenos volumes de dados e assinaturas digitais. AES é um algoritmo simétrico com uma única chave compartilhada, funcionando 100-1000 vezes mais rápido que o RSA. Em sistemas modernos, eles são combinados: RSA protege a transmissão da chave de sessão AES, enquanto AES criptografa o tráfego principal.

Qual tamanho de chave RSA é considerado seguro hoje?

O tamanho mínimo seguro desde 2023 é RSA-2048 de acordo com a NIST SP 800-131A Rev. 2. Chaves de 1024 bits são oficialmente proibidas para sistemas governamentais dos EUA. Para novos projetos, recomenda-se 3072 bits, proporcionando uma margem de segurança e força equivalente à criptografia simétrica de 128 bits.

Pode-se usar RSA em aplicações móveis?

Sim, RSA é amplamente usado em aplicações móveis. Android fornece Android KeyStore para geração por hardware e armazenamento seguro de chaves RSA. iOS fornece Security Framework com suporte a Secure Enclave. Para criptografia de grandes dados, recomenda-se um esquema híbrido RSA + AES, onde RSA criptografa apenas a chave de sessão.

O RSA-2048 pode ser quebrado?

Em computadores clássicos, quebrar RSA-2048 é praticamente impossível — de acordo com estimativas atuais, seriam necessários mais de 300 bilhões de anos de computação contínua. No entanto, um computador quântico com qubits suficientes poderia quebrar o RSA-2048 em minutos usando o algoritmo de Shor. De acordo com estimativas da IBM, esse computador não aparecerá antes de 2035.

Quais alternativas ao RSA existem?

Entre os algoritmos assimétricos, ECC (Criptografia de Curva Elíptica) é popular, fornecendo segurança equivalente com menor comprimento de chave — ECC de 256 bits equivale a RSA-3072. Para a era pós-quântica, a NIST selecionou CRYSTALS-Kyber para criptografia e CRYSTALS-Dilithium para assinaturas digitais em 2024.

Resumo

  • RSA é um algoritmo de criptografia assimétrica baseado na dificuldade de fatorar números grandes.
  • Par de chaves — pública para criptografia e privada para descriptografia, resolve o problema de distribuição de chaves.
  • Tamanho de 2048 bits é o padrão mínimo de segurança desde 2023.
  • Desempenho do RSA é 2-3 ordens de grandeza inferior ao das cifras simétricas, por isso é usado em esquemas híbridos.
  • Assinaturas digitais com RSA são usadas em 85% dos certificados TLS da internet.
  • Plataformas móveis Android e iOS fornecem APIs integradas para trabalhar com RSA.
  • Migração pós-quântica — até 2035, o RSA continuará sendo o padrão principal, então começará a transição para novos algoritmos.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também