02 - PRIVATE KEY
video: https://youtu.be/... no frontmatter da nota.No sistema de criptografia assimétrica do SSH, a Private Key (Chave Privada) é o componente mais sensível e importante do par de chaves. Enquanto a chave pública é a "fechadura" instalada nos servidores, a chave privada é a "chave mestra" física que permanece exclusivamente com o utilizador. Ela é utilizada para criar assinaturas digitais que provam a identidade do utilizador perante o servidor, sem nunca revelar o seu conteúdo durante a transmissão.
1. Natureza e Sigilo Absoluto
A característica técnica fundamental da Private Key é que ela nunca deve sair do computador de origem. Ao contrário de uma palavra-passe, que é enviada (mesmo que cifrada) para o servidor validar, a chave privada nunca viaja pela rede.
- Armazenamento Local: Geralmente guardada na pasta oculta
~/.ssh/com nomes comoid_rsa,id_ecdsaouid_ed25519. - Identidade Digital: Perder a chave privada é o equivalente a perder a sua identidade digital no ecossistema de servidores da empresa; qualquer pessoa com acesso a este ficheiro pode fingir ser você.
- RFC de Referência: RFC 4253 (SSH Transport Layer Protocol) e RFC 4254 (Authentication Protocols).
2. Algoritmos Suportados e Tamanhos
A geração de uma chave privada envolve a escolha de um algoritmo criptográfico. Cada algoritmo oferece um equilíbrio distinto entre segurança, performance e tamanho da assinatura.
| Algoritmo | Tamanho Típico | Curva/Parâmetros | Status Atual |
|---|---|---|---|
| RSA | 2048 a 4096 bits | Módulo primo grande | Aceitável com >= 3072 bits |
| DSA | 1024 bits | Limitado por padrão | Obsoleto desde OpenSSH 7.0 |
| ECDSA | 256, 384 ou 521 bits | Curvas NIST (P-256, P-384, P-521) | Aceitável, mas com reservas |
| Ed25519 | 256 bits | Curva de Edwards Curve25519 | Recomendado desde 2015 |
A escolha do Ed25519 tornou-se o padrão moderno porque oferece segurança equivalente ao RSA-3072 com chaves drasticamente menores, assinaturas mais rápidas de verificar e resistência nativa a ataques de canal lateral.
3. O Papel na Autenticação (A "Assinatura")
A chave privada não "abre" a ligação de forma direta; ela resolve um desafio matemático baseado no protocolo de desafio-resposta definido na RFC 4252.
- O servidor envia um pacote de dados aleatórios (challenge) cifrados.
- A Private Key utiliza algoritmos complexos para "assinar" ou decifrar esse pacote localmente.
- O resultado é enviado de volta. O servidor usa a chave pública para confirmar que apenas a chave privada correspondente poderia ter gerado aquela assinatura específica.
- A assinatura é validada matematicamente; nenhum segredo é transmitido pela rede.
4. Proteção por Passphrase (Criptografia em Repouso)
Como a chave privada é um ficheiro no disco, ela é vulnerável se o computador for roubado ou invadido. Para mitigar isto, utiliza-se uma Passphrase:
- Cifragem do Ficheiro: A chave privada é guardada no disco cifrada por uma frase secreta definida pelo utilizador. Os formatos de cifragem em repouso incluem AES-256-CBC (formato PEM tradicional) ou o formato novo bcrypt KDF (RFC 8332 / OpenSSH nativo).
- Desbloqueio em Memória: Quando o utilizador executa o SSH, ele introduz a passphrase para "desbloquear" a chave na memória RAM. O ficheiro no disco continua protegido.
- Diferença de Password: A passphrase protege a chave localmente, enquanto a password do servidor protege a conta remotamente.
- KDF Rounds: O OpenSSH moderno permite configurar o número de rounds do bcrypt (
-a 100) para dificultar ataques de brute force offline caso o ficheiro seja roubado.
5. Gestão de Permissões (O Erro de Segurança)
O software cliente SSH possui uma proteção interna rigorosa para a Private Key. Devido à sua importância, o SSH recusa-se a utilizar chaves que tenham permissões de leitura para outros utilizadores do sistema.
- Permissão Correta: Deve ser
600(leitura e escrita apenas para o dono). - Diretório
~/.ssh/: Deve ter permissão700para impedir travessia por outros usuários. - Erro Comum: Se tentar usar uma chave com permissão
644(leitura pública), o SSH emitirá o aviso: "Permissions for 'id_rsa' are too open. It is required that your private key files are NOT accessible by others." - Verificação Recomendada:
ls -la ~/.ssh/deve listar os ficheiros com permissões600exclusivas do dono.
6. O SSH Agent (Facilitador de Uso)
Para evitar que o utilizador tenha de digitar a passphrase da Private Key em cada comando ssh ou scp, utiliza-se o ssh-agent:
- O agente é um processo que guarda a chave privada já desencriptada na memória RAM.
- O utilizador "adiciona" a chave uma vez (
ssh-add) e, a partir daí, o agente negoceia as assinaturas com os servidores de forma automática e segura. - Encaminhamento de Agente (Agent Forwarding): Permite que um servidor intermedie salte para outro sem exigir a chave privada no servidor intermediário. Porém, isto abre vetores de risco: um administrador malicioso do servidor intermediário pode usar o socket do agente para assinar desafios em nome do usuário.
- Variáveis de Ambiente: O agente expõe
SSH_AUTH_SOCK(socket UNIX) eSSH_AGENT_PIDpara que clientes encontrem o agente em execução.
7. Formatos de Arquivo
| Formato | Cabeçalho | Uso Comum |
|---|---|---|
| OpenSSH nativo | -----BEGIN OPENSSH PRIVATE KEY----- |
Padrão moderno desde OpenSSH 6.5 |
| PEM (RSA tradicional) | -----BEGIN RSA PRIVATE KEY----- |
Compatível com OpenSSL antigo e PuTTY |
| PKCS#8 | -----BEGIN PRIVATE KEY----- |
Padrão genérico RFC 5208 |
| PPK | PuTTY-User-Key-File-3 |
Exclusivo do PuTTY no Windows |
A conversão entre formatos é feita com ssh-keygen -p -m PEM ou puttygen no Windows.
8. Boas Práticas Operacionais
- Rodízio Periódico: Renovar chaves a cada 12-24 meses em ambientes críticos.
- Separação por Contexto: Usar chaves distintas para produção, homologação e desenvolvimento, evitando cross-contamination.
- Hardware Tokens (FIDO2): Migrar para chaves Ed25519-SK (
ssh-keygen -t ed25519-sk) armazenadas em tokens físicos como YubiKey, onde a chave privada nunca pode ser exportada. - Auditoria de Uso: Habilitar logs de uso no servidor (
LogLevel VERBOSEnosshd_config) para registrar qual chave pública foi usada em cada login.
9. Revogação em Caso de Compromisso
Se houver a suspeita de que uma Private Key foi copiada ou exposta (ex: portátil perdido ou servidor de backups comprometido), o procedimento de segurança é imediato:
- Gerar um novo par de chaves.
- Remover a Chave Pública correspondente à chave privada perdida de todos os ficheiros
authorized_keysnos servidores. Uma vez removida a chave pública, a chave privada roubada torna-se inútil, pois não haverá mais uma "fechadura" compatível para validar as suas assinaturas. - Revogar Certificados SSH assinados por uma CA (Certificate Authority) que tenham sido emitidos com base na chave comprometida, atualizando a lista KRL (Key Revocation List).
10. Resumo Técnico
| Atributo | Valor |
|---|---|
| Sigilo | Absoluto, nunca transmitida |
| Localização típica | ~/.ssh/id_ed25519 |
| Permissão | 600 |
| Proteção em repouso | Passphrase + bcrypt KDF |
| Algoritmo recomendado | Ed25519 |
| RFC de referência | RFC 4253, RFC 8709 (Ed25519) |
| Mecanismo de uso | Assinatura digital de desafios |
11. Conclusão
A Private Key é o âmago da identidade digital no universo SSH. Sua proteção envolve camadas técnicas (permissões, cifragem em repouso, KDF forte) e camadas operacionais (rodízio, auditoria, hardware tokens). Compreender que a chave privada nunca viaja pela rede é o ponto de partida para projetar arquiteturas de acesso remoto verdadeiramente seguras, onde a autenticação baseia-se em prova matemática e não em segredo compartilhado.