Ferramenta de Criptografia e Descriptografia RSA
Criptografia RSA assimétrica online com geração de par de chaves, criptografia com chave pública e descriptografia com chave privada
Gerenciamento de Chaves
O que é Criptografia RSA?
RSA (Rivest-Shamir-Adleman) é o primeiro algoritmo de criptografia assimétrica amplamente utilizado, inventado em 1977 por três matemáticos do MIT. Diferente dos algoritmos simétricos como AES, RSA usa um par de chaves: pública para criptografar e privada para descriptografar. A segurança do RSA baseia-se na dificuldade matemática de fatorar números inteiros grandes. Chaves de 2048 bits ou mais são recomendadas. RSA é usado em HTTPS/TLS, assinaturas digitais, criptografia de e-mail (PGP/GPG) e transações blockchain. Esta ferramenta usa a API Web Crypto nativa do navegador. Resultados ligados à segurança nunca devem ser avaliados isoladamente; chaves, contexto, algoritmo e fonte confiável importam.
Como Usar
Como usar
- Selecione o tamanho da chave (2048 bits ou superior é recomendado)
- Selecione o esquema de preenchimento (OAEP é recomendado para maior segurança)
- Selecione o algoritmo hash (SHA-256 é recomendado)
- Clique em 'Generate Key Pair' para criar as chaves pública e privada
- Para criptografar: cole a chave pública na área de chave pública, insira o texto claro, o texto cifrado é gerado automaticamente
- Para descriptografar: cole a chave privada na área de chave privada, insira o texto cifrado, o texto claro é gerado automaticamente
- Copie os resultados ou clique em 'Trocar' para trocar entrada e saída
Guia de Parâmetros
- Use RSA-OAEP com SHA-256 ou superior para novos testes de criptografia; PKCS#1 v1.5 só deve ser usado para compatibilidade com sistemas legados.
- RSA só consegue criptografar pequenas quantidades de dados. Para dados maiores, criptografe uma chave AES aleatória com RSA e use AES para o conteúdo real.
- Mantenha chaves privadas fora de conversas, tickets, capturas de tela e logs compartilhados. Chaves públicas podem ser compartilhadas, mas chaves privadas devem permanecer em segredo.
Casos de uso
Princípio técnico
RSA é o criptossistema de chave pública Rivest-Shamir-Adleman de 1977. A geração de chaves escolhe dois grandes primos aleatórios p e q, define o módulo n = p · q, calcula a totiente de Euler φ(n) = (p-1)(q-1), escolhe um expoente público e coprimo com φ(n) (e = 65537 = 2^16 + 1 é o padrão de fato porque seu baixo peso de Hamming acelera a exponenciação modular), e deriva o expoente privado d ≡ e^-1 (mod φ(n)) via o algoritmo estendido de Euclides. A criptografia é c = m^e mod n; a descriptografia é m = c^d mod n. A segurança repousa na suposta dificuldade de fatorar n em p e q para n suficientemente grande. RSA puro é determinístico e maleável, então toda implantação real envolve a mensagem em um esquema de preenchimento. RSA-OAEP, definido na RFC 8017 (PKCS#1 v2.2) com uma função de geração de máscara MGF1 sobre SHA-256 (ou SHA-1/384/512), fornece segurança semântica: o mesmo texto claro criptografa para um texto cifrado diferente a cada chamada, e a verificação de integridade do preenchimento impede ataques de texto cifrado escolhido. O preenchimento mais antigo PKCS#1 v1.5 ainda é comum por compatibilidade retroativa, mas é vulnerável ao ataque de oráculo de milhão de mensagens de Bleichenbacher. Para assinaturas, RSASSA-PSS é preferido sobre PKCS#1 v1.5 sign pelas mesmas razões. A escolha do tamanho da chave é limitada tanto pelo desempenho quanto pelos registros mais recentes de fatoração. O NIST SP 800-57 exige ≥ 2048 bits hoje e ≥ 3072 bits após 2030. A criptografia de curvas elípticas corresponde ao RSA 3072 com apenas 256 bits (NIST P-256, Curve25519), é por isso que a maioria das novas implantações TLS prefere ECDHE + ECDSA. RSA-OAEP em uma chave de 2048 bits pode envolver no máximo ⌊tamanhoChave/8⌋ − 2·hashLen − 2 bytes de texto claro (≈ 190 bytes para SHA-256), então sistemas de produção usam RSA apenas para envolver uma nova chave de sessão simétrica e deixam o AES-GCM carregar a carga útil — o padrão híbrido por trás de cada handshake TLS. No navegador, a API Web Crypto (window.crypto.subtle) lida com geração de chaves, importação, criptografia e descriptografia com PEM/DER (SPKI para pública, PKCS#8 para privada) ou JWK como formatos de transmissão.
- Matemática: escolher primos p, q; n = p·q; φ(n) = (p-1)(q-1); escolher e (tipicamente 65537 = 2^16+1); calcular d = e^-1 mod φ(n); criptografar c = m^e mod n; descriptografar m = c^d mod n.
- Preenchimento: RSA-OAEP conforme RFC 8017 (PKCS#1 v2.2) com MGF1+SHA-256 para código novo; PKCS#1 v1.5 apenas para interoperabilidade legada, sujeito a Bleichenbacher (CVE-2017-13099 e outros).
- Tamanhos de chave: NIST SP 800-57 com piso de 2048 bits hoje e 3072 bits a partir de 2030; RSA de 1024 bits é considerado quebrado e 4096 bits custa significativamente mais CPU.
- Limite de carga útil: RSA-OAEP pode envolver no máximo ⌊k/8⌋ − 2·hashLen − 2 bytes (≈ 190 bytes para 2048 bits + SHA-256); dados maiores usam RSA para envolver uma chave de sessão AES-GCM.
- Força comparável: RSA 3072 ≈ ECC 256 (NIST P-256 ou Curve25519) com segurança simétrica de ~128 bits; ECC vence em tamanho de chave e velocidade de assinatura, RSA vence em verificação.
- API e formatos do navegador: window.crypto.subtle.generateKey('RSA-OAEP'); exportar como SPKI PEM (pública) e PKCS#8 PEM (privada), ou JWK; chaves privadas nunca devem sair do ambiente local em texto claro.
Exemplos
Criptografia básica
1. Gere um par de chaves de 2048 bits
2. Copie a chave pública
3. Digite o texto puro: Hello, RSA!
4. Selecione OAEP + SHA-256
5. Saída: texto cifrado codificado em Base64
RFC: RFC 8017 (PKCS#1 v2.2) define o esquema de criptografia RSAES-OAEPFluxo típico
Remetente:
1. Obtenha a chave pública do destinatário
2. Criptografe a mensagem com a chave pública
3. Envie o texto cifrado
Destinatário:
1. Descriptografe com a chave privada
2. Leia a mensagem original
Nota: a criptografia RSA fornece confidencialidade; para autenticidade, combine com assinaturas RSA (RSASSA-PSS na RFC 8017)Criptografia híbrida (RSA + AES)
RSA é para dados pequenos (como chaves de sessão)
Para dados grandes, use criptografia híbrida:
1. Gere uma chave AES-256 aleatória
2. RSA criptografa a chave AES (máx. ~190 bytes com OAEP-SHA256)
3. AES-GCM criptografa os dados reais
4. Envie a chave criptografada por RSA + texto cifrado AES + IV + tag de autenticação
Isso combina a distribuição de chaves do RSA com a velocidade do AES e é o padrão usado em TLS, PGP e S/MIME.
RFC: a seção 7.1 da RFC 8017 discute RSAES-OAEP para encapsulamento de chavesPerguntas frequentes
Qual tamanho de chave devo gerar?
RSA-2048 é o mínimo prático hoje e é o que certificados TLS usam há anos. RSA-3072 é o padrão conservador atual de acordo com o NIST SP 800-57. RSA-4096 é exagero para a maioria dos usos (muito mais lento), mas adequado para chaves de assinatura de longa duração. RSA-1024 é considerado quebrado por política e não deve ser gerado para nada novo.
Chave pública vs. chave privada — qual criptografa e qual descriptografa?
Para confidencialidade: criptografa com a chave pública, descriptografa com a chave privada. Qualquer um pode criptografar uma mensagem para você; somente o detentor da chave privada pode lê-la. Para assinaturas é o contrário: assina com a chave privada, verifica com a chave pública.
Por que criptografar o mesmo texto duas vezes gera ciphertexts diferentes?
O RSA-OAEP (esquema de padding recomendado) adiciona aleatoriedade para que textos planos idênticos produzam ciphertexts diferentes. Isso é por design — previne ataques de chosen-ciphertext. RSA sem padding (RSA de livro-texto) é determinístico e inseguro; não use.
Por que o RSA é tão mais lento que o AES?
RSA faz exponenciação modular de inteiros grandes; AES faz operações de bits de tamanho fixo em um pequeno bloco. Uma criptografia RSA de 2048 bits é milhares de vezes mais lenta que uma de AES-128. Na prática, você usa RSA apenas para envelopar uma pequena chave de sessão AES e depois criptografa a carga real com AES.
Qual é o tamanho máximo de dados que posso criptografar com uma chave RSA?
RSA-OAEP com SHA-256 deixa cerca de (tamanho_da_chave_em_bits / 8 - 66) bytes disponíveis por criptografia: 190 bytes para uma chave de 2048 bits, 318 bytes para 3072, 446 bytes para 4096. Para criptografar algo maior, criptografe uma chave AES com RSA e os dados com AES.
A geração de chaves é aleatória e local?
Sim. A geração de chaves usa crypto.subtle.generateKey da Web Crypto API, que se baseia no CSPRNG do sistema operacional. As chaves nunca saem do seu navegador. Atualize a página para descartar uma chave e gerar uma nova; não cole uma chave privada de produção em nenhuma página web.
O RSA é resistente a computadores quânticos?
Não. Um computador quântico suficientemente grande rodando o algoritmo de Shor quebra o RSA com qualquer tamanho de chave prático. O NIST padronizou alternativas pós-quânticas (ML-KEM, ML-DSA em 2024). Para dados que precisam permanecer confidenciais por décadas, planeje uma migração; para sessões TLS de curta duração, RSA ainda está bom.