Blog do Ramalho.org

Passdrill: para praticar senhas fortes

Você pode usar o Dadoware para criar uma frase-senha forte, mas para usá-la no dia-a-dia ainda vai precisar:

Com Passdrill, você pratica a digitação de uma senha longa em um ambiente seguro: seu console local.

O passdrill não salva a senha digitada, mas sim uma assinatura digital (hash) derivada da senha, através dos algoritmos scrypt ou pbkdf2—projetados para tornar os ataques de força-bruta mais difíceis.

Veja o conteúdo do arquivo passdrill.hash gerado pelo exemplo abaixo:

scrypt:UJGFquwCLGFrD+fzrqt91UvOdcrIKhB0/pEp6Un/l48=:Xg129pYzkm5pZIgx0p1SFf6bmFCvrFB5jNGxd/Y4oB+TU/tZXWraD+g7Ui0A8t4dN4CuzYXFp9+TuOLdPlzwlg==

Repositório com o programa: https://github.com/ramalho/passdrill

Demonstração

Essa é uma seção de prática com o passdrill:

$ passdrill
Type q to end practice.
1:
  OK    hits=1  misses=0
2:
  wrong hits=1  misses=1
3:
  OK    hits=2  misses=1
4:
  OK    hits=3  misses=1
5:
4 exercises. 75.0% correct.

As linhas marcadas com 1:, 2:, etc. são os prompts, onde você digita a senha. Por segurança, o programa não exibe um eco durante a prática. A cada tentativa, o programa diz se a digitação foi correta ou não, e atualiza o placar. Para encerrar, digite apenas a letra q.

Antes de iniciar a prática, você precisa salvar a senha, usando o comando passdrill -s, assim:

$ passdrill -s
WARNING: the passphrase will be shown so that you can check it!
Type passphrase to hash (it will be echoed): galera ama excitar muito subir comicio
Passphrase to be hashed -> galera ama excitar muito subir comicio
Confirm (y/n): y
Passphrase hash saved to passdrill.hash

Neste exemplo, a senha a ser praticada é “galera ama excitar muito subir comicio” (uma frase-senha forte produzida pelo método Dadoware.

Sobre o desenvolvimento

Escrevi o passdrill primeiramente porque eu queria um programa assim para praticar a digitação das minhas senhas mais fortes. A primeira versão eu fiz em Python 3, e logo em seguida reescrevi em Go, para comparar.

A versão em Go ficou cerca de 40% mais longa. Mas ela tem uma vantagem importante: é mais fácil de instalar. Go permite que eu compile o programa e distribua o executável em um único arquivo pronto para usar. Mesmo para quem quer inspecionar e compilar o código-fonte, Go é mais fácil do que Python porque as dependências externas são escritas em Go mesmo. No caso de Python, para usar scrypt no final de 2017 a maioria das pessoas vai ter que compilar um pacote externo que depende de código em C, e isso é mais ou menos fácil no GNU/Linux, mais difícil no MacOS X, e super complicado no Windows.

O arquivo README.md do projeto passdrill no Github tem uma análise mais detalhada das diferenças entre as versões Python e Go.

Tags: