ref: master
content/blog/senhas.md
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
--- title: "Senhas" date: 2020-08-03 tags: ["tecnologia", "organizacao", "pass"] --- 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](https://1password.com), [LastPass](https://lastpass.com), [Buttercup](https://buttercup.pw) e finalmente aterrisei no [Pass](https://passwordstore.org). ## 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](https://passwordstore.org), e o [Guia de mão do GnuPG (em inglês)](https://www.gnupg.org/gph/en/manual.html). ### 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)](https://www.gnupg.org/gph/en/manual.html). 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. ```shell $ 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: ```shell $ 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. ```shell $ 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](https://porcellis.com/primeiramente-man)), ele oferece também alguns exemplos de como organizar melhor suas senhas, exemplos, etc. ```shell $ 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](https://git-scm.com/book/pt-br/v2). 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`: ```shell $ 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. ```shell $ 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: ```shell $ gpg --import pubkey.asc $ gpg --allow-secret-key-import --import privkey.asc ``` Talvez seja necessário [Confiar (em inglês)](https://www.gnupg.org/gph/en/manual.html#AEN346) as novas chaves. ```shell $ gpg --edit-key <fingerprint> ``` Clone o repositório diretamente na pasta padrão que o `pass` procura. ```shell $ 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-Droid[^f-droid], basta instalar o [openKeychain](https://f-droid.org/en/packages/org.sufficientlysecure.keychain/) e o [PasswordStore](https://github.com/android-password-store/Android-Password-Store). 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`[^open-key-chain]. 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`[^password-store], 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. [^f-droid]: https://f-droid.org [^open-key-chain]: https://www.openkeychain.org/ [^password-store]: https://github.com/android-password-store/Android-Password-Store/wiki/First-time-setup |