gutocarvalho.net

cotidiano simples, vida feliz

senhas, entendendo e utilizando corretamente

By

senha

1. O uso de senhas

Eu já trabalhei em várias instituições e em vários projetos em que tive que lidar com equipamentos, appliances, programas e sistemas operacionais que usavam senhas em branco, senhas DEFAULT (aquelas vindas de fábrica) ou senhas padronizadas como por exemplo empresa2010 que vai mudando conforme o ano empresa2011, empresa2012.

Nem preciso dizer que isso é um grande problema e uma grande falha de segurança, as senhas default podem ser conseguidas com uma simples pesquisa no google e as senhas em branco e padronizadas basta alguns chutes [i]lógicos.

O perigo maior está nos ambientes que não estão em redes apartadas (VLANS) dos usários. Sempre tentei orientar sobre o perigo deste tipo de comportamento e descuido, ilustrando problemas que podem acontecer, mas a mudança de cultura é algo que não acontece da noite para o dia.

Orientando uma equipe júnior de sysadmins, descobri que em alguns casos isso ocorre por pura preguiça, falta de um procedimento bem definido, e falta de um conjunto de ferramentas adequada para que eles possam criar estas senhas.

Durante a orientação desta equipe, fui questionado sobre geração de senhas, a conversa rendeu um overview de algumas ferramentas para ambientes UNIX e LINUX e um papo sobre complexidade de senhas. Abaixo vou compartilhar estas informações e estudos que fiz junto com estes sysadmins.

2. Senhas Fortes

Ter senhas fortes é uma questão primordial, usar uma senha fraca não faz o menor sentido já que este recurso foi criado para proteger sua privacidade, seus dados e o acesso a sistemas e serviços que só você deve usufruir.

Recomendações básicas para usuários em geral:

  • Não usar senhas que contenham nome, sobrenome ou apelidos
  • Não usar senhas que tenham data de aniversário, número de sua casa, nome de sua rua ou número de seu telefone
  • Não usar número de documentos como CPF ou RG, falamos estes dados quase que diariamente
  • Não usar senhas com nome de filhos, nome do seu marido, esposa ou nome de parentes
  • Não usar uma senha para tudo, por exemplo ter a mesma senha para acessar seu banco e o facebook.
  • Não usar senhas com ano como por exemplo senha2010, senha2011, senha2012, mudando só o 2 caracteres a cada ano
  • Não usar senhas com nome da empresa que trabalha ou de sua faculdade, ex: empresa2010guto ou ufms2010guto
  • Evitar repetir caracteres em sua senha, ex: 111senha222

