Está aberta a temporada de vazamento de senhas, aprenda hoje a proteger as suas

Você viu quantos sites e serviços on-line populares têm sofrido de vazamentos de senhas recentemente?

Em uma lista rápida e de memória, minha senha estava nos bancos de dados da PSN (serviço on-line do Playstation 3), da Gawker (sites como Lifehacker e Engadget), do Twitter, do Yahoo e do LinkedIN – e todos eles, de uma forma ou de outra, foram expostos ao público recentemente.

Cada vazamento expôs dezenas de milhares (ou mais) senhas de usuários, e a minha estava incluída em alguns deles. Mas eu pouco me preocupei com isso, e vou explicar a razão.

A versão TL;DR da explicação, caso você não tenha tempo, é a seguinte: eu tenho uma senha diferente para cada serviço, e nos serviços em que sinto que realmente preciso de privacidade (os que têm informação confidencial ou sabem meu cartão de crédito, por exemplo), troco de senha frequentemente. E não tenho a menor dificuldade em lembrar de cada uma delas, porque uso as técnicas descritas a seguir.

Os vazamentos ensinam como não fazer

A situação é tão clara que motivou inúmeros artigos de revistas e sites: as listas de senhas vazadas evidenciam o quanto os usuários usam mal este recurso que est;á ali para sua própria segurança.

Este artigo da Forbes, que é de anteontem, é um bom exemplo: ele mostra quais as senhas mais frequentes entre os usuários de vários vazamentos recentes.

Não vou reproduzir todos os dados, mas aqui vai uma breve lista, para ilustrar:

  • As 3 senhas mais frequentes entre as que vazaram do Twitter foram 123456, 123456789 e 102030.
  • No vazamento do Gawker (pátria do Lifehacker), as 3 mais comuns eram 123456, password e 12345678.
  • Entre as senhas que vazaram do Yahoo, as mais frequentes eram 123456, password e welcome.

São senhas simples demais, mas o dado que evidencia a pior parte do problema é este: entre os vazamentos da PSN (Playstation) e da Gawker (Lifehacker, Gizmodo), 2/3 dos usuários que aparecem em ambas as listagens tinham a mesma senha nas duas.

E é aqui que encontramos o maior problema: por mais complexa que seja a senha, se você a usa em mais de um serviço, o vazamento de um deles compromete imediatamente todos os demais. E o pior: nos casos citados nós ficamos sabendo que houve vazamento, mas sempre podemos imaginar que há vazamentos que não chegam a ser divulgados, e aí há gente com uma chave sua que abre todas as portas, sem que você saiba.

A solução é ter senhas fortes e exclusivas para cada serviço ou site

Se a sua senha é um padrão comum (como "123456"), há programas para testar automaticamente uma série de padrões assim e encontrá-la em poucos minutos.

Já se ela é uma palavra que consta no dicionário ou enciclopédia (como "superman", "Ramones" ou "Tchaikovsky"), adivinhe: também há programas para testar automaticamente todas as palavras de vários dicionários e encontrá-las em tempo bem razoável.

Em ambos os casos, variações comuns como trocar letras por números (sup3rm4n, r4m0n3s, ...), alternar maiúsculas com minúsculas ou inserir símbolos no meio das palavras (tcha%ikov?sky) também são pesquisadas e permanecem violáveis.

Uma senha forte mistura letras, números e símbolos, e não deriva diretamente de nenhuma palavra que conste em dicionários, enciclopédias ou padrões identificáveis de forma automatizada (sequências alfabéticas, sequências de caracteres próximos no teclado, a primeira letra do nome de cada um de seus filhos, ...). Não se iluda, pois ela continua sendo violável (ainda que seja por mera força bruta de análise combinatória), mas ao menos escapa de boa parte dos ataques comuns.

Poderíamos aqui chutar várias delas: Ae9^Dir19, quTE1W#sa, e assim por diante, que poderiam ser produzidas por um bebê (ou gato, ou... um bebê gato) batucando no teclado.

O problema principal, no caso, é memorizar cada uma delas: se você tiver uma para cada serviço, e todas forem assim "malucas", será necessário uma memória prodigiosa, ou recorrer a algum software ou outro recurso especializado para registrá-las e no qual você confie (existem vários, muitos são positivamente avaliados por especialistas, mas não uso nenhum).

Minha alternativa: trocar as senhas malucas por uma regra maluca

Aquelas senhas malucas vistas acima são impossíveis de memorizar, mas e se você inventar uma maneira de produzi-las de forma que façam sentido apenas para você, e para mais ninguém?

Aí basta lembrar dessa regra (que só você conhece) e pronto: senhas complexas, que não façam sentido para mais ninguém, e que se você esquecer, podem ser reconstruídas com a simples aplicação da mesma regra.

Vamos a um exemplo, lembrando que a "maluquice" da regra (que na teoria criptográfica corresponde à ampliação da entropia) que você inventar funciona a seu favor, e que você NÃO DEVE copiar exatamente o que eu vou descrever a seguir.

Exemplo 1: endereço do meu avô, mais número de letras e vogais do nome do site

Na década de 1980 meu avô morava na rua Alexandre Doehler 99, apartamento 19, e esta informação provavelmente não constaria em nenhum cadastro associado a mim (mas hoje consta, porque já a divulguei como exemplo anteriormente. Ignore este fato, para propósitos didáticos ツ).

Vamos criar um padrão "maluco" a partir disso:

  1. Poderíamos extrair vários padrões "malucos" destes dados, mas vou começar com um bem simples: a primeira e última letras do nome e sobrenome da rua: AeDr.
  2. Já temos minúsculas e maiúsculas, mas precisamos de números. Vamos inseri-los, diretamente a partir dos que constam no endereço, em sua ordem natural: Ae99Dr19 – sabendo que aquele endereço é significante para mim, continua fácil de lembrar, não?
    Neste ponto já temos uma senha razoavelmente boa, mas ainda falta ao menos um símbolo e a garantia de que teremos uma senha diferente para cada site, serviço ou software.

  3. Para começar, que tal substituir um ^ na posição correspondente à segunda vogal no nome do serviço? Assim, para o Facebook, nossa senha maluca viraria Ae9^Dr19 (o "e" é a segunda vogal do nome Facebook, e está na quarta posição), para o Twitter a senha seria Ae99D^19, etc.
    Neste ponto já estamos em um bom começo, mas a entropia ainda é bem insuficiente: a senha para o Gmail seria a mesma Ae9^Dr19 que geramos para o Facebook, por exemplo. Dá para melhorar.

  4. Para dar um passo a mais, que tal inserir a penúltima letra do nome do serviço, 2 posições após o símbolo que foi substituído? Aí a senha do Facebook ficaria Ae9^Dor19, a do Twitter seria Ae99D^1e9 e a do Gmail seria Ae9^Dir19

Isoladamente, parecem senhas geradas aleatoriamente, e a regra de formação delas não é óbvia para um teste automatizado, especialmente sem o conhecimento daquele dado importante: o endereço do seu avô na década de 1980. E se alguém vier a ter acesso à senha de um ou 2 dos seus serviços on-line, em vazamentos sucessivos, ainda assim pode ter dificuldade para entender a relação entre elas, e para adivinhar uma terceira.

Exemplo 2: partindo da letra de uma música obscura

Vamos usar como origem um verso de uma música que não seja a sua preferida, e também não esteja entre os maiores sucessos de seu autor (porque senão a possibilidade de ser associada a você ou reconhecida é maior).

Para este exemplo, vamos usar a música "Declare Guerra", do início da carreira do Barão Vermelho. Agora o passo-a-passo vai ser menos detalhado, porque você já entendeu como o procedimento funciona:

  1. Vamos partir de um verso da música, escolhido ao acaso: "Chega de passar a mão na cabeça de quem te sacaneia", e pegar as 2 primeiras letras das 3 últimas palavras dele: quTEsa – 2 delas foram escolhidas arbitrariamente para ficar em maiúsculas.
  2. Essas mesmas 3 palavras têm um total de 14 letras, portanto aí está o número que desejamos inserir: quTE14sa
  3. Agora vamos escolher 2 símbolos diferentes para alternar: se o número de letras do nome do serviço for ímpar, vai ser o # (que no meu teclado fica em cima da tecla 3, que é ímpar), e em caso contrário será o $ (que fica em cima do 4, que é par).
  4. Resta decidir a que altura inseri-los. Para simplificar, vou usar a mesma regra do exemplo 1: na altura da segunda vogal do nome do serviço. Assim, a senha do Facebook (8 letras, par) ficaria quT$14sa, a do Twitter (7 letras, ímpar) ficaria quTE1#sa e a do Gmail (ímpar) seria quT#14sa.
  5. Para garantir um mínimo de entropia adicional necessária, vamos inserir a segunda letra do nome de cada serviço, escrito em maiúscula, imediatamente antes do símbolo do passo anterior. Assim, a senha do Facebook ficaria quTA$14sa, a do Twitter ficaria quTE1W#sa e a do Gmail seria quTM#14sa.

A prática de métodos similares a este que compartilhei me indica que é fácil memorizar as senhas variadas de cada serviço ou site, e lá pelo terceiro dia já não preciso ficar lembrando da regra a cada novo login nos sites que uso com frequência. Já para os sites que uso menos, de vez em quando tenho que usar a regra, mas é fácil o suficiente.

Restam as personalizações (crie sua regra, não repita as dos exemplos, nem reuse os mesmos símbolos e critérios seletores!) e as exceções: sites ou serviços que exigem outros tamanhos de senhas, sites nos quais você tem um login (dica: use algum detalhe do login como parte da regra da senha), ou mesmo sites que exigem um número determinado de letras, números, símbolos, etc. Lidar com elas precisa ser parte da sua regra.

Duas recomendações adicionais: compartilhe a regra com a pessoa em quem você confia para lidar com seus acessos em caso de uma incapacidade sua ou outra emergência (coma, acidente, etc.), e aplique a mesma regra a 100% dos serviços, o que certamente demandará uma ou duas horas do seu tempo até trocar todas.

E a terceira nem deveria precisar ser escrita: não esqueça a sua regra, ou você estará numa situação potencialmente pior do que a de quem usa a mesma senha para todos os sites!

Em tempo: senhas difíceis de memorizar ou complicadas de escrever são uma consequência de uma má escolha tecnológica, que são essas senhas relativamente curtas que usamos no dia-a-dia (como explica a célebre tirinha do XKCD).

Imagino que não demoraremos a ver a popularidade de outros métodos: comprovação de identidade baseada em gestos, em reconhecimento de padrões, em séries de palavras, etc. Enquanto isso não chega, precisamos nos virar com o que temos!

E será que você notou a pegadinha? Reveja agora o trecho do texto acima em que eu "chutei" 2 senhas e disse que poderiam ser produzidas por um bebê batucando no teclado. Você irá notar que ambas resultaram dos passos finais dos 2 exemplos que dei da formação de senhas, e portanto não eram tão chutadas assim. Que tal? ツ

Comentar

Comentários arquivados

Artigos recentes: