No protocolo SSH, as Chaves de Autenticação representam o método mais robusto e seguro de validar a identidade de um utilizador. Ao contrário das palavras-passe tradicionais, que são vulneráveis a ataques de força bruta e interceção, a autenticação por chave baseia-se na criptografia assimétrica. Este sistema utiliza um par de chaves matemáticas que permite ao servidor verificar a legitimidade do cliente sem que qualquer segredo sensível precise de viajar pela rede.


1. O Par de Chaves: Pública e Privada

O fundamento deste componente é a separação de funções entre duas chaves geradas simultaneamente:

  • Chave Privada (id_rsa, id_ed25519): Deve ser guardada exclusivamente no computador do utilizador. É o “segredo” que assina os desafios de autenticação. Nunca deve ser partilhada ou enviada para o servidor.

  • Chave Pública (id_rsa.pub, id_ed25519.pub): É a “fechadura” que é instalada no servidor remoto (geralmente no ficheiro ~/.ssh/authorized_keys). Pode ser distribuída livremente, pois apenas a sua chave privada correspondente pode “abri-la”.


2. O Fluxo de Autenticação (Desafio-Resposta)

Quando um utilizador tenta ligar-se usando chaves, o processo não envolve o envio da chave privada, mas sim uma prova de posse:

  1. Pedido: O cliente informa ao servidor que deseja autenticar-se com uma chave específica.

  2. Desafio: O servidor gera um número aleatório, cifra-o com a Chave Pública do utilizador e envia-o ao cliente.

  3. Assinatura: O cliente recebe o pacote, decifra-o usando a sua Chave Privada local e envia uma prova assinada de volta ao servidor.

  4. Validação: O servidor verifica a assinatura. Se estiver correta, o acesso é concedido instantaneamente.


3. Algoritmos de Chave Comuns

A escolha do algoritmo de criptografia para as chaves de autenticação define o nível de segurança e a compatibilidade:

  • RSA: O padrão histórico. Para segurança atual, exige um tamanho de pelo menos 3072 ou 4096 bits.

  • Ed25519: A recomendação moderna. Baseado em curvas elípticas, oferece segurança máxima com chaves muito curtas, sendo extremamente rápido e resistente a ataques conhecidos.

  • ECDSA: Uma alternativa de curvas elípticas, comum em ambientes que exigem conformidade com normas governamentais (FIPS).


4. Proteção da Chave Privada: A Passphrase

Embora a chave de autenticação elimine a necessidade de digitar a senha do servidor, a boa prática de segurança exige o uso de uma Passphrase para cifrar a própria chave privada no disco local.

  • Segurança em Camadas: Se um atacante roubar o ficheiro da sua chave privada, ele não poderá utilizá-la sem saber a frase secreta que a desbloqueia.

  • SSH Agent: Para evitar digitar a passphrase em cada ligação, os utilizadores executam o ssh-agent, que mantém a chave desbloqueada na memória RAM apenas durante a sessão de trabalho atual.

5. Gestão de Chaves (authorized_keys)

O servidor gere as chaves de autenticação autorizadas através de um ficheiro de texto simples localizado em ~/.ssh/authorized_keys. Cada linha deste ficheiro contém uma chave pública de um utilizador ou dispositivo autorizado. Isto permite que um único utilizador tenha acesso a centenas de servidores usando a mesma chave privada local, ou que um servidor aceite múltiplos administradores, cada um com a sua própria chave, facilitando a auditoria e a revogação de acessos.