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: 11.811 ]

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

IDS com Debian 4, Snort 2.8.3.1 e BASE 1.4.1

Linux x Windows - O paradoxo da atualização

Mozilla Firefox: um guia de instalação para iniciantes

Trabalhando com a extensão .tar

Trabalhando com foto usando Cheese + GIMP + Xmorph

Leitura recomendada

Vazamento de informações vitais via "HP Operations Manager Perfd"

Soluções para Acesso Remoto Seguro com SSH

Um dia depois da inundação

Desligamento automático seletivo com apcupsd

Como recuperar a senha o root

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts