Möchte ein Benutzer auf seinem Webserver oder Heimcomputer einen verschlüsselten Container mit sensiblen Daten erzeugen, so muss zuerst einmal die Datei her, wo diese Daten abgelegt werden sollen. In dem Beipsiel wird eine 2GB große Datei erzeugt. Zuerst wird mit dd
eine Datei geschrieben, die mithilfe von urandom
viel Schrott beinhaltet. Auf diese Weise kann nicht gesagt werden, wieviele verschlüsselte Daten sich in dieser Datei befinden. Anschließend wird mit mkdir
das Zielverzeichnis erzeugt, wohin das Crypto-Device gemounted werden soll.
sample:/# dd if=/dev/urandom of=/home/username/myfile bs=4096 count=524288
sample:/# mkdir /home/username/myfiles
sample:/# ls -l
total 2099208
-rw-r--r-- 1 root root 2147483648 Dec 10 01:16 myfile
drwxr-xr-x 3 root root 4096 Dec 10 02:35 myfiles
Nun muss ein Loop-Device erzeugt werden. losetup
erlegt das für uns. So wird sozusagen aus einer Datei ein virtuelles Blockdevice erzeugt. Auf diesem Blockdevice kann wiederum so zugegriffen werden, wie der Benutzer es von Festplatten gewohnt ist.
sample:/# losetup /dev/loop0 /home/username/myfile
Nun existiert ein Blockdevice /dev/loop0
. Dieses wird nun mithilfe von cryptsetup
initialisiert. Die Parameter finden sich in der man-page wieder. Ab Linuxkernel 2.6.10 kann ein alternatives IV Schema zur Verhinderung einer „Watermark Attack Weakness“ verwendet werden. Hierzu kann aes-cbc-essiv:sha256
verwendet werden.
sample:/# cryptsetup -y -c aes -s 256 -h sha256 create mycrypt /dev/loop0
Nun existiert ein neues Blockdevice unter /dev/mapper/mycrypt
. Dies ist wiederum ein virtuelles Gerät, welches durch die Verschlüsselungsroutinen mit dem angegebenen Kennwort so geleitet wird, dass schlußendlich der verschlüsselte Datenstrom auf das Loop-Device /dev/loop0
gelangt, was wiederum dann in der Datei selbst landet. Das wars schon. Nun das Gerät mit einem Dateisystem ausstatten.
sample:/# mkfs.ext3 /dev/mapper/mycrypt
Jetzt kann das Laufwerk gemountet werden. Hierzu einfach das verwendete Dateisystem eingeben und das Laufwerk zum angegeben Verzeichnispunkt mounten.
sample:/# mount -t ext3 /dev/mapper/mycrypt /home/username/myfiles
sample:/# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 15G 7.4G 6.7G 53% /
tmpfs 100M 0 100M 0% /lib/init/rw
udev 10M 16K 10M 1% /dev
/dev/mapper/mycrypt 2.0G 68M 1.9G 4% /home/username/myfiles
Soweit so gut. Nun gibt es ein neues verschlüsseltes Laufwerk im System, auf das der Benutzer nach herzenslust sensible Daten schreiben kann. Die Passphrase sollte entsprechend lang sein und zusätzlich auch eine gewisse Komplexität beinhalten. Das bedeutet, Sonderzeichen, Groß- und Kleinschreibung und Zahlen. Empfohlen wird von mir eine Länge von mindestens 30 Zeichen.