{"id":100,"date":"2026-06-13T16:55:58","date_gmt":"2026-06-13T16:55:58","guid":{"rendered":"https:\/\/shattered.io\/it\/2026\/06\/13\/gpg-cifrare-firmare-file\/"},"modified":"2026-06-13T16:57:45","modified_gmt":"2026-06-13T16:57:45","slug":"gpg-cifrare-firmare-file","status":"publish","type":"post","link":"https:\/\/shattered.io\/it\/2026\/06\/13\/gpg-cifrare-firmare-file\/","title":{"rendered":"GPG: Cifrare e Firmare File in 12 Step [2026]"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cifrare un file con una password che chiunque pu\u00f2 indovinare non protegge niente. <strong>GPG<\/strong> (GNU Privacy Guard, o GnuPG) risolve il problema alla radice: usa crittografia a chiave pubblica per cifrare dati che solo il destinatario pu\u00f2 leggere e per firmare messaggi che chiunque pu\u00f2 verificare. \u00c8 lo standard de facto della crittografia OpenPGP da oltre vent&#8217;anni, \u00e8 gratuito, open source e gira su Linux, macOS e Windows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questa guida pratica copre l&#8217;intero ciclo di vita con <strong>GPG<\/strong>: installazione, generazione delle chiavi moderne su curva ellittica Ed25519, certificato di revoca, pubblicazione su keyserver, cifratura asimmetrica e simmetrica, firme digitali, sottochiavi su YubiKey e automazione. Tutti i comandi sono testati su GnuPG 2.5.x, la serie dichiarata stabile nel dicembre 2025. Alla fine avrai un setup completo e funzionante, non una raccolta di comandi isolati.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aggiornata al 13 giugno 2026, la guida include le novit\u00e0 del 2025 e 2026: il nuovo standard <strong>OpenPGP<\/strong> RFC 9580, la separazione con LibrePGP, lo stato della crittografia post-quantistica e la deprecazione definitiva dei vecchi keyserver SKS a favore di Web Key Directory.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"che-cose-gpg-e-perche-usarlo-nel-2026\">Che cos&#8217;\u00e8 GPG e perch\u00e9 usarlo nel 2026<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GPG<\/strong> \u00e8 l&#8217;implementazione libera e completa dello standard OpenPGP. Il progetto GnuPG lo descrive cos\u00ec sul sito ufficiale: un software che permette di cifrare e firmare dati e comunicazioni usando un sistema di chiavi versatile. Il nome tecnico \u00e8 GnuPG, ma sulla riga di comando il programma si chiama <code>gpg<\/code>, e nell&#8217;uso quotidiano i due termini sono intercambiabili.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il principio \u00e8 la crittografia asimmetrica. Ogni utente possiede due chiavi matematicamente collegate: una <strong>chiave pubblica<\/strong>, che distribuisci liberamente, e una <strong>chiave privata<\/strong>, che custodisci e non condividi mai. Chi vuole inviarti un file lo cifra con la tua chiave pubblica, e solo la tua chiave privata pu\u00f2 decifrarlo. Per le firme il meccanismo si inverte: firmi con la chiave privata e chiunque verifica con la tua chiave pubblica. Questo schema, basato sulle stesse fondamenta delle <a href=\"\/it\/firme-digitali\/\">firme digitali<\/a>, garantisce riservatezza, autenticit\u00e0 e integrit\u00e0 in un solo strumento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nel 2026 GPG resta rilevante per ragioni concrete. La cifratura delle email tramite OpenPGP non dipende da nessun fornitore: funziona tra ProtonMail, Thunderbird, Outlook e qualsiasi client compatibile. La firma dei pacchetti software e dei commit Git si appoggia quasi ovunque a GPG. Le distribuzioni Linux verificano gli aggiornamenti con firme OpenPGP. E per archiviare file sensibili su un disco o nel cloud, una cifratura simmetrica con <code>gpg -c<\/code> \u00e8 pi\u00f9 semplice e portabile di soluzioni proprietarie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La differenza rispetto ad altri strumenti sta nel modello di fiducia decentralizzato. Non esiste un&#8217;autorit\u00e0 centrale che certifica le chiavi, come accade invece per i certificati TLS gestiti da OpenSSL. Sei tu a decidere di chi fidarti, verificando le impronte (fingerprint) delle chiavi. Se ti serve un confronto con la cifratura a livello di trasporto, la nostra guida su <a href=\"\/it\/https-e-tls\/\">HTTPS e TLS<\/a> spiega il modello opposto, quello delle autorit\u00e0 di certificazione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GPG non \u00e8 perfetto. La gestione delle chiavi richiede disciplina, l&#8217;interfaccia a riga di comando intimidisce i principianti e la cifratura delle email ha limiti noti, come i metadati esposti nell&#8217;oggetto del messaggio. Ma per cifrare file, firmare rilasci e proteggere segreti, resta lo strumento pi\u00f9 solido e diffuso. Questa guida ti porta da zero a un setup professionale.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequisiti-e-versioni-aggiornate-al-2026\">Prerequisiti e versioni aggiornate al 2026<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prima di iniziare ti servono pochi elementi: un terminale, i permessi per installare software e cinque minuti. La serie stabile attuale \u00e8 GnuPG 2.5.x. Il progetto ha dichiarato la 2.5 come ramo stabile a dicembre 2025, mentre la vecchia 2.4 \u00e8 passata in stato &#8220;oldstable&#8221;. Verifica sempre la versione che hai installato con <code>gpg --version<\/code>, perch\u00e9 i pacchetti delle distribuzioni spesso restano indietro rispetto agli ultimi rilasci ufficiali.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La tabella seguente elenca i componenti principali dello stack GnuPG con le versioni pubblicate sulla pagina di download ufficiale a giugno 2026. GPG non \u00e8 un binario monolitico: si appoggia a una serie di librerie (Libgcrypt per la crittografia, pinentry per l&#8217;inserimento delle passphrase, GPGME come API ad alto livello) che vengono aggiornate separatamente.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Componente<\/th><th>Versione<\/th><th>Data di rilascio<\/th><th>Funzione<\/th><\/tr><\/thead><tbody>\n<tr><td>GnuPG (stable)<\/td><td>2.5.20<\/td><td>13 maggio 2026<\/td><td>Programma principale <code>gpg<\/code><\/td><\/tr>\n<tr><td>GnuPG (oldstable)<\/td><td>2.4.9<\/td><td>30 dicembre 2025<\/td><td>Ramo legacy 2.4.x<\/td><\/tr>\n<tr><td>Libgcrypt<\/td><td>1.12.2<\/td><td>15 aprile 2026<\/td><td>Libreria crittografica di base<\/td><\/tr>\n<tr><td>pinentry<\/td><td>1.3.2<\/td><td>28 luglio 2025<\/td><td>Inserimento passphrase e PIN<\/td><\/tr>\n<tr><td>GPGME<\/td><td>2.1.0<\/td><td>18 maggio 2026<\/td><td>API per applicazioni e GUI<\/td><\/tr>\n<tr><td>Libgpg-error<\/td><td>1.61<\/td><td>7 maggio 2026<\/td><td>Gestione errori comune<\/td><\/tr>\n<tr><td>Libksba<\/td><td>1.8.0<\/td><td>13 maggio 2026<\/td><td>Supporto X.509 e CMS<\/td><\/tr>\n<tr><td>GPA<\/td><td>0.11.1<\/td><td>12 febbraio 2026<\/td><td>Interfaccia grafica<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Per gli utenti Windows il pacchetto di riferimento \u00e8 <strong>Gpg4win<\/strong>, che include GnuPG, il gestore di certificati Kleopatra e l&#8217;integrazione con Outlook tramite GpgOL. Su macOS la scelta comune \u00e8 <strong>GPG Suite<\/strong>, che aggiunge integrazione con Mail e portachiavi. Su Linux GPG \u00e8 quasi sempre gi\u00e0 presente o installabile dai repository ufficiali. Scarica sempre l&#8217;ultima versione disponibile dai siti ufficiali, perch\u00e9 i numeri cambiano di frequente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un consiglio prima di partire: lavora su una macchina di cui ti fidi. La sicurezza di GPG dipende dalla protezione della chiave privata. Se il computer \u00e8 compromesso, nessuna passphrase ti salva. Per dati ad altissimo valore, valuta la generazione delle chiavi su un sistema offline o su un sistema operativo orientato alla privacy come Tails.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-1-installare-gnupg-su-linux-macos-e-windows\">Step 1: Installare GnuPG su Linux, macOS e Windows<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;installazione cambia in base al sistema operativo, ma in tutti i casi richiede meno di un minuto. Parti dal tuo gestore di pacchetti e verifica subito la versione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su <strong>Debian, Ubuntu<\/strong> e derivate installa il pacchetto completo, che include gli strumenti per le smartcard e i moduli di rete per i keyserver:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Debian \/ Ubuntu\nsudo apt update\nsudo apt install gnupg gnupg-agent scdaemon\n\n# Fedora \/ RHEL\nsudo dnf install gnupg2\n\n# Arch Linux\nsudo pacman -S gnupg\n\n# macOS con Homebrew\nbrew install gnupg pinentry-mac<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Su <strong>Windows<\/strong> scarica l&#8217;installer di Gpg4win dal sito ufficiale ed esegui il setup grafico. Il pacchetto registra il comando <code>gpg<\/code> nel PATH, quindi potrai usarlo sia da PowerShell sia dall&#8217;interfaccia Kleopatra. Su <strong>macOS<\/strong>, se preferisci un&#8217;esperienza integrata con interfaccia grafica, installa GPG Suite invece di Homebrew.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Subito dopo l&#8217;installazione verifica che tutto sia a posto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;output mostra la versione del programma e gli algoritmi supportati:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg (GnuPG) 2.5.20\nlibgcrypt 1.12.2\nCopyright (C) 2026 g10 Code GmbH\n...\nAlgoritmi supportati:\nChiave pubblica: RSA, ELG, DSA, ECDH, ECDSA, EDDSA\nCifratura: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH\nHash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224\nCompressione: Non compresso, ZIP, ZLIB, BZIP2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Controlla due cose nell&#8217;output. La prima: la riga <code>EDDSA<\/code> e <code>ECDH<\/code> negli algoritmi a chiave pubblica conferma il supporto alle curve moderne come Ed25519 e Curve25519, quelle che useremo. La seconda: <code>AES256<\/code> tra le cifrature simmetriche. Se vedi una versione 2.2.x o precedente, il sistema operativo \u00e8 datato e alcune funzionalit\u00e0 potrebbero mancare. In quel caso valuta l&#8217;aggiornamento del sistema o l&#8217;installazione dai sorgenti.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una nota per chi usa Windows: il supporto ufficiale di alcuni strumenti correlati alla riga di comando \u00e8 stato interrotto su quella piattaforma, ma GnuPG su Windows tramite Gpg4win resta pienamente mantenuto. Non confondere lo stato dei diversi progetti.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-2-configurare-gpg-agent-e-pinentry\">Step 2: Configurare gpg-agent e pinentry<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prima di generare chiavi vale la pena configurare l&#8217;ambiente. <strong>gpg-agent<\/strong> \u00e8 il demone che gestisce le chiavi private in memoria e ti evita di reinserire la passphrase a ogni operazione. Il programma <strong>pinentry<\/strong> \u00e8 quello che mostra la finestra (grafica o testuale) in cui digiti la passphrase. Quando questi due componenti non collaborano nascono molti errori comuni.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crea la directory di configurazione con i permessi corretti. La cartella <code>~\/.gnupg<\/code> deve essere accessibile solo dal tuo utente, altrimenti GPG si rifiuta di funzionare per ragioni di sicurezza:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/.gnupg\nchmod 700 ~\/.gnupg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Configura gpg-agent creando il file <code>~\/.gnupg\/gpg-agent.conf<\/code>. Le righe seguenti impostano una cache della passphrase di due ore e specificano il programma pinentry. Su macOS usa <code>pinentry-mac<\/code>, su Linux con interfaccia grafica <code>pinentry-gnome3<\/code> o <code>pinentry-qt<\/code>, in ambienti solo testo <code>pinentry-curses<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># ~\/.gnupg\/gpg-agent.conf\ndefault-cache-ttl 7200\nmax-cache-ttl 28800\npinentry-program \/usr\/bin\/pinentry-curses\n\n# Su macOS:\n# pinentry-program \/opt\/homebrew\/bin\/pinentry-mac<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Imposta poi alcuni valori predefiniti per le preferenze degli algoritmi nel file <code>~\/.gnupg\/gpg.conf<\/code>. Queste righe dicono a GPG di preferire algoritmi forti e di mostrare le impronte complete a 40 caratteri, riducendo il rischio di confondere chiavi diverse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># ~\/.gnupg\/gpg.conf\npersonal-cipher-preferences AES256 AES192 AES\npersonal-digest-preferences SHA512 SHA384 SHA256\ncert-digest-algo SHA512\ndefault-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed\nkeyid-format 0xlong\nwith-fingerprint\nno-emit-version\nno-comments<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dopo aver modificato la configurazione, riavvia l&#8217;agent perch\u00e9 legga i nuovi valori:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpgconf --kill gpg-agent\ngpg-connect-agent \/bye<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Questa configurazione iniziale ti risparmia ore di debugging. La cache della passphrase rende l&#8217;uso quotidiano fluido, le preferenze sugli algoritmi garantiscono che firme e cifrature usino SHA-512 e AES-256 invece di default pi\u00f9 deboli, e il formato esteso dei key ID previene gli attacchi basati su collisioni di identificatori brevi. Se vuoi capire meglio perch\u00e9 SHA-512 conta, leggi la nostra spiegazione su <a href=\"\/it\/funzioni-hash\/\">come funzionano le funzioni hash crittografiche<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-3-generare-una-coppia-di-chiavi-ed25519\">Step 3: Generare una coppia di chiavi Ed25519<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Arriviamo al cuore della guida. Genereremo una coppia di chiavi moderna basata sulla curva ellittica Ed25519 per la firma e Curve25519 per la cifratura. Rispetto a RSA, le curve ellittiche offrono la stessa sicurezza con chiavi molto pi\u00f9 piccole e operazioni pi\u00f9 rapide. Una chiave Ed25519 da 256 bit fornisce una robustezza paragonabile a una RSA da circa 3072 bit, ma \u00e8 enormemente pi\u00f9 veloce.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il modo pi\u00f9 controllato per generare le chiavi \u00e8 la modalit\u00e0 interattiva avanzata, che ti permette di scegliere l&#8217;algoritmo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --full-generate-key --expert<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GPG ti chieder\u00e0 il tipo di chiave. Scegli l&#8217;opzione per ECC (curve ellittiche), poi seleziona Curve 25519. Imposta una scadenza ragionevole, ad esempio due anni, e inserisci nome, email e un commento opzionale. Al termine GPG ti chieder\u00e0 una passphrase robusta: questa \u00e8 l&#8217;ultima linea di difesa se qualcuno copia il tuo file di chiave privata.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per chi preferisce un comando rapido e non interattivo, la modalit\u00e0 veloce produce lo stesso risultato in una riga sola. Il primo comando crea la chiave primaria di firma, il secondo aggiunge una sottochiave di cifratura:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Chiave primaria Ed25519 valida 2 anni\ngpg --quick-generate-key \"Mario Rossi &lt;mario@example.it&gt;\" ed25519 sign 2y\n\n# Aggiungi una sottochiave di cifratura Curve25519\ngpg --quick-add-key TUO_FINGERPRINT cv25519 encrypt 2y<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sostituisci <code>TUO_FINGERPRINT<\/code> con l&#8217;impronta completa della chiave appena creata, che recuperi con <code>gpg --list-keys --with-colons<\/code>. Una volta generate le chiavi, verifica il risultato:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --list-secret-keys --keyid-format=long<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;output mostra la chiave primaria (sec), la sottochiave (ssb), l&#8217;identit\u00e0 utente (uid) e l&#8217;impronta a 40 caratteri esadecimali:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sec   ed25519\/0x4F2A9C1B8E7D5A30 2026-06-13 [SC] [scade: 2028-06-12]\n      A1B2C3D4E5F60718293A4B5C6D7E8F904F2A9C1B\nuid                 [  assoluta ] Mario Rossi &lt;mario@example.it&gt;\nssb   cv25519\/0x9D3E1F7A2C8B6045 2026-06-13 [E] [scade: 2028-06-12]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I codici tra parentesi quadre indicano le capacit\u00e0: <code>S<\/code> per firma, <code>C<\/code> per certificazione, <code>E<\/code> per cifratura. La chiave primaria firma e certifica, la sottochiave cifra. L&#8217;impronta completa (la riga di 40 caratteri) \u00e8 il dato da condividere e verificare di persona: il key ID breve pu\u00f2 essere falsificato, l&#8217;impronta completa no.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se hai bisogno della massima compatibilit\u00e0 con sistemi datati, puoi ancora generare chiavi RSA 4096. La tabella seguente confronta le opzioni cos\u00ec scegli con cognizione di causa.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Tipo di chiave<\/th><th>Dimensione<\/th><th>Velocit\u00e0<\/th><th>Compatibilit\u00e0<\/th><th>Quando usarla<\/th><\/tr><\/thead><tbody>\n<tr><td>Ed25519 \/ Curve25519<\/td><td>256 bit<\/td><td>Molto alta<\/td><td>Buona (GPG 2.1+)<\/td><td>Scelta predefinita nel 2026<\/td><\/tr>\n<tr><td>RSA 4096<\/td><td>4096 bit<\/td><td>Bassa<\/td><td>Massima<\/td><td>Sistemi legacy o hardware datato<\/td><\/tr>\n<tr><td>RSA 3072<\/td><td>3072 bit<\/td><td>Media<\/td><td>Massima<\/td><td>Compromesso compatibilit\u00e0\/prestazioni<\/td><\/tr>\n<tr><td>NIST P-256<\/td><td>256 bit<\/td><td>Alta<\/td><td>Buona<\/td><td>Requisiti di conformit\u00e0 FIPS<\/td><\/tr>\n<tr><td>RSA 2048<\/td><td>2048 bit<\/td><td>Media<\/td><td>Massima<\/td><td>Sconsigliata per nuove chiavi<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-4-creare-il-certificato-di-revoca\">Step 4: Creare il certificato di revoca<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Questo passaggio sembra noioso e viene saltato di continuo. \u00c8 l&#8217;errore pi\u00f9 costoso che puoi commettere con GPG. Il <strong>certificato di revoca<\/strong> \u00e8 un file che annulla pubblicamente la tua chiave. Ti serve quando perdi la chiave privata, quando dimentichi la passphrase o quando la chiave viene compromessa. Senza di esso, una chiave compromessa resta valida agli occhi del mondo finch\u00e9 non scade, e nessuno pu\u00f2 fermarla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il punto cruciale \u00e8 generare il certificato di revoca <strong>subito<\/strong>, quando hai ancora accesso alla chiave privata e ricordi la passphrase. Se aspetti il momento in cui ti serve davvero, sar\u00e0 troppo tardi. Genera il certificato cos\u00ec:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --output ~\/revoca-mario.asc --gen-revoke 0x4F2A9C1B8E7D5A30<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GPG ti chieder\u00e0 il motivo della revoca. Per un certificato preventivo scegli &#8220;nessun motivo specificato&#8221; o &#8220;la chiave \u00e8 stata compromessa&#8221;. Inserisci la passphrase e otterrai un file ASCII. Il contenuto assomiglia a questo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-----BEGIN PGP PUBLIC KEY BLOCK-----\nComment: Questo e' un certificato di revoca\n\niHgEIBYIACAWIQShssPU5fYHGCk6S1xtfo+QTyqcGwUCZ...\n...\n=aB3x\n-----END PGP PUBLIC KEY BLOCK-----<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ora la parte delicata: dove conservarlo. Questo file ha lo stesso potere distruttivo di un comando di cancellazione. Chiunque lo possieda pu\u00f2 revocare la tua chiave. Conservalo su una chiavetta USB cifrata, stampato in cassaforte o in un password manager sicuro. Non lasciarlo nella cartella <code>~\/.gnupg<\/code> accanto alla chiave: se perdi quella directory, perdi anche il certificato.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se un giorno dovrai usarlo, lo importi e lo pubblichi sui keyserver con due comandi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --import ~\/revoca-mario.asc\ngpg --keyserver hkps:\/\/keys.openpgp.org --send-keys 0x4F2A9C1B8E7D5A30<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Da quel momento chiunque scarichi la tua chiave vedr\u00e0 che \u00e8 revocata e smetter\u00e0 di usarla per cifrare nuovi messaggi. La revoca \u00e8 permanente e non si annulla, quindi usala solo quando serve davvero.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-5-esportare-e-pubblicare-la-chiave-pubblica\">Step 5: Esportare e pubblicare la chiave pubblica<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La chiave pubblica esiste per essere distribuita. Pi\u00f9 persone la hanno, pi\u00f9 persone possono inviarti messaggi cifrati e verificare le tue firme. Esportala in formato ASCII (detto &#8220;armatura&#8221;) con l&#8217;opzione <code>--armor<\/code>, che produce testo leggibile invece di dati binari, comodo da incollare in email e pagine web:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Esporta la chiave pubblica in formato testo\ngpg --armor --export 0x4F2A9C1B8E7D5A30 &gt; mario-pubblica.asc\n\n# Esporta la chiave privata per il backup (custodiscila!)\ngpg --armor --export-secret-keys 0x4F2A9C1B8E7D5A30 &gt; mario-privata.asc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Il file della chiave pubblica inizia con <code>-----BEGIN PGP PUBLIC KEY BLOCK-----<\/code> e puoi condividerlo senza timori. Il file della chiave privata, invece, va trattato come il segreto pi\u00f9 prezioso che hai: cifralo, mettilo su supporto offline e non caricarlo mai online.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"keyserver-moderni-e-wkd\">Keyserver moderni e WKD<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Per anni i keyserver SKS hanno permesso di cercare chiavi per email. Quella rete \u00e8 ormai deprecata: soffriva di attacchi di &#8220;avvelenamento&#8221; delle chiavi e di problemi di manutenzione, e oggi \u00e8 praticamente abbandonata. Il keyserver di riferimento nel 2026 \u00e8 <strong>keys.openpgp.org<\/strong>, che verifica le email prima di pubblicare gli indirizzi e non accetta firme di terzi non richieste. Pubblica la tua chiave cos\u00ec:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --keyserver hkps:\/\/keys.openpgp.org --send-keys 0x4F2A9C1B8E7D5A30<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;alternativa pi\u00f9 robusta \u00e8 <strong>Web Key Directory<\/strong> (WKD), un meccanismo che pubblica la chiave su un percorso standard del tuo dominio web. Quando qualcuno cifra un messaggio per <code>mario@example.it<\/code>, il suo client GPG scarica automaticamente la chiave da <code>example.it<\/code> senza bisogno di keyserver. \u00c8 il modo pi\u00f9 affidabile per distribuire chiavi a chi possiede un dominio proprio, ed \u00e8 il metodo che la nostra guida su <a href=\"\/it\/proton-mail-vs-tuta\/\">Proton Mail e Tuta<\/a> menziona per l&#8217;interoperabilit\u00e0 tra provider di posta cifrata.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-6-importare-e-verificare-le-chiavi-altrui\">Step 6: Importare e verificare le chiavi altrui<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per cifrare un file destinato a qualcuno, ti serve la sua chiave pubblica. Importarla \u00e8 banale; verificarla \u00e8 il passaggio che la gente salta e che invece determina se GPG ti protegge davvero. Importa una chiave ricevuta come file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --import chiave-di-anna.asc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Oppure scaricala da un keyserver cercando per email o impronta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --keyserver hkps:\/\/keys.openpgp.org --search-keys anna@example.it\n# oppure cercala tramite WKD del suo dominio\ngpg --locate-keys anna@example.it<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ora il punto critico. Importare una chiave non significa fidarsi di essa. Un attaccante potrebbe pubblicare una chiave falsa con il nome e l&#8217;email di Anna. Per verificare che la chiave sia autentica devi confrontare la sua impronta con quella che Anna ti comunica attraverso un canale separato e affidabile: di persona, per telefono riconoscendo la voce, o via un messaggio firmato su un canale gi\u00e0 verificato. Mostra l&#8217;impronta cos\u00ec:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --fingerprint anna@example.it<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Quando le 40 cifre coincidono, e solo allora, certifica la chiave come affidabile firmandola localmente. Questo dice a GPG che ti fidi di quella chiave per quell&#8217;identit\u00e0:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --sign-key anna@example.it<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Questo \u00e8 il modello di fiducia decentralizzato di OpenPGP, storicamente chiamato &#8220;rete di fiducia&#8221; (web of trust). A differenza dei certificati TLS verificati da un&#8217;autorit\u00e0 centrale, qui sei tu a decidere di chi fidarti. Il confronto delle impronte \u00e8 l&#8217;unico passaggio che separa una comunicazione sicura da una vulnerabile a un attacco &#8220;man in the middle&#8221;. Non saltarlo mai per le chiavi che contano.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-7-cifrare-un-file-con-la-chiave-pubblica\">Step 7: Cifrare un file con la chiave pubblica<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Con le chiavi pronte, cifrare \u00e8 semplice. La cifratura asimmetrica usa la chiave pubblica del destinatario, cos\u00ec solo lui potr\u00e0 decifrare con la sua chiave privata. Cifra un file per Anna:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Cifratura binaria (produce contratto.pdf.gpg)\ngpg --encrypt --recipient anna@example.it contratto.pdf\n\n# Cifratura in formato testo ASCII (produce contratto.pdf.asc)\ngpg --encrypt --armor --recipient anna@example.it contratto.pdf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Spesso vuoi cifrare un file in modo che <strong>tu stesso<\/strong> possa rileggerlo, oltre al destinatario. Per impostazione predefinita un file cifrato solo per Anna non \u00e8 leggibile nemmeno da te. Aggiungi te stesso tra i destinatari:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --encrypt --armor \\\n    --recipient anna@example.it \\\n    --recipient mario@example.it \\\n    contratto.pdf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La combinazione pi\u00f9 usata nella pratica \u00e8 cifrare <strong>e<\/strong> firmare in un solo comando. Cos\u00ec Anna riceve un file riservato che pu\u00f2 anche verificare provenire davvero da te:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --encrypt --sign --armor --recipient anna@example.it contratto.pdf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Per decifrare un file ricevuto, Anna esegue semplicemente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --decrypt contratto.pdf.asc &gt; contratto.pdf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GPG le chieder\u00e0 la passphrase, decifrer\u00e0 il contenuto e, se il file era anche firmato, mostrer\u00e0 l&#8217;esito della verifica della firma. Un output di successo riporta qualcosa del tipo: <code>gpg: Firma valida da \"Mario Rossi\"<\/code>. Se la firma non \u00e8 valida, GPG lo segnala in modo evidente e dovresti trattare il file come sospetto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-8-cifratura-simmetrica-con-passphrase\">Step 8: Cifratura simmetrica con passphrase<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Non sempre serve la crittografia a chiave pubblica. Per proteggere un file che vuoi solo archiviare, o da condividere con qualcuno che non usa GPG, la <strong>cifratura simmetrica<\/strong> \u00e8 pi\u00f9 pratica. Usa una sola passphrase, senza chiavi pubbliche, e chiunque conosca la passphrase pu\u00f2 decifrare. Il comando \u00e8 breve:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --symmetric --cipher-algo AES256 backup.tar<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;opzione <code>--cipher-algo AES256<\/code> forza l&#8217;uso di AES a 256 bit, l&#8217;algoritmo standard per la cifratura robusta, lo stesso analizzato nella nostra guida su <a href=\"\/it\/veracrypt-cifrare-disco-aes-256\/\">come cifrare un disco con VeraCrypt e AES-256<\/a>. GPG ti chieder\u00e0 di inserire una passphrase due volte e produrr\u00e0 <code>backup.tar.gpg<\/code>. La forma abbreviata del comando \u00e8 <code>gpg -c backup.tar<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La sicurezza della cifratura simmetrica dipende interamente dalla forza della passphrase. AES-256 \u00e8 inviolabile con la forza bruta, ma una passphrase debole vanifica tutto. GPG applica una funzione di derivazione della chiave (KDF) per rallentare gli attacchi, eppure una passphrase di poche lettere resta indovinabile. Usa una frase lunga e casuale. Se vuoi capire cosa rende una passphrase realmente forte, leggi la nostra analisi sulla <a href=\"\/it\/sicurezza-delle-password\/\">sicurezza delle password<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per decifrare il file simmetrico, il comando \u00e8 lo stesso della cifratura asimmetrica, perch\u00e9 GPG riconosce automaticamente il tipo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --decrypt backup.tar.gpg &gt; backup.tar<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Un uso elegante della cifratura simmetrica \u00e8 la pipe con altri comandi. Puoi cifrare al volo l&#8217;output di un backup senza creare file intermedi non cifrati su disco, riducendo la superficie di esposizione:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tar czf - ~\/documenti | gpg -c --cipher-algo AES256 -o documenti.tar.gz.gpg<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-9-firme-digitali-e-verifica\">Step 9: Firme digitali e verifica<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le firme digitali dimostrano due cose: che un file proviene da te e che non \u00e8 stato alterato. GPG offre tre modalit\u00e0 di firma, ognuna con un uso diverso. La firma standard incorpora il documento nel file firmato e lo comprime:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --sign documento.txt          # produce documento.txt.gpg (binario)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La firma in chiaro (clearsign) mantiene il testo leggibile e aggiunge la firma in coda, perfetta per email e messaggi su forum:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --clearsign comunicato.txt    # produce comunicato.txt.asc leggibile<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La firma separata (detached) \u00e8 la pi\u00f9 usata per il software. Crea un file di firma indipendente che accompagna il file originale senza modificarlo, ideale per verificare archivi, ISO e rilasci:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --detach-sign --armor release-v2.tar.gz   # produce release-v2.tar.gz.asc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Chiunque abbia la tua chiave pubblica verifica la firma separata fornendo entrambi i file. Questo \u00e8 esattamente il meccanismo con cui verifichi l&#8217;autenticit\u00e0 degli aggiornamenti software e delle immagini delle distribuzioni Linux:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --verify release-v2.tar.gz.asc release-v2.tar.gz<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Un esito positivo mostra l&#8217;identit\u00e0 del firmatario e la conferma della validit\u00e0. Attenzione alla riga di avvertimento che pu\u00f2 comparire anche quando la firma \u00e8 matematicamente valida:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg: Firma effettuata gio 13 giu 2026 10:42:18 CEST\ngpg:                con chiave EDDSA 0x4F2A9C1B8E7D5A30\ngpg: Firma valida da \"Mario Rossi &lt;mario@example.it&gt;\"\ngpg: ATTENZIONE: questa chiave non ha una firma affidabile!\ngpg:          non c'e' indicazione che la firma appartenga al proprietario.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Quell&#8217;avvertimento non significa che la firma sia falsa. Significa che non hai certificato la chiave del firmatario come affidabile (vedi Step 6). La firma \u00e8 valida matematicamente, ma GPG ti ricorda che non hai verificato l&#8217;identit\u00e0 dietro la chiave. Per i tuoi contatti verificati l&#8217;avvertimento sparisce dopo che firmi la loro chiave. Tutto questo poggia sulle stesse basi matematiche descritte nella guida su <a href=\"\/it\/sha-256\/\">SHA-256<\/a>, l&#8217;algoritmo di hash che riassume il documento prima della firma.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-10-sottochiavi-scadenza-e-rotazione\">Step 10: Sottochiavi, scadenza e rotazione<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un setup professionale di GPG separa la chiave primaria dalle sottochiavi operative. La chiave primaria serve solo a certificare la tua identit\u00e0 e a firmare le sottochiavi: \u00e8 la tua identit\u00e0 a lungo termine e va protetta al massimo, idealmente tenuta offline. Le <strong>sottochiavi<\/strong>, una per la firma e una per la cifratura, gestiscono il lavoro quotidiano e possono essere ruotate o revocate senza distruggere la tua identit\u00e0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per gestire le sottochiavi entra nell&#8217;editor interattivo della chiave:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --expert --edit-key 0x4F2A9C1B8E7D5A30\n\n# Dentro il prompt gpg&gt;:\ngpg&gt; addkey          # aggiunge una sottochiave\ngpg&gt; expire          # cambia la scadenza\ngpg&gt; key 1           # seleziona una sottochiave\ngpg&gt; revkey          # revoca la sottochiave selezionata\ngpg&gt; save            # salva ed esci<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La scadenza non \u00e8 un difetto, \u00e8 una rete di sicurezza. Una chiave con scadenza si disattiva da sola se la perdi o la dimentichi, evitando che resti valida per sempre nelle mani sbagliate. Quando una chiave si avvicina alla scadenza, basta estenderla: non devi generarne una nuova n\u00e9 perdere la rete di fiducia accumulata. Estendi la scadenza con il comando <code>expire<\/code> nell&#8217;editor e poi ripubblica la chiave aggiornata sul keyserver.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo schema pi\u00f9 sicuro consiste nel tenere la chiave primaria su un supporto offline (una chiavetta USB cifrata riposta in cassaforte) e nel portare con te solo le sottochiavi sul computer di lavoro. Per farlo esporti le sole sottochiavi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Esporta solo le sottochiavi segrete (non la primaria)\ngpg --armor --export-secret-subkeys 0x4F2A9C1B8E7D5A30 &gt; sottochiavi.asc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se una sottochiave operativa viene compromessa, la revochi e ne generi una nuova senza intaccare l&#8217;identit\u00e0 primaria. Questo limita i danni e ti evita di ricostruire da zero tutte le firme di fiducia, che sono il capitale pi\u00f9 difficile da ricreare in OpenPGP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-11-gpg-con-yubikey-e-smartcard\">Step 11: GPG con YubiKey e smartcard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il livello di sicurezza pi\u00f9 alto sposta la chiave privata su un dispositivo hardware. Una <strong>YubiKey<\/strong> o una smartcard OpenPGP genera e custodisce la chiave privata in un chip da cui non pu\u00f2 essere estratta. Le operazioni di firma e decifratura avvengono dentro il dispositivo: anche se il computer \u00e8 infetto, l&#8217;attaccante non pu\u00f2 copiare la chiave. Verifica che la smartcard sia riconosciuta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --card-status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se il demone delle smartcard funziona, vedrai i dati della carta, i suoi slot per le chiavi e i PIN configurati. Per spostare le tue sottochiavi sulla YubiKey, entra nell&#8217;editor della chiave e usa il comando <code>keytocard<\/code> dopo aver selezionato ciascuna sottochiave:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --edit-key 0x4F2A9C1B8E7D5A30\ngpg&gt; key 1\ngpg&gt; keytocard      # sposta la sottochiave selezionata sulla card\ngpg&gt; save<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Attenzione: <code>keytocard<\/code> trasferisce la chiave sul dispositivo e la rimuove dal disco. Esegui sempre un backup completo della chiave prima di questa operazione, altrimenti se la YubiKey si rompe perdi tutto. La nostra guida su <a href=\"\/it\/google-authenticator-vs-microsoft-vs-authy\/\">le app di autenticazione<\/a> spiega perch\u00e9 l&#8217;hardware token resta il fattore pi\u00f9 robusto contro il furto di credenziali, e lo stesso principio vale per le chiavi GPG.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con la chiave sulla card, ogni firma o decifratura richiede l&#8217;inserimento fisico del PIN tramite pinentry. Dopo tre PIN errati la carta si blocca e serve il PIN amministratore per sbloccarla, una protezione contro i tentativi di forza bruta su un dispositivo rubato.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-12-automazione-e-backup-completo\">Step 12: Automazione e backup completo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;ultimo passaggio rende il setup sostenibile nel tempo. Inizia da un backup completo e cifrato dell&#8217;intero ambiente GPG, che include chiavi, fiducia e configurazione:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Backup completo della directory GnuPG\ntar czf - ~\/.gnupg | gpg -c --cipher-algo AES256 -o gnupg-backup.tar.gz.gpg\n\n# Esporta la base di dati della fiducia separatamente\ngpg --export-ownertrust &gt; ownertrust.txt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Per l&#8217;automazione in script non interattivi, ad esempio backup pianificati o pipeline CI, usa la modalit\u00e0 batch. Evita di mettere la passphrase in chiaro negli script: passala da una variabile d&#8217;ambiente o da un gestore di segreti, e usa <code>--pinentry-mode loopback<\/code> per leggere la passphrase senza aprire una finestra grafica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"$GPG_PASSPHRASE\" | gpg --batch --yes \\\n    --pinentry-mode loopback \\\n    --passphrase-fd 0 \\\n    --symmetric --cipher-algo AES256 \\\n    -o backup-notturno.tar.gpg backup-notturno.tar<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Per cifrare automaticamente i backup verso una chiave pubblica (senza passphrase interattiva, perch\u00e9 la chiave pubblica non ne richiede), uno script systemd o cron pu\u00f2 lanciare:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpg --batch --yes --trust-model always \\\n    --encrypt --recipient backup@example.it \\\n    -o \/mnt\/backup\/dati-$(date +%F).tar.gpg \/tmp\/dati.tar<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Questo schema cifra automaticamente i backup notturni verso una chiave dedicata, la cui chiave privata resta su un sistema separato per il ripristino. \u00c8 lo stesso principio della cifratura applicativa che vedi nella guida su <a href=\"\/it\/crittografia-end-to-end-nodejs\/\">crittografia end-to-end in Node.js<\/a>: i dati nascono cifrati e restano illeggibili in transito e a riposo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"openpgp-nel-2026-rfc-9580-e-la-separazione-librepgp\">OpenPGP nel 2026: RFC 9580 e la separazione LibrePGP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Capire lo standard sottostante aiuta a interpretare le scelte di GPG. Nel luglio 2024 l&#8217;IETF ha pubblicato <strong>RFC 9580<\/strong>, il nuovo standard OpenPGP noto come &#8220;crypto refresh&#8221;. Questo documento modernizza formati e algoritmi, introduce schemi di cifratura autenticata pi\u00f9 solidi e definisce la base su cui i client OpenPGP costruiranno nel resto del decennio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La pubblicazione di RFC 9580 ha per\u00f2 evidenziato una frattura nella comunit\u00e0. Alcuni sviluppatori, tra cui il team principale di GnuPG, hanno espresso disaccordo sulla direzione tecnica e hanno proposto un percorso alternativo chiamato <strong>LibrePGP<\/strong>. Il risultato pratico \u00e8 che esistono due specifiche in evoluzione parallela: OpenPGP secondo RFC 9580 e LibrePGP, con differenze su alcuni formati. Per l&#8217;utente quotidiano l&#8217;impatto \u00e8 limitato, perch\u00e9 GnuPG mantiene un&#8217;ampia compatibilit\u00e0, ma vale la pena conoscere il contesto quando incontri incompatibilit\u00e0 tra client diversi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cosa significa in concreto per te nel 2026. Usa GnuPG nella serie stabile pi\u00f9 recente per la massima compatibilit\u00e0. Quando scambi chiavi e messaggi con interlocutori che usano client diversi, come Sequoia o OpenPGP.js, testa l&#8217;interoperabilit\u00e0 su un messaggio di prova prima di affidarti a comunicazioni critiche. E preferisci algoritmi ampiamente supportati (Ed25519, Curve25519, AES-256) che funzionano su entrambe le specifiche senza sorprese.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La frammentazione non rende GPG insicuro. Le primitive crittografiche di base restano solide e condivise. Cambia solo il modo in cui alcuni metadati e formati vengono codificati, e i client maturi gestiscono entrambe le varianti. Se progetti sistemi che devono durare anni, scegli configurazioni conservative e documenta le versioni che usi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"gpg-e-crittografia-post-quantistica\">GPG e crittografia post-quantistica<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La domanda pi\u00f9 frequente nel 2026 riguarda i computer quantistici. Un computer quantistico abbastanza potente romperebbe RSA e le curve ellittiche come Ed25519, su cui GPG si basa oggi. La minaccia non \u00e8 immediata, ma la strategia &#8220;raccogli ora, decifra dopo&#8221; rende urgente la transizione: dati cifrati oggi e intercettati potrebbero essere decifrati in futuro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo standard OpenPGP si sta muovendo verso algoritmi resistenti ai computer quantistici, in particolare gli schemi basati su reticoli come ML-KEM (l&#8217;algoritmo standardizzato dal NIST, derivato da Kyber). Il lavoro \u00e8 in corso e alcune implementazioni sperimentali stanno comparendo nei rami di sviluppo, ma per la serie stabile attuale conviene trattare il supporto post-quantistico come una funzionalit\u00e0 in maturazione pi\u00f9 che come una garanzia di produzione. Verifica sempre le note di rilascio della versione esatta che installi prima di affidarti a una cifratura &#8220;ibrida&#8221; classica pi\u00f9 post-quantistica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cosa fare in pratica oggi. Per dati che devono restare segreti oltre il 2035, valuta strati di protezione aggiuntivi e mantieni i sistemi aggiornati per adottare le chiavi post-quantistiche appena saranno stabili. Per i dati comuni, le chiavi Ed25519 e RSA-4096 restano sicure per anni. Il nostro approfondimento sulla <a href=\"\/it\/cryptography-hub\/\">crittografia e le funzioni di fiducia digitale<\/a> inquadra la transizione post-quantistica nel contesto pi\u00f9 ampio dell&#8217;ecosistema crittografico.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"6-errori-comuni-da-evitare-con-gpg\">6 errori comuni da evitare con GPG<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Questi sono gli sbagli che si ripetono pi\u00f9 spesso e che rendono GPG meno sicuro o frustrante da usare. Conoscerli in anticipo ti risparmia problemi seri.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Non creare il certificato di revoca.<\/strong> Senza certificato di revoca, una chiave compromessa o persa resta valida fino alla scadenza. Generalo subito dopo la creazione delle chiavi e conservalo offline.<\/li>\n<li><strong>Non verificare le impronte.<\/strong> Importare una chiave non significa fidarsi. Senza confrontare l&#8217;impronta a 40 caratteri tramite un canale separato, sei esposto a un attacco man in the middle.<\/li>\n<li><strong>Permessi sbagliati su ~\/.gnupg.<\/strong> Se la directory non \u00e8 impostata a 700 e i file a 600, GPG mostra avvisi o si rifiuta di funzionare. Correggi con <code>chmod 700 ~\/.gnupg<\/code>.<\/li>\n<li><strong>Passphrase deboli.<\/strong> AES-256 \u00e8 inutile dietro una passphrase di sei caratteri. La cifratura simmetrica \u00e8 forte solo quanto la frase segreta che scegli.<\/li>\n<li><strong>Tenere la chiave privata online senza backup.<\/strong> Se perdi <code>~\/.gnupg<\/code> senza backup, perdi l&#8217;identit\u00e0 per sempre. Se la tieni su un cloud non cifrato, la regali a chi viola l&#8217;account.<\/li>\n<li><strong>Chiavi senza scadenza.<\/strong> Una chiave eterna che non controlli pi\u00f9 resta valida indefinitamente. Imposta sempre una scadenza ed estendila quando serve.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"risoluzione-dei-problemi-8-errori-frequenti\">Risoluzione dei problemi: 8 errori frequenti<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quando GPG smette di funzionare, il problema \u00e8 quasi sempre nell&#8217;agent, nei permessi o nel pinentry. La tabella riassume i messaggi di errore pi\u00f9 comuni e la loro soluzione.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Errore<\/th><th>Causa<\/th><th>Soluzione<\/th><\/tr><\/thead><tbody>\n<tr><td><code>Inappropriate ioctl for device<\/code><\/td><td>pinentry non trova un terminale<\/td><td>Esegui <code>export GPG_TTY=$(tty)<\/code> nel profilo della shell<\/td><\/tr>\n<tr><td><code>No pinentry<\/code><\/td><td>Programma pinentry mancante o non configurato<\/td><td>Installa pinentry e indicane il percorso in gpg-agent.conf<\/td><\/tr>\n<tr><td><code>Agent refused operation<\/code><\/td><td>gpg-agent bloccato o cache corrotta<\/td><td><code>gpgconf --kill gpg-agent<\/code> e riprova<\/td><\/tr>\n<tr><td><code>unsafe permissions on homedir<\/code><\/td><td>Permessi errati su ~\/.gnupg<\/td><td><code>chmod 700 ~\/.gnupg<\/code> e poi <code>chmod 600 ~\/.gnupg\/*<\/code><\/td><\/tr>\n<tr><td><code>No secret key<\/code><\/td><td>Chiave privata assente o non importata<\/td><td>Importa la chiave privata o verifica con <code>--list-secret-keys<\/code><\/td><\/tr>\n<tr><td><code>decryption failed: No secret key<\/code><\/td><td>File cifrato per un destinatario diverso<\/td><td>Serve la chiave privata del destinatario corretto<\/td><\/tr>\n<tr><td><code>keyserver receive failed<\/code><\/td><td>Keyserver SKS deprecato o rete bloccata<\/td><td>Usa <code>hkps:\/\/keys.openpgp.org<\/code> sulla porta 443<\/td><\/tr>\n<tr><td><code>WARNING: unsafe ownership<\/code><\/td><td>La directory appartiene a un altro utente<\/td><td><code>chown -R $USER ~\/.gnupg<\/code><\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Due trucchi diagnostici risolvono la maggior parte dei casi ostinati. Il primo: imposta sempre la variabile <code>GPG_TTY<\/code> aggiungendola al file <code>~\/.bashrc<\/code> o <code>~\/.zshrc<\/code>, perch\u00e9 senza di essa pinentry fallisce silenziosamente in molti contesti, specialmente in SSH e negli script. Il secondo: quando un comando si comporta in modo strano, aggiungi <code>--verbose<\/code> o addirittura <code>--debug-level guru<\/code> per vedere esattamente cosa GPG sta tentando di fare.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Aggiungi al profilo della shell per evitare errori di pinentry\necho 'export GPG_TTY=$(tty)' &gt;&gt; ~\/.bashrc\nsource ~\/.bashrc\n\n# Riavvio completo dell'agent quando nulla funziona\ngpgconf --kill all\ngpg-connect-agent reloadagent \/bye<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se il problema persiste su una smartcard, controlla che <code>scdaemon<\/code> sia installato e che nessun altro processo (come un&#8217;app del gestore della YubiKey) tenga occupato il lettore. Solo un programma alla volta pu\u00f2 accedere alla card.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"consigli-avanzati-per-un-setup-professionale\">Consigli avanzati per un setup professionale<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una volta padroneggiate le basi, alcune pratiche distinguono un uso amatoriale da uno professionale. Queste tecniche valgono soprattutto per chi gestisce firme di software, rilasci o segreti aziendali.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"firmare-i-commit-git-con-gpg\">Firmare i commit Git con GPG<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Firmare i commit dimostra che il codice proviene davvero da te e impedisce che qualcuno spacci modifiche a tuo nome. Configura Git per usare la tua sottochiave di firma e abilita la firma automatica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git config --global user.signingkey 0x4F2A9C1B8E7D5A30\ngit config --global commit.gpgsign true\ngit config --global gpg.program gpg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Da quel momento ogni commit porta una firma verificabile, e piattaforme come GitHub e GitLab mostrano un badge &#8220;Verified&#8221; accanto ai tuoi contributi quando carichi la chiave pubblica nel profilo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cifrare-segreti-nei-repository\">Cifrare segreti nei repository<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Per conservare segreti (chiavi API, password di servizio) in un repository condiviso senza esporli, GPG cifra i file verso le chiavi pubbliche del team. Strumenti come git-crypt e SOPS si appoggiano a GPG per cifrare in modo trasparente solo i file sensibili, lasciando il resto del codice leggibile. Ogni membro decifra con la propria chiave privata, e revocare l&#8217;accesso a una persona significa ri-cifrare escludendo la sua chiave.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un&#8217;ultima raccomandazione: documenta il tuo schema di chiavi. Annota quali sottochiavi usi per cosa, dove sono i backup e quando scadono. Quando gestisci pi\u00f9 chiavi nel tempo, la confusione \u00e8 il vero nemico della sicurezza. Per il quadro completo della crittografia applicata, la nostra guida sulla <a href=\"\/it\/openssl-certificati-chiavi\/\">gestione di chiavi e certificati con OpenSSL<\/a> mostra l&#8217;approccio complementare basato su X.509.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"domande-frequenti-su-gpg\">Domande frequenti su GPG<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"qual-e-la-differenza-tra-gpg-gnupg-openpgp-e-pgp\">Qual \u00e8 la differenza tra GPG, GnuPG, OpenPGP e PGP?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">OpenPGP \u00e8 lo standard aperto (definito in RFC 9580). GnuPG, abbreviato GPG, \u00e8 l&#8217;implementazione libera e gratuita di quello standard, ed \u00e8 quella che usiamo in questa guida. PGP era il software commerciale originale da cui tutto \u00e8 nato negli anni Novanta. Nell&#8217;uso quotidiano GPG e GnuPG sono sinonimi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"gpg-e-sicuro-nel-2026\">GPG \u00e8 sicuro nel 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ec, le primitive crittografiche di GPG (Ed25519, Curve25519, AES-256, SHA-512) restano robuste contro gli attacchi classici. I rischi reali non riguardano la matematica ma l&#8217;uso: passphrase deboli, chiavi non verificate e backup mancanti. La minaccia quantistica esiste ma non \u00e8 ancora pratica, e lo standard si sta evolvendo verso algoritmi resistenti.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"quale-algoritmo-di-chiave-dovrei-scegliere\">Quale algoritmo di chiave dovrei scegliere?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nel 2026 la scelta predefinita \u00e8 Ed25519 per la firma e Curve25519 per la cifratura: chiavi piccole, veloci e sicure, supportate da GnuPG 2.1 in poi. Scegli RSA 4096 solo se devi interagire con sistemi datati che non comprendono le curve ellittiche moderne.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cosa-succede-se-dimentico-la-passphrase\">Cosa succede se dimentico la passphrase?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Non esiste un modo per recuperare la passphrase: \u00e8 una protezione, non un account che puoi reimpostare. Se la dimentichi, la chiave privata diventa inutilizzabile. Per questo serve il certificato di revoca creato in anticipo, che ti permette almeno di dichiarare pubblicamente non valida la chiave e generarne una nuova.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"posso-usare-la-stessa-chiave-su-piu-computer\">Posso usare la stessa chiave su pi\u00f9 computer?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ec. Esporta la chiave privata (o meglio le sole sottochiavi) e importala sull&#8217;altro dispositivo, oppure mettila su una YubiKey e portala con te. Per la sicurezza massima, esporta solo le sottochiavi con <code>--export-secret-subkeys<\/code> e tieni la chiave primaria offline su un unico supporto protetto.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"gpg-cifra-anche-loggetto-delle-email\">GPG cifra anche l&#8217;oggetto delle email?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No, e questo \u00e8 un limite noto. OpenPGP cifra il corpo del messaggio e gli allegati, ma l&#8217;oggetto, il mittente, il destinatario e gli altri metadati restano in chiaro. Se i metadati sono sensibili quanto il contenuto, valuta strumenti pensati per ridurli, come i provider di posta cifrata o le app di messaggistica end-to-end.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"devo-usare-un-keyserver-o-wkd-per-pubblicare-la-chiave\">Devo usare un keyserver o WKD per pubblicare la chiave?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Se possiedi un dominio, Web Key Directory \u00e8 la scelta pi\u00f9 affidabile, perch\u00e9 lega la chiave al tuo dominio e i client la trovano da soli. Altrimenti usa keys.openpgp.org, che verifica gli indirizzi email. Evita i vecchi keyserver della rete SKS, ormai deprecati per problemi di avvelenamento delle chiavi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"approfondimenti-correlati\">Approfondimenti correlati<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"\/it\/openssl-certificati-chiavi\/\">OpenSSL 3.5 LTS: chiavi e certificati in 12 step<\/a><\/li>\n<li><a href=\"\/it\/firme-digitali\/\">Firme digitali: come funzionano e perch\u00e9 le collisioni le minacciano<\/a><\/li>\n<li><a href=\"\/it\/funzioni-hash\/\">Funzioni hash crittografiche: propriet\u00e0, differenze e usi<\/a><\/li>\n<li><a href=\"\/it\/crittografia-end-to-end-nodejs\/\">Crittografia end-to-end in Node.js in 12 step<\/a><\/li>\n<li><a href=\"\/it\/veracrypt-cifrare-disco-aes-256\/\">VeraCrypt: cifrare un disco con AES-256 in 12 step<\/a><\/li>\n<li><a href=\"\/it\/proton-mail-vs-tuta\/\">Proton Mail vs Tuta: confronto tra email cifrate<\/a><\/li>\n<li><a href=\"\/it\/cryptography-hub\/\">Crittografia: funzioni hash, SHA e fiducia digitale<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"fonti-e-risorse-ufficiali\">Fonti e risorse ufficiali<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.gnupg.org\/\" target=\"_blank\" rel=\"noopener\">GnuPG, sito ufficiale del progetto<\/a><\/li>\n<li><a href=\"https:\/\/www.gnupg.org\/documentation\/manuals\/gnupg\/\" target=\"_blank\" rel=\"noopener\">Manuale ufficiale di GnuPG<\/a><\/li>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9580\" target=\"_blank\" rel=\"noopener\">RFC 9580, lo standard OpenPGP<\/a><\/li>\n<li><a href=\"https:\/\/keys.openpgp.org\/\" target=\"_blank\" rel=\"noopener\">keys.openpgp.org, keyserver verificato<\/a><\/li>\n<li><a href=\"https:\/\/www.gpg4win.org\/\" target=\"_blank\" rel=\"noopener\">Gpg4win per Windows<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Articolo aggiornato al 13 giugno 2026. I comandi sono testati su GnuPG 2.5.x. Verifica sempre la versione installata con <code>gpg --version<\/code>, perch\u00e9 i pacchetti delle distribuzioni possono restare indietro rispetto agli ultimi rilasci ufficiali.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cifrare un file con una password che chiunque pu\u00f2 indovinare non protegge niente. GPG (GNU Privacy Guard, o GnuPG) risolve il problema alla radice: usa crittografia a chiave pubblica per\u2026<\/p>\n","protected":false},"author":7,"featured_media":101,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-100","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cryptography"],"_links":{"self":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/comments?post=100"}],"version-history":[{"count":1,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts\/100\/revisions"}],"predecessor-version":[{"id":102,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts\/100\/revisions\/102"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/media\/101"}],"wp:attachment":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/media?parent=100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/categories?post=100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/tags?post=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}