Se você é dev, você já deveria estar utilizando um gerenciador de senhas
Introdução
Desde que comecei a estudar programação eu ouço falar sobre medidas de segurança eu recebo instruções sobre segurança.
Inicialmente é algo mais a nível de usuário, coisas como:
- Usar senhas longas com letras, números e símbolos
- Não utilizar senhas óbvias
- Não clicar em links suspeitos
- Ataques mais comuns (trojan, ransomware, engenharia social, força bruta, etc...)
- Não reutilizar a mesma senha várias vezes
- etc...
E posteriormente, quando você vai estudar sobre segurança a nível de desenvolvedor, acaba vendo coisas como:
- Algoritmos de Criptografia (DES, AES, RSA, MD5, SHA256...)
- Criptografia Simétrica vs. Assimétrica
- Algoritmos de Hashing
- Derivação de Chaves (KDFs), como Argon2 e PBKDF
- Conceitos de Entropia, Confusão e Difusão
- Criptanálise
- etc...
E mesmo que nós (devs) já saibamos sobre as boas práticas de segurança, as vezes você está se cadastrando na pressa em algum sistema (as vezes durante alguma outra tarefa importante) e acaba reutilizando uma senha que você já utiliza ou cadastrando alguma senha fraca.
Imagino que isso seja algo comum na verdade.
Mas aí os gerenciadores de senhas entram na história.
Você ouve falar sobre os gerenciadores de senhas e sobre como eles funcionam, qual seu propósito e todas essas coisas.
Mas será que todo mundo que sabe o que um gerenciador de senhas faz de fato usa um gerenciador de senhas?
Eu mesmo só comecei a utilizar gerenciadores de senhas ano passado, mesmo já sabendo como eles funcionavam.
O meu objetivo com esse post é justamente de convencer de que começar a utiliza-los realmente vale a pena, pois as vezes mesmo sabendo que existe a gente não usa por receio ou por preguiça.
Gerenciadores de Senhas
Gerenciadores de senhas são ferramentas que:
- Guardam todas as tuas senhas em um único lugar;
- Geram senhas fortes automaticamente;
- Completam suas senhas na hora de fazer login;
Eles permitem que você não precise memorizar várias senhas e possa centralizar tudo em um único sistema. Oferecendo diversas vantagens:
- Não precisar lembrar de todas as senhas de todos os sistemas. Tudo que você precisa fazer é lembrar da senha do próprio gerenciador, tornando tudo mais simples;
- Geram senhas longas e fortes pra você, evitando que você fique muito tempo pensando em uma nova senha, use uma mesma senha em diversos sistemas ou então utilize senhas muito fracas;
- Não precisa digitar a senha, a ferramenta já conta com um plugin de navegador que completa os formulários de login/registro, te ajudando tanto a gerar senhas fortes na hora do cadastro quanto a inserir as senhas na hora do login.
"Ah, mas as senhas geradas são difíceis de lembrar"
De fato. Isso é proposital, o objetivo não é lembrar de todas, o plugin já completa elas no sistema justamente por causa disso.
"Ah, mas o meu navegador já tem gerenciador de senhas embutido"
Na maioria das vezes o gerenciador de senhas do teu browser é mais fraco e menos prático de utilizar que gerenciadores de senhas dedicados.
Mas de fato, o gerenciador de senhas do navegador é melhor que nada.
"Se descobrirem a senha do meu gerenciador descobrem tudo"
Sim, isso é verdade. Isso reforça a necessidade de proteger uma única senha. Além disso, ainda nesse post eu vou oferecer uma possível solução para este mesmo problema.
Minha recomendação de gerenciador de senhas
Hoje em dia existem diversas opções de gerenciadores de senhas disponíveis para você explorar, desde os gratuitos até os pagos.
O que eu utilizo (e que também é minha recomendação pessoal para você) é o BitWarden.
Eu recomendo BitWarden porque:
- É um gerenciador grátis e open-source, com o seu plano free incluindo todas as funcionalidades que você vai precisar de fato;
- Oferece um serviço multi-plataforma que permite acessar o gerenciador de senhas de qualquer dispositivo;
- Possui uma versão self-hosted para usuários que preferem manter suas senhas no próprio computador, sem nenhum servidor de terceiros;
Como EU utilizo o BitWarden para minha segurança
Além da própria ferramenta é interessante utilizar algumas outras estratégias para garantir que a ferramenta está sendo utilizada da maneira correta.
O que eu faço, hoje em dia é:
1. Utilize uma senha forte no BitWarden
Considerando que ao utilizar um gerenciador de senhas você só precisa se preocupar em lembrar e manter segura uma única senha, é óbvio que precisamos garantir que nossa senha do BitWarden seja forte.
Certifique-se de utilizar uma pass-phrase ao invés de uma pass-word.
Isso é: utilize uma frase longa que só você saiba ao invés de alguma palavra.
Memorizar uma frase não é algo muito difícil. Talvez seja mais fácil memorizar uma frase comum do que uma senha com caracteres especiais e números.
A quantidade total de senhas que algoritmos de força bruta testam é de charset ^ password_size (charset elevado a password_size).
charseté o conjunto de caracteres que são utilizados para testar a sua senha. Em um charset de digitos numéricos, o algoritmo só vai conseguir adivinhr senhas numéricas mas também vai rodar muito mais rápido.
Quando observamos a fórmula charset ^ password_size fica fácil de entender que a caracteristica mais importante de uma senha é o seu comprimento.
Cada caractere extra na sua senha aumenta exponencialmente a dificuldade de quebrar a sua senha por força bruta.
2. Troque todas as suas senhas por senhas seguras geradas automaticamente
Qualquer senha que você possa pensar vai ser dezenas de milhares de vezes mais fraca que as senhas que um gerenciador de senhas te entrega.
Minha sugestão é que você pegue todas as suas senhas que ainda não foram geradas automaticamente e troque elas por senhas geradas.
O gerador de senhas pode de entregar senhas gigantescas e completamente aleatórias, o que garante segurança contra algoritmos de força bruta.
3. Gere uma senha diferente para cada site
Você certamente já escutou isso antes e provavelmente já faz isso.
Utilizar a mesma senha para todos os serviços que você se cadastra e ter essa senha descoberta é o pior erro que você poderia cometer.
As vezes o atacante descobre tua senha de um site tosco (como algum blog ou jogo) e descobre que pode utilizar a mesma senha para acessar seu banco, conta do gov.br, Google e diversos outros serviços.
Além disso: não confie sempre no OAuth.
Eu sempre fui muito acostumado a utilizar o OAuth do Google para fazer login sempre que possível, pela praticidade.
Os sites que permitem OAuth quase sempre possuem um sistema de login tradicional também. Garanta que você tenha uma senha no próprio sistema e não apenas utilize OAuth.
Aliás, o OAuth oferece um grande risco considerando que se sua senha Google vazar o hacker entra em qualquer sistema via OAuth.
Garanta, além do gerenciador de senhas, que a sua conta Google tenha 2FA, bloqueio por geolocalização e biometria habilitados por segurança.
4. Gere senhas com o maior tamanho possível
Como conversado antes, o tamanho aumenta exponencialmente a segurança da senha. Por isso sempre use a maior quantidade possível de caracteres.
O tamanho máximo permitido pelos sites geralmente é de 72, 100 ou 128 caracteres.
Lembre-se que você não vai decorar a senha. Ao invés disso, você vai deixar o plugin auto-completar ela.
5. Utilize prefixos em conjunto com a senha gerada
O gerenciador de senhas por si só é bastante seguro. Mas como conversmos anteriormente, há o risco de alguém descobrir a senha do próprio gerenciador de senhas e ler todas as suas senhas.
A maneira simples de resolver isso é:
Concatenar um prefixo ou sufixo na senha gerada.
Essa foi uma dica que o Gabriel Pato deu em uma entrevista no Flow Podcast há alguns anos atrás.
E de fato, faz bastante sentido.
Você gera uma senha automaticamente, como por exemplo: Adfd9fsdfs99d&@*($#(adfa*as31)aspaaAO001(814jAldfdMNka e o que vai estar salvo no gerenciador é essa senha aleatória.
Então quando você for fazer registro/login você deixa o auto-complete dessa senha acontecer, mas coloca um prefixo no começo da senha. Algo como: foobar#2-.
Dessa forma, a senha que você realmente vai usar pra fazer login é: foobar#2-Adfd9fsdfs99d&@*($#(adfa*as31)aspaaAO001(814jAldfdMNka. O gerenciador de senhas só te dá a parte aleatória disso.
Dessa forma, mesmo que alguém invada seu gerenciador de senhas e tenha acesso a todas elas, você ainda garante que ele não vá conseguir invadir sua conta instantaneamente.