Senhas
Senhas. Um problema, uma confusão. Perder uma senha hoje é um inferno, considerando que praticamente dependemos de dezenas de serviços onlines, das quais praticamente guardam e conhecem a nossa vida, até melhor que nós mesmos. Nesse cenário, gerenciar, guardar e ter em sincronia essas senhas é uma tarefa chata e complexa. Podemos tornar isso menos complexo, se utilizarmos um gerenciador de senhas.
Existem diversos, eu já passei por alguns, comecei com o 1Password, LastPass, Buttercup e finalmente aterrisei no Pass.
Usando o Pass
Tecnicamente falando, o Pass não tem bancos de dados, não tem cadastros, nem nada complexo. Na verdade ele só conecta arquivos de textos com o GnuPG, ou um gerenciador de chaves digitais, o que eu acredito ser o tipo de ferramenta ideal, afinal além de mínimo (44kb), não ser intrusivo, ele se utiliza de outras ferramentas sólidas e maduras. Justamente por ser arquivos de texto normais, te oferece uma liberdade extra de você organizar da forma que você julgar mais apropriado. Inclusive, não precisa ser necessariamente senhas, podendo ser qualquer coisa que você quiser, como dados de cartão, documentos sensíveis, configuração de acesso, etc. Para informações mais aprofundadas, consulte o site do Pass, e o Guia de mão do GnuPG (em inglês).
Iniciando
Primeiramente, instale o pass
de acordo com o seu sistema operacional,
ou seja, através do seu gerenciador de pacotes nas distribuições Linux
ou o brew
no macOS e instale também o gpg
.
Se você não está familiarizado com PGP, recomendo novamente dar uma lida no Guia de mão do GnuPG (em inglês). Basicamente o PGP funciona gerando um par de chaves, uma pública e uma privada, e com essas chaves você pode criptografar e descriptografar arquivos. Quando você gera uma chave, você ganha um fingerprint (digital) da qual representa essa chave.
Para gerar uma chave nova, é bem simples.
$ gpg --gen-key
$ gpg --list-keys
Aproveite e faça backup das duas e mantenha em um lugar seguro, como um pen-drive, um HD externo, etc:
$ gpg --export-secret-keys --armor <fingerprint> > privkey.asc
$ gpg --export --armor <fingerprint> > pubkey.asc
Usando o pass
Bom, agora que você já fez backup, vamos usar essa chave para inicializar o pass e informar que você quer criptografar as suas senhas usando essa chave em específico.
$ pass init <fingerprint>
Relembrando, cada entrada no teu banco de senhas é um próprio arquivo, e você pode armazenar quaisquer informação de texto nesses arquivos, nomes de usuário, senhas, emails, respostas para informações secretas, etc. Novamente, dê uma olhada no manual do pass. Além de uma ótima documentação (e ser offline), ele oferece também alguns exemplos de como organizar melhor suas senhas, exemplos, etc.
$ man pass
Uma funcionalidade que eu gosto muito, é de transformar seu banco de senhas em um repositório git, podendo assim sincronizar em qualquer lugar.
Transformando esse banco em repositório git
Para inicio, é bom se familiarizar com os termos e como funciona o git.
Deixo de recomendação, a própria documentação do
Git. Feito isso, você vai precisar
de um repositório bare
ou como eu gosto de chamar, um “repositório
backend”. Aqui existem duas opções, dependendo de onde você pretende
guardar essas informações. Auto-hospedando em um servidor próprio, ou
usando um serviço como o Github/Gitlab e derivados.
Se você, assim como eu, prefere colocar isso num servidor próprio,
afinal estamos falando de senhas e informações sensíveis, basta seguir
aqui o seguinte passo no seu servidor para criar um repositório bare
:
$ git init --bare ~/.password-store
Diga para o pass
que você quer que seu banco de senhas seja um
repositório git e indique para qual repositório bare o git deve mandar
os dados, seja aqui no seu servidor ou no Github/Gitlab.
$ pass git init
$ pass git remote add origin user@serve
$ pass git push
Se você criou um repositório no Github/GitLab/etc basta apontar para `git@github.com:user a documentação do serviço que você usa.
Pronto, agora para usar o seu repositório em uma máquina diferente é simples, basta importar as chaves, e clonar o repositório.
Importando as chaves:
$ gpg --import pubkey.asc
$ gpg --allow-secret-key-import --import privkey.asc
Talvez seja necessário Confiar (em inglês) as novas chaves.
$ gpg --edit-key <fingerprint>
Clone o repositório diretamente na pasta padrão que o pass
procura.
$ git clone user@serve
Feito, agora basta sincronizar os dois hospedeiros usando pass git push
e pass git pull
. Se você precisar remover, basta apagar a pasta
com rm -rf ~/.password-store
e voilá.
Certo, e no celular?
No celular é relativamente simples. Usando o F-Droid1, basta instalar o openKeychain e o PasswordStore. Dê uma olhada com calma na documentação dos dois aplicativos. Marquei os links para algumas referências no rodapé.
Importando sua chave digital
O primeiro passo é de importar a sua chave digital no
openKeychain
2. No
meu caso, eu transferi elas para o meu celular e fiz o passo manual de
importar elas através do aplicativo (é bem auto-explicativo).
Configurar o Password Store
Já no PasswordStore
3, nas configurações primeiro você deve indicar qual
chave digital quer utilizar (ele automáticamente busca primeiro no
openKeychain
).
Depois, na seção de Repository, idealmente você deve gerar uma chave SSH e importá-la no seu servidor ou na sua conta do Github/Gitlab.
E basta configurar os dados como login e senha de acesso ao seu servidor, e qual URL buscar e enviar as senhas.