Documentazione

Wiki dm-crypt

Wiki dm-crypt + Luks

TrueCrypt

Wiki Ubuntu TrueCrypt + Dmsetup

Dal momento che cifrare i dispositivi con dmsetup ,direttamente, risulta troppo complicato per la maggior parte degli utenti, ci concentreremo su cryptsetup e una sua implementazione chiamata Luks, in grado di offrire un doppio livello di cifratura come gli altri tools (vedi Cryptoloop o AES-Loop).

Dm-crypt e’ un device mapper che utilizza le API (cryptoapi) del kernel serie 2.6, ma naturalmente non e’ possibile utilizzare direttamente il modulo senza un programma userspace dedicato a questo. Cryptestup, ed in particolare Luks (Linux Unified Key Setup), utilizzano l’header della partizione per immagazzinare le informazioni di encryption-setup, consentendoci (in contrasto con altri metodi di cifratura) di gestire:

* Modifica passphrase del volume cifrato senza re-crittare i dati

* Possibilita’ di assegnare piu’ passphrase per lo stesso volume cifrato

* Trasporto e migrazione dati su altri sistemi

La cosa importante da tenere a mente e’ che queste features non hanno impatto negativo sulla sicurezza generale dei nostri dati. La compatibilita’ con le API di Windows non e’ ancora possibile, ma presto lo sara’ grazie a TrueCrypt.

Breve parentesi sulla sicurezza

Documento PDF Chaos Communication Camp 2007

Tecnicamente, la chiave cifrata, risiede nella memoria mentre il disco e’ in uso. Se un attaccante puo’ avere accesso fisico alla RAM, ha la possibilita’ di ottenere queste chiavi ed utilizzare in un qualsiasi momento. Ci sono alcune tecniche per evitare una situazione del genere:

Oltre all’accesso diretto o remoto con privilegi di root a /dev/mem, in alcuni sistemi (specialmente i notebook), durante l’ibernazione questi dati vengono scritti proprio nella memoria RAM. I software di virtualizzazione si comportano nella stessa maniera quando mandiamo in sospensione il sistema virtuale, ed infine persino la porta Firewire concede di default l’accesso DMA. Qualcuno, in un precedente articolo, mi chiedeva quale fosse il problema della sicurezza legato alla decisione degli sviluppatori di Ubuntu nel “lockare” l’accesso root alla porta firewire (raw1394) cambiando gruppo..ebbene pensiamo ad un dispositivo “embedded” disegnato specificatamente per essere connesso ad una macchina con porta firewire: Possiamo copiare interamente la memoria sul nostro dispositivo dotato di hard disk o flash memory, e con essa tutti i dati sensibili del legittimo proprietario senza lasciare alcuna traccia.

Il secondo problema e’ relativo alla semplicita’ (vedi immagine) di ricerca della chiave nella Dump Memory, tramite un semplice editor esadecimale (hex-editor).

Aggiornamento 22 Settembre 2010 10:56 (local time). Si ringrazia rent0n per la segnalazione

Prima di effettuare qualsiasi modifica alla partizione, riempire la stessa di dati “random” per rendere piu’ difficile la decrittazione:

/sbin/badblocks -c 10240 -s -w -t random -v /dev/sdX

Guida alla cifratura con dm-crypt e cryptosetup

Il modulo fondamentale per proseguire con questa guida (dm-crypt), proviene dal pacchetto cryptsetup:

sudo aptitude install cryptsetup hashalot

Una volta installato, aggiungiamo dm-crypt e gli altri moduli in /etc/modules, per fare in modo che vengano caricati all’avvio:

sudo echo dm_crypt >> /etc/modules

sudo echo dm_mod >> /etc/modules

Carichiamo il modulo:

sudo modprobe dm-crypt

1- Creare la partizione da crittare:

Qui bisogna lanciare prima:

ls -lR /dev/disk

In questo modo possiamo vedere come e’ stata mappata la nostra pendrive da Udev. Nell’esempio si trova collegata a /dev/sdg.

sudo cryptsetup luksFormat /dev/sdg

Ci verra’ chiesto di confermare la totale cancellazione della partizione. Per accettare digitiamo YES (caratteri maiuscoli).

Inseriamo due volte la chiave scelta (passphrase):

dyve@kubuntu:~$ sudo cryptsetup luksFormat /dev/sdf

WARNING!

========

This will overwrite data on /dev/sdg irrevocably.

Are you sure? (Type uppercase yes): YES

Enter LUKS passphrase:

Verify passphrase:

Command successful.

dyve@kubuntu:~$

2- Mappare la partizione crittata:

Scegliamo il nome da assegnare al nuovo device /dev/mapper:

sudo cryptsetup luksOpen /dev/sdg divi

Controlliamo l’aggiunta con:

ls /dev/mapper

dyve@kubuntu:~$ ls /dev/mapper

control divi

dyve@kubuntu:~$

3- Formattare la partizione crittata:

Scegliamo ad esempio il filesystem EXT3:

sudo mkfs.ext3 /dev/mapper/divi

4- Montare la partizione

:

Creiamo prima un mountpoint (divi):

sudo mkdir /media/divi

Montiamo la partizione nel punto di montaggio appena creato:

sudo mount /dev/mapper/divi /media/divi

Per smontare la partizione:

sudo umount /media/divi

Se vogliamo nuovamente montare la partizione, naturalmente non e’ piu’ necessario creare il filesystem:

sudo cryptsetup luksOpen /dev/sdg divi

dyve@kubuntu:~$ sudo cryptsetup luksOpen /dev/sdg divi

Enter LUKS passphrase:

key slot 0 unlocked.

Command successful.

dyve@kubuntu:~$

sudo mount /dev/mapper/divi /media/divi

5- Montare la partizione al boot:

Inseriamo in /etc/crypttab:

divi /dev/sdg none luks,check=ext2,retry=5

Analogamente in /etc/fstab:

# CryptoDevices

/dev/mapper/divi /media/divi auto defaults 0 0

NB: Per essere sicuri che la nostra pendrive o il nostro hard disk vengano riconosciuti in maniera permanente, non dobbiamo aggiungere il Device (/dev/sdg) bensi’ l’UUID, prelevandolo sempre con:

ls -lR /dev/disk

Durante il boot ci verra’ chiesta la password assegnata al dispositivo crittato. Possiamo sbagliare la pass per 5 volte (retry=5), dopodiche’ il sistema proseguira’ il boot normalmente senza montare il dispositivo crittato, che monteremo poi successivamente.

6- Aggiungere / Rimuovere le chiavi:

sudo cryptsetup luksAddKey /dev/sdg

sudo cryptsetup luksDelKey /dev/sdg

7- Smontare la partizione in sicurezza:

In aggiunta a quanto detto precedentemente, con dmsetup possiamo controllare i devicemappings. Se fosse ancora presente, chiunque potrebbe accedervi, persino a dispositivo non montato. Per smontare correttamente il dispositivo, lanciamo in sequenza:

sudo umount /media/divi && sudo cryptsetup luksClose divi

Con uno script diventa piu’ facile:

kate ~/umount.sh

#!/bin/sh

sudo umount /media/divi && sudo cryptsetup luksClose divi

Rendiamolo eseguibile:

sudo chmod a+x ~/umount.sh

Assegnamogli un icona e inseriamo il tutto nel nostro pannello.

Abbiamo visto come utilizzare dm-crypt e cryptsetup con dispositivi di archiviazione di massa rimovibili, adesso utilizziamo altri moduli del kernel e creiamo una ISO di backup (dati personali, directory) con chiave di cifratura, da masterizzare in seguito con un qualsiasi software di masterizzazione:

AES – Cryptoloop

Prima di caricare questi due moduli, installiamo le relative utility probabilmente non presenti di default nel nostro sistema. Per Ubuntu/Kubuntu:

sudo apt-get install loop-aes-utils aespipe

sudo modprobe aes cryptoloop

– Creare una immagine ISO crittata –

Utilizziamo mkisofs e una chiave 256-bit AES con l’utility aespipe, dove $backup= file da comprimere in ISO:

sudo mkisofs -r $backup | aespipe -e aes256 > $backup.iso

La password che andremo ad inserire dovra’ essere di almeno 20 caratteri. Apriamo il nostro programma di masterizzaqzione (k3b, Brasero) e selezioniamo ISO – CD/DVD:

Montare un CD/DVD crittato

L’utility losetup ci permette di creare un device di loopback per collegare il nostro CD/DVD cifrato alla linuxbox. Si tratta, in sostanza, di una partizione decrittata virtuale che rappresenta la partizione del CD/DVD, e puo’ essere montata normalmente con:

sudo losetup -e aes-256 /dev/loop0 /dev/scd0

Inseriamo la password specificata in precedenza e montiamo finalmente il disco con:

sudo mount -t iso9660 /dev/loop0 /media/cdrom

Per smontare il disco:

sudo umount /media/cdrom

sudo losetup -d /dev/loop0

Losetup puo’ essere saltato aggiungendo l’opzione -oencryption=aes-256 al comando di mount. In questo modo il device di loopack verra’ scollegato automaticamente:

