Salta al contenuto principale

Concetti

HardenedPass si basa su tre strumenti. Non serve padroneggiarli, ma sapere cosa fa ciascuno rende facili da seguire tutte le altre pagine.

pass: un file per ogni password

pass è un gestore di password per sistemi Unix. Non ha un database: ogni password è un piccolo file cifrato, e le cartelle le raggruppano. Questo albero di cartelle si chiama archivio.

1
2
3
4
5
6
7
store/
├── .gpg-id
├── example.org.gpg
├── otp/
│   └── example.com.gpg
└── work/
    └── mail.example.org.gpg

Una volta decifrata, una voce è testo semplice. La prima riga è la password, tutto quello che sta sotto sono informazioni aggiuntive:

1
2
3
hunter2
username: alice
url: https://example.org

HardenedPass legge queste righe e le mostra come campi separati. Qualsiasi programma che capisce pass può aprire lo stesso archivio, quindi le tue password non restano mai bloccate dentro questa app.

OpenPGP: il lucchetto su ogni file

Ogni voce è cifrata con OpenPGP, usando una coppia di chiavi:

  • La chiave pubblica chiude i file. Non è segreta.
  • La chiave privata li apre. Non lascia mai i tuoi dispositivi.
  • La passphrase protegge la chiave privata: una copia del file della chiave, da sola, non serve a nulla a chi la trova.

Il file .gpg-id, in cima all’archivio, dice per quali chiavi sono cifrate le voci.

git: sincronizzazione e cronologia

Git registra ogni modifica all’archivio e la copia tra i dispositivi attraverso un remote, cioè un repository su un server. Modifichi una voce sul telefono, l’app registra la modifica e la invia al remote, e gli altri dispositivi la scaricano da lì. Le vecchie versioni restano nella cronologia, quindi un errore si può annullare.

Il server contiene solo file cifrati, ma ne può leggere i nomi. Chi lo gestisce può vedere che hai una voce chiamata example.org. Usa un repository privato, su un server di cui ti fidi.

Come si incastra il tutto

  1. Su un computer crei una coppia di chiavi, un archivio e un remote.
  2. Sul telefono, HardenedPass clona l’archivio dal remote.
  3. Importi la chiave privata nell’app.
  4. L’app decifra le voci quando le apri e sincronizza le modifiche con git.