HowTo: AES-Verschlüssung für Linux, Windows und Mac OS

Heutzutage schleppt fast jeder wichtige persönliche und private Daten in digitaler Form mit sich herum. Private Bilder, Bewerbungen, persönliche Dokumente, Passwörter oder berufliche Dinge; man könnte die Liste der Daten, welche nicht in fremde Hände gelangen sollten, unendlich lang weiterführen. Wer solche Daten auf Massenspeichern wie USB-Stick/-Festplatte oder CD-Rom/DVD mit sich trägt und diese nicht vor dem Zugriff Unbefugter schützt, der geht ein hohes Risiko ein.

Linux-Truecrypt HowTo / Logo

Schneller als man glaubt lässt man in der Straßenbahn die Handtasche mit dem USB-Stick liegen, so dass der Finder die Möglichkeit hat, in aller Ruhe die Daten auf dem Datenträger auszuspionieren. Jeder kann sich nun vorstellen, welche Schandtaten in Zeiten von Youtube oder StudiVZ möglich wären. Es wird also Zeit, dass ungeschützte Datenträger der Vergangenheit angehören.

Das zur Zeit beste und weitverbreiteste Programm, um Daten und ganze Festplatten-Partitionen zu verschlüsseln, ist TrueCrypt. Der Vorteil dieses Programms ist, dass es neben Windows auch für Linux und Mac OS angeboten wird, so dass der Anwender in der Lage ist, auf nahezu allen PC's auf die verschlüsselten Daten zuzugreifen. Des Weiteren bietet TrueCrypt moderne Verschlüsselungsarten wie AES, Twofish und Serpent an.

In diesem Artikel wird eine ausführliche Anleitung angeboten, wie an TrueCrypt unter Linux installiert, wie man eine Festplatte (oder besser gesagt eine Partition) mit TrueCrypt verschlüsselt und wie man nachher unter Windows und Linux auf diese Daten zugreifen kann.

Vorbereitung: TrueCrypt installieren und Kernel modifizieren

Normalerweise sollte TrueCrypt bei jeder modernen Linux Distribution in der Softwareverwaltung vorhanden sein. Wenn nicht, kann man TrueCypt hier herunterladen. Unter Linux Gentoo installiert man TrueCrypt mit dem Befehl emerge truecrypt.

 * TrueCrypt requires Device mapper support!
 * Please enable Device mapper support in your kernel config, found at:
 * (for 2.6 kernels)
 *
 *   Device Drivers
 *     Multi-Device Support
 *       <*> Device mapper support
 *
 * and recompile your kernel if you want this package to work.
 *  For TrueCrypt 4.2 to work you have to load a
 *  kernel module. This can be done in three ways:
 *
 *  1. Loading the module automatically by the running kernel.
 *     For this 'Automatic kernel module loading' needs to be
 *     enabled (CONFIG_KMOD=y).
 *  2. Loading the module manually before mounting the volume.
 *     Try 'modprobe truecrypt' as root to load the module.
 *  3. Load the module during boot by listing it in
 *     '/etc/modules.autoload.d/kernel-2.6'

 Nach der Installation wird man darauf hingewiesen, dass TrueCrypt bestimmte Voraussetzungen an den Kernel stellt. So ist es erforderlich, den Device Mapper fest in den Kernel einzubinden (1), diesen mit modprobe truecrypt manuell zu laden (2) oder das Modul beim starten automatisch zu laden (3). Man sollte nun den Kernel überprüfen und ggf. die fehlenden Module nachträglich hinzufügen:

# cd /usr/src/linux
# make menuconfig

Das sind die Module, die benötigt werden:

Device Drivers --> Multi-device support (RAID and LVM)  --->
[*] Multiple devices driver support (RAID and LVM)
<*> Device mapper support
<*> Crypt target support

Wir haben uns entschlossen, die Module fest in den Kernel einzubinden. Anschließend den Kernel kompilieren und das System neustarten:

# make && make modules_install
# cp arch/i386/boot/bzImage /boot/gentoo-2.6.23-02
# reboot

 Festplatte und Partitionen vorbereiten

In diesem Artikel wird eine externe 120 GB IDE-Festplatte verwendet, welche über ein externes Festplattengehäuse an dem PC angeschlossen wird. Linux erkennt dieses Device in der Regel als /dev/sda und bevor wir mit TrueCrypt die Verschlüsselung starten, konfigurieren wir mit fdisk die Partitionen. Es ist sinnvoll, die komplette Festplatte in einen öffentlichen und einen geschützten Bereich zu teilen, denn in der Regel sollen nicht alle Daten, sondern nur bestimmte Dokumente geschützt werden.

