Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento. |
Guida verificata con Ubuntu: 22.04 24.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Questa guida spiega come utilizzare GnuPG su più dispositivi (es. computer portatile, di casa o del lavoro, ecc.) salvando le chiavi private su una memoria USB criptata.
La memorizzazione delle chiavi di crittografia su un computer può risultare problematica: in caso di furto del dispositivo, anche la chiave GPG risulterà compromessa se il disco rigido non è stato preventivamente criptato. Sebbene sia sempre possibile revocare la chiave prima che qualcuno sia in grado di decodificarla, la procedura comporta inevitabili disagi.
Per questo scopo, è possibile creare un filesystem criptato all'interno di un normale file residente su una memoria USB, all'interno del quale archiviare dati sensibili come la chiave privata GPG.
Per sicurezza prima di procedere, si raccomanda di eseguire una copia di backup della cartella ~/.gnupg locale.
Prerequisiti
Installare il pacchetto cryptsetup.
Ubuntu gestisce lo standard LUKS.
Creazione del file contenitore
In questa guida si presuppone che la memoria sia montata in /media/usbdisk.
Prima di creare il filesystem, è necessario che il supporto USB viene collegato:
Individuare il percorso della memoria USB.
Generare il file che lo conterrà, digitando nel terminale il seguente comando:
dd if=/dev/urandom of=/media/usbdisk/disk.img bs=1M count=16
Il risultato del comando sarà simile al seguente:
16+0 record dentro 16+0 record fuori 16777216 byte (17 MB) copiati, 0,25612 s, 65,5 MB/s
È preferibile utilizzare dati casuali (/dev/urandom) per aumentare la sicurezza crittografica, avendo cura di impostare il percorso corretto verso la memoria USB e modificando il valore count per ottenere la dimensione desiderata in Megabyte (nell'esempio, 16 MB).
Inizializzazione del volume criptato (LUKS)
Nelle versioni moderne di Ubuntu, cryptsetup gestisce automaticamente i dispositivi di loop.
Formattare il file come contenitore LUKS, digitando nel terminale il seguente comando:
sudo cryptsetup luksFormat /media/usbdisk/disk.img
verrà richiesta la conferma, digitando "YES" in maiuscolo e l'inserimento di una password sicura.Aprire il contenitore criptato mappandolo nel sistema con il nome usbkey, digitando nel terminale il seguente comando:
sudo cryptsetup open /media/usbdisk/disk.img usbkey
Il contenitore è ora accessibile tramite il dispositivo /dev/mapper/usbkey.
Il dispositivo mappato appare al sistema come una normale partizione. È ora necessario formattarlo.
Creazione del filesystem
Creare un filesystem Ext4 sul volume crittografato:
sudo mkfs.ext4 /dev/mapper/usbkey
Creare il punto di montaggio e montare il filesystem:
sudo mkdir -p /media/encrypted sudo mount /dev/mapper/usbkey /media/encrypted
Assegnare i permessi corretti all'utente corrente:
sudo chown -R $USER:$USER /media/encrypted
Impostazione di GnuPG nel filesystem criptato
Creare una cartella .gnupg all'interno del filesystem crittografato e assegnarle i permessi di sicurezza necessari, digitare nel terminale i seguenti comandi:
mkdir /media/encrypted/.gnupg
chmod 0700 /media/encrypted/.gnupg
Creare un collegamento simbolico dalla propria directory Home al filesystem criptato (se esiste già una cartella .gnupg locale, rinominarla preventivamente):
mv ~/.gnupg ~/.gnupg_locale
ln -s /media/encrypted/.gnupg ~/.gnupg
A questo punto, è possibile generare una chiave GnuPG oppure spostare i file dal backup locale (~/.gnupg_locale) nella nuova directory. Se si spostano file preesistenti, è consigliabile cancellare in modo sicuro i vecchi file originali utilizzando programmi come shred o wipe.
Semplificare montaggio e smontaggio
Per automatizzare il montaggio, lo smontaggio e la gestione del collegamento simbolico (utile per la verifica offline), è possibile realizzare due script da salvare nella radice della chiavetta USB (fuori dal file criptato).
Prima di scriverli, smontare e chiudere il dispositivo manualmente:
sudo umount /media/encrypted sudo cryptsetup close usbkey
Script di montaggio (mount.sh)
Creare nella cartella principale del dispositivo USB un file chiamato mount.sh e inserire il seguente codice:
DIR=(dirname "0") Apre il volume LUKS sudo cryptsetup open "$DIR/disk.img" usbkey Monta il filesystem sudo mkdir -p /media/encrypted sudo mount /dev/mapper/usbkey /media/encrypted Sostituisce la cartella locale con il collegamento al volume sicuro if [ -d " HOME/.gnupg" ]; then mv " 𝐻 𝑂 𝑀 𝐸 / . 𝑔 𝑛 𝑢 𝑝 𝑔 " " HOME/.gnupg"" HOME/.gnupg_locale" fi ln -sfn /media/encrypted/.gnupg "$HOME/.gnupg" echo "Volume montato e GnuPG configurato."
Script di smontaggio (umount.sh)
Creare nella cartella principale del dispositivo USB un file chiamato umount.sh e inserire il seguente codice:
Ripristina la cartella locale per le chiavi pubbliche
if [ -L "
𝐻
𝑂
𝑀
𝐸
/
.
𝑔
𝑛
𝑢
𝑝
𝑔
"
]
;
𝑡
ℎ
𝑒
𝑛
𝑟
𝑚
"
HOME/.gnupg"];thenrm"
HOME/.gnupg"
if [ -d "
𝐻
𝑂
𝑀
𝐸
/
.
𝑔
𝑛
𝑢
𝑝
𝑔
𝑙
𝑜
𝑐
𝑎
𝑙
𝑒
"
]
;
𝑡
ℎ
𝑒
𝑛
𝑚
𝑣
"
HOME/.gnupg
l
ocale"];thenmv"
HOME/.gnupg_locale" "$HOME/.gnupg"
fi
fi
Smonta e chiude il volume LUKS
sync
sudo umount /media/encrypted
sudo cryptsetup close usbkey
echo "Volume smontato in sicurezza."A causa delle policy di sicurezza dei moderni file manager, gli script presenti su dispositivi USB non godono dei permessi di esecuzione diretti. Per avviarli, utilizzare il terminale:
bash /media/usbdisk/mount.sh
Durante l'esecuzione verrà richiesta la password per sudo e successivamente la password di decrittazione del volume LUKS.
Verifica delle firme PGP senza il filesystem criptato
Sovente si presenta la necessità di verificare un messaggio firmato senza dover inserire la memoria USB o digitare la password del volume crittografato (utilizzando quindi solo le chiavi pubbliche).
La logica inserita negli script precedenti gestisce questa situazione in automatico:
Quando il volume USB viene montato tramite mount.sh, il sistema sposta la cartella .gnupg in .gnupg_locale e crea un collegamento al volume criptato. In questo modo si ha pieno accesso alle chiavi private.
Quando il volume USB viene smontato tramite umount.sh, il collegamento viene rimosso e viene ripristinata la cartella locale.
Per far funzionare la verifica offline è sufficiente mantenere un database di chiavi pubbliche nella cartella locale. Se si importano chiavi pubbliche mentre la chiavetta è inserita, è consigliabile esportarle e reimportarle a chiavetta disinserita, affinché siano presenti nel keyring locale.
