#format wiki #LANGUAGE it <
> <> <> <> = Introduzione = Questa guida spiega come utilizzare [[Sicurezza/GnuPg|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 [[Sicurezza/GnuPg|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. {{{#!wiki important Per sicurezza prima di procedere, si raccomanda di eseguire una [[AmministrazioneSistema/BackupDelSistema|copia di backup]] della cartella `~/.gnupg` locale. }}} = Prerequisiti = [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://cryptsetup|cryptsetup]]. {{{#!wiki note '''Ubuntu''' gestisce lo standard '''[[https://it.wikipedia.org/wiki/Linux_Unified_Key_Setup|LUKS]]'''. }}} == Creazione del file contenitore == {{{#!wiki note 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: 0. [[Hardware/DispositiviPartizioni/MontarePartizioni|Individuare]] il percorso della memoria USB. 0. Generare il file che lo conterrà, digitando nel [[AmministrazioneSistema/Terminale|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 }}} {{{#!wiki note È 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. 0. Formattare il file come contenitore LUKS, digitando nel [[AmministrazioneSistema/Terminale|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. 0. Aprire il contenitore criptato mappandolo nel sistema con il nome `usbkey`, digitando nel [[AmministrazioneSistema/Terminale|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 = 0. Creare un [[Hardware/DispositiviPartizioni/MontarePartizioni/Ext4|filesystem Ext4]] sul volume crittografato:{{{ sudo mkfs.ext4 /dev/mapper/usbkey }}} 0. Creare il punto di montaggio e montare il filesystem:{{{ sudo mkdir -p /media/encrypted sudo mount /dev/mapper/usbkey /media/encrypted }}} 0. [[AmministrazioneSistema/PermessiFile|Assegnare i permessi corretti]] all'utente corrente:{{{ sudo chown -R $USER:$USER /media/encrypted }}} = Impostazione di GnuPG nel filesystem criptato = 0. Creare una cartella `.gnupg` all'interno del filesystem crittografato e assegnarle i permessi di sicurezza necessari, digitare nel [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:{{{ mkdir /media/encrypted/.gnupg }}} {{{ chmod 0700 /media/encrypted/.gnupg }}} 0. 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 [[Sicurezza/GnuPg|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: {{{ #!/bin/bash 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: {{{ #!/bin/bash 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 = * [[http://wiki.ubuntu-it.org/Sicurezza/GnuPg|GnuPG]] * [[https://gitlab.com/cryptsetup/cryptsetup|Sito ufficiale di cryptsetup / LUKS]] ---- CategoryHomepage CategoryNuoviDocumenti