<!doctype linuxdoc system>
<linuxdoc>
<!-- Loopback Encrypted Filesystem HOWTO door Ryan T. Rhea  -->

<article>

<!-- Title information -->
<titlepag>
<title>Loopback Encrypted Filesystem HOWTO</title>
<author><name>Copyright by Ryan T. Rhea,
<tt/rhear@cs.winthrop.edu/
<newline>
Vertaler: <htmlurl url="http://people.zeelandnet.nl/reggye/" name=" Reggy
Ekkebus">, <htmlurl
url="mailto:reggy@zeelandnet.nl" name="reggy@zeelandnet.nl">
</name></author>
<date>v1.1, 29 November 1999</date>

<abstract>
Dit document verteld hoe je een filesysteem moet instellen
dat, als het gemount is door een gebruiker, drastisch en transparant
zijn inhoud versleuteld. Het filesysteem wordt bewaart in een
reguliere file, welke verborgen of on opvallend genoemd kan zijn
zodat de meeste mensen er over kijken. Dit staat een hoog niveau aan
veilige data opslag toe.
</abstract>
</titlepag>
<!-- Table of contents -->
<toc>

<!-- Begin the document -->

<sect><heading>Voordat je begint</heading>

<p>
Dit proces vereist de kernel bron code, kennis van over hoe
je deze code moet compileren, en veel geduld. Ik raad je aan
om een bootdisk klaar te hebben liggen. Wees ook zeker dat je
een backup hebt voordat je permanent je belangrijke data bewaard
in het versleutelde filesysteem - het kan aangestast worden als elk 
ander filesysteem.

Als een minimum, moet je de laatste versie 2.2.9 van de linux kernel
patchen voordat je door kan gaan. Er is een verdere instructie
over het patchen in de <ref id="Details"> sectie later in dit document.

De source code van de kernel kan gevonden worden op:

<tscreen>
<url url="ftp://ftp.kerneli.org/">
</tscreen>

Er is een HOWTO over het proces van een kernel hercompileren op:

<tscreen>
<url url="http://metalab.unc.edu/LDP/HOWTO/">
</tscreen>

Dit document mag worden gereproduceerd en gedistributeerd in zijn
geheel of in delen, zonder betaling, overgegeven aan de volgende 
voorwaarden:

<itemize>
<item>De copyright notitie en de permissie notitie moet
geheel bewaard blijven op alle komplete of gedeeltelijke kopie&euml;n.
</item>

<item>Elke vertaling of afgeleide werk moet toegstaan zijn door de auteur
van het document voor distributie.
</item>

<item>Als je dit werk in een deel distributeerd, moet er een
instructie aanwezig zijn over hoe je de hele howto kunt verkrijgen.
</item>

<item>Alle source code in dit document is geplaatst onder de GNU
General Public License, verkrijgbaar via anonieme FTP van:
</item>
</itemize>

<tscreen>
<url url="ftp://prep.ai.mit.edu/pub/gnu/COPYING/">
</tscreen>
</p>
</sect>


<sect><heading>Introductie</heading>

<p>
Het proces gebruikt het device '/dev/loop*' (waar * 0-7 kan zijn bij
de meeste installaties) om een loopback filesysteem te mounten. 
Het zelfde proces kan worden gebruikt om een linux filesysteem
te bewaren op een niet-linux partitie. Er is een HOWTO over dit op
de LDP site eerder aangegeven.

Er kunnen verschillende types van encryptie gebruikt worden, zoals
XOR, DES, twofish, blowfish, cast128, serpent, MARS, RC6, DFC en IDEA.
Het programma 'losetup' (loopback setup) is wat je versleutelde file
systeem associeert met een filesysteem en zijn versleutel type. Overeenkomstig
met Alexander Kjeldaas, die de kerneli.org site onderhoud en de internationale
crypto patches, DES en losetup zijn momenteel niet samengaand. Dit
is door het verschil van het hanteren van parity bits. Er zijn geen
plannen om DES te ondersteunen omdat het veel minder veilig is dan
de andere methoden.

Twofish, blowfish, cast128 en serpent zijn vrij te gebruiken.
De anderen hebben of hebben geen licentie beperkingen. Vele van deze
zijn kandidaten voor de AES standaard. De finalisten zullen
vrij gebruik van hun versleutelaars wereldwijd verstrekken.

Dit document gebruik het serpent algoritme omdat het erg sterk is 
en ongelooflijk snel, en het is vrij distributeerbaar onder de GPL.
Overeenkomstig aan de documentatie gebruik serpent 128-bit blok versleuteling
gemaakt door Ross Anderson, Eli Biham en Lars Knudsen. Het geeft gebruikers
het hoogste practische niveau van beveiliging dat er geen korte aanvallen
worden gevonden. De documentatie over serpent en ook de source code kan gevonden
worden op:
 
<tscreen>
<url url="http://www.cl.cam.ac.uk/~rja14/serpent.html">
</tscreen>

Dit document neemt ook aan dat de algoritmes direct in
de kernel zijn gecompileerd. Je mag ze installeren als een module, maar
de techniek wordt niet besproken in dit document. Je moet de file
`/etc/conf.module' editten; het proces wordt in detail beschreven
in de Kernel compilatie HOWTO erdeer angegeven.
</p>
</sect>


<sect><heading>Samenvatting</heading>

<p>
Er zijn veel stappen betrokken in het proces. Ik geef 
<ref id="Details"> voor deze stappen in de volgende sectie.
Ik dacht dat het wel leuk zou zijn om eerst een referentie te geven
(als je ervaren bent met unix/linux heb je de details niet nodig).
Hier zijn ze beknopt:

<enum>
<item>Download de nieuwste internationale crypto patch
(Ik gebruikte 'patch-int-2.2.10.4' toen ik document schreef)
van:


<tscreen>
<url url="http://ftp.kerneli.org/pub/kerneli/">
</tscreen>
</item>

<item>Patch de kernel
</item>

<item>Draai `config' (of `menuconfig' of `xconfig') om je MakeFile voor
de nieuwe kernel te configureren. De opties om versleuteling aan te zetten
zijn verspreid. Eerst, voordat je andere opties ziet
moet je eerst 'Prompt for development and/or incomplete code/drivers'
aanzetten in het `Code Maturity level options' menu. Onder `Crypto opties'
`crypto ciphers' en `serpent' aanzetten. Nog een keer, dit document neemt
aan dat je serpent gebruikt, maar probeer wat je wilt. Onthoud
dat DES bekent is als onsamengaand met 2.2.10.4 - het wordt misschien wel 
nooit ondersteund. Er zijn verschillende belangrijke opties die
je moet selecteren onder `Block Devices'. Deze zijn `Loopback
device support', `Use relative block numbers as basis for
transfer functions (RECOMMENDED)' en `General encryption support'.  
Selecteer NIET 'cast 128' of 'twofish' versleuteling hiet.  
Weet ook dat je de verschillende crypto opties onder de verschillende
netwerk catagorieen niet nodig hebt. Ik ga niet verder in het configureren
van de kernel, dat is buiten beschouwing van dit document en kan gevonden
worden op de LDP site.
</item>

<item>Compileer de nieuwe kernel.
</item>

<item>Verander `/etc/lilo.conf' om het nieuwe kernel image toe te voegen. Draai
`lilo -v' om de kernel toe te voegen aan de boot lader.
</item>

<item>Download de source van de nieuwste `util-linux' 
(Ik gebruikte `util-linux-2.9v') van:

<tscreen>
<url url="ftp://ftp.kernel.org/pub/linux/utils/util-linux/">
</tscreen>
</item>

<item>Pak de `util-linux' source uit.
</item>

<item>Pas de daarbij behorende patch in je 
`/usr/src/linux/Documentation/crypto/' directory toe.
</item>

<item>lees de `INSTALL' file ZORGVULDIG! Dit pakket
houdt de source code van veel systeem afhankelijke files in
(belangrijke tools zoals `login', `passwd' en `init'). Als je de
MCONFIG file niet zorgvuldig veranderd, voordat je deze bron code 
gaat compileren zorg dan dat je een boot diskette en/of
een shotgun bij de hand hebt, omdat je systeem erg in de war zal
zijn. Fundementeel zul je de meeste van de `HAVE_*' velden op
`yes' zetten zodat de belangrijkste authenticatie tools niet
worden gecompileerd en dus ook niet overschreven. De tools die
je moet hercompileren zijn `mount' en `losetup' om de nieuwe encryptie
schema's onder te brengen. Ik raad je aan om naar de <ref id="Details"> sectie
hieronder te gaan voor deze stap.
</item>

<item>Compileer en installeer de `util-linux' source</item>

<item>Reboot de machine met de nieuwe kernel.</item>

<item>Verander `/etc/fstab', een regel toevoegen voor je mount punt
gaat als volgt:

<tscreen><code>
/dev/loop0  /mnt/crypt  ext2  user,noauto,rw,loop 0 0
</code></tscreen>
</item>

