"Secure Shell" (ssh)

O "Secure Shell" é um sistema cliente-servidor que tem como objectivo permitir o estabelecimento de sessões de terminal entre máquinas ligadas por uma rede insegura. Garante a confidencialidade dos dados transmitidos e permite ainda usar a conexão segura estabelecida para redireccionamento de serviços entre as máquinas ligadas.

O redireccionamento de serviços alarga de modo significativo a utilização deste sistema que deixa de estar limitado a sessões de terminal e passa a ser aplicavel a qualquer serviço de rede.

Funcionamento

O sistema é composto por um programa cliente (ssh) e um servidor (sshd), sendo usada criptografia de chave pública na fase de estabelecimento da sessão e posteriormente criptografia convencional. Além de os dados serem cifrados, também podem ser comprimidos usando o algoritmo zip. Depois de estabelecida uma sessão segura segue-se a autenticação do utilizador que pode ser realizada por diversos meios.

O implementação ssh tradicional (ssh1/sshd1 - http://www.cs.hut.fi/ssh) funciona do modo que se descreve a seguir.

Quando o servidor (sshd) é instalado numa máquina é gerado um par de chaves RSA de 1024 bits, que ficam atribuidas a essa máquina. Quando o servidor arranca é gerada um outro par de chaves RSA de 768 bits que ficam associadas ao servidor e são renovadas de 60 em 60 minutos. Embora estes números de bits para as chaves sejam considerados adequados podem ser configurados.

Quando um cliente (ssh) contacta o servidor (sshd), usando normalmente a porta 22 do protocolo TCP, o servidor envia ao cliente as suas duas chaves públicas (de máquina e de servidor).

O cliente verifica se a chave pública de máquina está na sua base de dados local, se tal não acontecer alerta o utilizador. De seguida o cliente gera uma chave de sessão secreta (criptografia convencional) com 256 bits, encripta a chave de sessão sucessivamente com as chaves públicas RSA de máquina e de servidor enviadas pelo sshd. A chave de sessão de 256 bits cifrada deste modo é então enviada ao servidor.

Depois desta fase de estabelecimento de sessão todas as trocas de informação são cifradas com a chave de sessão usando criptografia convencional. Os algoritmos que podem ser usados para este efeito são o IDEA, o DES, o DES triplo, o ARCFOUR e o TSS.

O procedimento descrito garante a confidencialidade da sessão, mas continua a existir a necessidade de o utilizador se autenticar, os métodos possíveis são:

  • Considerar a máquina cliente segura. Neste caso não é necessária qualquer "password". Dado que as máquinas estão separadas por uma rede insegura este procedimento não é aconselhavel.
  • Considerar a máquina cliente segura, mas exigir autenticação da mesma. Neste caso também não é necessária qualquer "password".

(to be continued ...)

A implementação mais recente (ssh2/sshd2 - http://www.ssh.fi)

(to be continued ...)


andre@dei.isep.ipp.pt
http://www.dei.isep.ipp.pt/~andre