sudo mount -t iso9660 /dev/scd0 /media/cdrom -oencryption=aes-256

Al termine del nostro lavoro sul disco:

sudo umount /media/cdrom

AES e Cryptoloop si possono utilizzare anche per crittare gli hard disk. Facciamo un esempio con una partizione /dev/sda1:

Come da manuale, generiamo del garbage (dati random) prima di iniziare con la cifratura vera e propria::

sudo dd if=/dev/urandom of=/dev/sda1 bs=1M

sudo losetup -e aes-256 /dev/loop0 /dev/sda1

La nuova partizione crittata (con chiave AES), accessibile via /dev/loop0, necessita ora di un filesystem:

sudo mkfs.ext3 /dev/loop0

Montiamo la partizione:

sudo mkdir /media/encrypted

sudo mount -t ext3 /dev/loop0 /media/encrypted

Smontaggio:

sudo umount /mnt/encrypted

sudo losetup -d /dev/loop0

Come nell’esempio precedente, saltiamo losetup:

sudo mount -t ext3 /dev/sda1 /media/encrypted -oencryption=aes-256

sudo umount /media/encrypted

Related Posts Plugin for WordPress, Blogger...

Il tuo indirizzo ip:
54.81.47.168

Valutazione 3.00 su 5
happy wheels 2 demo

Category:

Senza categoria

Tags:

Commenti via Facebook:

Leave a Reply

Your email address will not be published. Required fields are marked *

*

14 Comments

  • Grande divilinu! Non so se lo hai fatto per me, ma mi piace pensarlo! Ti avevo suggerito questo articolo e non sai quanto mi fa piacere leggerlo ora!

    saluti 🙂

      Quota

  • bravo divi 🙂
    già fatto il pdf … grazie 😛

      Quota

  • grazie..

      Quota

  • ugaciaka ITALY 9 anni ago

    se interessa ad altri un’altro metodo di cifratura http://forum.ubuntu-it.org/index.php/topic,145984.0.html

    e se divi vorrà metterlo sul suo blog non c’è problema 😉

      Quota

  • @ugaciaka
    il tool, che riassume quello che hai scritto, l’ho gia’ notato:

    http://www.kde-apps.org/content/show.php/K-EncFS?content=54078

    😉

      Quota

  • ugaciaka ITALY 9 anni ago

    sì beh quello che ho scritto io è una risoluzione semplice. Ma non sai quanto ho penato per capire che rlog non serviva (dannati quelli di linux pro che davano per scontato una suse boh…) non serviva per gli utenti debian e derivati! L’ho scoperto leggendo la guida di k-encfs…quindi ho preso due piccioni con una fava! 😀

      Quota

  • matteo ITALY Mozilla Firefox Ubuntu Linux 8 anni ago

    ma è possibile anche crittare un server mail? in questo caso si avrebbe più sicurezza senza nessun inconveniente. oppure anche gli utenti dovrebbero sapere la password per leggere la loro mail? e in caso di web server?

    grazie
    ciao

      Quota

  • Divilinux BRAZIL Mozilla Firefox Linux 8 anni ago

    Cifrare un disco serve nel caso in cui vogliamo che i dati in esso contenuti non possano essere letti da nessuno (nessuno, senza password, puo’ montare il disco..ma solo cancellarlo)
    Nel caso di un webserver, o un server mail, a parte il discorso fatto prima, il disco cifrato non serve a molto perche’ e’ gia’ montato..quindi nessuno deve inserire password per leggere le e-mail e non innalza il grado di sicurezza.

      Quota

  • rent0n ITALY Mozilla Firefox Linux 6 anni ago

    Ottim guida, la migliore che ho trovato in rete. Più chiara e semplice anche del dm-crypt wiki e di ArchWiki.
    Solo un appunto: può essere utile, prima di iniziare il processo riempire il disco con dati random, in modo da rendere la decrittazione più difficile:
    # /sbin/badblocks -c 10240 -s -w -t random -v /dev/sdX

    Grazie!

      Quota

  • @ rent0n:

    Grazie a te per l’aggiunta. E’ da tempo che non faccio la revisione di questi articoli.

      Quota

  • It’s going to be end of mine day, except before ending I am reading this
    fantastic post to improve my knowledge.

      Quota

  • I am really enjoying the theme/design of your weblog. Do you ever run into any internet browser compatibility
    problems? A number of my blog audience have complained about my blog
    not operating correctly in Explorer but looks
    great in Firefox. Do you have any solutions to help fix this issue?

      Quota

  • Hi there, of course this post is really pleasant and I have learned lot of things from it on the topic of blogging.
    thanks.

      Quota