Aus diesem Grund erhält die Festplatte im folgenden eine 20 GB FAT32-Partition, welche auf nahezu jedem modernen PC erkannt und gelesen werden kann. Hier werden wir später auch die Installationsdateien für Windows und Mac OS ablegen, so dass die Software auf einem fremden PC ggf. nachinstalliert werden kann. Denn was nützt jemandem eine verschlüsselte Partition, wenn er sie nur zu Hause am eigenen PC entschlüsseln kann? Die restlichen 100 GB werden mit dem NTFS-Dateisystem angelegt, um auch Dateien speichern zu können, die größer als 4 GB sind. Letzteres ist unter FAT32 nicht möglich.

Wie man die Festplatte letztendlich einrichtet, ist jedem selbst überlassen. Wer ein grafisches Programm dem guten alten fdisk bevorzugt, der kann dies ohne Probleme tun.

// *** FDISK starten *** //
# fdisk /dev/sda

// *** ERSTE Partition anlegen *** //

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-14593, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-14593, default 14593): +20000M

// *** ZWEITE Partition anlegen *** //

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (2434-14593, default 2434):
Using default value 2434
Last cylinder or +size or +sizeM or +sizeK (2434-14593, default 14593):
Using default value 14593

// *** Label der Partitionen ändern *** //

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): b
Changed system type of partition 1 to b (W95 FAT32)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 7
Changed system type of partition 2 to 7 (HPFS/NTFS)

// *** neue Partitionen anzeigen *** //

Command (m for help): p

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x95767335

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        2433    19543041   83  Linux
/dev/sda2            2434       14593    97675200   83  Linux

// *** Partitionen speichern *** //

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

Nun sind die beiden Partitionen angelegt und die erste (öffentliche) Partition kann formatiert werden. Die zweite Partition wird später in TrueCrypt formatiert.

mkfs.vfat /dev/sda1

TrueCrypt Grundlagen

Bevor wir mit der eigentlichen Verschlüsselung beginnen, ein wenig Theorie:

Container - Datei oder ganze Partition?
Entweder man verschlüsselt eine komplette Partition oder man erstellt in einer öffentlichen Partition eine verschlüsselte Datei, welche ähnlich wie eine ISO-Datei eingehangen werden. Letzteres hat den Vorteil, dass man einen geschützten Bereich in einer öffentlichen Partition hat und nicht die ganze Partition veschlüsselt.
http://de.wikipedia.org/wiki/TrueCrypt#Container

Volumes - normale oder versteckte Partition
TrueCrypt bietet zwei Volume Types an, nämlich normal und hidden . Beim normalen Volume Type wird die komplette Partition verschlüsselt und die Header-Informationen verschleiert. Das Volume wird zwar nicht angezeigt und ist versteckt, aber ein potentieller Angreifer könnte die versteckte Partition dort vermuten. Einen Schritt weiter geht der Volume Type hidden: hier wird die verschlüsselte Partition in einem leeren Bereich eineranderen Partition versteckt, um es dem Angreifer noch schwerer zu machen. In der Regel reicht aber der nomale Volume Type aus.
http://www.truecrypt.org/docs/?s=hidden-volume

Hash- und Encryption-Algorithmus
Zuerst muss man den Hash-Algorithmus definieren, welcher quasi einen Zufallsgenerator darstellt und einen so genannten Master-Key erstellt. Anschließend wählt man den Verschlüsselungsalgorithmus aus, mit dem die Daten letztendlich verschlüsselt werden. Weit verbreitet ist AES, welches man auswählen sollte.
http://www.truecrypt.org/docs/?s=hash-algorithms
http://www.truecrypt.org/docs/?s=encryption-algorithms

Partition mit TrueCrypt verschlüsseln

Truecrypt hat unter Linux noch keine grafische GUI, diese ist aber auch nicht notwendig. Mit der Option -c (-C = config) starten wir den Wizard:

truecrypt -c
Volume type:
 1) Normal
 2) Hidden
Select [1]: 1

Enter file or device path for new volume: /dev/sda2
WARNING: Data on device will be lost. Continue? [y/N]: y
Filesystem:
 1) FAT
 2) None
Select [1]: 2

Hash algorithm:
 1) RIPEMD-160
 2) SHA-1
 3) Whirlpool
Select [1]:

Encryption algorithm:
 1) AES
 2) Blowfish
 3) CAST5
 4) Serpent
 5) Triple DES
 6) Twofish
 7) AES-Twofish
 8) AES-Twofish-Serpent
 9) Serpent-AES
10) Serpent-Twofish-AES
11) Twofish-Serpent
Select [1]:

