Privacy-Handbuch: Daten verschlüsseln

Dieser Abschnitt ist noch im Entstehen und noch nicht offizieller Bestandteil des Buchs. Gib den Autoren Zeit, den Inhalt anzupassen!

Dass die Verschlüsselung von Daten der Erhaltung einer Privatsphäre dient, bemerkt man spätestens, wenn ein USB-Stick verloren geht. Wird ein Laptop gestohlen, möchte man die Fotosammlung sicher nicht im Internet sehen.


Investigative Journalisten, Rechtsanwälte und auch Priester haben das Recht und die Pflicht, ihre Informanten bzw. Klienten zu schützen. Sie sollten sich frühzeitig Gedanken über ein Konzept zur Verschlüsselung machen. Es ist wirklich ärgerlich, wenn die Rote Hilfe einen unverschlüsselten Datenträger mit Mitgliederdaten verliert. Das kann ernste Konsequenzen haben.


Als Whistleblower sind besondere Anforderungen an die Datensicherheit zu stellen. Neben der sicheren Aufbewahrung kommt es auch darauf an, keine Spuren auf den Rechnern zu hinterlassen. Im Fall Bradley Mannings konnten Forensiker viele Daten wieder herstellen

Die kurzen Beispiele zeigen, dass unterschiedliche Anforderungen an eine Verschlüsselung bestehen können. Bevor man wild anfängt, alles irgendwie zu verschlüsseln, sollte man sich Gedanken über die Bedrohung machen, gegen die man sich schützen will:

  1. Schutz sensibler Daten wie z.B. Passwortlisten, Revocation Certificates o.ä. erfordert die Speicherung in einem Container oder verschlüsselten Archiv, welches auch im normalen Betrieb geschlossen ist.
  2. Schutz aller persönlichen Daten bei Verlust oder Diebstahl von Laptop oder USB-Stick erfordert eine Software, die transparent arbeitet ohne den Nutzer zu behindern und bei korrekter Anmeldung möglichst automatisch den Daten-Container öffnet (beispielsweise TrueCrypt für WINDOWS oder DM-Crypt für Linux).
  3. Backups auf externen Medien enthalten in der Regel die wichtigen privaten Daten und sollten ebenfalls verschlüsselt sein. Dabei sollte die Wiederherstellung auch bei totalem Datenverlust möglich sein. Es ist nicht sinnvoll, die Daten mit einem PGP-Schlüssel zu chiffrieren, der nach einem Crash nicht mehr verfügbar ist.
  4. Wer eine Manipulation der Sytemdaten befürchtet, kann seinen Rechner komplett verschlüsseln (mit Truecrypt für WINDOWS, DM-Crypt für Linux oder GELI für FreeBSD).


Zur Herausgabe von Schlüsseln im Fall einer Beschlagnahme des Rechners oder verschlüsselten Datenträgers gibt es immer wieder Missverständnisse.


In Deutschland gelten folgende gesetzlichen Reglungen:

  • Richten sich die Ermittlungen gegen den Besitzer des Rechners oder Datenträgers muss man grundsätzlich keine Keys herausgeben.
  • Richten sich die Ermittlungen gegen Dritte, kann man die Herausgabe von Keys verweigern, wenn man sich auf das Recht zur Zeugnisverweigerung berufen oder glaubhaft(!) versichern kann, dass man sich damit selbst belasten würde. Im Zweifel sollte man einen Anwalt konsultieren.

In Großbritannien ist es bereits anders. Gemäß dem dort seit Oktober 2007 geltendem RIPA-Act können Nutzer von Verschlüsselung unter Strafandrohung zur Herausgabe der Schlüssel gezwungen werden. Es drohen bis zu 2 Jahre Gefängnis oder Geldstrafen. Das die Anwendung des Gesetzes nicht auf die bösen Terroristen beschränkt ist, kann man bei Heise.de nachlesen. Es wurde als ersten gegen eine Gruppe von Tierschützern angewendet.[1]


Bei Einreise in die USA sind die Grenzbehörden berechtigt, elektronische Geräte (Laptops und Smartphones) zu durchsuchen. Eine Herausgabe von Passwörtern kann ohne Durchsuchungs­beschluss nicht erzwungen werden, aber die Behörden können das Gerät aber zur weiteren Untersuchung einziehen, wenn man das Passwort nicht heraus geben will. Die EFF.org rät, mit einer leeren, unverschlüsselten Festplatte einzureisen und ein datenloses Handy zu nutzen: https://www.eff.org/wp/defending-privacy-us-border-guide-travelers-carrying-digital-devices

Das Container-Konzept

Bearbeiten

Der Container ist eine passende Metapher für das Konzept der vorgestellten Tools Truecrypt und DM-Crypt. Ein Container steht rum und nimmt Platz weg, egal ob er leer oder voll ist. In diesem Fall belegt der Container Platz auf der Festplatte oder dem USB-Stick.


Ist der Container verschlossen, kommt niemand an die dort lagernden Daten heran. Mit einem Schlüssel kann der Container geöffnet werden (gemounted: in das Dateisystem eingefügt) und jeder, der an einem offenen Container vorbeikommt, hat Zugriff auf die dort lagernden Daten. Als Schlüssel dient eine Passphrase und/oder Schlüsseldatei(en).


Der Zugriff auf Dateien innerhalb des geöffneten Containers erfolgt mit den Standardfunktionen für das Öffnen, Schließen und Löschen von Dateien. Auch Verzeichnisse können angelegt bzw. gelöscht werden. Die Verschlüsselung erfolgt transparent ohne weiteres Zutun des Nutzers.


Ein Container schützt die Daten nur, wenn er geschlossen ist! Wenn man keinen ZUgriff auf die Daten braucht, sollte man den Container schließen. Einerseits ist bei einem geöffneten Container ein direkter Zugriff auf die Daten möglich. Außerdem können bei einem geöffneten Container die kryptografischen Schlüssel aus dem RAM des Rechners ausgelesen und später zum Entschlüsseln der Daten genutzt werden. Elcomsoft bietet mit dem Forensic Disk Decryptor eine Tool für diesen Angriff auf Truecrypt, PGP und Bitlocker.[2]

Quick and Dirty mit GnuPG

Bearbeiten

Eine Möglichkeit ist die Verschüsselung einzelner Dateien mit GnuPG oder PGP. Einfach im bevorzugten Dateimanager mit der rechten Maustaste auf eine Datei klicken und den Menüpunk Datei verschlüsseln wählen. Mit der Auswahl eines Schlüssels legt man fest, wer die Datei wieder entschlüsseln kann. Für Backups wird in der Regel der eigene Schlüssel verwendet. Anschließend ist das unverschlüsselte Original NICHT(!) in den Papierkorb sondern in den Reißwolf zu werfen.


Wird die Option Symmetrisch verschlüsseln gewählt, erfolgt die Verschlüsselung nicht mit einem Schlüssel sondern nur mit einer Passphrase. Die Entschlüsselung erfordert dann ebenfalls nur die Angabe dieser Passphrase und keinen Key. Diese Variante wird für Backups empfohlen, die man auch nach einem Crash bei totalem Verlust aller Schlüssel wieder herstellen will.


Zum Entschlüsseln reicht in der Regel ein Klick (oder Doppelklick) auf die verschlüsselte Datei. Nach Abfrage der Passphrase für den Schlüssel liegt das entschlüsselte Original wieder auf der Platte.

GnuPG für WINDOWS

Bearbeiten

Diese simple Verschlüsselung klappt allerdings unter WINDOWS nicht auf Anhieb. Es ist zuerst die nötige Software zu installieren. Folgende Varianten kann man probieren:

  1. Das Programmpaket GpgSX enthält neben einer aktuellen Version von GnuPG auch einige grafische Tools, welche die Arbeit vereinfachen. Neben einer Schlüsselverwaltung wird auch eine Erweiterung für den Explorer installiert, die Verschlüsseln und Entschlüsseln von Dateien mit wenigen Mausklicks ermöglicht.

    Download: http://gpgsx.berlios.de/

  2. Für Nutzer, die es gern etwas einfacher und übersichtlicher mögen, gibt es die Tools gpg4usb http://gpg4usb.cpunk.de oder Portable PGP http://ppgp.sourceforge.net (eine Java-App). Diese kleinen Tools können Texte und Dateien ver- bzw. entschlüsseln und sind auch USB-tauglich. Sie können auf einem USB-Stick für mitgenommen werden. Sie speichern die OpenPGP-Keys auf dem Stick und integrieren sich nicht in den Explorer.

  3. Die Programme GnuPG und GPGShell: GPGshell ist ein ein grafisches Tool, welches auch das Kontextmenü des Explorers erweitert. Kai Raven hat unter http://hp.kairaven.de/pgp/gpg/gpg7.html eine ausführliche Anleitung zur Nutzung geschrieben.

Das Erzeugen und Verwalten der Schlüssel ist im Kapitel E-Mails verschlüsseln beschrieben.


Sollen mehrere Dateien in einem Container verschlüsselt werden, erstellt man ein neues Verzeichnis und kopiert die Dateien dort hinein. Anschließend verpackt man dieses Verzeichnis mit WinZip, 7zip oder anderen Tools in ein Archiv und verschlüsselt dieses Archiv. Es sind danach alle(!) Originaldateien in den Reißwolf zu werfen.

Truecrypt für WINDOWS

Bearbeiten

Truecrypt basiert auf dem Projekt Encryption for the masses. Die Software bietet transparente Ver- und Entschlüsselung beim Laden oder Speichern von Daten unter WINDOWS XP/2000/2003/7 und Linux. Neben der Verschlüsselung von Daten auf der Festplatte ist es auch für USB-Sticks geeignet.


Eine passende Metapher für das Konzept von Truecrypt ist der Container. Ein Container steht rum und nimmt Platz weg, egal ob er leer oder voll ist. In diesem Fall belegt der Container Platz auf der Festplatte oder dem USB-Stick.


Ist der Container verschlossen, kommt niemand an die dort lagernden Daten heran. Mit einem Schlüssel kann der Container geöffnet werden (gemounted: in das Dateisystem eingefügt) und jeder, der an einem offenen Container vorbeikommt, hat Zugriff auf die dort lagernden Daten. Als Schlüssel dient eine Passphrase und/oder Schlüsseldatei(en).


Der Zugriff auf Dateien innerhalb des geöffneten Containers erfolgt mit den Standardfunktionen für das Öffnen, Schließen und Löschen von Dateien. Auch Verzeichnisse können angelegt bzw. gelöscht werden. Die Verschlüsselung erfolgt transparent ohne weiteres Zutun des Nutzers.

Mit doppeltem Boden

Bearbeiten

Ein Feature von Truecrypt ist das Konzept des versteckten Volumes, eine Art doppelter Boden für den Container.


Der Zugriff auf diesen Bereich ist mit einem zweiten Schlüssel geschützt, einer weiteren Passphrase und/oder Schlüsseldatei(en). Öffnet man den Container mit dem ersten Schlüssel, erhält man Zugriff auf den äußeren Bereich. Verwendet man den zweiten Schlüssel zum Öffnen des Containers, erhält man Zugriff auf den versteckten Inhalt hinter dem doppelten Boden.


Während ein einfacher Container leicht als verschlüsselter Bereich erkennbar ist, kann der doppelte Boden innerhalb eines Containers ohne Kenntnis des zweiten Schlüssels nicht nachgewiesen werden. Ist man zur Herausgabe der Schlüssel gezwungen, kann man versuchen, nur den Schlüssel für den äußeren Container auszuhändigen und die Existenz des doppelten Bodens zu leugnen.


Ob es plausibel ist, die Existenz des doppelten Bodens zu leugnen, hängt von vielen Faktoren ab. Zeigt z.B. die Historie der göffneten Dokumente einer Textverarbeitung, dass vor kurzem auf einen verschlüsselten Bereich zugegriffen wurde, und man präsentiert einen äußeren Container, dessen letzte Änderung Monate zurück liegt, trifft man wahrscheinlich auf einen verärgerten Richter.


Auch der Index verschiedener Programme für die Indexierung der Dokumente auf dem lokalen Rechner (WINDOWS Suche, Google Desktop Search...) liefern möglicherweise Hinweise auf den versteckten Container.


Wie gulli.com am 6.10.08 berichtete, ist es unter Umständen möglich, die Existens des versteckten Volumes nachzuweisen. Also Vorsicht bei Nutzung dieses Features.

Truecrypt installieren

Bearbeiten

Für die Installation von Truecrypt werden folgende Pakete benötigt:

Nach dem Download sind die ZIP-Archive zu entpacken. In dem neuen Ordner truecrypt-x.y findet man die Setup-Datei. Diese ist als Administrator zu starten und in dem Install-Assistenten sind die Vorgaben evtl. anzupassen.


Ein Klick auf den Button Install startet den Prozess. Im Anschluß findet man ein Icon auf dem Desktop und einen neuen Eintrag im Menü.


Anschließend ist die Datei Language.de.xml aus dem Paket der Sprachanpassung in das Verzeichnis der installierten EXE-Datei zu kopieren.

Gedanken zum Schlüssel

Bearbeiten

Bevor man einen verschlüsselten Container erstellt, sollte man sich Gedanken über den Schlüssel zum Öffnen des Containers machen.

  • Eine Passphrase sollte gut merkbar sein und mindestens 20 Zeichen lang sein. Außer Buchstaben sollte sie auch Sonderzeichen und Ziffern enthalten. Das schüttelt man nicht einfach aus dem Ärmel. Wie wäre es mit folgender Phrase:

    das geht nur %mich% _AN_

  • Ein Keyfile kann eine beliebige Datei mit mindestens 1024 Byte Größe sein. Truecrypt bietet die Möglichkeit, gute Keyfiles zu generieren (Menüpunkt: Schlüsseldateien -> Schlüsseldatei aus Zufallswerten erstellen im Hauptfenster).

Man kann z.B. einen USB-Stick mit Keyfile(s) vorbereiten. Dieser Stick enthält eine oder mehrere Dateien, welche als Keyfile(s) genutzt werden. Diese Datei(en) können als Standardschlüssel definiert werden (Menüpunkt: Schlüsseldateien -> Standardschlüsseldateien festlegen). Zukünftig ist vor dem Öffnen eines Containers lediglich der Stick einzustecken. Es funktioniert wie ein mechanischer Schlüssel und man wird nicht mehr mit einer Passwortabfrage belästigt.


Verschlüsselten Container erstellen

Bearbeiten

Startet man Truecrypt oder klickt auf das blaue Symbol im Systray, so öffnet sich das Hauptfenster. Der Button Volume erstellen ruft einen Assistenten auf, der schrittweise alle nötigen Angaben zur Erstellung eines Volumes abfragt und umfangreiche Erläuterungen bietet.


Eingeschränkte Nutzer können lediglich verschlüsselte reguläre Containerdateien erstellen.


Administratoren können außerdem Festplattenpartitionen und USB-Sticks verschlüsseln, Hidden Volumes (versteckte Container) erstellen und WINDOWS komplett verschlüsseln.


[htb]

[[Image:../screenshots/truecrypt_1.png|image]] [abb:truecryptassi]

Im Folgenden wird der Ablauf zur Erstellung einer verschlüsselten Containerdatei beschrieben:

  1. Auswahl des Containertypes (reguläres oder verstecktes Volume). Soll ein verstecktes Volume erstellt werden, ist zuerst ein normales Volume zu erstellen, in dem anschließend das zweite Volume versteckt werden kann.
  2. Im zweiten Schritt ist der Dateiname für den Container anzugeben oder als Datenträger die Festplattenpartition bzw. der USB-Sticks (nur als Administrator). Es ist auch als eingeschränkter Nutzer möglich, eine Datei auf einem USB-Stick zu erstellen. Diese Datei könnte 2/3 des Sticks einnehmen. Der Stick kann dann bei Notwendigkeit auch ohne Truecrypt genutzt werden.
  3. Im dritten Schritt ist die Größe der Datei anzugeben. Dieser Schritt entfällt, wenn eine Partition oder USB-Stick komplett verschlüsselt wird.
  4. Im vierten Schritt ist der Schlüssel für das Öffnen des Containers festzulegen. Ein gutes Passwort sollte mindestens 20 Zeichen lang sein. Wer Probleme mit Passwörtern hat, läßt die Eingabefelder leer und nutzt Keyfiles (z.B. vom vorbereiteten USB-Stick).
  5. Die Verschlüsselungseinstellungen im fünften Schritt sind mit den Defaultwerten sinnvoll vorbelegt.
  6. Im letzten Schritt ist das Dateisystem festzulegen, mit welchem der verschlüsselte Bereich formatiert wird. FAT32 ist in den meisten Fällen ausreichend und kann auch unter Linux gelesen werden. Lediglich für sehr große Container oder die Verschlüsselung der Eigenen Dateien würden wir NTFS empfehlen.
  7. Im Anschluß wird der Container erstellt. Es ist empfehlenswert, dabei mit der Maus einige sinnlose Bewegungen auszuführen, um hinreichend Entropie für die Zufallsinitialisierung anzusammeln.

[htb]

[[Image:../screenshots/truecypt.png|image]] [abb:truecrypthaupt]

Verschlüsselten Container öffnen

Bearbeiten

Truecrypt-Container werden beim Öffnen grundsätzlich als neue Laufwerke eingehängt. Das in Bild [abb:truecrypthaupt] dargestellte Hauptfenster von Truecrypt bietet die Möglichkeit, einen Buchstaben für das Laufwerk und die einzubindende Container-Datei bzw. den Datenträger zu wählen.


Zu beachten ist die Option Verlauf nicht speichern. Ist diese Option aktiv, wird die Historie der geöffneten Container ständig gelöscht. Die Container sind auf der Festplatte oder dem USB-Stick nicht anhand eines speziellen Header als verschlüsselte Bereiche erkennbar. Sie sehen aus, wie zufälliger Datenmüll.


[htb]

[[Image:../screenshots/truecrypt_use1.png|image]] [abb:truecryptopen]

Anschließend ist der Button Einbinden zu wählen. Das in Bild [abb:truecryptopen] dargestellte Fenster zur Eingabe der Schlüssel erscheint. Hier ist der Schlüssel für das Öffnen des Containers einzugeben (die Passphrase oder/und das Keyfile).


Einige Abkürzungen für das Öffnen von Containern:

  • Ein Klick auf eine Datei mit der Endung .tc im Explorer öffnet das Hauptfenster von Truecrypt und setzt den Namen der Datei als zu öffnendes Volume.
  • Es ist möglich, Favoriten zu definieren und diese alle zusammen über den Menüpunkt Volumes -> Favoriten einbinden einzubinden. Favoriten definiert man, indem diese Container eingebunden werden und anschließend die Konfiguration über den Menüpunkt Volumes -> als Favoriten speichern gesichert wird.
  • Als Favoriten definierte Container können bei Start von Truecrypt automatisch eingebunden werden. Unter Einstellungen -> Voreinstellungen ist hierfür die entsprechende Option zu aktivieren.
  • Wird Truecrypt bei der Anmeldung automatisch gestartet, können auch die Favoriten bei Anmeldung eingebunden werden.
  • Der Button Alle Datentr. einbinden untersucht alle Partitionen und USB-Sticks auf Verschlüsselung. Es erscheint nacheinander der Dialog für die Schlüsseleingabe. Der Vorgang kann einige Zeit dauern.

Verschlüsselten Container schließen

Bearbeiten

Alle geöffneten Container werden standardmäßig bei der Abmeldung geschlossen. Außerdem gibt es mehrere Möglichkeiten, einen geöffneten Container während der Arbeit wieder zu schließen:

  • Ein Klick mit der rechten Maustaste auf das Truecrypt-Icon im Systray öffnet ein Menü, welches für alle eingebundenen Container das Trennen anbietet.
  • Im Hauptfenster von Truecrypt kann man mit der rechten Maustaste auf einen eingebundenen Container klicken und ihn trennen.
  • Der Button Alle trennen im Hauptfenster von Truecrypt schließt alle eingebundenen Container.

ACHTUNG: Auch ein Beenden von Truecrypt im Systray schließt die Container nicht(!). Der Dämon läuft weiter. Erst die Abmeldung des Nutzers oder ein Ausschalten des Systems schließt alle Container.

WINDOWS komplett verschlüsseln

Bearbeiten

Die aktuelle Version von Truecrypt ermöglicht es, WINDOWS bei laufenden Betrieb in einen verschlüsselten Container zu verschieben. Damit ist es für einen heimlichen Besucher sehr schwer, das System im ausgeschalteten Zustand zu kompromittieren. Es ist jedoch nicht unmöglich, wie das Stoned Bootkit zeigt, siehe http://www.stoned-vienna.com.


Wichtig: Voraussetzung für die Nutzung dieses Features ist die Möglichkeit, ein CD-ISO-Image zu brennen. Dieses Image, welches während der Installation angelegt und geprüft wird, enthält wesentliche Daten für die Wiederherstellung, wenn es zu Bitfehlern im Header der Systempartition kommt.


[htb]

[[Image:../screenshots/truecrypt_sys_1.png|image]] [abb:truecryptsys]

Den Assistent für die Systemverschlüsselung startet man im Hauptfenster von Truecrypt über den Menüpunkt System - Encrypt System Partition. Als Erstes wird abgefragt, ob nur die Partition von WINDOWS verschlüsselt werden soll oder die gesamte Festplatte. Die Verschlüsselung der gesamten Festplatte funktioniert nicht, wenn die Platte eine erweiterte Partition mit logischen Partitionen enthält oder wenn mehrere Betriebssysteme installiert sind.


Da der Masterboot-Record modifiziert wird, bemüht sich Truecrypt, häufige Kombinationen verschiedener Betriebssysteme zu berücksichtigen.


Nach der Abfrage des Algorithmus für die Verschlüsselung, der Passphrase (Die mindestens 20 Zeichen lang sein sollte, Keyfiles können nicht genutzt werden!), und der Generierung von Zufallszahlen folgt die Erstellung der Rescue Disk (Bild [abb:truecryptrescue]).


[htb]

[[Image:../screenshots/truecrypt_sys_2.png|image]] [abb:truecryptrescue]

Die Rescue-Disk wird als ISO-Image auf der Festplatte abgelegt und ist auf eine CD zu brennen. Die neue CD ist ins Laufwerk einzulegen. Truecrypt arbeitet erst weiter, wenn es die korrekte Erstellung der CD überprüft hat.


Im vorletzten Schritt, stellt Truecrypt mehrere Möglichketen zum Löschen der alten, unverschlüsselten Daten zur Auswahl. Es genügt, die Daten einmal zu überschreiben. Dabei werden nicht die einzelnen Dateien überschrieben, sondern die Platte wird sektorenweise bearbeitet. Das garantiert, dass auch Fragmente gelöschter Dateien beseitigt werden.


Da es sich bei der Systemverschlüsselung um einen tiefen Eingriff handelt, führt Truecrypt als nächstes einen Test durch. Der PC wird neu gebootet und der Anwender muss am Bootloader sein Passwort eingeben.


Erst wenn dieser Test erfolgreich war, erfolgt die Verschlüsselung des Systems. Dieser Vorgang nimmt je nach Größe der Platte einige Zeit in Anspruch, ca 1-2min pro GByte.


Nach Abschluß der Operation ist das System neu zu booten. Dabei wird vom Bootloader wieder das Passwort für den Zugriff auf die Systempartition abgefragt.

Traveller Disk erstellen

Bearbeiten

Truecrypt ermöglicht es, unter dem Menüpunkt Extras -> Traveller Disk erstellen einen USB-Stick zu verschlüsseln und zusätzlich die Software selbst in einem unverschlüsselten Bereich hinzuzufügen.


Der Stick kann so konfiguriert werden, dass beim Anschließen des Sticks mit Hilfe der Autostart Funktion Truecrypt startet, den verschlüsselten Container einbindet und den Explorer öffnet.


Dieses Feature soll es ermöglichen, einen verschlüsselten USB-Stick auch an Computern zu nutzen, auf denen Truecrypt nicht installiert ist.


Da man für diese Funktion Rechte als Administrator auf dem fremden Rechner benötigt, halte ich das Feature eher für Spielerei. Ein verantwortungsvoller Eigentümer hat mir noch nie diese Rechte eingeräumt und auch ich würde mir gut überlegen, ob jemand auf meinem Rechner Software installieren darf. Für viele Nutzer könnte es aber ein sinnvolles Feature sein.

DM-Crypt für Linux

Bearbeiten

