Como criar senhas seguras e fáceis de lembrar

por | jul 19, 2009 | Dicas, Internet, Nerd, Sites | 0 Comentários

Todo mundo coleciona senhas como Pokémons, tem uma pra cada site.

O problema é que elas são na maioria das vezes inseguras e podem ser roubadas facilmente. Aqui fica um guia completo de como cuidar de suas senhas, desde de como elas são roubadas até como gerenciar várias senhas.

Como Senhas São Armazenadas

Nos sites (pelo menos nos decentes) que permitem cadastro de usuários, as senhas não são armazenadas da forma que são digitadas pelo usuário. Caso fossem, um hacker com más intenções poderia invadir o site e conseguir as senhas de todos os usuários – boa parte (provavelmente você também) usa a mesma senha em vários sites diferentes, e então o hacker poderia roubar contas de vários serviços com uma só invasão.

Em vez disso, os sites guardam o hash da senha digitada pelo usuário. Mas o que é isso de hash?

Hash

O hash de uma sequência de bits (que pode ser um texto, uma imagem, uma música) é, a bem grosso modo, uma sequência de caráteres gerada através de um algoritmo (no caso, uma série de cálculos matemáticos), de forma que essa sequência de caráteres tenha um tamanho pequeno e fixo.

Os algoritmos que geram hashes são feitos de forma que uma alteração mínima na entrada (o texto, imagem, música etc) gera um resultado totalmente diferente.

Outra característica desses algoritmos é que é impossível fazer o processo inverso: pegar o valor do hash e calcular a entrada que o gerou. Justamente nesse ponto, o hashing difere da criptografia. Na criptografia, a intenção é esconder os dados, de forma que quem esteja autorizado a vê-los (ou seja, quem tem a senha de decodificação) possa ter a informação original de volta.

Para os exemplos desse artigo, vamos usar o algoritmo MD5.

Texto Hash MD5 do texto
teste 698dc19d489c4e4db73e28a713eab07b
testE 0e7c670dba0c532a664757db32ed2099
Eu sou um texto longuííííssimo, e mesmo assim gero um hash com o mesmo tamanho! Isso não é incrível? Eu acho! Sério, acho mesmo. 6a7d4d41f06b069a472b08e8f3b8ed4be

Hashes possuem dois usos principais:

  • Verificar a integridade de arquivos. Quando um arquivo vai ser transportado de um computador para outro, o lado de origem calcula o hash do arquivo. Em seguida, o arquivo é transportado, e o hash é novamente calculado (obviamente, utilizando o mesmo algoritmo). Se o arquivo estiver corrompido (partes dele foram perdidas ou bits foram trocados), por menor que seja a alteração, o hash terá um valor completamente diferente do original.
  • Armazenar senhas em bancos de dados de forma segura. E é nisso que estamos interessados!

Como Acontece A Mágica

Quando você se cadastra em um site, ele calcula o hash relativo à sua senha, e guarda ele junto com o nome de usuário. A senha que você digitou, ele joga fora.

Quando você faz login, nome de usuário e senha são enviados pela Internet até o servidor.

Lá, calcula-se o hash da senha enviada, e é conferido se a entrada do banco de dados de usuários com o mesmo nome de usuário que foi apresentado tem o campo “senha” igual ao hash calculado. Se ambos os campos baterem, o servidor autentica você, envia uma nova página pro seu computador mostrando que você autenticou, o menu de usuário etc. Caso não, ele dá o erro de “usuário ou senha não encontrados”.

Agora, o motivo pelo qual hashes são usados para armazenar as senhas: Suponha que o servidor foi invadido. O invasor tem acesso ao banco de dados dos usuários. Em vez da senha do usuário, o que ele vê é o hash. E como dissemos, é impossível obter a senha original a partir disso. É claro, ele pode fazer o servidor e o site de gato e sapato, pode falsificar ações do usuário (como fazer compras por ele, se for um site de compras). Mas o estrago só será feito naquele site: Mesmo que o usuário use a mesma senha em todos os sites que se cadastra, o invasor não sabe que senha é essa.

Como Roubam Senhas

Uma das maneiras mais comuns de se roubar senhas é na adivinhação. Mas não é qualquer adivinhação, são softwares poderosos que tentam mais de 100,000 combinações por segundo, dependendo de como são executados e que hardware (computador ou computadores em rede).

Imagine que você tenha uma senha de 2 caráteres, que é composta apenas de números, o que dá 10 possíveis números para cada caráter, assim sendo 10×10 = 100 combinações possíveis para sua senha. Muito fácil de adivinhar, mesmo sem um computador.

Se a senha tivesse 2 caráteres, composta de números e de letras (maiúsculas e minúsculas), as possibilidades aumentam muito: 26 + 26 + 10 = 62 possibilidades por caráter. Sendo assim, 62×62 = 3844 possibilidades de senha.

Um computador rodando um Pentium 4 de 3 GHz pode tentar até 350,000 senhas diferentes num documento protegido do Microsoft Word. Por segundo.

Como ele faz isso? Usando dicionários. Só que são “dicionários de hackers”, onde existem palavras comuns e uma base de dados com as senhas mais comumente usadas, como 123456 ou abcdef, se mesmo assim não conseguir, ele vai tentar com sufixos e prefixos comuns, como ! ou abc. Só neste teste, mais de 24% das senhas são reveladas.

