Um Dateien nicht für jedermann zugänglich zu machen können diese verschlüsselt werden. Solange es sich um einzelne Dateien handelt ist dies mit Programmen wie z.B. GnuPG oder OpenSLL (siehe Datei verschlüsseln) recht gut möglich. Will man jedoch eine Vielzahl Dateien verschlüsseln und transparent darauf zugreifen ist GnuPG nicht mehr so praktisch da man jede Datei einzeln entschlüsseln und wieder verschlüsseln muss. In diesem Fall ist eine transparente Verschlüsselung hilfreich. geli ermöglicht es Partitionen transparent zu verschlüsseln. Wendet man es auf eine Imagedatei an kann man somit verschlüsselte Images erzeugen die dann z.B. auf einem Webserver abgelegt werden können.
Damit GELI beim Systemstart geladen wird muss folgende Zeile in die /boot/loader.conf hinzugefügt werden:
geom_eli_load="YES"
Um nun eine leere Imagedatei auf der Festplatte anzulegen wird per dd eine leere Datei erzeugt (in diesem Fall 1GB Größe):
% dd if=/dev/zero of=crypt.img bs=512 count=2004992
Um auf der Datei arbeiten zu können wie auf einem echten Datenträger muss sie als Device eingebunden werden. Dies wird über den Weg einer Memorydisk mittels mdconfig erledigt:
# mdconfig -f crypt.img md0
Das erzeugte Device heißt also md0 und sollte nun unter /dev zu finden sein.
Nun wird eine Schlüsseldatei angelegt mit welcher das Image dann verschlüsselt wird.
% dd if=/dev/random of=crypt.key bs=64 count=1
Nun muss GELI noch das Device initialisieren.
# geli init -s 4096 -K crypt.key /dev/md0
Anschliessend muss noch zwei mal das zum Verschlüsseln zu verwendende Passwort eingegeben werden.
Um das Ganze nun zu aktivieren wird folgend vorgegangen:
# geli attach -k crypt.key /dev/md0
Hiermit wurde das unverschlüsselte Device /dev/md0.eli erzeugt.
Das neue Image muss nun noch mit einem Dateisystem gefüllt werden.
# dd if=/dev/random of=/dev/md0.eli bs=1m # newfs /dev/md0.eli
Um das Device nun in /crypt zu mounten muss nur noch folgender Befehl abgesetzt werden:
# mount /dev/md0.eli /crypt
Das Device kann nun normal verwendet werden.
Zunächst wird das Laufwerk unmouned. Dies geschieht mit:
# umount /crypt
Anschliessend muss noch der GELI-Provider ausgeworfen werden. Hierdurch wird der entschlüsselte Zugriff beendet.
# geli detach md0.eli
Endgültig muss noch die Datei aus der Deviceliste ausgeworfen werden:
# mdconfig -d -u md0