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:
-
Pedido: O cliente informa ao servidor que deseja autenticar-se com uma chave específica.
-
Desafio: O servidor gera um número aleatório, cifra-o com a Chave Pública do utilizador e envia-o ao cliente.
-
Assinatura: O cliente recebe o pacote, decifra-o usando a sua Chave Privada local e envia uma prova assinada de volta ao servidor.
-
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.