TrueCrypt: Hidden Volumes unter Linux

Seit der 4.0er Version von Truecrypt ist es unter Linux möglich, verschlüsselte Truecrypt-Container (Volumes) als Laufwerk einzubinden. Seit der aktuellen Version 4.2 vom 17.04.2006 kann man unter Linux auch Volumes erstellen.

Interessant ist bei Truecrypt das Plausible-Deniability-Konzept, wonach sich ein hidden volume innerhalb eines anderen, outer volumes befinden kann. Sollte man mal eine Knarre an den Kopf gehalten bekommen und zur Herausgabe des Passworts gezwungen werden, so gibt man dann nur das Passwort des outer volumes, in dem dann irgendwelche Alibi-Daten liegen, heraus. Das outer volume verhält sich so, als enthielte es gar kein verstecktes volume: es zeigt die volle Partitionsgröße an, lässt sich komplett mit Daten auffüllen etc. Ob das outer oder hidden volume als Laufwerk eingehängt wird, wird einzig über die Passwortabfrage beim Einbinden festgelegt.

Auf truecrypt.org gibt es Binärpakete für diverse Distributionen. UbuntuUser mit aktuellem Kernel können auf diese Installationsanleitung zurückgreifen.

  1. Erstellen der Containerdateien (erst das outer, dann das hidden volume):

    truecrypt --type normal -c tresor.tc && truecrypt --type hidden -c tresor.tc
    (Beispiel ist aus den man pages)

  2. Bei der Frage nach dem Dateisystem kann man zwischen FAT und keinem Dateisystem wählen. Mit FAT haben Windows und Linux keine Probleme. Kümmert man sich nicht um Windows, kann man hier auch None wählen und das Laufwerk später nach seinen Wünschen formatieren.
    Filesystem:
     1) FAT
     2) None
    Select [1]:
  3. Jetzt wird die Gesamtgröße des outer volumes abgefragt. Hier können Werte wie 4000000K, 500M oder 20G eingegeben werden. Ich habe für dieses Beispiel nur 20M eingegeben, damit ich nicht ewig auf die Formatiererei warten muss …
    Enter volume size (bytes - size/sizeK/sizeM/sizeG): 20M
  4. Den Hash-Algoritmus bestimmen …
    Hash algorithm:
     1) RIPEMD-160
     2) SHA-1
     3) Whirlpool
    Select [1]: 1
  5. … die Verschlüsselung …
    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]: 1
  6. … und das Passwort für das outer volume 2 mal eingeben.
    Enter password for new volume "tresor.tc":
    Re-enter password:
  7. Das Volume wird nun erstellt. Nach der Erfolgsmeldung Volume created
    Done: 18.54 MB  Speed: 7.72 MB/s  Left: 0:00:00
    Volume created.
  8. … geht’s von vorne los mit den Abfragen; diesmal für das hidden volume.
    Filesystem:
     1) FAT
     2) None
    Select [1]: 1
    
  9. Jetzt muss man selbst abwägen, wie groß das hidden volume sein soll. (Ich wähle in diesem Beispiel einfach mal 10MByte.)
    Enter volume size (bytes - size/sizeK/sizeM/sizeG): 10M
  10. Dann wird wieder nach den gewünschten Hash- und Verschlüsselungsalgoritmen gefragt.
    Hash algorithm:
     1) RIPEMD-160
     2) SHA-1
     3) Whirlpool
    Select [1]: 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]: 1
  11. Jetzt muss das Passwort für das hidden volume gesetzt werden. Logischerweise ist hier ein anderes Passwort zu wählen als zuvor beim outer volume.
    Enter password for new volume "tresor.tc":
    Re-enter password:
  12. Das hidden volume wird wesentlich schneller erstellt, als das outer volume. Danach verabschiedet sich Truecrypt.
    Done: 0.00 MB  Speed: 0.00 MB/s  Left: 1:53:46
    Volume created.

Ein ls -l sollte die Existenz der Containerdatei tresor.tc bestätigen. Jetzt brauchen wir noch einen mount point, um dieses als Laufwerk ins Dateisystem einzuhängen. Wer keins hat, erstellt sich eins. Z.B. per mkdir mnt.

Das Volume kann man z.B. per

truecrypt -M "rw,utf8,sync,uid=[deine-user-id]" ~/tresor.tc ~/mnt

gefolgt von der Eingabe des Passworts, mounten.

(Die eigene uid kann mit dem Kommando id herausgefunden werden.)

Wie gesagt unterscheidet Truecrypt nur anhand des eingegeben Passworts, welches Volume es ladet.

Das outer volume verhält sich ja so, als gäbe es kein hidden volume darin. Das heisst unter anderem, dass man es auch soweit mit Daten füllen kann, dass Bereiche des hidden volume überschrieben oder ganz zerstört werden können. Wer vor hat mit dem outer volume zu arbeiten und dabei das hidden volume vor versehentlichem Überschreiben schützen möchte, füge zu obigem Kommando noch den Parameter -P hinzu, also

truecrypt -P -M "rw,utf8,sync,uid=[deine-user-id]" ~/tresor.tc ~/mnt

In diesem Fall fragt Truecrypt nacheinander die Passwörter für das outer und hidden volume ab und ladet das outer volume als Laufwerk. Wenn man dann z.B. das outer volume bis zum Rand mit Daten füllt, verhindert Truecrypt als letzte Notbremse jede Operation auf dem Laufwerk, bis man es (mit truecrypt -dismount ~/mnt) aus- und wieder einhängt.

Wer die langen Befehle nicht jedesmal einhacken will, kann sich Aliase oder Shell-Skripte anlegen.