Cifrare i backup con GPG: workflow completo da terminale

Pubblicato il 14/05/2026 Sicurezza

Se metti i tuoi backup in cloud senza cifrarli, ti fidi al 100% del provider. Se domani vengono bucati (o richiesti da un tribunale), tutti i tuoi dati vengono letti. Con GPG cifri prima del upload: il cloud archivia solo byte incomprensibili.

1. Installazione

sudo apt install gnupg           # Debian/Ubuntu
brew install gnupg               # macOS
# Windows: Gpg4win (gpg4win.org)

2. Genera la tua coppia di chiavi

gpg --full-generate-key
# Scegli:
# - RSA and RSA (1)
# - 4096 bits
# - Key valid for: 5 years (o infinita: 0)
# - Nome: Alessandro Barone
# - Email: info@ilbarone.net
# - Passphrase: MOLTO forte (proteggera' la chiave privata)

Genera 2 file in ~/.gnupg/: pubblica (condivisibile) e privata (segreta come oro).

3. Elenca chiavi generate

gpg --list-keys
gpg --list-secret-keys

Prendi nota del Key ID (16 hex chars, es. 1A2B3C4D5E6F7890).

4. Cifrare un file (per te stesso)

gpg --encrypt --recipient info@ilbarone.net backup.tar.gz
# genera backup.tar.gz.gpg (cifrato)
rm backup.tar.gz                      # elimina l'originale

5. Decifrare

gpg --decrypt backup.tar.gz.gpg > backup.tar.gz
# Ti chiede la passphrase della chiave privata

6. Backup script completo

#!/bin/bash
# /usr/local/bin/backup-encrypted.sh
set -e
DATE=$(date +%Y%m%d-%H%M)
SRC=/home/alessandro/Documenti
DST=/tmp/backup-$DATE.tar.gz
KEY=info@ilbarone.net
CLOUD=gdrive:BackupCifrati/

# 1. Comprimi
tar -czf $DST -C $SRC .

# 2. Cifra
gpg --encrypt --recipient $KEY $DST

# 3. Verifica cifratura ok
gpg --decrypt $DST.gpg >/dev/null && echo "OK cifratura verificata"

# 4. Upload su cloud (rclone gia' configurato)
rclone copy $DST.gpg $CLOUD

# 5. Pulizia locale
rm $DST $DST.gpg
echo "Backup cifrato uploadato: $DATE"

Chmod 755, poi crontab:

0 3 * * * /usr/local/bin/backup-encrypted.sh >> /var/log/backup.log 2>&1

7. Batch: cifrare tutti i file di una cartella

for f in *.pdf; do
    gpg --encrypt --recipient info@ilbarone.net "$f" && rm "$f"
done

8. Cifra simmetrica (senza chiave pubblica, solo password)

Se non vuoi gestire chiavi ma solo una password:

gpg --symmetric --cipher-algo AES256 backup.tar.gz
# Ti chiede una password, cifra con quella
# Chi ha la password decifra con:
gpg --decrypt backup.tar.gz.gpg > backup.tar.gz

9. Backup della chiave privata (fondamentale!)

Se perdi la chiave privata, i tuoi backup cifrati diventano illeggibili.

gpg --export-secret-keys --armor info@ilbarone.net > mia-privkey.asc
# STAMPA questo file, mettilo in cassaforte fisica
# OPPURE spezzalo con SSSS (Shamir Secret Sharing) in 3 pezzi conservati in 3 posti

10. Import su un nuovo computer

gpg --import mia-privkey.asc
gpg --edit-key info@ilbarone.net
> trust
> 5 (I trust ultimately)
> y
> save

11. Sub-key per uso quotidiano

Best practice avanzata: la chiave master resta offline, generi sub-key per operazioni quotidiane. Se un sub-key viene compromesso, revochi solo quello senza perdere l'identita'. Guida Debian spiega bene.

12. Errore comune: "no valid recipient"

Significa che la chiave pubblica del destinatario non e' trusted. Fix:

gpg --edit-key destinatario@example.com
> trust > 5 > y > save
Alternativa moderna: age (github.com/FiloSottile/age) e' un tool piu' semplice di GPG, chiavi corte, sintassi minimale. Per uso personale e' sufficiente e piu' user-friendly. GPG resta lo standard interoperabile e supportato da ogni tool aziendale.