O protocolo SSH suporta muitos métodos de autenticação. Um dos mais importantes é, provavelmente, a autenticação de Chave Pública para ligações interactivas e automatizadas.
A autenticação de chave pública – o quê e porquê?
A motivação para usar autenticação de chave pública sobre senhas simples é a segurança. A autenticação de chave pública fornece uma força criptográfica que mesmo palavras-passe extremamente longas não podem oferecer. Com SSH, a autenticação de chave pública melhora consideravelmente a segurança, uma vez que liberta os utilizadores de se lembrarem de palavras-passe complicadas (ou pior ainda, escrevendo-as).
Além da autenticação de chave pública de segurança, também oferece benefícios de usabilidade – permite aos utilizadores implementar uma única autenticação através dos servidores SSH a que se ligam. A autenticação de chave pública também permite o login automatizado, sem palavra-passe, que é um facilitador de chave para os inúmeros processos de automatização seguros que executam dentro de redes empresariais a nível global.
Criptografia de chave pública gira em torno de um par de conceitos chave. As secções abaixo explicam estes brevemente.
Criptografia assimétrica – Algoritmos
Como com qualquer esquema de encriptação, a autenticação da chave pública é baseada num algoritmo. Existem vários algoritmos bem pesquisados, seguros e fiáveis por aí – sendo os mais comuns os da RSA e DSA. Ao contrário dos algoritmos de encriptação comummente conhecidos (simétricos ou de chave secreta), os algoritmos de encriptação de chave pública funcionam com duas chaves separadas. Estas duas chaves formam um par específico para cada utilizador.
Par de chaves – Público e Privado
No caso de autenticação de chave pública SSH, é bastante típico que os utilizadores criem (isto é, provisão) o par de chaves para si próprios. As implementações SSH incluem utilitários facilmente utilizáveis para isto (para mais informações ver ssh-keygen e ssh-copy-id).
Cada par de chaves SSH inclui duas chaves:
-
Uma chave pública que é copiada para o(s) servidor(es) SSH. Qualquer pessoa com uma cópia da chave pública pode encriptar dados que depois só podem ser lidos pela pessoa que detém a chave privada correspondente. Quando um servidor SSH recebe uma chave pública de um utilizador e considera a chave digna de confiança, o servidor marca a chave como autorizada no seu ficheiro de chaves_autorizadas. Tais chaves são chamadas chaves autorizadas.
- p> Uma chave privada que permanece (apenas) com o utilizador. A posse desta chave é prova da identidade do utilizador. Apenas um utilizador na posse de uma chave privada que corresponda à chave pública no servidor será capaz de autenticar com sucesso. As chaves privadas precisam de ser armazenadas e tratadas cuidadosamente, e não devem ser distribuídas cópias da chave privada. As chaves privadas utilizadas para autenticação do utilizador são chamadas chaves de identidade.
Configurar autenticação de chave pública para SSH
Os seguintes passos simples são necessários para configurar a autenticação de chave pública (para SSH):
-
par de chaves é criado (tipicamente pelo utilizador). Isto é tipicamente feito com ssh-keygen.
-
Chave privada fica com o utilizador (e só lá), enquanto a chave pública é enviada para o servidor. Tipicamente com o utilitário ssh-copy-id.
- p>Servidor armazena a chave pública (e “marca-a” como autorizada).
- p>Servidor permitirá agora o acesso a qualquer pessoa que possa provar ter a chave privada correspondente.
Manuseamento da chave privada
É extremamente importante que a privacidade da chave privada seja guardada cuidadosamente. Para a maioria dos casos de uso orientado pelo utilizador, isto é conseguido encriptando a chave privada com uma frase-chave.
Quando é necessária uma chave privada, pede-se ao utilizador que forneça a frase-chave para que a chave privada possa ser desencriptada. A manipulação de frases-passe pode ser automatizada com um agente SSH.
Na maioria dos casos de utilização automatizada (scripts, aplicações, etc.) as chaves privadas não são protegidas e é necessário um planeamento cuidadoso e práticas de gestão de chaves para se manterem seguras e em conformidade com os mandatos regulamentares.
From Chaos to Order – SSH Key Management
Em ambientes onde os utilizadores estão livres para auto-provisionar chaves de autenticação é comum que ao longo dos anos os números de chaves provisionadas e implantadas cresçam muito. Uma vez que não há forma de descobrir quem possui ou provisionou originalmente uma dada chave pública encontrada num servidor, e uma vez que estas chaves nunca expiram, o verdadeiro estado do controlo de acesso em grandes ambientes não geridos pode ser muito pouco claro ou completamente caótico.
Gerir e controlar o acesso a servidores e outras infra-estruturas de TI é um requisito legal para qualquer empresa que opera em mercados regulados, tais como finanças, energia, cuidados de saúde, ou comércio. Estas empresas precisam de empregar soluções de gestão de chaves SSH para controlar o acesso concedido por chaves SSH.