PuTTY - Estabelecendo Chave Secreta com OpenSSH

Esse artigo trata de conceitos básicos sobre a troca de elementos entre o cliente SSH (PuTTY) e o servidor SSH (OpenSSH), visando estabelecer uma chave secreta que permita criptografar o processo de login e proteger a senha do usuário. Baseado na estrutura do Debian Jessie.

[ Hits: 9.429 ]

Por: Perfil removido em 28/05/2014


Conceitos básicos



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:
  1. Download do executável cliente SSH Win32 (PuTTY).
  2. Cada utilitário separadamente como um executável independente. (PuTTY, PuTTYtel, PSCP, PSFTP, Plink, Pageant e PuTTYgen).
  3. 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:
    Próxima página

Páginas do artigo
   1. Conceitos básicos
   2. Como o PuTTY funciona
Outros artigos deste autor

Configuração do serviço NTP em servidor cliente

Implementação de um proxy/cache para ganho de conexão

Pesquisa com slocate, locate e updatedb

Compilação e instalação do kernel 2.6.xx no Slackware

ArchLinux, uma distro de expressão aqui no VOL

Leitura recomendada

NTop - Configurações gerais

SECtool - Análise Local para Linux

Segurança em seu Linux (parte 2)

Detectando vulnerabilidades com o Nessus

Incron - supervisionando sistemas de arquivos

  
Comentários
[1] Comentário enviado por juno.rr em 28/05/2014 - 19:44h

Muito legal seu artigo. Muito bem escrito, parabéns. Já reconfigurei meu servidor ssh e o putty.

[2] Comentário enviado por Armlook em 20/07/2014 - 12:59h

Obrigado por compartilhar!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts