  Loopback Encrypted Filesystem HOWTO
  Copyright di Ryan T. Rhea, rhear@cs.winthrop.edu
  v1.1, 29 novembre 1999

  Questo documento spiega come impostare e quindi usare un file system
  che, quando montato da un utente, cifra in maniera dinamica e traspar
  ente i suoi contenuti. Il file system viene conservato in un file
  regolare, che pu essere nascosto o nominato in modo non-evocativo
  cos che probabilmente passerebbe inosservato. Questo permette di con
  servare dati ad un alto livello di sicurezza.  Traduzione a cura di
  Isabella Ruocco e di Diego Buffa.  Ultima revisione 3 aprile 2000.
  ______________________________________________________________________

  Indice Generale


  1. Prima di iniziare
  2. Introduzione
  3. Sommario
  4. Dettagli


  ______________________________________________________________________

  11..  PPrriimmaa ddii iinniizziiaarree

  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:


    The copyright notice and this permission notice must be preserved
     complete on all complete or partial copies.

    Any translation or derived work must be approved by the author in
     writing before distribution.

    If you distribute this work in part, instructions for obtaining he
     complete version of this manual must be included, and a means for
     obtaining a complete version provided.

    All source code in this document is placed under the GNU General
     Public License, available via anonymous FTP from:
       <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:


    La nota sul copyright e questa nota sul permesso devono essere
     mantenute interamente su tutte le copie parziali o complete.

    Qualunque traduzione o lavoro derivato devono essere approvati
     dall'autore per iscritto prima della distribuzione.

    Se distribuite in parte questo lavoro, devono essere incluse
     istruzioni per ottenere la versione completa di questo manuale, e
     deve essere fornito un modo per ottenere una versione completa.

    Tutto il codice sorgente in questo documento  sotto la licenza GNU
     General Public License, disponibile attraverso FTP anonimo da:


       <ftp://prep.ai.mit.edu/pub/gnu/COPYING/>)



  22..  IInnttrroodduuzziioonnee

  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 tec
  nica 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.
  33..  SSoommmmaarriioo

  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:


  1. Scaricate la pi recente patch internazionale sulla cifratura (io
     ho usato 'patch-int-2.2.10.4' quando questo documento  stato
     scritto) da:



       <http://ftp.kerneli.org/pub/kerneli/>



  2. Applicate la patch al kernel



  3. Eseguite 'config' (o 'menuconfig' o 'xconfig') per configurare il
     vostro 'MakeFile' per il nuovo kernel.  Le opzioni per abilitare la
     cifratura sono sparpagliate.  Prima di tutto, prima che vediate
     qualche altra opzione, dovete abilitare 'Prompt for development
     and/or incomplete code/drivers' sotto 'Code Maturity level
     options'.  Sotto 'Crypto options' abilitate 'crypto ciphers' e
     'serpent'.  Ancora una volta, questo documento presume che stiate
     usando serpent, ma provate quello che volete. Ricordate che DES 
     notoriamente incompatibile con 2.2.10.4 - potrebbe non essere mai
     supportato del tutto.  Ci sono molte opzioni importanti da
     selezionare sotto 'Block Devices'.  Queste includono 'Loopback
     device support', 'Use relative block numbers as basis for transfer
     functions (RECOMMENDED)', e 'General encryption support'. NON
     selezionate la cifratura 'cast 128' o 'twofish' qui. Notate anche
     che non avete bisogno di nessuna delle opzioni sulla cifratura
     sotto le varie categorie di rete. Non andr oltre nella
     configurazione del kernel,  fuori dagli intenti di questo
     documento e si pu trovare sul sito LDP.



  4. Compilate il nuovo kernel.



  5. Editate '/etc/lilo.conf' per aggiungere la nuova immagine del
     kernel. Eseguite 'lilo -v' per aggiungere il kernel al boot loader.



  6. Scaricate il sorgente per il pi recente pacchetto 'util-linux' (io
     ho usato 'util-linux-2.9v') da:



       <ftp://ftp.kernel.org/pub/linux/utils/util-linux/>



  7. Estraete il sorgente 'util-linux'.

  8. Applicate la patch corrispondente trovata nella vostra directory
     '/usr/src/linux/Documentation/crypto/'.



  9. Leggete ATTENTAMENTE il file 'INSTALL'! Questo pacchetto contiene i
     sorgenti per molti file dipendenti dal sistema (strumenti
     importanti come 'login', 'passwd', ed 'init').  Se non editate
     attentamente il file MCONFIG prima di compilare questi sorgenti
     tenete pronto un dischetto di avvio e/o un fucile perch il vostro
     sistema sar un po' confuso. Essenzialmente volete impostare quasi
     tutti i campi 'HAVE_*' uguali a 'yes' cos che gli strumenti
     importanti di autenticazione non vengano compilati e sovrascritti.
     Gli strumenti che volete ricompilare sono 'mount' e 'losetup' in
     modo da adattarli ai nuovi schemi di cifratura. Suggerisco di fare
     riferimento al paragrafo ``Dettali'' nel seguito per questo passo.



  10.
     Compilate ed installate il sorgente 'util-linux'



  11.
     Fate riavviare la macchina con il nuovo kernel.



  12.
     Editate '/etc/fstab', aggiungendo una voce per il vostro mount
     point come segue:



       ______________________________________________________________________
       /dev/loop0  /mnt/crypt  ext2  user,noauto,rw,loop 0 0
       ______________________________________________________________________



  13.
     Create la directory che conterr il vostro file system, come in
     '/mnt/crypt' sopra.



  14.
     Come utente, create il vostro file cifrato come segue:



       dd if=/dev/urandom of=/etc/cryptfile bs=1M count=10



  15.
     Eseguite losetup come segue:
       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



  16.
     Create il vostro file system ext2 come segue:



       mkfs -t ext2 /dev/loop0



  17.
     Ora potete montare il file system cifrato con:



       mount -t ext2 /dev/loop0 /mnt/crypt



  18.
     Quando avrete finito, vorrete smontare  e proteggere il vostro file
     system come segue:



       umount /dev/loop0
       losetup -d /dev/loop0

  44..  DDeettttaaggllii

  AApppplliiccaarree llee ppaattcchh aall KKeerrnneell::

  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'.



  EEddiittaattee ''MMCCOONNFFIIGG'' ppeerr llaa ccoommppiillaazziioonnee ddeell ppaacccchheettttoo ''uuttiill--lliinnuuxx''::

  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
  ______________________________________________________________________



  SSuuggggeerriimmeennttii::

  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.



