Security

SSH e Chaves RSA Explicadas: Gere, Use e Proteja Seus Pares de Chaves

Um guia prático sobre pares de chaves SSH e RSA — como funcionam, como gerá-los no navegador e como usá-los para acesso seguro a servidores e criptografia.

7 min de leitura

Conceito de chaves de segurança

A criptografia de chave pública é a base da comunicação segura na internet — conexões SSH, HTTPS, assinatura JWT e e-mail criptografado dependem dela. Entender como os pares de chaves funcionam torna você um desenvolvedor mais eficiente e um usuário mais consciente sobre segurança.

O conceito central: chaves pública e privada

Um par de chaves é composto por duas chaves matematicamente vinculadas:

  • Chave privada — Fica na sua máquina. Nunca a compartilhe. Pense nela como sua identidade.
  • Chave pública — Compartilhe livremente. Você a coloca em servidores, no GitHub, em configurações JWT.

A matemática funciona em uma direção: dados criptografados com uma chave pública só podem ser descriptografados com a chave privada correspondente. E dados assinados com uma chave privada podem ser verificados com a chave pública — sem revelar a chave privada.

Chaves SSH: acesso a servidores sem senha

SSH (Secure Shell) é o padrão para acesso remoto a servidores. A autenticação por senha funciona, mas tem pontos fracos — senhas podem ser adivinhadas, capturadas por phishing ou vazadas. A autenticação por chave SSH é fundamentalmente mais segura:

  1. Seu cliente apresenta uma prova criptográfica usando sua chave privada
  2. O servidor verifica a prova com a chave pública que você instalou
  3. Nenhuma senha trafega pela rede — não há nada para interceptar

Configurando autenticação SSH por chave:

# Gera um par de chaves (Ed25519 é o padrão moderno)
ssh-keygen -t ed25519 -C "seu-email@exemplo.com"

# Copia a chave pública para um servidor
ssh-copy-id usuario@seuservidor.com

# Conecta — sem necessidade de senha
ssh usuario@seuservidor.com

A chave pública vai para ~/.ssh/authorized_keys no servidor. A chave privada nunca sai da sua máquina.

Ed25519 vs RSA para SSH

Ed25519 é a recomendação atual:

  • Chaves menores (256 bits) com segurança equivalente ou superior ao RSA-4096
  • Geração e verificação de assinaturas mais rápidas
  • Suportado por todos os servidores SSH modernos

RSA ainda é amplamente utilizado, especialmente em ambientes corporativos com sistemas mais antigos:

  • 2048 bits é o tamanho mínimo aceitável atualmente
  • 4096 bits oferece margem extra para chaves de longa duração
  • Tamanhos de chave maiores implicam autenticação ligeiramente mais lenta

Gere chaves SSH no seu navegador com nosso SSH Key Generator — Ed25519 e ECDSA, usando a Web Crypto API. Nenhum material de chave sai do seu navegador.

Chaves RSA: criptografia e assinatura

As chaves RSA são usadas além do SSH — para certificados TLS, assinatura JWT, e-mail criptografado (PGP) e autenticação de API.

Casos de uso comuns do RSA:

JWT (JSON Web Tokens) com RS256:

  • Assina tokens com sua chave privada RSA
  • Clientes verificam com a chave pública
  • Ao contrário do HS256 (simétrico), o verificador nunca precisa do segredo de assinatura

Assinatura de código:

  • Assina um artefato de release com sua chave privada
  • Usuários verificam a assinatura com sua chave pública publicada
  • Comprova que o artefato veio de você e não foi adulterado

Certificados TLS/SSL:

  • Autoridades certificadoras assinam sua chave pública com a chave privada delas
  • Navegadores verificam usando a chave pública da CA (embutida no navegador)

Gere pares de chaves RSA no formato PEM com nosso RSA Key Generator — 2048 bits ou 4096 bits, inteiramente no seu navegador.

O formato PEM explicado

Chaves RSA e SSH são comumente distribuídas no formato PEM (Privacy Enhanced Mail):

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7o4qne60...
-----END PRIVATE KEY-----

O cabeçalho e o rodapé identificam o tipo da chave. O conteúdo intermediário é o dado da chave codificado em base64. Cabeçalhos diferentes indicam tipos diferentes de chave:

  • BEGIN RSA PRIVATE KEY — Formato tradicional PKCS#1
  • BEGIN PRIVATE KEY — Formato PKCS#8 (mais comum em ferramentas modernas)
  • BEGIN PUBLIC KEY — Chave pública no formato PKCS#8
  • BEGIN OPENSSH PRIVATE KEY — Formato próprio do OpenSSH para chaves SSH

Protegendo sua chave privada

A segurança da chave privada é fundamental:

  1. Nunca faça commit no git — Adicione *.pem, id_rsa e id_ed25519 ao .gitignore
  2. Use uma frase-senha — Criptografa a chave em repouso. Mesmo que alguém obtenha o arquivo, não poderá usá-lo sem a frase-senha.
  3. Restrinja as permissões — O SSH exige chmod 600 nos arquivos de chave privada; ele recusa usar chaves legíveis por outros usuários
  4. Rotacione se comprometida — Gere um novo par e remova a chave pública antiga de todos os servidores
# Define as permissões corretas na sua chave privada
chmod 600 ~/.ssh/id_ed25519

Impressões digitais de chave

Uma impressão digital (fingerprint) é um hash resumido de uma chave pública usado para verificar identidade sem comparar a chave completa:

ssh-keygen -lf ~/.ssh/id_ed25519.pub
# Saída: 256 SHA256:abc123... seu-email@exemplo.com (ED25519)

Ao se conectar a um servidor pela primeira vez, o SSH exibe a impressão digital do host e pede sua confirmação. Verifique essa impressão digital por um canal separado (a documentação do provedor do servidor) antes de aceitar.

Resumo

Pares de chaves SSH e RSA oferecem autenticação e criptografia fundamentalmente mais seguras do que senhas. Use Ed25519 para SSH, RSA-4096 para assinatura e criptografia, sempre proteja chaves privadas com uma frase-senha e gere chaves localmente — nunca permita que um serviço de terceiros gere sua chave privada por você.