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
|
+++
title = "Concetti"
date = 2026-11-05T00:00:00Z
description = "Le tre cose su cui si basa HardenedPass, in parole semplici: pass salva le password come file, OpenPGP le cifra, git le sincronizza."
weight = 10
draft = false
+++
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](https://www.passwordstore.org/) è 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**.
```
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:
```
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](https://www.gnupg.org/), 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.
{{< callout type="danger" title="Fai un backup della chiave privata" >}}
Se perdi la chiave privata o dimentichi la sua passphrase, nessuno potrà più decifrare
il tuo archivio. Non esiste un reset. Tienine una copia in un posto sicuro e offline.
{{< /callout >}}
## git: sincronizzazione e cronologia
[Git](https://git-scm.com/) 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.
|