<item>Maak de directory aan die het filesysteem gaat inhouden, zoals
in `/mnt/crypt' hierboven.
</item>

<item>Als de gebruiker, maak je versleutelde file als volgt:

<tscreen><verb>
dd if=/dev/urandom of=/etc/cryptfile bs=1M count=10
</verb></tscreen>
</item>

<item>Draai losetup als volgt:

<tscreen><verb>
losetup -e serpent /dev/loop0 /etc/cryptfile
</verb></tscreen>

Je hebt maar een kans om het paswoord in te vullen, dus wees voorzichtig.
als je je paswoord twee keer wilt laten controleren, kun je het volgende 
commando gebruiken:

<tscreen><verb>
losetup -d /dev/loop0
</verb></tscreen>

Dit deactiveert je loop device. Daarna draai je losetup opnieuw om
je paswoord te testen, als volgt:

<tscreen><verb>
losetup -e serpent /dev/loop0 /etc/cryptfile
</verb></tscreen>
</item>

<item>Maak je ext2 filesysteem als volgt:

<tscreen><verb>
mkfs -t ext2 /dev/loop0
</verb></tscreen>
</item>

<item>Nu kun je je versleutelde filesysteem mounten met:

<tscreen><verb>
mount -t ext2 /dev/loop0 /mnt/crypt
</verb></tscreen>
</item>

<item>Als je klaar bent, kun je je filesysteem unmounten en beschermen als 
volgt:

<tscreen><verb>
umount /dev/loop0
losetup -d /dev/loop0
</verb></tscreen>
</item>
</enum>
</p>
</sect>


<sect><heading>Details<label id="Details"></heading>

<p><bf>Kernel Patches:</bf>

Je kan upgraden van `2.2.x' uitgaven met een patch. Elke patch
die voor `2.2.x' is uitgebracht bevat bug verbetering. Nieuwe
kenmerken worden toegevoegd aan de Linux `2.3.x' ontwikkelings kernel.
Om te installeren door een patch, haal de nieuwste patch files en
doe het volgende:

<tscreen><verb>
cd /usr/src
gzip -cd patchXX.gz | patch -p0
</verb></tscreen>

verander de xx voor alle versies groter dan de versie van je
momentele bron boom, IN VOLGORDE.

De standaard directory voor de kernel source is `/usr/src/linux'.
Als je source ergens anders staat raad ik een symbolische link aan
van `/usr/src/linux'.
</p>

<p><bf>De `MCONFIG' file vervanderen voor de `util-linux' package
compilatie:</bf>

De volgende zijn uittreksels van de 'MCONFIG' file die ik heb
gebruik om het `util-linux' pakket te compileren. Dit is bijna
identiek aan mijn setup, welke losjes is gebaseerd op RedHat 5.2.
Het punt is dat je geen belangrijke systeem tools gaat overschrijven zoals
`login', `getty', of `passwd'. Hoe dan ook, hier zijn de belangrijke
regels als volgt:

<tscreen><code>
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
</code></tscreen>
</p>
<p><bf>Suggesties:</bf></p>
<p>
Onthoud dat je elke van de acht loopback devices kunt gebruiken,
van `/dev/loop0' tot `/dev/loop7'. Gebruik een onopvallende directory
voor het mount punt. Ik raad aan een directory te maken met 700 permissies
in je home directory. Het zelfde geld voor de file waar de data in staat.
Ik gebruik een filenaam als `sysfile' of `config.data' in de `/etc/' directory.
Deze worden meestal over het hoofd gezien.

Ik heb erg simpele Perl scripts gemaakt om het filesysteem te mounten
en weer te unmounten met een commando. Schrijf deze, maak ze uitvoorbaar
(chmod u+x), en zet ze in je path.

<tscreen><code>
#!/usr/bin/perl -w
#
#minimaal programma om een loopback encrypted filesysteem in te stellen.
#Copyright 1999 door Ryan T. Rhea
`losetup -e serpent /dev/loop0 /etc/cryptfile`;
`mount /mnt/crypt`;
</code></tscreen>

Noem het bovenstaande script `loop' en dan kun je starten met
een commando (`loop') en een paswoord.

<tscreen><code>
#!/usr/bin/perl -w
#
#minimaal utility om een loopback encrypted filesysteem te deactiveren.
#Copyright 1999 door Ryan T. Rhea
`umount /mount/crypt`;
`losetup -d /dev/loop0`;
</code></tscreen>

Noem de tweede `unloop' en als je dan `unloop' typt wordt je filesysteem
snel gedeactiveerd.
</p>
</sect>
</article>
</linuxdoc>
