ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Daten verschlüsseln

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Aus Gründen der Geheimhaltung sensibler Daten, aber auch der Privatsphäre, bietet es sich an, Daten auf der Festplatte zu verschlüsseln. Dazu gibt es prinzipiell mehrere Möglichkeiten:

In diesem Artikel werden die ersten beiden Möglichkeiten behandelt.

Sicherheit der Verschlüsselungsmethoden

Hinweis:

Ohne ein sicheres Kennwort nutzt die stärkste Verschlüsselung nichts! Wie man Passwörter am besten wählt, findet man im Sicherheits 1x1.

Wirkliche Sicherheit bietet Verschlüsselung nur, wenn alle Bereiche, in denen temporäre Dateien (z.B. in /tmp) gespeichert werden, ebenfalls verschlüsselt sind. Ansonsten besteht das Risiko, dass (beispielsweise durch das Bearbeiten von Textdokumenten) Sicherungskopien dieser Dateien auf unverschlüsselte Bereiche der Festplatte kopiert werden. Daher sollte man, wenn möglich, das komplette System verschlüsseln.

Die Verschlüsselungsalgorithmen der in diesem Artikel vorgestellten Verschlüsselungsverfahren gelten als sicher und ungebrochen. Das heißt (außer durch Probieren sämtlicher möglicher Schlüssel) gibt es bis heute keine Methode, eine der hier vorgestellten Verschlüsselungsverfahren zu knacken.

⚓︎

Verschlüsselung einzelner Partitionen mit Cryptsetup und LUKS

Das Programm Cryptsetup nutzt die AES-Verschlüsselung 🇩🇪 zum Schutz sensibler Daten und ist eine sogenannte "On The Fly Verschlüsselung". Das bedeutet, dass Daten nur im Arbeitsspeicher ver- und entschlüsselt werden, es gelangen also keine unverschlüsselten Dateien auf die Festplatte. Dies bietet neben einer erheblichen Geschwindigkeitsverbesserung auch den Vorteil einer erhöhten Sicherheit, da man nicht durch eventuell vorhandene Reste der verschlüsselten Daten auf der Festplatte auf den Inhalt der gesicherten Dateien zurückschließen kann. Eine Ausnahme bildet hierbei die Auslagerungsdatei, da in dieser Teile des Arbeitsspeichers abgebildet werden.

Um eine Partition mit Cryptsetup zu verschlüsseln und dann zu verwenden, sind folgende Schritte notwendig.

Software installieren und Kernelmodule laden

Zuerst muss das folgende Paket installiert [1] werden:

  • cryptsetup (universe, [2])

Um Cryptsetup verwenden zu können, müssen einige Kernelmodule [5] geladen werden. Dazu werden folgende Befehle in einem Terminal [3] ausgeführt:

Hinweis:

Ab der Pentium-Prozessorfamilie (und kompatiblen CPUs) ist es möglich, statt dem Modul aes das Modul aes-i586 zu laden. Dieses Kernelmodul ist speziell an Pentium-Prozessoren angepasst und bringt daher enorme Geschwindigkeitsvorteile mit sich; Das geht nicht auf einem 64bit System: hier wird bei aes automatisch das Modul aes-x86_64 verwendet.

sudo modprobe aes
sudo modprobe dm-crypt
sudo modprobe dm-mod 

Eine Partition verschlüsseln

Für alle folgenden Befehle benötigt man Root-Rechte. Man bekommt sie durch den Befehl:

sudo -s 

LUKS-Dateisystem anlegen

Nachdem eine zu verschlüsselnde Partition angelegt wurde [4], wird ein verschlüsseltes LUKS-Dateisystem angelegt (/dev/sd<Partition> muss dabei durch den Namen der entsprechenden Partition ersetzt werden, z.B /dev/sda7). LUKS (Linux Unified Key Setup) ist ein Standard für Festplattenverschlüsselung unter Linux und kann zum Beispiel mit Cryptsetup verwendet werden.

Achtung!

Der nachfolgende Befehl löscht sämtliche Dateien auf der betreffenden Partition unwiederbringlich! Man sollte ihn nur ausführen, wenn ein Backup der Daten vorliegt.

Im Terminal [3] wird das folgende Kommando ausgeführt:

Ab Kernel 2.6.24 (Hardy):

cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sd<Partition> 

Ab Kernel 2.6.10 (Dapper):

cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/sd<Partition> 

Das Argument "-c" legt den zu verwendenden Verschlüsselungsalgorithmus fest (hier: AES), "-y" bewirkt eine doppelte Passwortabfrage und "-s" definiert die Schlüssellänge (hier: 256 Bit, bei XTS werden 512 Bit angegeben, da der XTS-Algorithmus zusätzliche 256 Bit für die Verknüpfung der Blöcke benötigt). Näheres dazu steht in der Manpage zu cryptsetup.

