[glux] Criptare un file con losetup

Andrea aerdan@inventati.org
Dom 12 Feb 2006 00:54:57 CET


Ciao a tutti, 

sto cercando di creare una chiave USB criptata seguendo le indicazioni date alla
pagina:

http://www.fizban.net/static/articolios/html/secureFS.html

e ho fatto come segue.

Inserisco la chiavetta ma mi assicuro che non sia montata e formatto la chiavetta con:
    # fdisk /dev/sda
Cancello la partizione esistente e ne creo una nuova, ora formatto la partizione
in ext2 con:
    # mke2fs /dev/sda1
    mke2fs 1.37 (21-Mar-2005)
    Etichetta del filesystem=
    Tipo SO: Linux
    Dimensione blocco=4096 (log=2)
    Dimensione frammento=4096 (log=2)
    125952 inode, 251644 blocchi
    12582 blocchi (5.00%) riservati per l'utente root
    Primo blocco dati=0
    8 gruppi di blocchi
    32768 blocchi per gruppo, 32768 frammenti per gruppo
    15744 inode per gruppo
    Backup del superblocco salvati nei blocchi:
            32768, 98304, 163840, 229376

    Scrittura delle tavole degli inode: fatto
    Scrittura delle informazioni dei superblocchi e dell'accounting del
filesystem:
    fatto

    Questo filesystem verrà automaticamente controllato ogni 21 mount, o
    180 giorni, a seconda di quale venga prima. Usare tune2fs -c o -i per
cambiare.

Ricompilo il kernel (05) con il supporto per:

    Loopback device support - CONFIG_BLK_DEV_LOOP - loop
    Cryptoloop Support - CONFIG_BLK_DEV_CRYPTOLOOP - cryptoloop
    Blowfish cipher algorithm - CONFIG_CRYPTO_BLOWFISH - blowfish

L'algoritmo blowfish perchè permette di utilizzare varie dimensioni per le
chiavi
di criptazione, nel frattempo...  controllo la versione di losetup che servirà
per montare il dispositivo criptato. La man page non è utile in quanto non
riporta se la versione permette l'utilizzo di algoritmi arbitrari provo con:

    # losetup --help
    usage:
      losetup loop_device                                      # give info
      losetup -d loop_device                                   # delete
      losetup -f                                               # find unused
      losetup [ options ] {-f|loop_device} file                # setup
        where options include
        --offset <num>, -o <num>
            start at offset <num> into file.
        --pass-fd <num>, -p <num>
            read passphrase from file descriptor <num>
            instead of the terminal.
        --encryption <cipher>, -e <cipher>
            encrypt with <cipher>.
            Check /proc/crypto or /proc/crypto/cipher for available ciphers.
        --nohashpass, -N
        Don't hash the password given.  (previous versions hash, non-debian
doesn't.
        --keybits <num>, -k <num>
            specify number of bits in the hashed key given
            to the cipher.  Some ciphers support several key
            sizes and might be more efficient with a smaller
            key size.  Key sizes < 128 are generally not
            recommended
Pare che l'opzione --encryption permetta di scegliere tra diversi algoritmi
gestiti dal kernel.

Installo il kernel e riavvio la macchina.
Ora il cat di /proc/crypto include blowfish una volta caricatolo

    name         : blowfish
    module       : blowfish
    type         : cipher
    blocksize    : 8
    min keysize  : 4
    max keysize  : 56

Ora creo un file che verrà criptato nella mia home dir di dimensioni a seconda
della chiavetta, la mia è da 918,3MB quindi creo un file da 900MB con:
    $ dd if=/dev/urandom of=~/crypto bs=1024k count=900

A questo punto quando do il comando:
	# losetup -e des /dev/loop0 crypto
	Password:
	ioctl: LOOP_SET_STATUS: Invalid argument
mi da questo errore che non capisco. Lo stesso se uso blowfish-128.

Cercando in google ho trovato alcuni riferimenti a:
- modulo cryptoapi, che però mi pare sia riferito a kernel della serie 2.4
- pacchetti loop-aes-source e loop-aes-ciphers-source che però non ho idea se
  possano servirmi
- modulo Device Mapper che però non sono riuscito a trovare con menuconfig

Secondo voi quale potrebbe essere il problema?

lsmod restituisce:
cryptoloop              3840  0
des                    11776  0
loop                   15880  1 cryptoloop
ext2                   63464  1
blowfish                9856  0
usb_storage            30464  1
scsi_mod               76604  2 sd_mod,usb_storage
ehci_hcd               31108  0
ohci_hcd               21252  0
usbcore               115556  8
usb_storage,hsfusbcd2,hsfosspec,ehci_hcd,usbhid,ohci_hcd

uname -a

Linux maddo 2.6.8.05 #1 Sat Feb 11 22:55:43 CET 2006 i686 GNU/Linux

Ciao e grazie.

a

-- 
ð Gli uomini sono fratelli fra loro. Cessano di esserlo quando
¶ la terra viene divisa da steccati e confini.
ñ
²			Heinmot-Tayala-Ket, Nez Percé
€
¯ KeyID:   5AF81406   2005-01-03   [scadenza: 2015-01-01]
3 KeyFpr:  A4E2 7C7C CFC7 1B1E E405  6443 9E07 AF95 5AF8 1406


Maggiori informazioni sulla lista glux