Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati


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:

  1. Individuare il percorso della memoria USB.

  2. 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.

  1. 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.
  2. 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

  1. Creare un filesystem Ext4 sul volume crittografato:

     sudo mkfs.ext4 /dev/mapper/usbkey
  2. Creare il punto di montaggio e montare il filesystem:

     sudo mkdir -p /media/encrypted
     sudo mount /dev/mapper/usbkey /media/encrypted
  3. Assegnare i permessi corretti all'utente corrente:

     sudo chown -R $USER:$USER /media/encrypted

Impostazione di GnuPG nel filesystem criptato

  1. 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
  2. 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.

Ulteriori risorse


CategoryHomepage CategoryNuoviDocumenti