Datenverschlüsselung unter Linux mit Bordmitteln
Überden Kernel Loopback Block device ist es möglich Daten oder ganze Partitionen zu verschlüsseln, um diese vor Fremdzugriff zu schützen. Wie das geht beschreiben wir im nachstehenden Beispiel:
1. Vorerst wird das Paket “Crypto-API” benötigt (siehe http://sourceforge.net/projects/cryptoapi/) und wird wie folgt installiert:
- Installation:
- ./configure && make && make install
- Sourcen entpacken und patchen:
- cd util-linux
- patch -p1 < ../cryptcapi/doc/util-linux.patch
- util-linux Sourcen kompilieren:
- ./configure && make && make install
2. Anlegen eines leeren Dateisystems:
- dd if=/dev/zero of=/etc/cryptfile bs=1k count=1000
3. Einrichten des eigentlichen loop-device:
- losetup -e idea /dev/loop0 /etc/cryptfile
4. Dateisystem anlegen:
- mkfs -t ext2 /dev/loop0 100000
5. Abmelden des loop-device
- umount /dev/loop0
- losetup -d /dev/loop0
6. Letztendliches Arbeiten mit den verschlüsselten Daten:
- losetup -e serpent /dev/idea /etc/cryptfile
- mount -t ext2 /dev/loop0 /mnt/crypt
Das gemountete Arbeitsverzeichnis /mnt/crypt kann wie gewohnt mit den üblichen Dateiverwaltungsbefehlen bedient werden.
7. Um die Loopback Devices nicht immer händisch einbinden zu müssen, kann man sich auch ein Shellscript bauen, welches dies mit einer einmaligen Passwortabfrage automatisch erledigt. Dies könnte z.B. so aussehen:
- #!/bin/bash
- echo "---:[ Loading crypted files"
- insmod /lib/modules/2.4.6/cryptoapi/cryptoapi.o
- insmod /lib/modules/2.4.6/cryptoapi/cryptoloop.o
- insmod /lib/modules/2.4.6/cryptoapi/cipher-twofish.o
- echo "Passwort eingeben"
- echo ""
- read -s -p "---:[ Password to mount encrypted devices: " PASS; echo
- echo ""
- read -s -p "---:[ Enter the keysize: " KEY; echo
- echo "Versuche encrypted devices zu mounten..."
- echo "$PASS" | /sbin/losetup -e twofish -p 0 -k $KEY /dev/loop0 /crypt/data
- e2fsck /dev/loop0
- mount -t ext2 /dev/loop0 /data
- echo "$PASS" | /sbin/losetup -e twofish -p 0 -k $KEY /dev/loop1 /crypt/home
- e2fsck /dev/loop1
- mount -t ext2 /dev/loop1 /home