Um cofre de senhas portátil utilizando LUKS2 + pass + GnuPG.
Armazene seu repositório de senhas em um pendrive ou SSD, protegido por múltiplas camadas de criptografia e totalmente sob seu controle.
- Visão geral
- Caso de uso
- Arquitetura
- Camadas de segurança
- Requisitos
- Criando o Vault
- Configurando o pass
- Uso diário
- Boas práticas
- Backup do Header LUKS
- Licença
Este projeto mostra como criar um Password Vault portátil utilizando apenas ferramentas nativas do Linux.
Em vez de armazenar o diretório ~/.password-store no computador, ele passa a existir dentro de um container criptografado LUKS2, armazenado em um pendrive ou SSD.
Isso oferece:
- armazenamento totalmente offline;
- portabilidade entre computadores Linux;
- independência de serviços em nuvem;
- proteção contra perda ou roubo do dispositivo.
Important
Este projeto é destinado ao ecossistema Linux. O container utiliza LUKS2, formato suportado nativamente pelo cryptsetup.
Imagine que você trabalha em diferentes computadores Linux.
Ao invés de sincronizar senhas por Dropbox, Google Drive ou outros serviços, você simplesmente conecta seu pendrive:
USB SSD
│
└── vault.luks
Após desbloquear o Vault:
cryptsetup open vault.luks vaultSeu repositório do pass fica imediatamente disponível.
Ao terminar:
umount /mnt/vault
cryptsetup close vaultTodo o conteúdo volta a existir apenas como um único arquivo criptografado.
flowchart TD
A[Pendrive / SSD]
A --> B[vault.luks]
B --> C[LUKS2]
C --> D["/dev/mapper/vault"]
D --> E[ext4]
E --> F["password-store"]
F --> G["*.gpg"]
Cada camada protege a próxima.
| Camada | Tecnologia | Objetivo |
|---|---|---|
| 1 | LUKS2 | Protege todo o volume |
| 2 | AES-XTS | Criptografia do dispositivo |
| 3 | ext4 | Sistema de arquivos Linux |
| 4 | pass | Organização das senhas |
| 5 | GnuPG | Cada senha é criptografada individualmente |
Na prática:
Senha
↓
arquivo .gpg
↓
password-store
↓
ext4
↓
LUKS2
↓
SSD
Mesmo que alguém copie o arquivo vault.luks, ele continuará completamente inacessível sem a senha do LUKS.
Mesmo que o Vault esteja aberto, as senhas continuam protegidas pelo OpenPGP utilizado pelo pass.
Tip
O pass adiciona uma segunda camada de proteção, pois cada entrada permanece criptografada individualmente usando sua chave GPG.
sudo pacman -S \
cryptsetup \
e2fsprogs \
pass \
gnupgdd if=/dev/zero of=vault.luks \
bs=1M \
count=10240 \
status=progresscryptsetup luksFormat vault.lukscryptsetup open vault.luks vaultmkfs.ext4 \
-L vault \
-O metadata_csum,64bit \
/dev/mapper/vaultmkdir -p /mnt/vault
mount /dev/mapper/vault /mnt/vaultInicialize normalmente:
pass init "<ID-GPG>"Copie seu repositório:
cp -a ~/.password-store \
/mnt/vault/password-storeDefina o novo local:
export PASSWORD_STORE_DIR=/mnt/vault/password-storeAdicione ao:
.bashrc.zshrc
cryptsetup open /media/USB/vault.luks vault
mount /dev/mapper/vault /mnt/vault
export PASSWORD_STORE_DIR=/mnt/vault/password-storeConsultar:
pass githubGerar senha:
pass generate github 32Copiar para clipboard:
pass -c githubListar:
pass lsumount /mnt/vault
cryptsetup close vaultTip
Utilize uma senha forte para o LUKS.
Tip
Utilize uma chave GPG protegida por passphrase.
Tip
Faça backup periódico do repositório do pass.
Tip
Remova o dispositivo somente após desmontar o Vault.
O Header do LUKS contém todas as informações necessárias para descriptografar o volume.
Faça backup logo após criar o Vault.
cryptsetup luksHeaderBackup \
vault.luks \
--header-backup-file vault.headerWarning
Sem o Header, os dados podem se tornar irrecuperáveis mesmo que você conheça a senha.
Armazene o backup em outro dispositivo.
Nunca dentro do próprio Vault.
- Linux
- LUKS2
- dm-crypt
- cryptsetup
- ext4
- GnuPG
- OpenPGP
- pass
Este projeto é distribuído sob a licença MIT.
Contribuições, sugestões e melhorias são sempre bem-vindas.