Nach doppelter Eingabe eines Passwortes wird die Partition verschlüsselt.

Dateisystem formatieren

Nachdem die verschlüsselte Partition angelegt wurde, sollte ein Dateisystem auf dieser erstellt werden. Dazu wird das Gerät zunächst unverschlüsselt als Gerätedatei in das System eingehängt:

cryptsetup luksOpen /dev/sd<Partition> <Name> 

"<Name>" kann dabei durch eine beliebige Bezeichnung für die Partition ersetzt werden. Es existiert nun im Verzeichnis /dev/mapper eine Datei <Name>, die sich wie eine normale Festplatte ansprechen lässt. So wird nun auch das Dateisystem (hier: ext3) erstellt:

mkfs.ext3 /dev/mapper/<Name>
cryptsetup luksClose <Name> 

Der zweite Befehl bewirkt das Schließen der verschlüsselten Partition.

Eine verschlüsselte Partition verwenden

Eine Partition ins Dateisystem einhängen

Eine Partition, die wie oben beschrieben mit Cryptsetup und LUKS verschlüsselt wurde, kann nun durch folgende Befehle ins Dateisystem eingehängt werden:

cryptsetup luksOpen /dev/sd<Partition> <Name>
mount /dev/mapper/<Name> /mnt 

Nach Eingabe des Passwortes wird die Partition unverschlüsselt auf /dev/mapper/<Name> abgebildet. Diese Gerätedatei muss noch in das eigentliche Dateisystem eingehängt werden, was der zweite Befehl bewirkt. Die Daten auf /dev/sd<Partition> sind nun im Dateisystem über den Ordner /mnt erreichbar.

Eine Partition aus dem Dateisystem aushängen

Möchte man eine verschlüsselte Partition wieder aus dem Dateisystem aushängen, so sind folgende Kommandos einzugeben:

umount /mnt
cryptsetup luksClose <Name> 

Dabei bewirkt der erste Befehl das Aushängen des Datenträgers aus dem Dateisystem und der zweite das Schließen der verschlüsselten Partition.

Passwörter verwalten

LUKS bietet insgesamt acht Speicherplätze (genannt 'Slot' 0-7) für änderbare Passwörter, die jeweils den Zugriff auf die Partition erlauben. Zur Passwortverwaltung ist es zuerst notwendig, die verschlüsselte Partition zu öffnen, anschließend kann ihre Struktur und die belegten Speicherplätze mittels folgendem Befehl überprüft werden:

cryptsetup luksDump /dev/sd<Partition> 

Passwort hinzufügen

Nachdem die Partition offen ist, kann mit folgendem Befehl ein neues Passwort hinzugefügt werden:

cryptsetup luksAddKey /dev/sd<Partition> 

Passwort löschen

Wenn man ein Passwort entfernen möchte ist es nötig zu wissen, in welchem Speicherplatz sich dieses befindet. Anschließend wird es durch diesen Befehl entfernt:

cryptsetup luksDelKey /dev/sd<Partition> <Speicherplatz> 

Passwort ändern

Zum Ändern eines Passworts legt man zuerst das neue Passwort an und entfernt anschließend das alte. Das umgekehrte Vorgehen sollte aus Sicherheitsgründen nur angewandt werden, wenn alle Speicherplätze für Passwörter bereits belegt sind.

Beliebige verschlüsselte Partition automatisch einbinden

Nachdem eine verschlüsselte Partition wie im oberen Abschnitt beschrieben angelegt wurde, ist es möglich diese automatisch beim Starten in einem beliebigen Verzeichnis mounten zu lassen. Das Passwort zu der verschlüsselten Partition wird dazu vor dem eigentlichen Anmeldevorgang abgefragt.

Dazu muss als erstes in der Datei /etc/crypttab die einzuhängende Partition, und ein frei gewählter Name der zur Identifikation der entschlüsselten Partition dient, nach folgenem Schema eingetragen werden.

# <target name> <source device>             <key file>     <options>
   <Name>         /dev/sd<Partition>          none           luks

Nun wird die entschlüsselte Partition bei jedem Start des PC an dem Ort /dev/mapper/<Name> zum Einbinden bereitgestellt. Also nächstes muss man in der Datei /etc/fstab das entgültige Verzeichnis festlegen in dem die Partition gemountet werden soll. (/mnt ist hier nur als Bsp. angegeben, das Verzeichnis ist frei wählbar.)

# <file system>  <mount point>      <type>  <options>        <dump>  <pass>  
/dev/mapper/<Name>     /mnt          ext3     auto,defaults    0       0

Ab jetzt sollte bei jedem Neustart des PC das Passwort der verschlüsselten Partition abgefragt, und diese automatisch am in der fstab angegeben Ort eingehangen werden.

Verschlüsselte /home-Partition automatisch beim Anmelden einbinden

Nachdem wie oben beschrieben eine verschlüsselte Partition angelegt wurde, kann diese als /home genutzt werden. Damit diese Partition automatisch mit pam-mount beim Anmelden eingebunden werden kann, müssen das jeweilige Nutzer-Passwort und ein Passwort der Partition identisch sein. Das Verfahren hat den Vorteil, dass es sich nahtlos in den normalen Anmeldevorgang einbindet und nur eine Passworteingabe nötig ist - allerdings ist es dann um so wichtiger, dass das gewählte Passwort von guter Qualität ist.

Software installieren

Zuerst muss das folgende Paket installiert [1] werden:

  • libpam-mount (universe, [2])

Daten migrieren

Zuerst wird die verschlüsselte Partition geöffnet, welche als /home verwendet werden soll. Dann wird sie kurzfristig unter /mnt eingehängt:

cryptsetup luksOpen /dev/sd<Partition> <Name>
mount /dev/mapper/<Name> /mnt 

Anschließend werden alle Dateien von der ursprünglichen Home-Partition auf die neue, verschlüsselte kopiert:

cp -avx /home/* /mnt 

Nachdem überprüft wurde, ob alle Daten kopiert wurden, sollte man dort noch eine Test-Datei (z.B. Test.txt) erstellen, um nachher zu sehen, ob wirklich alles funktioniert hat. Abschließend hängt man dann die Partition wieder aus:

umount /mnt
cryptsetup luksClose <Name> 

pam-mount konfigurieren

Damit pam-mount weiß, welche Partitionen es bei Anmeldung wohin einhängen soll, werden mit den folgenden Befehlen die entsprechende Zeilen in die allgemeinen Konfigurationsdateien eingetragen, die man dazu mit Root-Rechten öffnet [2]:

Bis Gutsy wird in /etc/security/pam_mount.conf unter der auskommentierten Dokumentation folgende Zeile eingetragen und <Partition> durch die tatsächliche Partition ersetzt:

volume * crypt - /dev/sd<Partition> /home - - -

Ab Hardy wird in /etc/security/pam_mount.conf.xml unter der auskommentierten Dokumentation folgende Zeile eingetragen und <Partition> durch die tatsächliche Partition ersetzt:

<volume fstype="crypt" path="/dev/sd<Partition>" mountpoint="/home" options="fsck" />

Anschließend wird in /etc/pam.d/common-session folgende Zeile so eingetragen, dass sie ganz am Ende steht:

@include common-pammount

Hinweis:

Falls man die automatische Einbindung nur für einen bestimmten Session-Manager möchte, kann man direkt die spezifischen Konfigurationsdateien ändern:

Für GDM, also Ubuntu und Xubuntu wird in /etc/pam.d/gdm folgende Zeile so eingetragen, dass sie direkt unter dem Eintrag @include common-session steht:

@include common-pammount

Für KDM, also Kubuntu wird in /etc/pam.d/kdm folgende Zeile so eingetragen, dass sie direkt unter dem Eintrag @include common-session steht:

@include common-pammount

Konfiguration überprüfen und neu starten

Nachdem die Konfiguration nochmals geprüft wurde kann man das System neu starten. Wenn man nach erfolgreicher Anmeldung in /home die entsprechende Test-Datei gefunden hat, arbeitet man mit dem verschlüsselten /home.

⚓︎

Einzelne Dateien verschlüsseln mit GnuPG

Möchte man keine ganze Partition, sondern nur einzelne Dateien verschlüsseln, so kann man dies mit GnuPG realisieren.

Das Verschlüsseln von Dateien findet im Terminal [3] statt. Durch Eingabe von

gpg -c DATEINAME 

wird die Datei DATEINAME nach doppelter Eingabe eines Passwortes verschlüsselt.

Experten-Info:

Durch das Argument --cipher-algo kann der Verschlüsselungsalgorithmus manuell bestimmt werden, standardmäßig wird hier CAST5 🇩🇪 verwendet. Um eine Liste der unterstützten Algorithmen einzusehen, genügt die Eingabe von gpg --version im Terminal. Auch die Verschlüsselung von Dateien mit einem öffentlichen Schlüssel durch die Option -e ist möglich.

Daten entschlüsseln

Durch Ausführen von

gpg -d DATEINAME.gpg > DATEINAME 

wird eine verschlüsselte Datei DATEINAME.gpg nach Eingabe des Passwortes wieder entschlüsselt und als DATEINAME gespeichert.

Der große Nachteil dieser Methode ist, dass man die Datei jedesmal manuell ver- und entschlüsseln muss. Desweiteren muss man die Originaldatei jedesmal löschen. Dies ist auf die Dauer nicht nur etwas mühselig, auch sind die gelöschten Original-Dateien unter Umständen wieder herstellbar.


Diese Revision wurde am 15. Oktober 2008 22:03 von Kerberos erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, System, Verschlüsselung