Muita gente usa
PuTTY, sem ter a noção exata sobre como ele funciona, inclusive eu.
Cansado de usar alguns recursos sem saber como funcionam, estou buscando informações sobre PuTTY e resolvi compartilhar com vocês. Não vou ensinar a usá-lo, nem a montar um servidor SSH. Existem vários tutoriais pela Internet que fazem isso.
Mas, se você usa PuTTY, é hora de fazer ajustes que podem deixar seu SSH mais seguro. Ele está atualmente na versão 0.63, as versões anteriores são inseguras.
PuTTY é um cliente SSH para Windows. Ele é grátis, sua licença é baseada nos moldes do licenciamento MIT, então, é software livre. Existe uma versão de PuTTY para
GNU/Linux, mas esse artigo não trata desta. PuTTY está em conformidade com o licenciamento Debian.
Ele pode ser encontrado para download dos binários ou dos fontes, em:
PuTTY faz parte de uma suíte de aplicativos relacionados com o protocolo SecSH e pode ser obtido dos seguintes modos:
- Download do executável cliente SSH Win32 (PuTTY).
- Cada utilitário separadamente como um executável independente. (PuTTY, PuTTYtel, PSCP, PSFTP, Plink, Pageant e PuTTYgen).
- Um instalador do Windows com todos utilitários juntos, em um único arquivo.
Quando o cliente PuTTY inicia uma conexão com o servidor SSH, o protocolo de comunicação utilizado é o TCP/IP. No modo nativo, esse protocolo não implementa segurança. Cabe ao servidor SSH apresentar um prompt de login seguro, de modo que o usuário possa digitar a senha, sem expor seu conteúdo na rede.
Quando a conexão TCP/IP se inicia, não há qualquer criptografia presente e se o cliente enviasse sua senha em texto puro, ela seria capturada por todos que estivessem monitorando a rede. Essa é a maior fraqueza de servidores de acesso remoto tradicionais, como
telnet e
rlogin.
OpenSSH não possui essa fraqueza.
OpenSSH é capaz de proteger a senha de login, pois oferece criptografia ANTES do login ser feito. O servidor OpenSSH é capaz de estabelecer uma chave secreta com o cliente e oferecer autenticação segura para o usuário, através de criptografia simétrica.
Existem três condições que estabelecem a necessidade da chave secreta, antes do login:
- NÃO há uma chave secreta previamente compartilhada e aceita pelas partes.
- NÃO há um terceiro que possa autenticar as partes através de um certificado.
- O meio de transmissão é inseguro e sujeito à interceptações (TCP/IP).
Até 1975, estabelecer uma chave secreta nessas condições, era considerado impossível. Até que em 1976, foi publicado o algoritmo
Diffie-Hellman.
O funcionamento desse algoritmo, é baseado na geração de uma chave secreta por cálculos matemáticos. São utilizados logaritmos discretos ou a curva elíptica. Assim, estabelecer uma chave secreta diante das condições adversas, se tornou possível.
O estudo de logaritmos discretos, é um campo da matemática (álgebra abstrata) relacionado com a fatoração de números inteiros gigantes. Um logaritmo discreto, é um logaritmo do tipo
log a(b), que é a solução de uma equação do tipo
a ^ x = b. Se o valor X for um número gigante, fica difícil obter o valor do logaritmo de b, por fatoração.
O ponto central desse modelo, é que ele torna possível gerar uma senha secreta através de cálculos exponenciais na forma de módulos, mas, torna bem difícil fazer a operação reversa.
Observe que esse cálculo é PLENAMENTE reversível, se você conhecer os elementos utilizados para gerar a chave. Assim, os dois lados da comunicação deduzem separadamente a senha secreta a partir de elementos trocados entre si, mas nunca trocam seus números secretos, ou a senha deduzida.
Cada uma das partes escolhe um "número secreto" e usa esse número para criar a chave única compartilhada. Durante a criação da chave, são utilizados os "números que não são secretos", os números secretos e um valor gerado por eles.
Em seguida, as partes destroem seus "números secretos". É muito difícil deduzir os "números secretos" envolvidos nesses cálculos. O tempo necessário para "reverter" os cálculos por força bruta, utilizando um computador pessoal, é de vários anos.
Observe que, no fim do processo, os dois lados obtêm a chave por um artifício matemático sem precisar transmitir essa chave pela rede, em nenhum momento.
A página da Wikipédia pode esclarecer um pouco mais sobre o funcionamento do método
Diffie-Hellman:
A versão em inglês está mais completa: