Salta al contenuto principale

Il tuo archivio di password #1

Crea l’archivio

Uso pass da anni ormai. Niente vault nel cloud, niente abbonamenti, nessuna azienda che ospita le mie password: solo una cartella di file cifrati in un repository git, che posso leggere con qualsiasi strumento mi vada. Quando l’app Android che usavo per leggere quella cartella sul telefono è stata archiviata, ne ho fatto un fork, ed è così che è nato HardenedPass.

Il punto è che ogni volta che provo a spiegare questo sistema a qualcuno, al terzo acronimo vedo lo sguardo che si spegne. GPG, SSH, git, remote, chiavi… sembra tanta roba, e onestamente la prima volta un po’ di lavoro c’è. Però lo fai una volta sola, ed è molto meno spaventoso di come sembra.

Quindi oggi, procediamo insieme e creiamo un archivio di password da zero, partendo dal nulla, e alla fine avrai le tue password sul telefono, cifrate e sincronizzate. Non serve sapere niente di git o GPG, ti spiego quello che serve man mano, e tutti i comandi si possono copiare e incollare.

Questa è una serie in tre parti. Oggi creiamo l’archivio, nella seconda parte gli diamo una casa su un server, e nella terza parte lo mettiamo sul telefono e iniziamo a usarlo.

Cosa stiamo creando?

Tre strumenti, ognuno con il suo lavoro:

  • pass contiene ogni password in un suo piccolo file, e le cartelle le raggruppano. La cartella principale si chiama archivio.
  • GPG (il programma che si occupa della cifratura OpenPGP) chiude a chiave quei file. Hai una coppia di chiavi: la chiave pubblica cripta, la chiave privata decodifica, e una passphrase protegge la chiave privata.
  • git tiene traccia delle modifiche e copia l’archivio tra i tuoi dispositivi, passando per un remote, che è semplicemente una copia del repository che vive su un server.

Ecco la parte che fa funzionare tutto: il server vede solo file cifrati. Non può leggere le tue password, e non può farlo neanche chi dovesse entrarci. La decifratura avviene solo sui tuoi dispositivi, con una chiave che sul server non ci va mai.

Diagramma. Sui tuoi dispositivi, pass trasforma la password hunter2 in una voce chiamata example.org, e GPG la chiude nel file cifrato example.org.gpg. Git manda e riceve quel file cifrato dal server. La chiave privata e la passphrase aprono i file e restano sui tuoi dispositivi. Sul server il nome del file si vede, il contenuto no.
Cosa può vedere il server
Le password e tutto il resto dentro una voce sono cifrati, ma i nomi dei file no. Se hai una voce che si chiama banca/miabanca.example.org, chi può leggere il repository sa che lì hai un conto, e la cronologia di git gli dice quando l’hai modificata. Per questo terremo il repository privato, anche se il contenuto è cifrato.

Computer o solo telefono?

Ci sono due strade, ed entrambe portano allo stesso risultato.

Con un computer Solo telefono
Scrivere i comandi Tastiera vera, copia e incolla Sullo schermo del telefono, in un terminale
Software in più pass, GPG e git, di solito un comando Termux, un’app terminale per Android
Backup della chiave Facile, su una chiavetta USB Devi trovare il modo di portarla fuori dal telefono
Usare l’archivio su un computer in futuro È già lì Bisogna spostare la chiave

HardenedPass non può creare chiavi OpenPGP, può solo importarle, quindi qualcosa deve generarti la chiave. Se hai accesso a un computer Linux, anche solo per mezz’ora, usalo: è più comodo, e fare il backup della chiave è molto più facile. È quello che descrivo per primo.

Se hai solo il telefono si può fare benissimo: segui comunque, perché qui spiego tutto, e poi passa alla strada solo telefono nella seconda parte, che usa gli stessi comandi.

Installa gli strumenti

Su Linux c’è tutto nei repository della tua distribuzione:

bash
1
2
3
4
5
6
7
8
# Debian, Ubuntu, Mint
sudo apt install gnupg pass git

# Fedora
sudo dnf install gnupg2 pass git

# Arch
sudo pacman -S gnupg pass git

Su Slackware hai già GPG e git, e password-store è su SlackBuilds.org.

Su macOS puoi prendere gli stessi strumenti da Homebrew con brew install gnupg pass git. Su Windows pass non gira in modo nativo, quindi installa WSL con la sua Ubuntu predefinita e usa lì dentro il comando per Debian qui sopra. Da qui in poi i comandi sono tutti uguali.

Adesso di’ a git chi sei. È solo un’etichetta sulle tue modifiche, non deve essere per forza il tuo vero nome:

bash
1
2
git config --global user.name "Il Tuo Nome"
git config --global user.email "you@example.org"

Crea la tua chiave

bash
1
gpg --full-generate-key

GPG ti farà qualche domanda. Ecco cosa risponderei:

  1. Tipo di chiave: premi Invio per accettare quello predefinito. Con un GPG recente è ECC (sign and encrypt).
  2. Curva ellittica: premi di nuovo Invio, per Curve 25519.
  3. Durata della chiave: premi Invio per does not expire (non scade), poi y per confermare.
  4. Nome e indirizzo email: non devono essere veri, ma ricordati l’indirizzo, ti serve tra un attimo. Lascia vuoto il commento e premi O per confermare.
  5. Passphrase: questa si merita una sezione tutta sua, la trovi qui sotto.

I valori predefiniti vanno bene, ma hai delle alternative:

  • RSA (opzione 1) è il vecchio affidabile: chiavi più grandi e più lente, ma funziona ovunque. Sceglilo solo se hai un motivo, per esempio un vecchio strumento che non capisce le curve più recenti.
  • ECC and Kyber è la nuova opzione post-quantistica delle ultime versioni di GPG. Per ora lasciala stare: è molto recente e non tutto la sa leggere.
  • Una data di scadenza, tipo 2y, è una rete di sicurezza: una chiave che hai perso smette da sola di essere valida. Il prezzo è che devi ricordarti di prolungarla, quindi se è la tua prima chiave preferirei farla semplice e non impostarla.

Scegliere una passphrase

La passphrase è l’ultima linea di difesa: se qualcuno mette le mani su una copia della tua chiave privata, è l’unica cosa tra lui e tutte le tue password, e può provare a indovinarla sulla sua macchina alla velocità che vuole. Quindi deve essere robusta, ma devi anche ricordarla e digitarla, perché nessuno può recuperartela. Qui non esiste il link “ho dimenticato la password”.

Ci sono due modi per crearne una robusta:

Caratteri casuali Diceware
Aspetto q7#Vm2!xTz9&Lp4w smartness-dayroom-celtic-cheer-anointer-pulley
Robustezza 16 caratteri: circa 105 bit 6 parole: circa 77 bit, 7 parole: circa 90 bit
Facile da ricordare No Sì, dopo qualche giorno
Facile da digitare sul telefono Penoso Abbastanza
Ideale per Quello che ricorda il gestore di password al posto tuo Quello che devi ricordare tu

Diceware vuol dire pescare parole a caso da una lista di 7776, tradizionalmente tirando cinque dadi per ogni parola. Il trucco è che le parole devono essere scelte a caso: una frase inventata da te, o il verso della tua canzone preferita, è molto più debole di quanto sembri, perché le persone sono pessime a fare le cose a caso. Ogni parola aggiunge circa 12,9 bit, ed è per questo che conta di più quante parole usi che quali.

I caratteri casuali mettono più robustezza in meno spazio, ma non li ricorderai mai. Quindi il mio consiglio è: 7 parole diceware per la passphrase di GPG, l’unica cosa che devi imparare a memoria, e lascia che tutto il resto lo generi l’app. La lista di parole e le istruzioni dell’EFF sono in inglese, ma sono tutto quello che ti serve, più dei dadi veri se li hai. Scrivi la passphrase su un foglio mentre la impari, e tieni il foglio in un posto sicuro in casa.

Quando hai finito, GPG stampa un riepilogo con una riga di questo tipo:

1
2
3
4
pub   ed25519 2026-11-06 [SC]
      1905811B654B494FBD151671593A16E792BC639D
uid                      Il Tuo Nome <you@example.org>
sub   cv25519 2026-11-06 [E]

Quella stringa lunga è l’impronta (fingerprint) della tua chiave. GPG ti ha anche preparato un certificato di revoca, un file in ~/.gnupg/openpgp-revocs.d/ che dice al mondo di non usare più la chiave, nel caso ne perdessi il controllo.

Fai subito il backup della chiave

Se perdi la chiave privata, le tue password sono perse per sempre. Non c’è modo di aggirarlo: è la stessa cifratura che ti protegge da tutti gli altri. Quindi facciamolo prima di mettere qualcosa di importante nell’archivio.

bash
1
gpg --armor --export-secret-keys you@example.org > private-key.asc

GPG chiede la passphrase e scrive la tua chiave privata in private-key.asc. Copia quel file e il certificato di revoca su una chiavetta USB che resta a casa, meglio se cifrata, e per ora tieni il file a portata di mano, perché nella terza parte servirà al telefono.

Inizializza l’archivio

Usa l’indirizzo che hai dato alla chiave:

bash
1
2
pass init you@example.org
pass git init

Il primo comando crea l’archivio in ~/.password-store, il secondo lo trasforma in un repository git. Da adesso in poi pass salva da solo ogni modifica in git.

Aggiungiamo una prima voce, così abbiamo qualcosa con cui provare. La prima riga è sempre la password, tutto quello che sta sotto sono informazioni aggiuntive. Scrivi questo e termina con Ctrl+D:

bash
1
pass insert -m example.org
1
2
3
hunter2
username: alice
url: https://example.org

Controlla che funzioni con pass show example.org: GPG ti chiede la passphrase e dovresti vedere quelle tre righe.

Prossima puntata

A questo punto hai un archivio di password funzionante, ma per ora vive solo su questo computer. Nella seconda parte scegliamo dove tenerne una copia, e vediamo le varie opzioni, dai grandi servizi in hosting fino al tuo server.

Alla prossima 👋