Recomendações extras para sysadmins e devops:

  • Senhas com pelo menos 8 caracteres (eu normalmente uso 12)
  • Uma senha distinta para cada sistema ou serviço
  • Usar de letras maiúsculas e minúsculas
  • Usar números
  • Usar de caracteres especiais comuns ( % $ # & ] }
  • Usar caracteres especiais combinados (ALT+NUM)
  • No caso de acesso ssh, utilizar um chaves/certificados com passphrase
  • Nunca use chaves/certificados sem senha para acesso ssh, se alguém roubar sua chave terá acesso a todos os ambientes que você usa.
  • Use um gerenciador de senhas

Recomendações para gestores de TI:

  • Defina o procedimento e os critérios para a criação de senhas em seu setor na sua WIKI ou GED (local de fácil acesso).
  • Defina a ferramenta a ser utilizada e os parâmetros necessários ( afim de atender critérios do procedimento criado ).
  • Defina o local aonde as novas senhas devem ser armazenadas ( seu gerenciador de senhas )
  • Divulgue o procedimento para todo o seu setor e oriente sua equipe no uso correto das senhas.
  • Faça um levantamento dos sistemas e appliances com senhas DEFAULT e PADRONIZADAS e modifique de acordo com os critérios definidos (avalie antes o impacto no seu sistema produtivo para evitar problemas com seus clientes).

Seguindo estas recomendações é provável que você consiga mudar a cultura de uso de senhas em seu setor, empresa ou grupo de trabalho, vale a pena o esforço pela segurança de seu ambiente.

3. Entropia e complexidade de sua senha

Entropia é uma medida de desordem – traduzindo literalmente – e no caso das senhas, tem relação direta com o quão aleatória é a sua senha e o quanto é difícil para um programa de computador adivinhá-la. Normalmente entropia – no caso de senhas – é medida através de bits.

Existe uma tirinha do xkcd que ajuda a entender entropia de forma mais objetiva e com bom humor.

Agora veja, se você tem uma senha com 8 caracteres, sem ter inserido nenhum símbolo, principalmente aqueles símbolos gerados através de combinações de teclas ALT, você tem uma senha de complexidade fraca e entropia baixa, quanto maior o número de caracteres especiais (símbolos) que forem inseridos ao longo de sua senha alfanumérica (letras e números), maior será sua complexidade e entropia, isto torna a tarefa de adivinhar a sua senha algo mais difícil para um programa de computador e para aqueles humanos curiosos que ficam olhando para seu teclado enquando você digita sua senha.

Existe inclusive uma RFC a 1750 que trata deste assunto de randomicidade e segurança.


4. Password vs Passphrase

A tirinha que cito acima no xkcd aborda este assunto, aqui vou discorrer rapidamente sobre ele.

Teóricamente um password é mais fácil de ser adivinhado por um programa de computador do que uma passphrase, e da mesma forma uma passphrase é mais fácil de ser lembrada por humanos do que um password que segue as recomendações acima.

Logo podemos entender que um password vale mais contra humanos do que contra computadores, já o passphrase é mais eficaz contra computadores, porém mais fácil de humanos adivinharem (se ficarem olhando para você ao digitar a senha).

Logo qual a vantagem em usar um password?

Devo dizer que em minha opinião praticamente nenhuma, porém nem todo o sistema aceita passphrases, portanto, é bom saber criar um bom password para nos proteger de humanos e computadores – mesmo que isso não seja tão eficaz contra computadores.

Agora lembre-se, se o programa tiver suporte a passphrase use, não pense duas vezes.

Para ter certeza de que temos uma senha forte,  vamos fazer alguns testes no site rumkim.com

Teste 1 (Senha simples)

Senha: MinhaCasa

Length: 9
Strength: Reasonable – This password is fairly secure cryptographically and skilled hackers may need some good computing power to crack it. (Depends greatly on implementation!)
Entropy: 38 bits
Charset Size: 52 characters

Coloquei uma password comum, sem números ou símbolos, vejam que a entropia é 38 bits, e o avaliador disse que a senha é razoavelmente segura, mas atacantes – mesmo levando tempo – conseguirão quebrá-la.

Teste 2 (substituições comuns)

Senha: M1nh4[c4s4]

Length: 11
Strength: Reasonable – This password is fairly secure cryptographically and skilled hackers may need some good computing power to crack it. (Depends greatly on implementation!)
Entropy: 48.6 bits
Charset Size: 82 characters

Neste teste fiz algumas substituições comuns trocando A por 4 e I por 1 e além disto coloquei casa entre [colchetes]. Mas vejam que a melhora foi pouca, aumentamos 10.6 bits de entropia e o avaliador ainda nos diz que um atacante pode conseguir quebrá-la mesmo que leve algum tempo neste trabalho.

Teste 3 (passphrase)

Senha: Senhas não devem ser eternas, sua segurança sim, troque-as a cada 30 dias.

Length: 74
Strength: Very Strong – More often than not, this level of security is overkill.
Entropy: 459.2 bits
Charset Size: 243 characters

Esta senha tem 459.2 bits e entropia e foi considerada MUITO FORTE pelo avaliador, praticamente impossível para um atacante descobrir rapidamente, mesmo usando bons recursos computacionais e excelentes programas para descobrir senhas.

Você pode ainda avaliar sua senha neste outro site http://www.passwordmeter.com/

Algumas dicas para o bom uso de uma passphrase:

  • Use algo que seja longo o suficiente para dificultar que seja parcial ou completamente adivinhado por um humano ou por um programa de computador
  • Use letras (maiúsculas e minúsculas), números e  símbolos se possível
  • Não use citações famosas
  • Não use a mesma frase para vários sistemas e sites
  • Use algo que você consiga lembrar facilmente e digitar de forma rápida e precisa.
  • Procure escrever em português, isso já dificulta para atacantes estrangeiros com seus programas ou dicionários que não vão prever palavras em nosso idioma.

Amarrando as pontas

  • Passwords são mais complicados para humanos se lembrarem
  • Passwords são mais fáceis para computadores descobrirem
  • Passphrares são mais fáceis para humanos se lembrarem
  • Passphrases são mais complicados para computadores descobrirem
  • Nem todos os sistemas aceitam passphrares
  • Aprenda a criar um bom password – seja contra humanos, seja contra computadores
  • Aprenda a criar um bom passphrase com as dicas acimas


5. Gerando senhas no MAC OSX

No OSX eu uso o programa 1Password, este programa além de gerenciar as minhas senhas de sites e sistemas, permite que eu faça notas seguras, guarda minhas chaves/seriais/licenças dos programas que eu comprei, guarda minhas informações de cartões de crédito para compras online e também gera senhas com boa complexidade oferecendo múltiplas opções.

Veja abaixo duas opções, a primeira criando uma senha randômica.

A segunda criando uma senha pronunciável, mais fácil de lembrar.

O 1password supre todas as minhas necessidades no OSX e ainda se integra com os navegadores Safari, Firefox e Chrome, recomendo.

Uma alternativa livre ao 1Password para OSX é o keepassx.

6. Gerando senhas no LINUX

No linux (debian) temos algumas boas opções, vou abordar duas opções bem práticas para uso em console (mkpasswd e apg).

6.1 mkpasswd-perl

6.1.1 Instalando

[sourcecode language="bash"] root@thundera:~# aptitude install libstring-mkpasswd-perl  [/sourcecode]

6.1.2 Gerando uma senha simples com 12 caracteres.

[sourcecode language="bash"] root@thundera:~# mkpasswd.pl -l 12
0omoF]cw5axU[/sourcecode]

