ToolActToolAct

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

Chave Pública
Chave Privada
Entrada
Caracteres: 0
Bytes: 0
Saída
Caracteres: 0
Bytes: 0

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

  1. Selecione o tamanho da chave (2048 bits ou superior é recomendado)
  2. Selecione o esquema de preenchimento (OAEP é recomendado para maior segurança)
  3. Selecione o algoritmo hash (SHA-256 é recomendado)
  4. Clique em 'Generate Key Pair' para criar as chaves pública e privada
  5. Para criptografar: cole a chave pública na área de chave pública, insira o texto claro, o texto cifrado é gerado automaticamente
  6. Para descriptografar: cole a chave privada na área de chave privada, insira o texto cifrado, o texto claro é gerado automaticamente
  7. 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

Gerar pares de chaves RSA-OAEP no navegadorEscolha o comprimento do módulo de 512, 1024, 2048, 3072 ou 4096 bits e hash SHA-1, SHA-256, SHA-384 ou SHA-512, depois gere chaves pública e privada exportáveis em formato PEM pelo Web Crypto. O par de chaves permanece na aba do navegador e é exportado como blocos PEM SPKI (pública) e PKCS#8 (privada) — útil para projetar um teste de interoperabilidade sem provisionar um servidor de chaves.
Criptografar e descriptografar payloads de texto curtoCole uma chave pública para criptografar texto claro em Base64 ou hex, ou cole uma chave privada para descriptografar texto cifrado no formato selecionado. As contagens de bytes de entrada e saída ajudam a revelar problemas de tamanho de payload, o que importa porque RSA-OAEP(SHA-256) em uma chave de 2048 bits só pode encapsular aproximadamente 190 bytes de texto claro. A chave privada e a mensagem permanecem na aba local durante toda a operação.
Testar manipulação de chaves sem ferramentas externasCopie blocos PEM pública ou privada, troque os painéis ao experimentar e alterne o modo criptografar/descriptografar enquanto permanece em uma única página. Isso é útil para aprender a semântica do RSA-OAEP, verificações de interoperabilidade com openssl e protótipos locais onde o material da chave não deve sair da máquina.
Escolher hash OAEP para verificações de interoperabilidadeAlterne entre SHA-1, SHA-256, SHA-384 e SHA-512 nas configurações de OAEP para corresponder ao hash que sua aplicação parceira usa. Hashes incompatíveis causam falha na descriptografia com um 'OperationError' genérico do Web Crypto, então verificar o pareamento aqui economiza tempo de depuração ao conectar chaves entre Node crypto, Python cryptography ou serviços javax.crypto do Java.
Reconhecer limites de tamanho de payload antes de criptografarRSA-OAEP só pode criptografar mensagens menores que o módulo da chave menos 2*hashLen - 2 bytes de overhead de preenchimento, então tentativas em blobs de vários kilobytes lançarão um InvalidAccessError. Use o contador de bytes de entrada e o comprimento da saída cifrada (que equivale ao módulo da chave em bytes para OAEP) para confirmar que o teste permanece dentro do limite, depois mova dados grandes para AES com chaves de sessão encapsuladas por RSA.

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-OAEP

Fluxo 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 chaves

Perguntas 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.