summaryrefslogtreecommitdiffstats
path: root/content/it
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-11-06 12:59:28 +0100
committerDanilo M. <danix@danix.xyz>2026-11-06 12:59:28 +0100
commitefbe3e713c46be480c5fd87eb78105630ca46cd2 (patch)
tree0c9855e612b15eafdf5a84fce1a075971effb0f6 /content/it
parent25571b8fc544f8910db3e9190a75027eb478f434 (diff)
downloaddanixxyz-efbe3e713c46be480c5fd87eb78105630ca46cd2.tar.gz
danixxyz-efbe3e713c46be480c5fd87eb78105630ca46cd2.zip
content: add "Your own password store" series as drafts
Three-part beginner tutorial, in English and Italian: creating a store with pass, GPG and git, choosing where to host it, and using it on the phone with HardenedPass. Screenshots are from the 0.3.3 release build on the test store. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'content/it')
-rw-r--r--content/it/articles/your-own-password-store-part-1/how-it-works.svg67
-rw-r--r--content/it/articles/your-own-password-store-part-1/index.md171
-rw-r--r--content/it/articles/your-own-password-store-part-2/index.md139
-rw-r--r--content/it/articles/your-own-password-store-part-3/entry.pngbin0 -> 122123 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/generator.pngbin0 -> 177013 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/index.md133
-rw-r--r--content/it/articles/your-own-password-store-part-3/menu.pngbin0 -> 140689 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/new-entry.pngbin0 -> 157033 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/passphrase.pngbin0 -> 152716 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/pgp-import.pngbin0 -> 159988 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/repository.pngbin0 -> 154354 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/ssh-generate.pngbin0 -> 149752 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/ssh-key.pngbin0 -> 113405 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/ssh-public.pngbin0 -> 215748 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/store-list.pngbin0 -> 97353 bytes
-rw-r--r--content/it/articles/your-own-password-store-part-3/welcome.pngbin0 -> 132832 bytes
16 files changed, 510 insertions, 0 deletions
diff --git a/content/it/articles/your-own-password-store-part-1/how-it-works.svg b/content/it/articles/your-own-password-store-part-1/how-it-works.svg
new file mode 100644
index 0000000..5126721
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-1/how-it-works.svg
@@ -0,0 +1,67 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 520 688" role="img" aria-labelledby="t d" font-family="'JetBrains Mono', ui-monospace, 'DejaVu Sans Mono', monospace">
+ <title id="t">Come lavorano insieme pass, GPG e git</title>
+ <desc id="d">Sui tuoi dispositivi, pass trasforma una password in una voce con un nome e GPG la cifra in un file. Git copia quel file cifrato da e verso il server. La chiave privata e la passphrase restano sui tuoi dispositivi.</desc>
+ <defs>
+ <marker id="a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0 0L10 5L0 10z" fill="#7a9bb8"/></marker>
+ <marker id="g" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0 0L10 5L0 10z" fill="#38bdf8"/></marker>
+ <marker id="k" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0 0L10 5L0 10z" fill="#00ff88"/></marker>
+ <symbol id="lock" viewBox="0 0 16 18"><path d="M4 8V5a4 4 0 0 1 8 0v3" fill="none" stroke="currentColor" stroke-width="2"/><rect x="1" y="8" width="14" height="10" rx="2" fill="currentColor"/></symbol>
+ </defs>
+
+ <rect width="520" height="688" rx="10" fill="#060b10"/>
+
+ <!-- your devices -->
+ <rect x="14" y="14" width="492" height="472" rx="8" fill="#101e2d" stroke="#182840" stroke-width="2"/>
+ <text x="32" y="44" font-size="14" font-weight="700" letter-spacing="2" fill="#7a9bb8">I TUOI DISPOSITIVI</text>
+
+ <rect x="32" y="60" width="270" height="70" rx="6" fill="#060b10" stroke="#304860"/>
+ <text x="48" y="87" font-size="14" fill="#7a9bb8">la tua password</text>
+ <text x="48" y="114" font-size="19" fill="#c4d6e8">hunter2</text>
+
+ <path d="M66 132V188" stroke="#7a9bb8" stroke-width="2" marker-end="url(#a)"/>
+ <text x="82" y="155" font-size="17" font-weight="700" fill="#a855f7">pass</text>
+ <text x="82" y="175" font-size="14" fill="#c4d6e8">le dà un nome</text>
+
+ <rect x="32" y="192" width="270" height="70" rx="6" fill="#060b10" stroke="#304860"/>
+ <text x="48" y="219" font-size="14" fill="#7a9bb8">una voce del tuo archivio</text>
+ <text x="48" y="246" font-size="19" fill="#c4d6e8">example.org</text>
+
+ <path d="M66 264V320" stroke="#7a9bb8" stroke-width="2" marker-end="url(#a)"/>
+ <text x="82" y="287" font-size="17" font-weight="700" fill="#a855f7">GPG</text>
+ <text x="82" y="307" font-size="14" fill="#c4d6e8">cifra con chiave pubblica</text>
+
+ <rect x="32" y="324" width="270" height="70" rx="6" fill="#060b10" stroke="#a855f7" stroke-width="2"/>
+ <text x="48" y="351" font-size="14" fill="#7a9bb8">file cifrato</text>
+ <text x="48" y="378" font-size="19" fill="#c4d6e8">example.org.gpg</text>
+ <use href="#lock" x="268" y="346" width="20" height="23" color="#a855f7"/>
+
+ <!-- private key -->
+ <rect x="330" y="192" width="158" height="146" rx="6" fill="#060b10" stroke="#00ff88" stroke-width="2"/>
+ <text x="344" y="220" font-size="15" font-weight="700" fill="#00ff88">chiave privata</text>
+ <text x="344" y="240" font-size="15" font-weight="700" fill="#00ff88">+ passphrase</text>
+ <text x="344" y="270" font-size="14" fill="#c4d6e8">aprono i file,</text>
+ <text x="344" y="289" font-size="14" fill="#c4d6e8">e non escono</text>
+ <text x="344" y="308" font-size="14" fill="#c4d6e8">mai da qui</text>
+ <path d="M409 340V359H306" fill="none" stroke="#00ff88" stroke-width="2" stroke-dasharray="6 5" marker-end="url(#k)"/>
+
+ <!-- server panel, under the git arrow -->
+ <rect x="14" y="510" width="492" height="164" rx="8" fill="#101e2d" stroke="#182840" stroke-width="2" stroke-dasharray="8 6"/>
+ <text x="488" y="540" text-anchor="end" font-size="14" font-weight="700" letter-spacing="2" fill="#7a9bb8">SERVER</text>
+
+ <!-- git crosses the line -->
+ <path d="M66 398V568" stroke="#38bdf8" stroke-width="2" marker-start="url(#g)" marker-end="url(#g)"/>
+ <text x="82" y="432" font-size="17" font-weight="700" fill="#38bdf8">git</text>
+ <text x="82" y="452" font-size="14" fill="#c4d6e8">push e pull copiano il</text>
+ <text x="82" y="471" font-size="14" fill="#c4d6e8">file cifrato, nient'altro</text>
+
+ <!-- server -->
+
+ <rect x="32" y="574" width="270" height="70" rx="6" fill="#060b10" stroke="#a855f7" stroke-width="2"/>
+ <text x="48" y="601" font-size="14" fill="#7a9bb8">file cifrato</text>
+ <text x="48" y="628" font-size="19" fill="#c4d6e8">example.org.gpg</text>
+ <use href="#lock" x="268" y="596" width="20" height="23" color="#a855f7"/>
+
+ <text x="330" y="596" font-size="14" fill="#f59e0b">il nome si vede,</text>
+ <text x="330" y="615" font-size="14" fill="#f59e0b">il contenuto</text>
+ <text x="330" y="634" font-size="14" fill="#f59e0b">invece no</text>
+</svg>
diff --git a/content/it/articles/your-own-password-store-part-1/index.md b/content/it/articles/your-own-password-store-part-1/index.md
new file mode 100644
index 0000000..adf84b6
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-1/index.md
@@ -0,0 +1,171 @@
++++
+title = "Il tuo archivio di password #1"
+author = "Danilo M."
+type = "tech"
+date = "2026-11-06T10:01:00+01:00"
+draft = true
+description = "Crea da zero un archivio di password con pass, GPG e git, anche se non li hai mai toccati."
+excerpt = "Crea da zero un archivio di password con pass, GPG e git, anche se non li hai mai toccati."
+image = "/uppies/2026/11/hardenedpass-banner.png"
+tags = ["pass", "gnupg", "git", "android", "hardenedpass", "sicurezza", "tutorial"]
+categories = ["Code", "DIY"]
++++
+
+## Crea l'archivio
+
+Uso [pass](https://www.passwordstore.org/) 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](https://danix.xyz/it/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](../your-own-password-store-part-2/) gli diamo una casa su un server, e nella [terza parte](../your-own-password-store-part-3/) lo mettiamo sul telefono e iniziamo a usarlo.
+
+<!--more-->
+
+## 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.
+
+{{< image src="how-it-works.svg" alt="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." class="max-w-md mx-auto rounded-lg border border-border" />}}
+
+{{< callout type="warning" title="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.
+{{< /callout >}}
+
+## 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](https://termux.dev/), 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](../your-own-password-store-part-2/#la-strada-solo-telefono) nella seconda parte, che usa gli stessi comandi.
+
+## Installa gli strumenti
+
+Su Linux c'è tutto nei repository della tua distribuzione:
+
+```bash
+# 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](https://slackbuilds.org/).
+
+**Su macOS** puoi prendere gli stessi strumenti da [Homebrew](https://brew.sh/) con `brew install gnupg pass git`. **Su Windows** `pass` non gira in modo nativo, quindi installa [WSL](https://learn.microsoft.com/it-it/windows/wsl/install) 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
+git config --global user.name "Il Tuo Nome"
+git config --global user.email "you@example.org"
+```
+
+## Crea la tua chiave
+
+```bash
+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](https://www.eff.org/dice) 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:
+
+```
+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
+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
+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
+pass insert -m example.org
+```
+
+```
+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](../your-own-password-store-part-2/) scegliamo dove tenerne una copia, e vediamo le varie opzioni, dai grandi servizi in hosting fino al tuo server.
+
+Alla prossima 👋
diff --git a/content/it/articles/your-own-password-store-part-2/index.md b/content/it/articles/your-own-password-store-part-2/index.md
new file mode 100644
index 0000000..5f6d486
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-2/index.md
@@ -0,0 +1,139 @@
++++
+title = "Il tuo archivio di password #2"
+author = "Danilo M."
+type = "tech"
+date = "2026-11-06T10:02:00+01:00"
+draft = true
+description = "Scegli dove far vivere il tuo archivio di password cifrato, dai servizi git in hosting fino al tuo server."
+excerpt = "Scegli dove far vivere il tuo archivio di password cifrato, dai servizi git in hosting fino al tuo server."
+image = "/uppies/2026/11/hardenedpass-banner.png"
+tags = ["pass", "gnupg", "git", "android", "hardenedpass", "sicurezza", "tutorial"]
+categories = ["Code", "DIY"]
++++
+
+## Dagli una casa
+
+Nella [prima parte](../your-own-password-store-part-1/) abbiamo creato una chiave GPG e un archivio di password, ma per ora vive su una macchina sola. Oggi gli diamo una casa su un server, così il telefono ci può arrivare e ne hai una copia se quella macchina muore. Se non hai proprio un computer, qui trovi anche la strada solo telefono.
+
+<!--more-->
+
+## Scegli una casa per il tuo archivio
+
+Ti serve un server git da usare per sincronizzare. Visto che il tuo archivio è cifrato hai più libertà di quanto pensi, e queste sono tutte buone opzioni:
+
+| Provider | Costo | Gestito da | Da sapere |
+|---|---|---|---|
+| [Codeberg](https://codeberg.org/) | Gratis | Associazione tedesca non profit | I repository privati hanno dei limiti, leggi sotto |
+| [GitHub](https://github.com/) | Gratis | Microsoft | Il più facile per cui trovare aiuto, repository privati inclusi |
+| [GitLab](https://gitlab.com/) | Gratis | GitLab Inc. | 10 GiB per progetto, molto più di quanto ti servirà mai |
+| [SourceHut](https://sourcehut.org/) | Facoltativo, da 4 € al mese | SourceHut | Minimale, non serve JavaScript, solo SSH |
+| un tuo server | Quello che già paghi | Tu | Il più riservato, ma tenerlo in vita tocca a te |
+
+Un archivio è minuscolo, qualche KB per password, quindi i limiti di spazio non sono un problema da nessuna parte. Quello che stai scegliendo davvero è a chi ti va bene affidare i nomi dei tuoi file e la tua cronologia. Con un servizio in hosting ti fidi di un'azienda o di un'associazione, con un tuo server ti fidi di te stesso.
+
+Se non sai cosa scegliere: **GitHub o GitLab** sono i più facili per iniziare, **Codeberg** è quello che sceglierei se contribuisci già al software libero, l'opzione **un tuo server** è quello che uso io, quando ti sentirai a tuo agio con tutto il resto.
+
+Qualunque sia la scelta, ti servono due cose: una **chiave SSH**, che è il modo in cui il tuo computer dimostra chi è senza password, e un **repository vuoto e privato**. Partiamo dalla chiave, che è uguale per tutti:
+
+```bash
+ssh-keygen -t ed25519
+```
+
+Premi Invio per accettare il nome del file, e dalle una passphrase se vuoi. Poi stampa la parte pubblica, che è quella da incollare sul sito del provider:
+
+```bash
+cat ~/.ssh/id_ed25519.pub
+```
+
+Come per GPG, la metà pubblica non è un segreto. Il file senza `.pub` invece lo è, e non lascia mai il tuo computer.
+
+### GitHub
+
+1. Crea un account, poi vai su **Settings**, **SSH and GPG keys**, **New SSH key** e incolla la tua chiave.
+2. Vai su [github.com/new](https://github.com/new), chiama il repository `password-store` e scegli **Private**. Non aggiungere README, licenza o `.gitignore`: il repository deve essere vuoto.
+3. Il tuo indirizzo è `git@github.com:you/password-store.git`.
+
+### GitLab
+
+1. Crea un account, poi nelle preferenze del tuo profilo apri **SSH Keys** e aggiungi la tua chiave.
+2. Vai su [New project](https://gitlab.com/projects/new), scegli **Create blank project**, chiamalo `password-store`, imposta la visibilità su **Private** e togli la spunta all'opzione che crea un README.
+3. Il tuo indirizzo è `git@gitlab.com:you/password-store.git`.
+
+### Codeberg
+
+Codeberg è un'associazione non profit per il software libero, e lo dice chiaramente: i [repository privati](https://docs.codeberg.org/getting-started/faq/) sono pensati per chi contribuisce al software libero, con un limite di 100 MB, e i suoi [termini](https://codeberg.org/Codeberg/org/src/branch/main/TermsOfUse.md) permettono "really small & personal stuff", cioè roba piccola e personale, ma non un cloud privato. Un archivio di password è piccolo e personale, ma se non contribuisci in nessun modo al software libero, per favore scegli un altro provider e lascia quelle risorse a chi sono destinate.
+
+1. Crea un account, poi vai su **Settings**, **SSH / GPG keys** e aggiungi la tua chiave.
+2. Vai su [New repository](https://codeberg.org/repo/create), chiamalo `password-store`, spunta **Make repository private** e lascia tutto il resto senza spunta, così resta vuoto.
+3. Il tuo indirizzo è `git@codeberg.org:you/password-store.git`.
+
+### SourceHut
+
+Non ho mai usato SourceHut per il mio archivio, quindi questo viene dalla [loro documentazione](https://man.sr.ht/tutorials/set-up-account-and-git.md). È un servizio piccolo, indipendente e molto essenziale. L'hosting git non richiede un account a pagamento finché il servizio è in alpha, ma è pagando che resta in vita.
+
+1. Registrati su [meta.sr.ht](https://meta.sr.ht/) e aggiungi la tua chiave su [meta.sr.ht/keys](https://meta.sr.ht/keys).
+2. Non serve neanche creare il repository: viene creato al primo push, ed è **privato di default**.
+3. Il tuo indirizzo è `git@git.sr.ht:~you/password-store`.
+
+### un tuo server
+
+Va bene qualsiasi macchina raggiungibile via SSH: una VPS, un NAS, un Raspberry Pi nello sgabuzzino. Lì ti servono solo git e un repository vuoto:
+
+```bash
+git init --bare ~/password-store.git
+```
+
+Il tuo indirizzo è `you@server.example.org:password-store.git`, e se SSH non gira sulla porta 22 usa la forma lunga: `ssh://you@server.example.org:2222/home/you/password-store.git`.
+
+Se vuoi anche un'interfaccia web, [Forgejo](https://forgejo.org/) è un'alternativa leggera a GitHub da ospitare in casa, ed è quello che fa girare Codeberg. Una volta installato, i passaggi sono gli stessi di Codeberg. Ricordati solo che un server tuo resta sicuro solo se lo tieni aggiornato.
+
+## Manda l'archivio sul server
+
+Qui usa il tuo indirizzo:
+
+```bash
+pass git remote add origin git@github.com:you/password-store.git
+pass git push -u origin HEAD
+```
+
+La prima volta SSH ti mostra l'impronta del server e ti chiede se ti fidi. Scrivi `yes`. Per essere scrupoloso, confrontala prima con quella nella documentazione del provider.
+
+Fatto, adesso il tuo archivio vive anche sul server. Se apri il repository nel browser vedrai `example.org.gpg`, e se lo apri non vedrai niente di utile. Bene così.
+
+## La strada solo telefono
+
+Niente computer? Il telefono può fare tutto quello che abbiamo fatto finora, grazie a [Termux](https://f-droid.org/packages/com.termux/). Installalo da F-Droid o dalle release su GitHub, non dal Play Store, e aprilo. Ti dico solo quello che cambia, le spiegazioni restano valide.
+
+Per prima cosa aggiorna tutto, e **non è facoltativo**. Se lo salti, GPG si rifiuta di partire con `libgcrypt is too old`. Durante l'aggiornamento potrebbe chiederti cosa fare con alcuni file di configurazione: premi semplicemente Invio per tenere il valore predefinito.
+
+```bash
+pkg upgrade
+pkg install gnupg pass git openssh
+```
+
+Permetti a Termux di raggiungere la cartella Download, e tocca **Consenti** quando Android lo chiede:
+
+```bash
+termux-setup-storage
+```
+
+Adesso è tutto come nella prima parte: [di' a git chi sei](../your-own-password-store-part-1/#installa-gli-strumenti), [crea la tua chiave](../your-own-password-store-part-1/#crea-la-tua-chiave) e [il tuo archivio](../your-own-password-store-part-1/#inizializza-larchivio), [crea una chiave SSH](#scegli-una-casa-per-il-tuo-archivio) e [manda tutto sul server](#manda-larchivio-sul-server). Un paio di note:
+
+- GPG chiede la passphrase in una finestra di testo dentro il terminale. Scrivila, passa al campo Repeat con il tasto Tab (è nella riga di tasti extra sopra la tastiera), scrivila di nuovo, premi Tab per arrivare su **OK** e poi Invio.
+- Per copiare la tua chiave SSH pubblica sul sito del provider, esegui `cat ~/.ssh/id_ed25519.pub`, tieni premuto sul testo in Termux e selezionalo.
+
+Poi esporta la chiave dove l'app la può trovare:
+
+```bash
+gpg --armor --export-secret-keys you@example.org > ~/storage/downloads/private-key.asc
+```
+
+{{< callout type="warning" title="Il telefono ora ha la tua unica copia" >}}
+Con questa strada la tua chiave vive solo sul telefono. Se il telefono muore o te lo rubano perdi tutte le password, anche se i file cifrati sono al sicuro sul server. Prima di mettere password vere nell'archivio, copia `private-key.asc` in un posto sicuro: va bene una chiavetta USB con un adattatore OTG. Non mandarla via email o su un cloud.
+{{< /callout >}}
+
+## Prossima puntata
+
+Adesso il tuo archivio è al sicuro su un server, e la parte noiosa è finita. Nella [terza parte](../your-own-password-store-part-3/) installiamo HardenedPass, lo colleghiamo al tuo archivio e vediamo come usarlo tutti i giorni.
+
+Alla prossima 👋
diff --git a/content/it/articles/your-own-password-store-part-3/entry.png b/content/it/articles/your-own-password-store-part-3/entry.png
new file mode 100644
index 0000000..9dca49e
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/entry.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/generator.png b/content/it/articles/your-own-password-store-part-3/generator.png
new file mode 100644
index 0000000..4c8af5e
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/generator.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/index.md b/content/it/articles/your-own-password-store-part-3/index.md
new file mode 100644
index 0000000..d724625
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/index.md
@@ -0,0 +1,133 @@
++++
+title = "Il tuo archivio di password #3"
+author = "Danilo M."
+type = "tech"
+date = "2026-11-06T10:03:00+01:00"
+draft = true
+description = "Installa HardenedPass, collegalo al tuo archivio e usa le tue password tutti i giorni sul telefono."
+excerpt = "Installa HardenedPass, collegalo al tuo archivio e usa le tue password tutti i giorni sul telefono."
+image = "/uppies/2026/11/hardenedpass-banner.png"
+tags = ["pass", "gnupg", "git", "android", "hardenedpass", "sicurezza", "tutorial"]
+categories = ["Code", "DIY"]
++++
+
+## Usalo ogni giorno
+
+Questa è la parte in cui tutto ripaga. Nella [prima parte](../your-own-password-store-part-1/) abbiamo creato una chiave e un archivio di password, e nella [seconda parte](../your-own-password-store-part-2/) l'abbiamo mandato su un server. Oggi lo mettiamo sul telefono, e poi vediamo come conviverci giorno per giorno. Ti serviranno l'indirizzo del tuo repository e il file `private-key.asc` che hai esportato.
+
+<!--more-->
+
+## Installa HardenedPass
+
+Vai sull'[ultima release](https://github.com/danixland/HardenedPass/releases/latest) e scarica `HardenedPass_vX.Y.Z.apk` e `HardenedPass_vX.Y.Z.apk.sha256`. Ti serve Android 12 o più recente, e nessun servizio Google: gira benissimo su GrapheneOS.
+
+Un gestore di password è proprio una brutta cosa da installare da un file manomesso, quindi controlla il download. Nella cartella con i due file, sul computer o in Termux, esegui:
+
+```bash
+sha256sum -c HardenedPass_vX.Y.Z.apk.sha256
+```
+
+Deve dire `OK`. La [pagina di installazione]({{< relref "/hardenedpass/getting-started/install" >}}) spiega anche come verificare chi ha firmato l'APK, che è il controllo più forte. Copia l'APK sul telefono se non è già lì, aprilo dal file manager e consenti l'installazione.
+
+## Collega l'app
+
+Apri l'app e tocca **Clona repo remoto**.
+
+{{< image src="welcome.png" alt="Schermata di benvenuto con i pulsanti Clona repo remoto, Crea repo locale e Impostazioni." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+{{< callout type="note" title="Per ora non usare Crea repo locale" >}}
+Crea repo locale va bene per un archivio che vive solo sul telefono, ma al momento un archivio creato così non riesce a fare il pull delle modifiche se in seguito gli aggiungi un server. Visto che hai già un repository, non ti serve.
+{{< /callout >}}
+
+Incolla l'indirizzo del tuo repository in **URL del repository**. **Chiave SSH** è già selezionata, ed è quello che vogliamo.
+
+{{< image src="repository.png" alt="Schermata Informazioni del repository con l'indirizzo compilato e Chiave SSH selezionata." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+Il telefono ha bisogno di una chiave SSH tutta sua. Tocca **Gestisci**, poi **Genera coppia di chiavi SSH**.
+
+{{< image src="ssh-key.png" alt="Schermata Chiave SSH con i pulsanti Importa chiave SSH e Genera coppia di chiavi SSH." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+Scegli **Ed25519**, lascia attivo **Proteggi con credenziali di blocco schermo** e tocca **Genera**. Ora l'app ti chiederà impronta o PIN ogni volta che usa questa chiave, e la metà privata non lascia mai il telefono.
+
+{{< image src="ssh-generate.png" alt="Schermata Genera coppia di chiavi SSH con Ed25519 selezionato e la protezione del blocco schermo attiva." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+L'app ti mostra la chiave pubblica. Tocca **Condividi** per mandartela, poi aggiungila sul sito del tuo provider, nello stesso posto in cui hai [aggiunto la prima](../your-own-password-store-part-2/#scegli-una-casa-per-il-tuo-archivio). Una chiave separata per ogni dispositivo vuol dire che se perdi il telefono puoi rimuovere solo quella.
+
+{{< image src="ssh-public.png" alt="Finestra che mostra la chiave pubblica generata, con i pulsanti Più tardi e Condividi." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+Torna alla schermata del repository e tocca **Clona**. Alla prima connessione l'app memorizza l'identità del server, e da quel momento si rifiuta di collegarsi se cambia.
+
+Finito il clone, l'app ti dice per quale chiave è cifrato l'archivio. Copia `private-key.asc` sul telefono via USB, se non è già nella cartella Download, tocca **Importa chiave PGP** e scegli il file.
+
+{{< image src="pgp-import.png" alt="Schermata Importa chiave PGP con il destinatario dell'archivio you@example.org e il pulsante Importa chiave PGP." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+Ed eccolo lì, il tuo archivio!
+
+{{< image src="store-list.png" alt="L'elenco dell'archivio, con la voce example.org." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+{{< callout type="warning" title="Cancella il file della chiave" >}}
+L'app contiene una sua copia, quindi cancella subito `private-key.asc` dalla memoria del telefono, e anche dal disco del computer. L'unica altra copia deve essere il tuo backup offline.
+{{< /callout >}}
+
+Tocca la tua voce. L'app chiede la passphrase della tua chiave GPG (la finestra dice solo *Password*) e ti mostra cosa c'è dentro.
+
+{{< image src="passphrase.png" alt="Finestra che chiede la password, con la tastiera aperta." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+{{< image src="entry.png" alt="La voce example.org, con password, nome utente e url e un pulsante per copiare ciascuno." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+Se sei arrivato fin qui funziona, e la parte difficile è finita. Ce l'hai fatta!
+
+## L'uso di tutti i giorni
+
+### Aggiungere una password
+
+Tocca **Nuova voce**, poi **Crea nuova password**. Dalle un nome, di solito l'indirizzo del sito, così la compilazione automatica la trova in seguito. Anche una cartella aiuta, se ti piace tenere le cose in ordine.
+
+{{< image src="new-entry.png" alt="Editor della nuova voce con i campi nome, cartella, password, nome utente e contenuto extra." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+Tocca i tre puntini nel campo della password per aprire il generatore. **Casuale** crea password fatte di caratteri e **Diceware** password fatte di parole. Per la maggior parte dei login vai su Casuale: tanto non le digiterai mai, ci pensa l'app. Diceware è meglio per quelle poche che devi scrivere a mano, tipo la password dell'account di streaming sulla TV. Le parole sono in inglese.
+
+{{< image src="generator.png" alt="Generatore di password sulla scheda Diceware, con una password di cinque parole, lunghezza e separatore." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+Tocca **Usa**, poi **Salva**. Nella documentazione c'è di più sulle [voci]({{< relref "/hardenedpass/using/entries" >}}), compresi i [codici monouso]({{< relref "/hardenedpass/using/otp" >}}) se vuoi tenere la 2FA nell'archivio.
+
+### Sincronizzare
+
+Questa è l'unica cosa a cui devi abituarti: salvare una voce sul telefono non la manda da nessuna parte. Resta sul telefono finché non sincronizzi. Trascina verso il basso l'elenco, oppure usa il menu nella barra di ricerca e tocca **Sincronizza repository**.
+
+{{< image src="menu.png" alt="Il menu dell'elenco con Sincronizza repository, Pull dal remote, Push sul remote, Impostazioni e Informazioni." class="max-w-sm mx-auto rounded-lg border border-border" />}}
+
+Se non vuoi pensarci, attiva **Push dopo ogni modifica** in **Impostazioni**, **Repository**. Sul computer la stessa cosa si fa con due comandi:
+
+```bash
+pass git pull
+pass git push
+```
+
+Sincronizza spesso, e sempre prima di modificare qualcosa su un altro dispositivo: due dispositivi che cambiano la stessa voce sono l'unico caso in cui git ha bisogno del tuo aiuto. La [pagina sulla sincronizzazione]({{< relref "/hardenedpass/using/sync" >}}) spiega come uscirne.
+
+### Compilazione automatica
+
+Copia e incolla funziona, ma compilare direttamente i login è molto più comodo. Apri **Impostazioni**, **Compilazione automatica**, attiva **Attiva la compilazione automatica** e scegli HardenedPass nella finestra di sistema. Si fida solo dei browser che conosce, e Firefox è quello con il supporto migliore. La [pagina sulla compilazione automatica]({{< relref "/hardenedpass/using/autofill" >}}) ha l'elenco completo.
+
+## Quando qualcosa va storto
+
+**Hai perso il telefono.** Le tue voci sono cifrate e la chiave dentro l'app è protetta dalla passphrase, quindi niente panico. Vai sul sito del tuo provider e rimuovi la chiave SSH del telefono, così non può più raggiungere il repository, poi configura l'app sul nuovo telefono partendo dal backup. Se pensi che qualcuno possa avere anche la tua passphrase, leggi il punto successivo.
+
+**Pensi che ti abbiano rubato la chiave privata.** Dai per scontato che le tue password verranno lette: crea una nuova chiave, cifra di nuovo l'archivio con `pass init nuovo@example.org` e cambia le password che contano, a partire dalla tua email. Passare a una nuova chiave non serve per le vecchie copie dei file, perché la cronologia di git le conserva.
+
+**Hai dimenticato la passphrase.** Mi dispiace, ma la strada finisce qui. Nessuno può aiutarti, ed è proprio il senso della cifratura. Ecco perché sta su un foglio, in un cassetto, mentre la impari.
+
+**Hai perso la chiave e non hai un backup.** Come sopra. Fai il backup della chiave.
+
+**Si è rotto qualcos'altro.** Dai un'occhiata alla [pagina di risoluzione dei problemi]({{< relref "/hardenedpass/reference/troubleshooting" >}}), e se è un bug [fammelo sapere](https://github.com/danixland/HardenedPass/issues).
+
+## E adesso?
+
+Ora hai un gestore di password che controlli del tutto, che non dipende da nessuna azienda e che funziona con qualsiasi strumento parli `pass`. Se domani smetto di lavorare su HardenedPass, le tue password sono ancora lì, ed è proprio il motivo per cui mi piace questo sistema.
+
+Si può fare ancora di più per renderlo sicuro: l'autenticazione a due fattori sul tuo account git, chiavi limitate a un solo repository, nascondere i nomi delle voci, chiavi hardware. È un argomento a sé e ne parlerò in un prossimo articolo, per ora goditi il tuo nuovo archivio di password.
+
+La [documentazione completa](https://danix.xyz/it/hardenedpass/) ha tutti i dettagli su quello che abbiamo visto qui, e se ti blocchi da qualche parte, fammelo sapere.
+
+Alla prossima 👋
diff --git a/content/it/articles/your-own-password-store-part-3/menu.png b/content/it/articles/your-own-password-store-part-3/menu.png
new file mode 100644
index 0000000..d57d9f4
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/menu.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/new-entry.png b/content/it/articles/your-own-password-store-part-3/new-entry.png
new file mode 100644
index 0000000..95c6f2f
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/new-entry.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/passphrase.png b/content/it/articles/your-own-password-store-part-3/passphrase.png
new file mode 100644
index 0000000..45d67a4
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/passphrase.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/pgp-import.png b/content/it/articles/your-own-password-store-part-3/pgp-import.png
new file mode 100644
index 0000000..1f433c0
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/pgp-import.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/repository.png b/content/it/articles/your-own-password-store-part-3/repository.png
new file mode 100644
index 0000000..f7f48dd
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/repository.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/ssh-generate.png b/content/it/articles/your-own-password-store-part-3/ssh-generate.png
new file mode 100644
index 0000000..ab5c23f
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/ssh-generate.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/ssh-key.png b/content/it/articles/your-own-password-store-part-3/ssh-key.png
new file mode 100644
index 0000000..2ee4aa1
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/ssh-key.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/ssh-public.png b/content/it/articles/your-own-password-store-part-3/ssh-public.png
new file mode 100644
index 0000000..3f27f19
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/ssh-public.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/store-list.png b/content/it/articles/your-own-password-store-part-3/store-list.png
new file mode 100644
index 0000000..efe4716
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/store-list.png
Binary files differ
diff --git a/content/it/articles/your-own-password-store-part-3/welcome.png b/content/it/articles/your-own-password-store-part-3/welcome.png
new file mode 100644
index 0000000..d6e4ebd
--- /dev/null
+++ b/content/it/articles/your-own-password-store-part-3/welcome.png
Binary files differ