Enter password for new volume '/dev/sda2':
Re-enter password:

Enter keyfile path [none]:

TrueCrypt will now collect random data.

Is your mouse connected directly to computer where TrueCrypt is running? [Y/n]: Y

Please move the mouse randomly until the required amount of data is captured...
Mouse data captured: 100% 

Done: 58287.94 MB  Speed: 13.39 MB/s  Left: 0:46:10

Insgesamt 46 Minuten hat die Verschlüsselung gedauert. Fassen wir kurz zusammen: wir haben als Volume Type Normal gewählt, da die Sicherheit ausreichend gegeben ist. In Schritt 2 kann man die Partition gleich als FAT32 (1) oder diese später mit einem beliebigen Dateisystem formatieren. Da in diesem Artikel NTFS verwendet werden soll, wurde None ausgewählt. Als Hash- und Encryption-Algorithmus wurde jeweils der Default-Wert verwendet, also RIPEMD-160 und AES.

Da wir in Schritt 2 kein Dateisystem angegeben haben, müssen wir dieses nachträglich anlegen.

// Verschlüsselte Partition ohne Dateisystem einhängen
# truecrypt --filesystem=none /dev/sda2

// Mountpunkt finden
// In diesem Fall: /dev/mapper/truecrypt0
# truecrypt -l | grep /dev/sda2
/dev/mapper/truecrypt0 /dev/sda2

// NTFS-Dateisystem anlegen
# mkfs.ntfs /dev/mapper/truecrypt0
Cluster size has been automatically set to 4096 bytes.
Initializing device with zeroes: 9%

// Unmount des Volumes
truecrypt -d /dev/sda2

Nach einigen Minuten und einer Tasse Kaffee kann man nun damit beginnen, das verschlüsselte Laufwerk in Betrieb zu nehmen. Dazu benutzt man das Programm truecrypt in Verbindung mit mount:

// "Mapper-Device" anlegen
// /dev/mapper/truecrypt0
# truecrypt /dev/sda2
Enter password for '/dev/sda2':

// Volume mit Optionen einhängen
mount -t ntfs-3g /dev/mapper/truecrypt0 /mnt/usb_pladde/

Wichtig ist, dass wir nach dem Passwort gefragt wird, wenn man mit truecrypt das Volume einbindet. Anschließend hängen wir mit mount wie gewohnt Volume in den Verzeichnisbaum ein. Um das Volume zu entfernen, gibt man folgende Befehle ein:

// Volume aushängen
umount /mnt/usb_pladde/
// "Mapper-Device" entfernen
# truecrypt -d /dev/sda

Der Test: Die verschlüsselte Festplatte unter Windows

Bis zu diesem Zeitpunkt können wir unter Linux problemlos auf das verschlüsselte Volume schreiben und davon lesen. Aber wie verhält sich das Laufwerk unter Windows? Es nützt alles nichts, wenn man darauf ohne Passwortabfrage oder gar nicht zugreifen kann. Dazu stecken wir die externe USB-Festplatte an und sehen uns die Laufwerke im Explorer und in der Datenträgerverwaltung an.

TrueCrypt: unter Windows wird das verschlüselte Laufwerk nicht erkannt
TrueCrypt: unter Windows wird
das verschlüselte Laufwerk nicht erkannt

Windows XP erkennt zwei Partitionen: die erste Partition ist mit FAT32 formatiert und unverschlüsselt, die zweite Partition wird angezeigt, aber der Zugriff ist nicht möglich. Windows XP fragt bei einem Doppelklick auf dieses Laufwerk, ob der Datenträger formatiert werden möchte, was wir natürlich mit einem Nein abbrechen.

Im nächsten Schritt installieren wir von der ersten Partition das Programm Truecrypt. Nachdem man ein freies und das zu entschlüsselnde Laufwerk ausgewählt hat, wird man nach einem Passwort abgefragt. Nach Eingabe des korrekten Passworts erhält man Zugriff auf das Volume.


Truecrypt unter Windows entschlüsselt unser
mit AES verschlüsseltes Laufwerk

Es ist zwar nicht die sauberste Lösung, da das verschlüsselte Laufwerk im Explorer angezeigt wird, aber um dieses Problem zu beseitigen, hätte man bei Einrichtung des Laufwerks hidden auswählen müssen. Ansonsten funktioniert die Verschlüsselung reibungslos, denn sowohl unter Linux als auch Windows können Daten gelesen bzw. geschrieben werden. Bei beiden Betriebssystemen ist auch die Sicherheit gegeben, so dass nur Anwender Zugriff erhalten, denen das Passwort bekannt ist.