## page was renamed from GPGKeyOnUSBDrive ## page was renamed from MarcoBuono/prova GPGKeyOnUSBDrive ## page was renamed from GuidaWiki/DocumentazioneModello #format wiki #LANGUAGE it <
> <> <> = Introduzione = Questa guida spiega come utilizzare [[Sicurezza/GnuPg|GnuPg]] su più dispositivi (il proprio portatile, il computer di casa, il computer del lavoro...) salvando le proprie chiavi su una memoria USB criptata. La memorizzazione delle chiavi di crittografia su un supporto di cui non si ha il controllo fisico è generalmente una cattiva idea. Anche memorizzarle su un computer portatile può essere problematico: se il portatile viene rubato, lo sarà anche la chiave GPG se non si ha l'accortezza di criptare il disco rigido o la partizione in cui è stata salvata. Si può sempre revocare la chiave prima che qualcuno sia in grado di decodificarla, comunque tutto questo processo è una seccatura. Per questo scopo, si creerà un filesystem criptato dentro un normale file su una memoria USB dove si andranno ad archiviare dati sensibili come per esempio la chiave GPG. {{{#!wiki important Per sicurezza eseguire una copia di backup della cartella `~/.gnupg` prima di continuare.}}} = Prerequisiti = [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://cryptsetup | cryptsetup]]. = Impostazione del filesystem criptato = Nel proseguo di questa guida si procederà alla creazione di un filesystem criptato all'interno di un file presente su un supporto USB sul quale saranno conservate le chiavi GPG. Questo perché la creazione del filesystem criptato su un singolo file rende le operazioni di montaggio e smontaggio più semplici come si vedrà in seguito. Tuttavia, molti dei passi di questa guida possono essere adattati per utilizzare una partizione reale al posto di un normale file. Quando il supporto verrà collegato, [[Hardware/DispositiviPartizioni/MontarePartizioni|individuare]] la partizione del filesystem da criptare. = Creare il file = Prima di creare il filesystem è necessario creare il file che lo conterrà con il comando {{{dd}}}. * Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando: {{{ dd if=/dev/zero of=/media/usbdisk/disk.img bs=1M count=16 }}} avendo cura di impostare il percorso corretto verso la memoria USB. <
><
> Il risultato del precedente comando sarà simile al seguente: {{{ 16+0 record dentro 16+0 record fuori 16777216 byte (17 MB) copiati, 0,179564 s, 93,4 MB/s }}} {{{#!wiki note In questo modo è stato creato un file della grandezza di 16 MiB che contiene solo zeri. Modificare l'opzione «count» nel comando dato in questo paragrafo per ottenere la dimensione desiderata per il filesystem criptato. }}} = Impostazione del ciclo del dispositivo criptato = Prima di poter effettivamente creare il filesystem sul file appena creato è necessario collegarlo ad un dispositivo di ''loop'' e istituire un ''target device-mapper'' con la crittografia. Il comando {{{losetup-f}}} troverà il primo dispositivo senza ''loop'', quindi si dovrà impostare il suo output in una variabile chiamata ''loopdev'' al fine di usarla per svariati comandi. * Caricare i seguenti moduli digitando [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi: {{{ sudo modprobe cryptoloop sudo modprobe dm-crypt sudo modprobe aes_generic }}} * Infine:{{{ export loopdev=$(sudo losetup -f) sudo losetup $loopdev /media/usbdisk/disk.img sudo cryptsetup -c aes -s 256 -h sha256 -y create usbkey $loopdev }}} * Questo imposterà il file con una crittografia a 256-bit tipo AES, sminuzzando la '''passphrase''' che si pubblica attaverso SHA-256. * Dopo questa impostazione, è buona norma quella di rimuovere il dispositivo USB ''device-mapper'' e ''cryptsetup'': {{{ sudo cryptsetup remove usbkey sudo cryptsetup -c aes -s 256 -h sha256 create usbkey $loopdev }}} = Creare il filesystem vero e proprio = Il comando {{{cryptsetup}}} precedente ha creato il dispositivo `/dev/mapper/USBKey`, che è una mappa attraverso ''dm-crypt'' al filesystem criptato. Quindi, questo dispositivo appare al sistema come un normale dispositivo di blocco storico, come un disco rigido o una partizione. * Il comando seguente crea un filesystem Ext3 sul file crittografato: {{{ sudo mkfs.ext3 /dev/mapper/usbkey }}} * Ora si provi a montare il filesystem: {{{ sudo mkdir -p /media/encrypted sudo mount -t ext3 /dev/mapper/usbkey /media/encrypted }}} = Impostazione della GnuPG nel filesystem criptato = * Adesso, si crei una cartella `.gnupg` all'interno del percorso `/media/encrypted`, di proprietà del tuo utente, e collegarlo al proprio `~/.gnupg` (se si ha già una cartella .gnupg, prima di tutto spostarla fuori): {{{ sudo mkdir /media/encrypted/.gnupg sudo chown $UID.$UID /media/encrypted/.gnupg chmod 0700 /media/encrypted/.gnupg ln -s /media/encrypted/.gnupg ~/.gnupg }}} Ora, creare una chiave GnuPG come descritto in [[http://wiki.ubuntu-it.org/Sicurezza/GnuPg|GnuPG]] o, se si dispone già di una chiave, spostare i file della vecchia cartella `.gnupg` in quella nuova. Usando programmi quali '''shred''' o '''wipe''' è possibile per rimuovere in modo sicuro i file vecchi (questa accortezza vale se il dispositivo o partizione precedente non era criptata). = Semplificare montaggio e smontaggio = Per automatizzare il montaggio e lo smontaggio del filesystem cifrato è possibile realizzare due script. * Prima di utilizzarli, è necessario smontare il filesystem e scollegare il dispositivo: {{{ sudo umount /media/encrypted sudo cryptsetup remove usbkey sudo losetup -d $loopdev }}} * Creare nella cartella principale del dispositivo Usb (non nel filesystem criptato) un file chiamato `mount.sh` inserendo al suo interno il seguente testo: {{{ dir=`dirname $0` loopdev=$(sudo losetup -f) sudo -p "Password (sudo): " modprobe cryptoloop && \ sudo modprobe dm-crypt && \ sudo modprobe aes_generic && \ sudo mkdir -p /media/encrypted && \ sudo losetup $loopdev $dir/disk.img && \ sudo cryptsetup -c aes -s 256 -h sha256 create usbkey $loopdev && \ sudo mount -t ext3 /dev/mapper/usbkey /media/encrypted && \ sudo chown -R $UID.$UID /media/encrypted/ }}} * Creare nella cartella principale del dispositivo Usb (non nel filesystem criptato) un file chiamato `umount.sh` inserendo al suo interno il seguente testo: {{{ loopdev=$(sudo cryptsetup status usbkey | grep device | sed -e "s/ *device:[ \t]*//") sync sudo umount /media/encrypted sudo cryptsetup remove usbkey sudo losetup -d $loopdev }}} Si potrebbe non essere in grado di eseguire questi script direttamente dal momento che le opzioni predefinite di ''auto-mount'' vietano l'avvio di eseguibili. Ma, essendo degli di shell, una volta che il drive USB è stato montato, è possibile avviarli digitando semplicemente: {{{ sh /media/usbdisk/mount.sh }}} Si avrà bisogno della password di cifratura e potrebbe essere richiesta la password per ''sudo''. = Verifica delle firme PGP senza il filesystem criptato = Si potrebbe desiderare di poter verificare un messaggio firmato senza la necessità di montare il filesystem criptato. Per rendere facile questa operazione, è sufficiente copiare il portachiavi pubblico e il file del 'database fiduciario' sulla vera cartella `.gnupg`: {{{ cp /media/encrypted/.gnupg/{pubring,trustdb}.gpg /tmp sh /media/usbdisk/umount.sh sudo mv /tmp/{pubring,trustdb}.gpg ~/.gnupg }}} Ora, quando il filesystem cifrato non è montato, potrete vedere i file nella cartella ''.gnupg'', in modo che ''gpg --verify'' funzioni. Ma quando viene montato, vedrete i file effettivamente posizionati nel filesystem criptato. = Ulteriori risorse = * [[https://help.ubuntu.com/community/GPGKeyOnUSBDrive|Documento originale]] * [[http://wiki.ubuntu-it.org/Sicurezza/GnuPg|GnuPG]] * [[http://www.saout.de/misc/dm-crypt/|Sito ufficiale dm-crypt]] ---- CategorySicurezza CategoryDaRevisionare