rhear@cs.winthrop.edu
Isabella Ruocco
e di
Diego Buffa.
Ultima revisione 3 aprile 2000.
Questo procedimento richiede il codice sorgente del kernel, saper come compilare questo codice e un sacco di pazienza. Raccomando caldamente di tenere pronto un disco di avvio. Inoltre, siate sicuri di avere una copia prima di memorizzare permanentemente i vostri dati importanti sul file system cifrato - potrebbe danneggiarsi come qualsiasi altro file system.
Dovrete applicare le patch come minimo fino alla versione 2.2.9 del kernel di linux prima di continuare. Ulteriori istruzioni su come applicare le patch si trovano nella sezione Dettagli più avanti in questo documento.
Il codice sorgente del kernel si può trovare in:
ftp://ftp.kerneli.org/
C'è un HOWTO sul procedimento della ricompilazione del kernel in:
http://metalab.unc.edu/LDP/HOWTO/
This document may be reproduced and distributed in whole or in part, without fee, subject to the following conditions:
ftp://prep.ai.mit.edu/pub/gnu/COPYING/
(Questo documento può essere riprodotto e distribuito per intero o in parte, senza alcuna tassa, a patto delle seguenti condizioni:
ftp://prep.ai.mit.edu/pub/gnu/COPYING/)
Il procedimento usa il dispositivo '/dev/loop*' (dove * può essere 0-7 sulla maggior parte delle installazioni) per montare un file system di loopback. Lo stesso procedimento può essere usato senza cifratura per tenere un file system linux su una partizione non-linux. C'è un HOWTO su questo nel sito LDP citato precedentemente.
Si possono usare diversi tipi di cifratura, compresi XOR, DES, twofish, blowfish, cast128, serpent, MARS, RC6, DFC e IDEA. Il programma 'losetup' (loopback setup ovvero impostazione del loopback) è ciò che associa il vostro file cifrato ad un file system e al suo tipo di cifratura. Secondo Alexander Kjeldaas, che mantiene kerneli.org e le patch internazionali sulla cifratura, DES e losetup sono attualmente incompatibili. Questo è dovuto alle differenze nel modo in cui i due gestiscono i bit di parità. Non ci sono progetti per supportare il DES poiché è molto più insicuro degli altri cifrari.
Twofish, blowfish, cast128 e serpent hanno tutti una licenza libera per qualunque uso. Gli altri potrebbero o meno avere restrizioni di licenza. Molti di essi sono candidati per lo standard AES. I finalisti forniranno in tutto il mondo l'uso senza royalty dei loro cifrari.
Questo documento usa l'algoritmo serpent perché è forte e anche notevolmente veloce ed è liberamente distribuibile sotto la GPL. In base alla sua documentazione, serpent usa un cifrario a blocchi di 128 bit progettato da Ross Anderson, Eli Biham e Lars Knudsen. Esso fornisce agli utenti il più alto livello pratico di assicurazione che non verrà trovato nessun attacco a scorciatoia. La documentazione su serpent, così come il codice sorgente, si possono trovare in:
http://www.cl.cam.ac.uk/~rja14/serpent.html
Inoltre, questo documento presuppone che i cifrari siano
compilati direttamente nel kernel. Potreste installarli
come moduli, ma la tecnica non viene discussa in
questo documento. Dovrete editare il file '/etc/conf.module';
il procedimento è discusso in dettaglio nell'HOWTO sulla
compilazione del kernel citato in precedenza.
Ci sono molti passi coinvolti nel procedimento. Fornirò Dettagli per questi passi nel prossimo paragrafo. Ho pensato che sarebbe stato carino fornire prima un sommario di riferimento (se voi avete esperienza con unix/linux probabilmente non avete bisogno comunque dei dettagli). Sono riassunti come segue:
http://ftp.kerneli.org/pub/kerneli/
ftp://ftp.kernel.org/pub/linux/utils/util-linux/
/dev/loop0 /mnt/crypt ext2 user,noauto,rw,loop 0 0
dd if=/dev/urandom of=/etc/cryptfile bs=1M count=10
losetup -e serpent /dev/loop0 /etc/cryptfile
Avete una sola possibilità per digitare la password, state attenti. Se volete fare una doppia verifica sulla vostra password, potete usare il comando:
losetup -d /dev/loop0
Questo disattiverà il vostro dispositivo di loop. Poi eseguirete nuovamente losetup per verificare la vostra password, come segue:
losetup -e serpent /dev/loop0 /etc/cryptfile
mkfs -t ext2 /dev/loop0
mount -t ext2 /dev/loop0 /mnt/crypt
umount /dev/loop0
losetup -d /dev/loop0
Applicare le patch al Kernel:
Potete fare l'aggiornamento dalle distribuzioni '2.2.x' applicando le patch. Ciascuna patch rilasciata per '2.2.x' contiene correzioni dei bachi. Verranno aggiunte nuove caratteristiche al kernel Linux di sviluppo '2.3.x'. Per installare applicando le patch, prendete tutte le patch più recenti e fate quanto segue:
cd /usr/src
gzip -cd patchXX.gz | patch -p0
Ripetete xx, IN ORDINE, per tutte le versioni più recenti rispetto a quella del vostro albero dei sorgenti corrente.
La directory predefinita per il sorgente del kernel è '/usr/src/linux'. Se il vostro sorgente è installato da qualche altra parte vi suggerirei di usare un collegamento simbolico da '/usr/src/linux'.
Editate 'MCONFIG' per la compilazione del pacchetto 'util-linux':
Quelle che seguono sono citazioni dal file 'MCONFIG' che ho usato per compilare il pacchetto 'util-linux'. Notate che questo è abbastanza specifico per la mia configurazione, che è vagamente basata su RedHat 5.2. Il punto è assicurarsi che non sovrascriviate nessun importante strumento di sistema come 'login', 'getty', o 'passwd'. Comunque, ecco di seguito le righe importanti:
CPU=$(shell uname -m | sed s/I.86/intel/)
LOCALEDIR=/usr/share/locale
HAVE_PAM=no
HAVE_SHADOW=yes
HAVE_PASSWD=yes
REQUIRE_PASSWORD=yes
ONLY_LISTED_SHELLS=yes
HAVE_SYSVINIT=yes
HAVE_SYSVINIT_UTILS=yes
HAVE_GETTY=yes
USE_TTY_GROUP=yes
HAVE_RESET=yes
HAVE_SLN=yes
CC=gcc
Suggerimenti:
Notate che potreste usare uno qualunque degli otto dispositivi di loopback, da 'dev/loop0' a '/dev/loop7'. Usate una directory non evocativa per il mount point. Suggerirei di creare una cartella con permessi 700 dentro la vostra home directory. Lo stesso vale per il file che contiene i dati. Io uso un nome di file come 'sysfile' o 'config.data' nella cartella '/etc'. Questo di solito passerà inosservato.
Ho creato degli script Perl molto semplici per montare e smontare il file system con un comando. Scrivete questi, rendeteli eseguibili (chmod u+x), e metteteli da qualche parte nel vostro percorso.
#!/usr/bin/perl -w
#
#piccolo file di utilità per impostare un file system cifrato di loopback
#Copyright 1999 di Ryan T. Rhea
`losetup -e serpent /dev/loop0 /etc/cryptfile`;
`mount /mnt/crypt`;
Chiamate 'loop' lo script qui sopra, e poi potrete essere sulla strada buona con un comando ('loop') ed una password.
#!/usr/bin/perl -w
#
#piccolo file di utilità per disattivare un fliesystem cifrato di loopback
#Copyright 1999 di Ryan T. Rhea
`umount /mount/crypt`;
`losetup -d /dev/loop0`;
Chiamate 'unloop' il secondo, e poi digitando 'unloop' si disattiverà velocemente il vostro file system.