Os dicionários básicos usados para adivinhar senhas são:

  • Palavras comumente usadas em senhas;
  • Nomes;
  • Datas (todas entre 1900 e 2006);
  • Símbolos;
  • Fonético (são palavras que não existem mas são fáceis de pronunciar);
  • Entre outros;

O próximo passo é tentar com combinações de maiúsculas e minúsculas. Primeiro com todas as letras da senha minúsculas (forma mais comum), depois com a primeira maiúscula (segunda mais comum), depois todas maiúsculas e por final a última letra somente em maiúscula. Substituir S por $, A por @, 1 por ! e outros símbolos que são substitutos.

Agora imagine vários computadores tentando ao mesmo tempo decifrar uma senha, mais de milhões de combinações por minutos, em algumas semanas ou meses mais de 70% das senhas seriam adivinhadas (claro que tudo depende de onde a senha está sendo adivinhada, se os computadores são potentes, etc).

O processo fica muito mais fácil se o hacker conseguir dados de suas outras senhas, assim dá pra saber que você costuma colocar a primeira letra em maiúsculo e usar o dia do seu nascimento. Com estes conhecimentos o processo é diminuído pra dias, talvez até horas…

Quando o hacker tem acesso ao seu HD, um software escaneia absolutamente todo tipo de caráter do seu disco rígido, como e-mails, documentos, arquivos excluídos, tudo mesmo. Com base nisso cria outro dicionário, que sozinho já revela 50% das senhas.

Vale lembrar que estes métodos são usados principalmente por agências de segurança, já que exige muitos recursos e tecnologia. Mas não impossibilita que um hacker com várias zombie computers consiga também.

O que Evitar Numa Senha

Uma boa senha é uma senha que evite todos os dicionários citados nos artigos anteriores.

Então o que está proibido:

  • Senhas curtas, com menos de 8 caráteres.
  • Qualquer data dos últimos 3 séculos.
  • Substituir símbolos comuns, como 1 por ! ou A por @.
  • Usar símbolos e números somente no começo ou final da senha.
  • Usar senha completamente em minúscula, completamente em maiúscula ou começar/terminar assim.
  • Fazer qualquer menção a sua vida
    • Datas importantes como aniversários.
    • Nomes de parentes, animais, pessoas próximas ou até o seu nome.
    • Nome de caracteres de filmes, personagens de ficção ou desenho animado que você gosta ou gostava.
    • Carros que você teve.
    • Menções aos seus últimos ou atuais empregos.
    • Apelidos de infância.
  • Aleatório, mas óbvio demais. Como 123456 ou abcdef.
  • Anotar em qualquer lugar de fácil acesso.

Como fazer uma boa senha sem esquecer dela

Uma excelente senha seria:

  OGmn5n&wd9x${2n6F^wut;J8?m _J

30 caráteres (bem aceito na maioria dos sites), acentos, espaços (inclusive, o primeiro caráter é um espaço), underline (_), menos (-), números, letras maiúsculas e minúsculas e pontuação.

Mas é claro que você não vai lembrar de uma senha dessas, sem falar que anotar ela é totalmente inseguro.

Senhas ótimas são difíceis de adivinhar, consequentemente difíceis de lembrar.

Então vamos usar métodos mais fáceis pra criar uma senha:

  • Olhe ao redor, no seu quarto, escritório, onde estiver;
  • Escolha três objetos;
  • Tente criar uma frase e adicione variáveis;

Por exemplo:

Objetos: Urso, Ventilador, Janela.

Crie uma frase com isto: O urso comeu o ventilador e pulou a janela.
(eu sei, bizarro)

Depois é só adicionar caráteres especiais e modificações: 0 Ursow-comeu__ [email protected] a janela?! Ou uma versão mais simples: “O URSO comeu_o_ventilador e pul0u a janela??!1” com aspas e tudo. A imaginação é o limite, o importante é:

  • Criar uma frase memorável que não tenha nenhuma relação com você;
  • Adicionar caráteres especiais, como [email protected]#$$%¨&**()_-.;, sem substituições óbvias (como A por @);
  • Usar espaços e pontos;

É difícil inventar uma frase do nada e lembrar dela quase todos os dias da sua vida. Tente criar associações e usar palavras pronunciáveis, que são fáceis de memorizar.

Que tal alguma frase de uma musica que você goste?

Lucie in the sky, with diamons.

ou uma versão reduzida: lits,wd. Adicione caráteres: @lits,wd???!

Pronto, uma senha fácil de lembrar e cheia de caráteres especiais.

Não é aconselhável usar a mesma senha para vários serviços, mas mesmo assim eu aconselho. Crie níveis de prioridade:

  • Nível 1 para twitter e last.fm (serviços que se hackeados, não vão te trazer –quase- nenhuma perda).
  • Nível 2 para Orkut, Facebook e Flickr (já trazem alguma perda se invadidos).
  • Nível 3 para PayPal e e-mail (é quase o fim de sua vida se alguém invadir).

Crie quantos níveis forem fáceis pra você. No caso do internet banking, crie sempre senhas diferentes das demais e caso tiver vários bancos.

Discussão

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *