[[Vorlage(Getestet, general)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Paketquellen_freischalten: Bearbeiten von Paketquellen] [:Terminal: Ein Terminal öffnen] [:Partitionierung: Eine Festplatte Partitionieren] [:Kernelmodule: Umgang mit Kernelmodulen (Treibern)] [:Editor: Einen Editor mit Rootrechten öffnen] [:LUKS: Verschlüsselte Partitionen verwenden] [:Home umziehen: Die Benutzerverzeichnisse umziehen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/security.png, 48, align=left)]] Aus Gründen der Geheimhaltung sensibler Daten, aber auch zur Wahrung der Privatsphäre, bietet es sich an, Daten auf der Festplatte zu verschlüsseln. Dazu gibt es – je nach Verwendungszweck – mehrere Möglichkeiten: 1. Verschlüsselung einzelner Dateien mit a. [#GnuPG GnuPG] a. [#ccrypt ccrypt] a. [#OpenSSL OpenSSL] a. [:bcrypt:] 1. Verschlüsselung einzelner Verzeichnisse mit [:EncFS:] 1. Homeverzeichnis verschlüsseln mit a. [#luks LUKS] a. [:ecryptfs:] (auch teilweise) 1. Verschlüsselung des kompletten Systems während der Installation (bis auf '''/boot'''): a. [:System_verschlüsseln:auf Basis von LVM] a. [:System_verschlüsseln/Schlüsselableitung: ohne LVM] 1. Verschlüsselung von Daten mithilfe von Containern a. [:TrueCrypt:] a. [:LUKS/Containerdatei:] In diesem Artikel werden die Möglichkeiten 1a, 1b, 1c und 3a behandelt. = Sicherheit der Verschlüsselungsmethoden = {{{#!vorlage 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: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:System verschlüsseln] oder zumindest die [:Vorbereitung Teilverschlüsselung:Vorbereitung zur Teilverschlüsselung] durchgearbeitet haben. Die Verschlüsselungsalgorithmen der in diesem Artikel vorgestellten Verschlüsselungsverfahren gelten als sicher und ungebrochen. Das heißt, gibt es bis heute keine Methode, eine der hier vorgestellten Verschlüsselungsverfahren zu knacken – außer durch zeitaufwendiges [wikipedia:Brute-Force-Methode:Brute Force] bzw. dem "einfachen" Durchprobieren sämtlicher möglichen Schlüssel. = Einzelne Dateien verschlüsseln = Der große Nachteil dieser Methode ist, dass man die Datei jedes Mal manuell ver- und entschlüsseln muss. Des Weiteren muss man die Originaldatei jedes Mal löschen. Dies ist auf die Dauer nicht nur etwas mühselig, auch sind die gelöschten Original-Dateien unter Umständen wieder herstellbar. == GnuPG == Möchte man einzelne Dateien verschlüsseln, so kann man dies mit [:GnuPG:] realisieren. Das Verschlüsseln von Dateien findet im Terminal [3] statt. Durch Eingabe von {{{#!vorlage Befehl gpg -c DATEINAME }}} wird die Datei '''DATEINAME''' nach doppelter Eingabe eines Passwortes verschlüsselt. {{{#!vorlage Experten Durch das Argument `--cipher-algo` kann der Verschlüsselungsalgorithmus manuell bestimmt werden, standardmäßig wird hier [wikipedia:CAST_(Algorithmus):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. }}} Durch Ausführen von {{{#!vorlage Befehl gpg -d DATEINAME.gpg > DATEINAME }}} wird eine verschlüsselte Datei '''DATEINAME.gpg''' nach Eingabe des Passwortes wieder entschlüsselt und als '''DATEINAME''' gespeichert. == ccrypt == Das Programm [http://www.mathstat.dal.ca/~selinger/ccrypt/ ccrypt] {en} kann direkt aus den Paketquellen installiert werden. * Verschlüsseln: {{{#!vorlage Befehl ccencrypt foobar }}} * Entschlüsseln: {{{#!vorlage Befehl ccdecrypt foobar }}} * Entschlüsseln – nur auf die Standardausgabe: {{{#!vorlage Befehl ccat foobar }}} Weitere Informationen bietet die [:man:Manpage] zur Anwendung. == OpenSSL == Hier helfen zwei kleine Skripte. Diese können z.B. als '''ssl-encode.sh''' und '''ssl-decode.sh''' gespeichert werden. Dazu bieten sich die Ordner '''~/bin''' (für einen einzelnen Benutzer) oder '''/usr/local/bin''' (bei systemweiter Nutzung) an. * Verschlüsseln: {{{ #!/bin/bash # make sure we get a file name if [ $# -lt 1 ] then echo "Usage: $0 filename" exit 1 fi openssl enc -e -aes256 -in "$1" -out "$1".enc }}} * Entschlüsseln: {{{ #!/bin/bash # make sure we get 2 files if [ $# -lt 2 ] then echo "Usage: $0 encrypted_file decrypted_file" exit 1 fi openssl enc -d -aes256 -in "$1" -out "$2" }}} [[Anker(luks)]] = Mit LUKS verschlüsselte /home-Partition automatisch beim Anmelden einbinden = Nachdem, wie im Artikel [:LUKS:] 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. {{{#!vorlage Warnung Sollte nicht das gesamte System verschlüsselt werden, besteht die Gefahr, dass persönliche Daten in unverschlüsselten Bereichen gespeichert werden. Um dieses Risiko zu minimieren sollte der Artikel [:Vorbereitung Teilverschlüsselung:Vorbereitung zur Teilverschlüsselung] durchgearbeitet werden. Ohne diese Maßnahmen ist die Verschlüsselung möglicherweise wirkungslos. }}} == Software installieren == Zuerst muss das folgende Paket installiert [1] werden: {{{#!vorlage Paketinstallation libpam-mount,universe, [2]}}} == Daten migrieren == Zuerst wird die verschlüsselte Partition geöffnet[7], welche als '''/home''' verwendet werden soll. Dann wird sie kurzfristig unter '''/mnt''' eingehängt: {{{#!vorlage Befehl cryptsetup luksOpen /dev/sd mount /dev/mapper/ /mnt }}} Anschließend werden alle Dateien von der ursprünglichen Home-Partition auf die neue, verschlüsselte kopiert[8]: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl umount /mnt cryptsetup luksClose }}} == 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]: Nach demselben Schema kann man auch weitere Partitionen einbinden lassen, insbesondere in Pfade unterhalb von '''/home'''. Falls man bestimmte Partitionen nur für bestimmte Nutzer einbinden will, erweitert man entsprechend die Konfiguration: In '''/etc/security/pam_mount.conf.xml''' wird unter der auskommentierten Dokumentation folgende Zeile eingetragen und `` durch die tatsächliche UUID der Partition ersetzt: {{{ }}} Für Hardy wird in '''/etc/pam.d/common-session''' folgende Zeile so eingetragen, dass sie ganz am Ende steht: {{{ @include common-pammount }}} In aktuellen Ubuntu-Versionen werden die PAM-Module automatisch verwaltet. {{{#!vorlage Experten Falls es bei der Benutzung von sudo und cron zu segfaults kommt, sind diese als Bug zu melden. Man kann das Problem beheben, indem man fest vorgibt, welcher Benutzer die verschlüsselte Partition verwenden soll. }}} == 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'''. = Zu erwartende Geschwindigkeiten bei Festplattenverschlüsselung = Möchte man abschätzen, welche Übertragungsgeschwindigkeiten zu erwarten sind, muss man v.a. CPU und Festplatte untersuchen. In erster Linie ist die CPU der Flaschenhals bei der Verschlüsselung, da die Festplatte erst nach der Verschlüsselung beschrieben wird, d.h. maximal soviel Daten schreiben kann, wie die CPU liefern kann.\\ Wie schnell die einzelnen CPUs von einer verschlüsselten [:RAM-Disk_erstellen: RAM-Disk] mit [:LUKS:] lesen können, kann man folgender [http://wiki.debianforum.de/BenchmarkFestplattenverschl%C3%BCsselung Vergleichstabelle] {de} entnehmen. Zu beachten ist, dass bei einigen CPUs die Festplatte den Flaschenhals darstellen wird, da Übertragungsraten von bis zu 984 MB/s für herkömmliche Festplatten utopisch sind. = Links = * [wikipedia:Dm-crypt:cryptsetup und LUKS] - Wikipedia * [:LUKS/Containerdatei:] - LUKS mit Containerdatei verwenden * [http://selbstdatenschutz.info/ Technischer Datenschutz und Verschlüsselung] {de} - Anleitungen zum Verschlüsseln von Daten und Kommunikation * [http://mandalka.name/usbcryptformat/ UsbCryptFormat] {de} - GUI für Linux zum Verschlüsseln externer Datenträger * [http://mandalka.name/cryptbackup/ CryptBackup] {de} - GUI zum Erstellen und Aktualisieren eines verschlüsselten Backups des persönlichen Ordners auf externen Datenträgern * [http://wiki.debianforum.de/BenchmarkFestplattenverschl%C3%BCsselung Benchmark Festplattenverschlüsselung] * [:Sicherheit#Datenschutz-und-Privatsphaere:Datenschutz und Privatsphäre] {Übersicht} Artikelübersicht * [http://gpg4usb.cpunk.de/ gpg4usb] {en} - mobile Ver- und Entschlüsselung * [https://donnerdrummel.wordpress.com/2010/10/31/gpg4usb/ gpg4usb – Verschlüsselung für Unterwegs] {de} - Blogbeitrag 11/2011 # tag: Sicherheit, System, Verschlüsselung