6.1.3. Aumentando a complexidade da senha

Para aumentar a complexidade, além dos 12 caracteres, podemos colocar letras maiúsculas, letras minúsculas, dígitos, caracteres especiais comuns.

[sourcecode language="bash"]

root@thundera:~# mkpasswd.pl -l 12 -d 2 -c 2 -C 2 -s 4 -2
#Zq$d3p=l;Y8

root@thundera:~# mkpasswd.pl -l 12 -d 2 -c 2 -C 2 -s 4 -2
l8\lH-bv@S$1

[/sourcecode]

Para maiores informações sobre os parâmetros rode

[sourcecode language="bash"]root@thundera:~# mkpasswd.pl –help
Usage: mkpasswd.pl [-options]
-l # | –length=#   length of password (default = 9)
-d # | –digits=#   min # of digits (default = 2)
-c # | –lower=#    min # of lowercase chars (default = 2)
-C # | –upper=#    min # of uppercase chars (default = 2)
-s # | –special=#  min # of special chars (default = 1)
-2 | –distribute   alternate hands
–nodigits          alias for –digits=0
–nolower           alias for –lower=0
–noupper           alias for –upper=0
–nospecial         alias for –special=0
[/sourcecode]

Fique sabendo que dá para instalar o mkpasswpd no OSX via CPAN, eu uso ;)

6.2 APG

O APG é um utilitário interessante que gera não uma mas várias senhas randômicas, tem alguns recursos bastante interessantes, sendo mais completo que o mkpasswd.

6.2.1 Instalando

[sourcecode language="bash"] root@thundera:~# aptitude install apg [/sourcecode]

6.2.2 Gerando algumas senhas pronunciáveis

[sourcecode language="bash"]
root@thundera:~# apg -a 0 -m 12
SiShnyucgacs
flas`phlyib5
LonlabrEtJac
Oucyeorp0twy
cumboheakIlb
DajtefgeftIr
[/sourcecode]

6.2.3 Gerando algumas senhas randômicas

[sourcecode language="bash"]
root@thundera:~# apg -a 1 -m 12
=Ep}R"`2qE(Q
"Bs*ch35)kXw
dU(qwC_82y!r
q(nsQw,Bxo?>
nAUJnbB{kXt9
fr]:f]lAn]^x
[/sourcecode]

Você poderá verificar todos os recursos do apg em sua manpage digitando

[sourcecode language="bash"] root@thundera:~# man apg [/sourcecode]

Se você prefere um programa gráfico, o keepassx também oferece versão para LINUX.

7. Gerenciadores de senha online

Há controvérsias em relação a armazenar sua senha online, afinal a empresa dona do sistema de alguma forma tem acesso a suas senhas, portanto evite colocar senhas corporativas neste tipo de ambiente. Apesar desta questão, existem vários sites e empresas que oferecem este tipo de serviço.

Eu conheço o lastpass.com e posso recomendá-lo, além de serviço online, existem plugins para navegadores.

Se não gostou do lastpass, veja alternativas no link abaixo:
http://alternativeto.net/software/lastpass/

8. Referências para aprofundar sua pesquisa

https://agilebits.com/onepassword
http://www.keepassx.org/
http://en.wikipedia.org/wiki/Password
http://en.wikipedia.org/wiki/Passphrase
http://en.wikipedia.org/wiki/Information_entropy
http://www.redkestrel.co.uk/Articles/RandomPasswordStrength.html

[s]
Guto