Aufbewahren geheimer Daten unter GNU/Linux


Der folgende Text ist ein Tutorial zum Artikel Aufbewahrung von vertraulichen Daten unter GNU/Linux (Hakin9 01/2005). Wir gehen davon aus, dass die folgenden �bungen mit Hilfe der beigef�gten Hakin9 Live-CD durchgef�hrt werden.

Achtung! Wir raten von der Verschl�sselung wichtiger Daten im System Hakin9 Live ab – es besteht die Gefahr, dass nach dem n�chsten Hochfahren des Rechners diese Daten unwiederbringlich verloren sind.

Ziel: Nach der Analyse der �bungen sollte der Leser imstande sein:

  • mit Hilfe des Pakets GnuPG einzelne Dateien sowohl symmetrisch als auch asymmetrisch zu verschl�sseln,
  • mit Hilfe des Werkzeugs EncFS ein verschl�sseltes Verzeichnis zu erstellen und anschliessend zu benutzen,
  • mit Hilfe des Werkzeugs cryptoloop eine verschl�sselte (reale oder virtuelle) Partition zu erstellen und einzubinden.

    Symmetrische Dateiverschl�sselung – paket GnuPG

    In der ersten �bung verwenden wir das Paket GnuPG um eine einzelne Datei zu verschl�sseln. In unserem Beispiel handelt es sich um die Datei HK1204.pdf.

    [01] Im Tutorial wird der AES-Algorithmus verwendet (er verf�gt �ber das beste Qualit�t/Leistungs-Verh�ltnis). Wir fangen mit dem Laden des Kernmoduls an, das f�r die Unterst�tzung dieses Algorithmus zust�ndig ist:

    $ su -
    # modprobe aes
    # exit

    [02] Wir erstellen das Verzeichnis /home/haking/encrypted, in dem unsere verschl�sselten Daten aufbewahrt werden:

    $ mkdir ~/encrypted

    In diesem Verzeichnis speichern wir die Datei HK1204.pdfab.

    [03] Es ist an der Zeit, die Daten zu verschl�sseln. Versuchen wir also, die Datei HK2104.pdf zu verschl�sseln, indem wir folgenden Befehl eingeben:

    $ gpg --output ~/encrypted/cyph1 --symmetric --cipher-algo AES192 ~/encrypted/HK2104.pdf

    Dieser Befehl f�hrt zur symmetrischen Verschl�sselung der Datei HK2104.pdf mit Hilfe des AES-Algorithmus mit einer Verschl�sselungsst�rke von 192 Bits und speichert die Ergebnisdatei im Verzeichnis ~/encrypted/cyph1.

    [04] Um die Datei verschl�sseln zu k�nnen m�ssen wir ein Passwort eingeben. Denken wir kurz an einen Satz, der keinen Sinn hat und trotzdem leicht zu merken ist. Ein Elefant kauft nur Flaschen ohne Pfand. So lassen sich die Gr�nen nicht hassen. W�hlen wir diesen Satz als unser Passwort.

    [05] Die Datei ist jetzt verschl�sselt. Wir sollten sicherheitshalber noch das Original l�schen:

    $ shred -n 35 -z -u ~/encrypted/HK2104.pdf

    [06] Um die Datei zu entschl�sseln, verwenden wir folgenden Befehl:

    $ gpg --output HK2104.pdf --decrypt ~/encrypted/cyph1

    Verschl�sselte Verzeichnisse – EncFS

    [07] Bevor wir das Programm EncFS verwenden, sollten wir zun�chst einmal zwei Verzeichnisse erstellen. Im ersten Verzeichnis (in unserem Fall ~/.crypto) werden die Dateien in verschl�sselter Form aufbewahrt (das Verzeichnis dient nur als Ablagefach, wir verwenden es eigentlich nicht). Im zweiten Verzeichnis (~/secret) werden die Dateien eingebunden (gemountet) und bei jedem Zugriff entschl�sselt. Die Einbindung erfolgt selbstverst�ndlich erst nach der Eingabe des richtigen Passworts.

    $ mkdir ~/.crypto

    $ mkdir ~/secret

    [08] Im n�chsten Schritt aktivieren wir den Mechanismus EncFS:

    $ su -; insmod fuse; exit

    $ encfs ~/.crypto ~/secret

    Nach dem Dr�cken der Taste [Enter] werden wir um die Wahl des Konfigurationsmodus gebeten. Wir entscheiden uns f�r den Modus f�r Preconfigured paranoid mode.

    Jetzt k�nnen wir ein Passwort f�r unser Archiv festlegen. Nach der Eingabe des Passworts und Best�tigung ist unser virtuelles Dateisystem funktionst�chtig.

    [09] Wir kopieren in das Verzeichnis ein paar Dateien (echo, ls, telnet):

    $ cp /bin/echo /bin/ls /bin/telnet ~/secret/

    Anschliessend pr�fen wir, was sich in den Verzeichnissen ~/secret und ~/.crypto:

    $ ls ~/secret

    $ ls ~/.crypto

    Wie wir sehen, sind im ersten Verzeichnis unsere Dateien vorhanden, in dem zweiten hingegen befinden sich dieselben Dateien in verschl�sselter Form. Damit jetzt keiner unsere Dateien lesen kann, k�nnen wir die Einbindung des virtuellen Dateisystems l�sen, indem wir folgenden Befehl eingeben:

    $fusermount -u ~/crypto

    Es hat geklappt! Unsere Daten sind endlich sicher.

    [10] Versuchen wir nun die Dateien noch einmal einzubinden, diesmal jedoch mit einer zus�tzlichen Sicherung, mit deren Hilfe die Einbindung des Dateisystem erst nach einer bestimmten Zeit der Unt�tigkeit (10 Minuten) automatisch gel�st wird:

    $ encfs --idle=10 ~/.crypto ~/secret

    Unsere Dateien sind wieder im Verzeichnis ~/secret verf�gbar. Nach 10 Minuten wird die Einbindung automatisch gel�st werden.

    Verschl�sseltes Dateisystem – cryptoloop


    Es ist noch ein Werkzeug geblieben, mit dessen Hilfe geheime Dateien verschl�sselt werden k�nnen. Es handelt sich um ein Bestandteil des Kernels des Linuxsystems namens cryptoloop

    [11] Angenommen, wir verf�gen �ber keine freie Partition (und das ist der Fall bei Hakin9 Live), wir verwenden den sog. Loopback-Mechanismus um so eine Datei als Dateisystem zu behandeln. Zun�chst einmal bereiten wir die Datei vor:

    $ dd if=/dev/urandom of=~/crypto.raw bs=1k count=10000

    So haben wir eine Datei von der Gr��e 10 MB erstellt, deren Inhalt aus zuf�lligen Werten (M�ll) besteht.

    [12]Anschliessend verkn�pfen wir diese Datei mit dem freien Ger�t loop und verschl�sseln es mit Hilfe der von uns ausgew�hlten Methode:

    $ su -

    # losetup -e AES192 /dev/loop1 /home/haking/crypto.raw

    Das Programm fragt nach einem Passwort, das aus mindestens 20 Zeichen bestehen soll.

    [13] So haben wir aber nur den Platz vorbereitet. Nun m�ssen wir dort ein bisschen aufr�umen, d.h. ein Dateisystem festlegen. Zum Beispiel ext2:

    # mkfs.ext2 /dev/loop1

    [14]Danach kann das Ger�t loop1 entfernt werden (Option -d)

    # losetup -d /dev/loop1

    # exit

    [15] Unser versch�sseltes Dateisystem kann nun eingebunden und benutzt werden, so wie jedes andere Dateisystem. Wir binden das Dateisystem ein und schauen, wie es funktioniert:

    $ mkdir ~/encrypted_disk

    $ mount -t ext2 ~/crypto.raw ~/encrypted_disk -oencryption=aes-192

    Mount wird nach der Eingabe des richtigen Passworts die angegebene Datei mit dem ersten freien Ger�t loop verkn�pft.

    [16] Wir k�nnen jetzt unsere Dateien in den sicheren Container kopieren:

    $ cp /bin/echo /bin/ls /bin/telnet ~/encrypted_disk

    Das war's – unser neues verschl�sseltes Laufwerk kann jetzt problemlos eingebunden werden. Keiner, der das Passwort nicht kennt, kann jetzt auf die dort vorhandenen Dateien zugreifen