No protocolo SSH, a Criptografia Assimétrica (também conhecida como criptografia de chave pública) desempenha o papel vital de garantia de identidade. Ela é utilizada no início da conexão para resolver dois problemas críticos de confiança: o servidor precisa provar que é quem diz ser, e o utilizador precisa de provar que tem autorização para aceder ao sistema.
1. O Conceito de Par de Chaves
A base desta autenticação é a existência de dois componentes matematicamente relacionados, mas funcionalmente opostos:
-
Chave Pública: Pode ser partilhada livremente. No SSH, ela é colocada no servidor (normalmente no ficheiro
~/.ssh/authorized_keys). -
Chave Privada: Deve ser mantida em segredo absoluto pelo proprietário. Ela nunca viaja pela rede.
A magia da autenticação assimétrica reside no facto de que algo cifrado ou assinado por uma chave só pode ser verificado/decifrado pela outra, tornando a falsificação virtualmente impossível.
2. Autenticação do Servidor (Host Verification)
Antes mesmo de o utilizador introduzir a sua senha ou chave, o SSH utiliza a criptografia assimétrica para autenticar o servidor.
-
Cada servidor SSH possui uma “Host Key” única.
-
Quando o cliente se liga, o servidor envia a sua chave pública.
-
O cliente verifica se essa chave mudou (consultando o ficheiro local
known_hosts). Se a chave for reconhecida, o cliente sabe que não está a sofrer um ataque de Man-in-the-Middle.
3. Autenticação do Utilizador (Public Key Auth)
Este é o método de login mais seguro e recomendado, substituindo o uso de passwords tradicionais. O processo segue esta sequência lógica:
-
Desafio: O servidor envia uma mensagem aleatória (um “challenge”) ao cliente.
-
Assinatura: O cliente utiliza a sua Chave Privada local para assinar digitalmente essa mensagem.
-
Verificação: O cliente envia a assinatura de volta. O servidor utiliza a Chave Pública (que já estava guardada no perfil do utilizador) para validar a assinatura.
-
Acesso: Se a assinatura for matematicamente válida, o servidor tem a prova absoluta de que o cliente possui a chave privada correspondente e permite o acesso.
4. Algoritmos Utilizados
O SSH suporta diversos algoritmos para esta fase de autenticação, cada um com diferentes níveis de segurança e performance:
-
RSA: O mais antigo e compatível, mas requer chaves grandes (mínimo 3072 bits) para ser considerado seguro hoje.
-
ECDSA: Baseado em Curvas Elípticas; oferece a mesma segurança que o RSA com chaves muito menores, sendo mais eficiente.
-
Ed25519: Atualmente considerado o “padrão ouro” para o SSH. É extremamente rápido, seguro e as chaves são curtas e fáceis de gerir.
5. Vantagens sobre as Passwords
-
Imunidade a Brute Force: Enquanto uma password pode ser adivinhada, uma chave de 4096 bits é impossível de quebrar por tentativa e erro.
-
Proteção contra Interceção: Como a chave privada nunca sai do computador do utilizador, ela não pode ser capturada durante a transmissão.
-
Automatização: Permite que scripts e sistemas automatizados (como backups) se liguem de forma segura sem intervenção humana e sem expor credenciais em texto simples.
6. Boas Práticas: Passphrase
Mesmo sendo uma autenticação assimétrica, a chave privada em disco deve ser protegida por uma Passphrase. Isto adiciona uma camada de “autenticação de dois fatores”:
-
Algo que possui: O ficheiro da chave privada.
-
Algo que sabe: A frase secreta para desbloquear essa chave.
Desta forma, se o seu computador for roubado, o atacante ainda não conseguirá utilizar a sua chave para aceder aos servidores.