DM-Crypt ist seit Version 2.6.4 fester Bestandteil des Linux-Kernels und somit in allen aktuellen Distributionen enthalten. Es nutzt den Device-Mapper. Folgende Software wird außerdem benötigt:


  • Das Tool cryptsetup (mit LUKS-Support) kann zum Erstellen, Öffnen und Schließen der verschlüsselten Container eingesetzt werden. Aktuelle Distributionen enthalten es: Debian GNU/Linux im Packet cryptsetup, SuSE-Linux im Packet util-linux-crypto.

    Einige Distributionen installieren das Tool unter dem Namen cryptsetup-luks. Die im Folgenden beschrieben Befehlen sind dann entsprechend anzupassen. Besser wäre es, einen Link zu erstellen. Dann funktionieren auch die Scripte mount.crypt und umount.crypt aus der Sammlung pam-mount.

      # ln -s /usr/sbin/cryptsetup-luks /sbin/cryptsetup
  • Das Packet pmount enthält einen Wrapper für das mount-Kommando, welcher automatisch verschlüsselte Laufwerke erkennt und vor dem Einbinden das Passwort abfragt. Aktuelle Debian-Distributionen verwenden es standardmäßig.

  • Die Sammlung pam-mount enthält weitere Scripte, das das Öffnen und Schließen verschlüsselter Container vereinfachen. Die Scripte ermöglichen beispielsweise des Öffnen eines Containers automatisch beim Login. Unter Debian installiert man die Tools wie üblich mit

       # aptitude install libpam-mount.
  • Das Kernelmodul dm_crypt muss vor der Verwendung der oben genannten Scripte geladen werden. In Abhängigheit von der bevorzugten Distribution und der Installationsvariante wird das Modul bereits beim Booten geladen oder ist statisch in initrd.img eingebunden. Einfach probieren.

    Sollte beim Erstellen oder Öffnen eines verschlüsselten Containers die folgende Fehlermeldung auftreten:

    Command failed: Failed to setup dm-crypt key mapping.
    Check kernel for support for the aes-cbc-essiv:sha256 cipher

    ist das Kernel-Modul dm_crypt zu laden:

       # modprobe dm_crypt

    Außerdem sollte das Modul in die Liste der beim Systemstart zu ladenen Module eingefügt werden. In der Datei /etc/modules ist die Zeile dm_crypt anzuhängen.

Gedanken zum Passwort

Bearbeiten

An Stelle von Passwort sollte man vielleicht die Bezeichnung Passphrase bevorzugen. Sie suggeriert, dass es auch ein wenig länger sein darf und dass Leerzeichen durchaus erlaubt sind.


Eine gute Passphrase sollte leicht merkbar aber schwer zu erraten sein. Außer Buchstaben sollte sie auch Zahlen und Sonderzeichen enthalten und etwa 20 Zeichen lang sein. Soetwas schüttelt man nicht einfach aus dem Ärmel. Wie wäre es mit folgender Phrase:

das geht nur %mich% _AN_

Zusätzlich zur Passphrase können auch Keyfiles als Schlüssel genutzt werden. Damit ist es möglich, eine Zwei-Faktor-Authentifizierung aufzubauen: eine Passphrase, die man im Kopf hat, und ein Keyfile, welches man in der Hand hat. Ein Angreifer müsste beides erlangen.


Die LUKS-Erweiterung von cryptsetup erlaubt es, bis zu 8 Passphrasen und Keyfiles zum Öffnen eines Containers zu nutzen. Damit ist es möglich, mehreren Nutzern den Zugriff mit einem eigenen Passwort zu erlauben.


Soll ein verschlüsselter Container mit dem Login eines Nutzers automatisch geöffnet werden, muss eines der 8 möglichen Passwörter mit dem Login-Passwort des Nutzers identisch sein. Login-Manager wie KDM oder GDM können das eingegebene Passwort an das pam-mount Modul weiterreichen. Dieses Feature kann beispielsweise für ein verschlüsseltes /home Verzeichnis genutzt werden.


WICHTIG: bei Änderung des Login-Passwortes muss auch das Paswort für den Container geändert werden. Sie werden nicht automatisch synchronisiert.

Verschlüsselten Container erstellen

Bearbeiten

Alle folgenden Schritte sind als root auszuführen. Zum Aufwärmen soll zuerst die Partition /dev/hda4 verschlüsselt werden. Debian und Ubuntu enthalten das Skript <em>luksformat</em>, dass alle Aufgaben erledigt.

   # luksformat -t ext3 /dev/hda4

Das ist alles. Der Vorgang dauert ein wenig und es wird 3x die Passphrase abgefragt. Ein Keyfile kann dieses Script nicht nutzen! Um einen USB-Stick komplett zu verschlüsseln, wählt man /dev/sdb1 oder /dev/sda1. Es ist vor(!) Aufruf des Kommandos zu prüfen, unter welchem Device der Stick zur Verfügung steht.


Verschlüsselten Container erstellen für Genießer

Bearbeiten

Am Beispiel einer verschlüsselten Containerdatei werden die einzelnen Schritte beschrieben, welche das Script luksformat aufruft. Soll eine Partition (Festplatte oder USB-Stick) verschlüsselt werden, entfallen die Schritte 1 und 8. Das als Beispiel genutzte Device /dev/loop5 ist durch die Partition zu ersetzen, beispielsweise /dev/hda5 oder /dev/sdb1.

  1. Zuerst ist eine leere Imagedatei zu erstellen. Im Beispiel wird es unter dem Dateinamen geheim.luks im aktuellen Verzeichnis erstellt. Der Parameter count legt die Größe in MByte fest. Anschließend ist das Image als Loop-Device einzubinden. Das Kommando losetup -f ermittelt das nächste freie Loop-Device (Ergebnis: loop0).

       # dd if=/dev/zero of=geheim.luks bs=1M count=100
       # losetup -f
       /dev/loop0
       # losetup /dev/loop0 geheim.luks
  2. Die ersten 2 MByte sind mit Zufallswerten zu füllen. Das Füllen der gesamten Datei würde sehr lange dauern und ist nicht nötig:

       # dd if=/dev/urandom of=/dev/loop0 bs=1M count=2
  3. Anschließend erfolgt die LUKS-Formatierung mit der Festlegung der Verschlüsselung. Die Option -y veranlaßt eine doppelte Abfrage des Passwortes, das keyfile ist optional

       # cryptsetup luksFormat -c aes-cbc-essiv:sha256 -s 256 -y 
                             /dev/loop0 [ keyfile ]
  4. Das formatierte Device wird dem Device-Mapper unterstellt. Dabei wird das zuvor eingegebene Passwort abgefragt. Das Keyfile ist nur anzugeben, wenn es auch im vorherigen Schritt verwendet wurde. Der <name> kann frei gewählt werden. Unter /dev/mapper/<name> wird später auf den verschlüsselten Container zugegriffen:

       # cryptsetup luksOpen /dev/loop0 <name> [ keyfile ]
  5. Wer paranoid ist, kann das verschlüsselte Volume mit Zufallszahlen füllen. Der Vorgang kann in Abhängigkeit von der Größe der Containerdatei sehr lange dauern:

       # dd if=/dev/urandom of=/dev/mapper/<name>
  6. Ein Dateisystem wird auf dem Volume angelegt:

       # mkfs.ext3 /dev/mapper/<name>
  7. Das Volume ist nun vorbereitet und wird wieder geschlossen:

       # cryptsetup luksClose <name>
  8. Die Containerdatei wird ausgehängt:

       # losetup -d /dev/loop0

Passwörter verwalten

Bearbeiten

Mit root-Rechten ist es möglich, bis zu 7 zusätzliche Passwörter für das Öffnen eines Containers festzulegen oder einzelne Passwörter wieder zu löschen.


Für das Hinzufügen eines Passwortes zu der verschlüsselten Imagedatei geheim.img im aktuellen Verzeichnis ist diese zuerst einzuhängen, beispielsweise als /dev/loop5. Dieser Schritt entfällt für Partitionen:

   # losetup /dev/loop5 geheim.luks

Das Hinzufügen eines Passwortes und damit eines neuen Keyslots erfolgt mit folgendem Kommando, wobei als <device> beispielsweise /dev/loop5 für die eingebundene Imagedatei oder /dev/hda5 für eine Festplattenpartition anzugeben ist. Das Keyfile ist optional.

   # cryptsetup luksAddKey <device> [ keyfile ]

Ein Keyslot und das zugehörige Passwort können mit folgendem Kommando wieder entfernt werden:

   # cryptsetup luksKillSlot <device> <slot>

Als <slot> ist die Nummer des Keyslots anzugeben, eine Zahl von 0 is7. Es ist also nötig, sich zu merken, welches Passwort auf welchen Keyslot gelegt wurde. Eine Übersicht, welche Keyslots belegt und welche noch frei sind, liefert luksDump:

   # cryptsetup luksDump <device>
   LUKS header information for <device>
   ...
   Key Slot 0: DISABLED
   Key Slot 1: ENABLED
        Iterations:
        Salt:

        Key material offset:
        AF stripes:
   Key Slot 2: DISABLED
   Key Slot 3: DISABLED
   Key Slot 4: DISABLED
   Key Slot 5: DISABLED
   Key Slot 6: DISABLED
   Key Slot 7: DISABLED

Verschlüsselten Container öffnen/schließen

Bearbeiten

Aktuelle Distributionen wie Debian oder Ubuntu erkennen verschlüsselte Partitionen auf Festplatten und USB-Sticks automatisch und fragen die Passphrase ab, sobald das Gerät erkannt wird. Einfach Anschließen, auf den Passwort-Dialog wie im Bild [abb:dmcryptopen] warten - fertig.

[htb]

[[Image:../screenshots/Unlock_Encrypted_Data.png|image]] [abb:dmcryptopen]

Auf der Kommandozeile

Bearbeiten

Sollte es mit dem automatischem Öffnen des verschlüsselten USB-Sticks nicht funktionieren, kann man auf der Kommandozeile nachhelfen. pmount arbeitet mit User-Privilegien und bindet die Partition unter /media ein. pmount kann keine Containerdateien öffnen.

   > pmount /dev/sda1 
   Enter LUKS passphrase:

Geschlossen wird der Container mit pumount:

   > pumount /dev/sda1 

Die Sammlung pam-mount enthält zwei weitere Scripte, welche die Arbeit mit verschlüsselten Containerdateien vereinfachen. Wurde außerdem sudo entsprechend konfiguriert, stehen die folgenden Kommandos jedem Nutzer zur Verfügung. Eine verschlüsselte Partition (beispielsweise der USB-Stick unter /dev/sda1) kann mit folgendem Kommando geöffnet und im Verzeichnis /mnt eingebunden werden:

   > sudo /sbin/mount.crypt /dev/sda1 /mnt
   Enter LUKS passphrase:

Das folgende Kommando öffnet die verschlüsselte Imagedatei geheim.luks aus dem aktuellen Verzeichnis und hängt sie unter /mnt in das Dateisystem ein:

   > sudo /sbin/mount.crypt  geheim.luks  /mnt  -o  loop
   Enter LUKS passphrase:

Geschlossen wird der Container mit folgendem Komando:

   > sudo /sbin/umount.crypt /mnt

Für häufig genutzte Container könnte man einen Menüeintrag oder ein Desktop-Icon anlegen. Dabei ist zu beachten, dass die Option Im Terminal ausführen aktiviert wird! Anderenfalls kann man keine Passphrase eingeben.

Für jene, die es genau wissen wollen

Bearbeiten

Das Öffnen einer Containerdatei auf der Komadozeile erfordert drei Schritte als root. Als erstes ist die verschlüsselte Imagedatei einzuhängen. Dieser Schritt entfällt für Partitionen. Im zweiten Schritt ist das verschlüsselte Device dem Device-Mapper zu unterstellen. Der Name kann dabei frei gewählt werden. Im dritten Schritt kann es mit mount in das Dateisystem eingehängt werden, beispielsweise nach /mnt.

   # losetup  /dev/loop5  geheim.luks
   # cryptsetup  luksOpen  /dev/loop5  <name> [ keyfile ]
   # mount  /dev/mapper/<name>  /mnt

Das Schließen des Containers erfolgt in umgekehrter Reihenfolge:

   # umount  /mnt
   # cryptsetup  luksClose  <name>
   # losetup -d /dev/loop5

Komfortabel beim Login

Bearbeiten

Mit Hilfe des Modules pam-mount ist es möglich, das Anmeldepasswort zu nutzen, um standardmäßig beim Login einen oder mehrere Container zu öffnen. Insbesondere für verschlüsselte /home Partitionen ist dies sinnvoll und komfortabel.


Folgende Konfigurationen sind für einen Crypto-Login anzupassen:

  1. PAM-Konfiguration: Dem PAM-Dämon ist mitzuteilen, dass er das Modul mount zu verwenden hat und das Login-Passwort zu übergeben ist. Gut vorbereitete Distributionen wie Debian und aktuelle Ubuntu(s) benötigen nur einen Eintrag in den Dateien /etc/pam.d/login, /etc/pam.d/kdm und /etc/pam.d/gdm:

       @include common-pammount
  2. pam-mount Modul: Das Modul wird konfiguriert in der XML-Datei /etc/security/pam_mount.conf.xml. Am Anfang der Datei findet man eine Section für Volumes, die beim Login geöffnet werden sollen. Im ersten Beispiel wird bei allen Logins die verschlüsselte Partition /dev/hda4 als /home eingebunden:

    <volume fstype="crypt" path="/dev/hda4" mountpoint="/home" />

    Das zweite Beispiel zeigt die Einbindung einer verschlüsselten Containerdatei /geheim.luks als HOME für den User pitschie. Die Containerdatei wird nur geöffnet, wenn Pitschie sich anmeldet.

    <volume user="pitschie" fstype="crypt" path="/geheim.luks" 
            mountpoint="/home/pitschie" options="loop" />
  3. fstab: Da beim Booten keine Partition nach /home gemountet werden soll, ist evtl. der entsprechende Eintrag in der Datei /etc/fstab zu löschen.

Debian GNU/Linux komplett verschlüsseln

Bearbeiten

In einem komplett verschlüsselten Sytem sind sowohl die Daten als auch die Systemkonfiguration und Software verschlüsselt. Debian ab Version 4.0r1 (etch) bietet bereits beim Installieren die Option, ein komplett verschlüssltes System unter Ausnutzung der gesamten Festplatte zu installieren. Lediglich für /boot bleibt ein kleiner unverschlüsselter Bereich.


Um diese einfache Variante zu nutzen, wählt man im Installations-Dialog Festplatte partitionieren die Option Geführt - gesamte Platte mit verschlüsseltem LVM. Im folgenden Schritt ist die Passphrase einzugeben, welche das System sichert. Diese Passphrase wird später bei jedem Bootvorgang abgefragt.

 Partitionsmethode:

    Geführt - verwende vollständige Festplatte
    Geführt - gesamte Platte verwenden und LVM einrichten
  > Geführt - gesamte Platte mit verschlüsseltem LVM 
    Manuell 

Ubuntu-Nutzer können die alternate desktop cd nutzen, die kein Live-System enthält, dafür aber mehr Optionen für die Installation bietet. Die Standard-Edition von Ubuntu bietet dieses Feature nicht!


Ein vollständig verschlüsseltes System macht es böswilligen Buben sehr schwer, bei einem heimlichen Hausbesuch die Software zu manipulieren und einen Trojaner zu installieren. Es ist jedoch nicht unmöglich. Wer noch einen Schritt weiter gehen will, erstellt nach der Installation eine bootfähige (nicht wiederbeschreibbare) CD-ROM mit einer Kopie des sauberen Verzeichnis /boot und bootet in Zukunft immer von der CD. (Oder man geht zum Psychiater und lässt seine Paranoia behandeln.)


Man sollte nicht aus Zeitgründen auf ein Überschreiben der alten Daten mit Zufallszahlen verzichten. Um die Position verschlüsselter Daten auf der Platte zu verstecken und Daten der alten Installation zu vernichten, bietet die Installationsroutine die Option, den Datenträger mit Zufallszahlen zu überschreiben. Das dauert zwar einige Zeit, ist aber ein sinnvolles Feature.

HOME-Verzeichnis verschlüsseln

Bearbeiten

Die Verschlüsselung der persönlichen Daten im $HOME-Verzeichnis bieten alle Linux-Distributionen bei der Installation an. Wer keine Komplettverschlüsselung nutzen möchte, sollte zumindest diese Option aktivieren. Der Container mit den verschlüsselten Daten wird beim Login automatisch geöffnet. Die Nutzung ist vollständig transparent. Bei Verlust des Laptops sind die Daten jedoch geschützt.

SWAP und /tmp verschlüsseln

Bearbeiten

Das /tmp-Verzeichnis und der SWAP Bereich können unter Umständen persönliche Informationen enthalten, die im Verlauf der Arbeit ausgelagert wurden. Wenn eine komplette Verschlüsselung des Systems nicht möglich ist, sollte man verhindern, das lesbare Datenrückstände in diesen Bereichen verbleiben.


Das Verzeichnis /tmp kann man im RAM des Rechners ablegen, wenn dieser hinreichend groß dimensioniert ist. Mit dem Ausschalten des Rechners sind alle Daten verloren. Um diese Variante zu realisieren bootet man den Rechner im abgesicherten Mode, beendet die grafische Oberfläche (X-Server) und löscht alle Dateien in /tmp. In der Datei /etc/fstab wird folgender Eintrag ergänzt:

    tmpfs  /tmp  tmpfs    defaults,size=256m   0 0

Die Bereiche SWAP und /tmp können im Bootprozess als verschlüsselte Partitionen mit einem zufälligen Passwort initialisiert und eingebunden werden. Mit dem Ausschalten des Rechners ist das Passwort verloren und ein Zugriff auf diese Daten nicht mehr möglich.


Achtung: Suspend-to-RAM und Suspend-to-Disk funtionieren mit einer verschlüsselten SWAP-Partition noch nicht.

Debian GNU/Linux

Bearbeiten

Debian und Ubuntu enthalten ein Init-Script, welches eine einfache Verschlüsselung von SWAP und /tmp ermöglicht, wenn diese auf einer eigenen Partition liegen.


In der Datei /etc/crypttab sind die folgenden Zeilen einzufügen, wobei /dev/hda5 und /dev/hda8 durch die jeweils genutzten Partitionen zu ersetzen sind:

cryptswp

/dev/hda5

/dev/urandom

swap
crypttmp

/dev/hda8

/dev/urandom

tmp

In der Datei /etc/fstab sind die Einträge für swap und /tmp anzupassen:

/dev/mapper/cryptswp

none

swap

sw

0 0
/dev/mapper/crypttmp

/tmp

ext2

defaults

0 0

Anschließend ist der Rechner neu zu booten und beide Partitionen sind verschlüsselt.


Achtung: Die Partition für /tmp darf kein Dateisystem enthalten! Soll eine bereits verwendete /tmp-Partionion verschlüsselt werden, ist diese erst einmal nach dem Beenden des X-Servers(!) zu dismounten und zu überschreiben:

   # umount /tmp
   # dd if=/dev/zero of=/dev/hda8

Backups verschlüsseln

Bearbeiten

Es ist beruhigend, wenn alles Nötige für eine komplette Neuinstallation des Rechners zur Verfügung steht: Betriebssystem, Software und ein Backup der persönlichen Daten. Betriebssystem und Software hat man als Linux-Nutzer mit einer Installations-CD/DVD der genutzen Distribution und evtl. einer zweiten CD für Download-Stuff schnell beisammen. Für WINDOWS wächst in kurzer Zeit eine umfangreiche Sammlung von Software.


Für das Backup der persönlichen Daten haben ich eine kleine Ideensammlung zusammengestellt, die keinen Anspruch auf Vollständigkeit erhebt. Grundsätzlich sollten diese Daten verschlüsselt werden. Als Schlüssel für den Zugriff sollte eine gut merkbare Passphrase genutzt werden. Keyfiles oder OpenPGP-Schlüssel könnten bei einem Crash verloren gehen.

  1. Die persönlichen Daten oder einzelne Verzeichnisse mit häufig geänderten Dateien könnte man regelmäßig mit einer Kopie auf einem verschlüsselten Datenträger synchronisieren (USB-Stick, externe Festplatte). Da nur Änderungen übertragen werden müssen, geht es relativ schnell.
  2. Einzelne, in sich geschlossene Projekte könnten platzsparend als komprimiertes verschlüsseltes Archiv auf einem externen Datenträger abgelegt werden.
  3. Größere abgeschlossene Projekte könnten auf einem optischen Datenträger dauerhaft archiviert werden.

Schnell mal auf den USB-Stick

Bearbeiten

Inzwischen gibt es preiswerte USB-Sticks mit beachtlicher Kapazität. Aufgrund der einfachen Verwendung sind sie für Backups im privaten Bereich gut geeignet. Für große Datenmengen kann man auch eine externe USB-Festplatte nutzen. Wer eine Beschlag­nahme der Backup Medien befürchtet, findet vielleicht eine Anregung bei true-random[3].


Das Backup-Medium sollte man mit TrueCrypt oder DM-Crypt verschlüsseln. Die vollständige Verschlüsselung verhindert eine Manipulation des Datenträgers. Der Verfassungsschutz demonstrierte auf der CeBIT 2007, dass sich mit manipulierten Sticks Trojaner einschleusen lassen. Die vollständige Verschlüsselung des Backup Mediums macht es überflüssig, sich um eine zusätzliche Verschlüsselung der Daten beim Backup zu kümmern. Man die Daten nach dem Öffnen des Backup Containers einfach synchronisieren.


Die von verschiedenen Herstellern angebotenen Verschlüsselungen sind oft unsicher. USB-Datentresore mit Fingerabdruckscanner lassen sich einfach öffnen[4]. Viele USB-Sticks mit Verschlüsselung verwenden zwar starke Algorithmen (in der Regel AES256), legen aber einen zweiten Schlüssel zur Sicherheit auf dem Stick ab, der mit geeigneten Tools ausgelesen werden kann und Zugriff auf die Daten ermöglicht. Selbst eine Zertifizierung des NIST ist keine Garantie für eine saubere Implementierung, wie ein Artikel bei Heise [5] zeigt.

Unison-GTK

Bearbeiten

Für die Synchronisation der Daten steht z.B. Unison-GTK [6] für verschiedene Betriebssysteme (auch WINDOWS) zur Verfügung und bietet ein GUI für die Synchronisation. Die Installation ist einfach: Download, Entpacken und Binary starten. Linuxer können das Paket unison-gtk mit der Paketverwaltung installieren.


[htb]

[[Image:../screenshots/unison_1.png|image]] [abb:unison1]

Nach dem ersten Start wählt man Quell- und Zielverzeichnis für das Default-Profil. Es ist möglich, mehrere Profile anzulegen. Bei jedem weiteren Start erscheint zuerst ein Dialog zur Auswahl des Profiles (Bild [abb:unison1]).


Nach Auswahl des Profiles analysiert Unison die Differenzen und zeigt im Haupfenster an, welche Aktionen das Programm ausführen würde. Ein Klick auf Go startet die Synchronisation.


[htb]

[[Image:../screenshots/unison_2.png|frame|none|alt=image]]

Achtung: Unison synchronisiert in beide Richtungen und eignet sich damit auch zum Synchronisieren zweier Rechner. Verwendet man einen neuen (leeren) Stick, muss auch ein neues Profil angelegt werden! Es werden sonst alle Daten in den Quellverzeichnissen gelöscht, die im Backup nicht mehr vorhanden sind.


Neben der Möglichkeit, lokale Verzeichnisse zu synchronisieren, kann Unison auch ein Backup auf einem anderen Rechner via FTP oder SSH synchronisieren.

Das Tool rsync ist in allen Linux-Distributionen enthalten und insbesondere für Scripte einfach verwendbar. Es synchronisiert die Dateien eines Zielverzeichnisses mit dem Quellverzeichnis und überträgt dabei nur die Änderungen. Ein Beispiel zeigt das Sichern der E-Mails und Adressbücher von Thunderbird:

   rsync -av --delete $HOME/.thunderbird /backup_dir/.thunderbird

Eine zweite Variante zum Sichern des gesamten $HOME inklusive der versteckten Dateien und exklusive eines Verzeichnisses (mp3) mit großen Datenmengen:

   rsync -av --delete --include=$HOME/. --exclude=$HOME/mp3 $HOME /backup_dir/

Die Option –delete löscht im Original nicht mehr vorhandene Dateien auch in der Sicherungskopie. Weitere Hinweise liefert die Manualpage von rsync.


Standardmäßig sichert rsync keine versteckten Dateien und Verzeichnisse, die mit einem Punkt beginnen. Diese Dateien und Verzeichnisse müssen mit einem "–include" angegeben werden. Im Beispiel werden alle versteckten Verzeichnisse und Dateien mit gesichert.


Ein kleines Script, welches alle nötigen Verzeichnisse synchronisiert, ist schnell gestrickt. Eine backup-freundliche Struktur im $HOME-Verzeichnis erleichtert dies zusätzlich.

GRsync ist ein grafischen Interface für rsync. Auch dieses Tool ist in allen Linux/Unix Distributionen enthalten.


Nach dem Start kann man mit dem Button ``+`` mehrere Profile für verschiedene, wiederkehrende Aufgaben anlegen. Jedem Profil wird ein Quell - und ein Zielverzeichnis sowie die rsync-Parameter zugeordnet. Ein Klick auf die kleine Rakete oben rechts startet die Synchronisation (Bild [abb:grsync1]).

[htb]

[[Image:../screenshots/grsync1.png|image]] [abb:grsync1]

Backups mit aespipe verschlüsseln

Bearbeiten

aespipe ist Teil des AES-Loop Projektes und steht in fast allen Linux Distributionen zur Verfügung. Das Paket kann mit den Paketmanagern der Distribution installiert werden.

Verschlüsseln

Bearbeiten

Das Programm aespipe tut, was der Name vermuten läßt. Es ver- und entschlüsselt einen Datenstrom in einer Pipe mit dem AES-Algorithmus. Ein ganz einfaches Beispiel:

   > tar -cj datadir | aespipe > data.tar.bz2.enc

Der Inhalt des Verzeichnisses datadir wird in ein komprimiertes TAR-Archiv gepackt und anschließend verschlüsselt in die Datei data.tar.bz2.enc geschrieben. Dabei wird eine mindestens 20 Zeichen lange Passphrase abgefragt.


Wer eine etwas stärkere Verschlüsselung nutzen möchte:

  > tar -cj datadir | aespipe -C 10 -e aes256 > data.tar.bz2.enc

Die Option -C 10 bewirkt, das der Schlüssel selbst 10.000x mit AES bearbeitet wird. Das erschwert Brute-Force-Attacken. Mit -e aes256 nutzt das Programm 256 Bit lange Schlüssel.


Es ist auch möglich, eine asymmetrische Verschlüsselung mit einem GnuPG-Key zu nutzen. Das Password wird dabei mit dem Programm gpg verschlüsselt:

   > tar -cj data_dir | aespipe -K gpgkey > data.tar.bz2.enc

Der GnuPG-Key kann dabei mit seiner ID (z.B. 0x35AD65GF) oder mit einer E-Mail Adresse spezifiziert werden und sollte als vertrauenswürdiger Key im Keyring vorhanden sein.

Entschlüsseln

Bearbeiten

Entpacken kann man das verschlüsselte Archiv mit folgendem Kommando:

   > aespipe -d < data.tar.bz2.enc | tar -xj

Für Maus-Schubser

Bearbeiten

Die Dateimanager der Linux-Desktops KDE und Gnome bieten mit sogenannten Aktionen die Möglichkeit, zusätzlich Befehle in das Kontextmenü der Dateien zu integrieren. Für Konqueror (KDE) erstellt man eine kleine Textdatei und speichert sie mit der Endung .desktop im Verzeichnis  /.kde/share/apps/konqueror/servicemenus


Die Datei encryptfileaespipe.desktop könnte folgenden Inhalt haben:

  [Desktop Entry]
  ServiceTypes=all/allfiles
  Actions=encryptfileaespipe

  [Desktop Action encryptfileaespipe]
  TryExec=aespipe
  Exec=konsole -e bash -c "cat %f | aespipe -T > %f.enc"
  Name=Datei verschlüsseln (aespipe)
  Icon=encrypted

Zukünftig findet man im Kontextmenü einer Datei unter Aktionen den Menüpunkt Datei verschlüsseln (aespipe) (Bild [abb:konqaespipe]). Wählt man diesen Punkt, öffnet sich ein Terminal zur doppelten Passwortabfrage. Anschließend findet man eine neue Datei im Verzeichnis mit der zusätzlichen Endung .enc, die man auf das Backup-Medium schieben kann. Verzeichnisse sind zuerst zu komprimieren. Einträge dafür sind im Servicemenü bereits vorhanden.

[htb]

[[Image:../screenshots/konq_aespipe.png|image]] [abb:konqaespipe]

Verschlüsselte Backups mit dar

Bearbeiten

Der Disk Archiver dar steht auf der Projektwebseite[7] zum Download bereit und ist auch in fast allen Linux Distributionen enthalten. Mit KDar [8] (für KDE) und DarGUI [9] (für GTK) stehen grafische GUIs zur Verfügung.


Ich möchte hier nicht das 30-seitige Manual-Page von dar wiedergeben, das Programm bietet viele Möglichkeiten, und beschränke mich auf die einfache Erstellung eines verschlüsselten, komprimierten Backups für ein abgeschlossenes Projekt. Neben diesem einfachen Voll-Backup sind auch inkrementelle Backups möglich, eine Manager zur Verwaltung verschiedener Backups steht zur Verfügung, spezielle Optionen für Cron-Jobs...


Standardmäßig erstellt dar ein Backup der Dateien des aktuellen Verzeichnisses:

   > cd $HOME/Projekt_X
   > dar -c $HOME/backup/projekt_full -K bf:

Mit der Option “-K bf:” aktiviert man die Verschlüsselung. Es wird beim Erstellen des Backups nach einer Passphrase gefragt.


Nach dem Durchlauf des Programms findet man im Verzeichnis $HOME/backup die Dateien projekt_full.1.dar, projekt_full.2.dar.... usw. Das gesamte Backup wird Brenner-freundlich in mehrere Slices aufgeteilt, die man auf eine CD oder DVD brennen kann. Die weiteren Parameter können in einer Konfigurationsdatei festgelegt werden.


Um ein inkrementelles Backup zu erstellen, das auf ein älteres Backup aufbaut und nur geänderte Dateien sichert, ist die Option -A mit den Pfad zum alten Backup anzugeben:

   > cd $HOME/Projekt_X
   > dar -c $HOME/backup/projekt_diff1 -A $HOME/backup/projekt_full -K bf:

Das Wiederherstellen des Backups von den CD-ROMs ins aktuelle Verzeichnis erfolgt mit folgendem Kommando:

   > mkdir Projekt_X
   > cd Projekt_X
   > dar -x -p /media/cdrom

Die Option -p sorgt dafür, dass nach jedem Slice eine Pause gemacht wird, um dem User die Möglichkeit zu geben, die CD zu wechseln.


Um nicht bei jedem Aufruf einen Rattenschwanz von Optionen angeben zu müssen, bietet dar die Möglichkeit, Standards in den Dateien /etc/darrc oder $HOME/.darrc zu speichern. Die folgende kommentierte Vorlage kann in einen Editor übernommen und gespeichert werden:

# Allgemeine Optionen
all:

# Backups mit gzip komprimiert
-z9
# Backups mit Blowfisch verschlüsselt
-K bf:

# Option für das Anlegen von Backups
create:

# Größe einer Slice (für DVDs: -s 4G)
-s 700M
# Komprimierte Dateien nicht nochmals komprimieren
-Z *.gz
-Z *.bz2
-Z *.mp3
# Keine BAK-Dateien sichern
-X *~
-X *.bak

# Option für das Extrahieren von Backups
extract:

# ein Beep nach jedem Slice
-b

Weitere Optionen findet man in der Dokumentation.

Online Backups

Bearbeiten

Neben dem Backup auf einem externen Datenträger kann man auch Online-Speicher nutzen. Als Cloud-Provider kann ich Wuala empfehlen. Bei DataStorageUnit.com, ADrive.com, rsync.net u.v.a.m. gibt es Angebote ab 3,- Euro monatlich. Wer einen eigenen (V)Server gemietet hat, kann seine Backups auch dort ablegen. Mit Ausnahme von Wuala muss man sich um die Verschlüsselung der Daten vor dem Upload selbst kümmern.


Ein Online-Backup ist praktisch, wenn man mit Laptop in ein Land wie USA reist. Bei der Einreise werden möglicherweise die Daten der Laptops gescannt und auch kopiert. Die EFF.org empfiehlt, vor der Reise die Festplatte zu ``reinigen`` [10]. Man könnte ein Online-Backup erstellen und auf dem eigenen Rechner die Daten sicher(!) löschen, also shred bzw. wipe nutzen. Bei Bedarf holt man sich die Daten wieder auf den Laptop. Vor der Abreise wird das Online-Backup aktualisiert und lokal wieder alles gelöscht.


Mit dem Gesetzentwurf zum Zugriff auf Bestandsdaten der Telekommunikation (BR-Drs. 664/12) vom 24.10.2012 räumt die Bundesregierung den Geheimdiensten und Strafverfolgern die Möglichkeit ein, ohne richterliche Prüfung die Zugangsdaten zum Online-Speicher vom Provider zu verlangen. Um die gespeicherten Daten, die meist aus dem Bereich privater Lebensführung stammen, angemessen vor dem Verfassungsschutz zu schützen, ist man auf Selbsthilfe und Verschlüsselung angewiesen.


An ein Online-Backup werden deshalb folgende Anforderungen gestellt:

  • Das Backup muss auf dem eigenen Rechner ver- und entschlüsselt werden, um die Vertraulichkeit zu gewährleisten.
  • Es sollten nur geänderte Daten übertragen werden, um Zeitbedarf und Traffic auf ein erträgliches Maß zu reduzieren.

Wuala oder Team-Drive können als privacy-freundliche Cloud-Speicher genutzt werden. duplicity ist ein kleines Backuptool für Linux, dass die Daten lokal ver- und entschlüsselt, bevor sie in einen beliebigen Cloud-Speicher hochgeladen werden.

Online-Speicher mit Wuala

Bearbeiten

Wuala ist ein Cloud-Speicher der 5 GB Speicherplatz kostenlos anbietet, für mehr muss man bezahlen. Bezahlung für zusätzlichen Speicher ist nur via PayPal.com auf der Webseite https://www.wuala.com möglich.


Man kann den Datenspeicher als Backup-Medium nutzen, Daten auf mehreren Rechnern synchronisieren oder im Team verteilen. Die Client Software verschlüsselt die Daten auf dem eigenen Rechner bevor sie in den Online-Speicher übertragen werden. Die Software gibt es für Windows, Linux und MacOS sowie für Android ind iPhone.


Die Installation ist einfach.

  • Für Windows steht auf der Webseite ein Setup-Programm zum Downlaod bereit. Nach dem Download ist das Programm zu starten und den Anweisungen des Assistenten zu folgen.

  • Für viele Linux-Derivate stehen Pakete auf der Downloadseite bereit. Vor der Installation sollte man zuerst die benötigte Java Runtime installieren und FUSE.

      > sudo aptitude install default-jre fuse 
     

    Alle Nutzer, die Wuala nutzen wollen, müssen zur Gruppe fuse gehören:

      > sudo addgroup USERNAME fuse
     

    Danach kann man das Wuala-Paket installieren, für Debian und Ubuntu mit:

     > sudo dpkg -i wuala*.deb

Beim ersten Start muss man einen Account anlegen. Das Passwort ist sehr wichtig! Es gibt keine Möglichkeit, an die Daten im Online-Speicher zu kommen, wenn man das Passwort vergessen hat. Es gibt auch keine Möglichkeit zum Passwort-Reset! Die E-Mail Adresse ist unwichtig, es gibt nur eine Verwendung. Wenn man das Passwort vergessen hat, wird die Passwort-Merkhilfe an diese E-Mail Adresse gesendet. Wegwerf-Adressen werden akzeptiert.


[htb]

[[Image:../screenshots/wuala-config.png|image]] [abb:wualaconfig]

In der Konfiguration kann man die Up- und Download Geschwindigkeit an den eigenen Internetzugang anpassen.


Mit einem HTTP-Proxy kann man die Verbindung zum Cloud-Speicher anonymisieren. JonDonym kann out-of-the-box als Anonymisierungsdienst verwendet werden. Bei der Nutzung von Premium-Diensten gibt es kaum Geschwindigkeitseinbußen. Tor bietet nur einen SOCKS Proxy und kann deshalb nicht direkt verwendet werden. Man benötigt zusätzlich eine HTTP-Proxy (Polipo oder Privoxy), die richtig konfiguriert den Datenverkehr an Tor weiterleiten können.


Der Wuala-Client stellt unter Windows ein zusätzliches Laufwerk Wuala zur Verfügung. Unter Linux findet man einen Ordner WualaDrive im $HOME-Verzeichnis. Alle Daten, die man in diese Ordner kopiert, werden in den Online-Speicher geladen. Außerdem stehen die Daten aus dem Online-Speicher in diesen Verzeichnissen zum wahlfreien Zugriff zur Verfügung.


Im Wuala-GUI kann man außerdem Backups hinzufügen, Verzeichnisse synchronisieren oder Daten für Gruppen freigeben. Für die ersten beiden Funktionen kann ein beliebiger Ordner auf dem lokalen Rechner mit einem Ordner im Wuala-Drive verbunden werden. Bei einem Backup gehen die Daten nur vom eigenen Rechner in den Online-Speicher. Bei einer Synchronisation werden auch die Daten auf dem eigenen Rechner modifiziert, wenn sich Daten im Online-Speicher ändern. Diese Funktion eignet sich, wenn Daten auf mehreren Rechnern identisch sein sollen.


Mit privaten oder öffentlichen Gruppen kann man den Inhalt eines Ordners im Wuala-Speicher mit anderen Nutzern teilen. Öffentliche Ordner können auch im Internet zugänglich gemacht werden. Unter https://www.wuala.com/PrivacyHandbuch ist beispielsweise der LaTEX Quelltext des Privacy-Handbuches verfügbar. Dabei sollte man darauf achten, die Schreibrechte in der Gruppe restriktiv zu setzen, damit nicht irgendwelche Vandalen ihren Müll dort abladen.

[htb]

[[Image:../screenshots/wuala-drive.png|image]] [abb:wualadrive]

Duplicity für Linux

Bearbeiten

Duplicity ist ein Backuptool für Linux/Unix speziell für die Nutzung von Online-Speicherplatz. Es bietet transparente Ver- und Entschlüsselung mit OpenPGP und überträgt nur geänderte Daten, um Traffic und Zeitbedarf minimal zu halten.


Debian und Ubuntu stellen in der Regel alles Nötige für die Installation in den Repositories bereit. aptitude spült es auf die Platte:

   > sudo aptitude install duplicity

Duplicity ist ein Kommandozeilen Tool. Ein verschlüsseltes Backup schiebt man mit folgendem Kommando auf den Server:

   > duplicity Verzeichnis Backupaddresse

Vom lokalen Verzeichnis Verz wird ein Backup erstellt, mit OpenPGP symmetrisch verschlüsselt und unter der Backup Adresse abgelegt. Ein vorhandenes Backup wird aktualisiert. Das Passwort für die Verschlüsselung wird entweder beim Start des Programms abgefragt oder es wird die Environment Variable $PASSPHRASE verwendet. Um das Backup mit cron zu automatiiseren, kann man ein kleines Shellscript schreiben:

  #!/bin/sh
  PASSPHRASE="gutes_passwort"
  duplicity Verzeichnis Backupaddresse

Möchte man statt der symmetrischen Verschlüsselung einen OpenPGP-Key nutzen, verwendet man die Option –encrypt-key mit der ID oder Mail-Adresse des OpenPGP Key. Diese Option kann mehrfach angegeben werden, um mehreren Teilnehmern ein Restore des Backups zu erlauben.

   > duplicity --encrypt-key="0x12345670" Verzeichnis Backupaddresse 

Die BackupAdresse kodiert das Übertragungsprotokoll, den Server und das Verzeichnis auf dem Server. Duplicity kann mit vielen Protokollen umgehen. BackupAdressen haben folgenden Aufbau:

  • Alle Anbieter von Online-Speicherplatz unterstützen webdav oder die SSL-verschlüsselte Übertragung mit webdavs:

       webdavs://user[:password]@server.tld/dir
  • Amazon S3 cloud services werden unterstützt:

       s3://server/bucket_name[/prefix]
  • Man kann sein IMAP-Postfach für das Backup nutzen, möglichst mit SSL-verschlüsselter Verbindung. Diese Variante ist nicht sehr performant viele Mail-Provider sehen das garnicht gern:

       imaps://user[:password]@mail.server.tld
  • Das sftp-Protokoll (ssh) ist vor allem für eigene Server interessant. Loginname und Passwort werden ebenfalls in der Adresse kodiert. Statt Passwort sollte man besser einen SSH-Key nutzen und den Key mit ssh-add vorher freischalten.

      ssh://user[:password]@server.tld[:port]/dir
  • scp und rsync können ebenfalls für die Übertragung zum Server genutzt werden:

      scp://user[:password]@server.tld[:port]/dir
      rsync://user[:password]@server.tld[:port]/dir

    Das Verzeichnis ist bei rsync relativ zum Login-Verzeichnis. Um einen absoluten Pfad auf dem Server anzugeben, schreibt man 2 Slash, also //dir.

Ein Restore erfolgt nur in ein leeres Verzeichnis! Es ist ein neues Verzeichnis zu erstellen. Beim Aufruf zur Wiederherstellung der Daten sind BackupAdresse und lokales Verzeichnis zu tauschen. Weitere Parameter sind nicht nötig.

   > mkdir /home/user/restore
   > duplicity Backupaddresse /home/user/restore 
    

Weitere Informationen findet man in der manual page von dublicity.

  1. http://www.heise.de/newsticker/meldung/99313
  2. http://www.elcomsoft.com/news/531.html
  3. http://true-random.com/homepage/projects/usbsticks/small.html
  4. http://heise.de/-270060
  5. http://heise.de/-894962
  6. http://www.cis.upenn.edu/ bcpierce/unison/
  7. http://dar.linux.free.fr
  8. http://sourceforge.net/projects/kdar/
  9. http://sourceforge.net/projects/dargui/
  10. http://www.eff.org/deeplinks/2008/05/protecting-yourself-suspicionless-searches-while-t