Daten verschlüsseln: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „Kurzbeschreibung“ durch „Beschreibung“
 
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Aus Gründen der Geheimhaltung sensibler Daten, aber auch zur Wahrung der Privatsphäre, bietet es sich an, Daten zu verschlüsseln.
'''Daten verschlüsseln''' - Beschreibung


Dazu gibt es – je nach Verwendungszweck – mehrere Möglichkeiten:
== Beschreibung ==
; Motivation
Aus Gründen der Geheimhaltung sensibler Daten, aber auch zur Wahrung der Privatsphäre, bietet es sich an, Daten zu verschlüsseln.


| Kryptografie einzelner Dateien mit || [[GnuPG]],  
; Möglichkeiten
  a. [#ccrypt ccrypt]
{| class="wikitable options"
  a. [#OpenSSL OpenSSL]
|-
  a. [#AES_Crypt]
! Option !! Beschreibung
 
|-
1. Kryptografie einzelner Verzeichnisse mit
| Dateien || [[GnuPG]], [[ccrypt]], [[OpenSSL]], [[AES_Crypt]]
  a. [:GoCryptFS:]
|-
  a. ([:ecryptfs/Beliebigen_Ordner_verschlüsseln:ecryptfs])
| Verzeichnisse || [[GoCryptFS]], [[ecryptfs]], [[EncFS]]
  a. ([:EncFS:])
|-
 
| Homeverzeichnis || [[LUKS]], [[ecryptfs]]
1. Homeverzeichnis verschlüsseln mit
|-
  a. [#luks LUKS]
| Gesamten Systems || [[System_verschlüsseln:auf Basis von LVM]], [[System_verschlüsseln/Schlüsselableitung: ohne LVM]]
  a. ([:ecryptfs:], auch teilweise)
|-
 
| Container || [[zuluCrypt]], [[VeraCrypt]], [[LUKS/Container]]
1. Kryptografie des gesamten 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. Kryptografie von Daten mit Hilfe von Containern
  a. [:zuluCrypt:]
  a. [:VeraCrypt:]
  a. [:LUKS/Containerdatei:]


; Warnung
; Warnung
Das Verschlüsseln von Daten kann der Sicherheit bei der Wahrung der Privatsphäre oder sensibler Daten dienen, beinhaltet aber in der Konsequenz, dass eine eventuell zukünftig notwendige Datenrettung durch eine manuelle Entschlüsselung erschwert werden kann. Eine Entscheidung für oder gegen eine Datenverschlüsselung sollte daher nicht leichtfertig erfolgen. Empfohlen wird eine individuelle Nutzen-Risiko-Abwägung, bezogen auf Anwendungsbereich, Computerkenntnisse des Nutzers oder ähnliche Faktoren, um die Gefahr eines späteren Datenverlusts zu minimieren.
Das Verschlüsseln von Daten kann der Sicherheit bei der Wahrung der Privatsphäre oder sensibler Daten dienen, beinhaltet aber in der Konsequenz, dass eine eventuell zukünftig notwendige Datenrettung durch eine manuelle Entschlüsselung erschwert werden kann.
* Eine Entscheidung für oder gegen eine Datenverschlüsselung sollte daher nicht leichtfertig erfolgen.
* Empfohlen wird eine individuelle Nutzen-Risiko-Abwägung, bezogen auf Anwendungsbereich, Computerkenntnisse des Nutzers oder ähnliche Faktoren, um die Gefahr eines späteren Datenverlusts zu minimieren.


= Sicherheit der Kryptografiesmethoden =
=== Sicherheit der Kryptografiemethoden ===
; Hinweis
; Hinweis
Ohne ein sicheres Kennwort nutzt die stärkste Kryptografie nichts! Wie man Passwörter am besten wählt, findet man im [:Sicherheits_1x1:Sicherheits 1x1].  
Ohne ein sicheres Kennwort nutzt die stärkste Kryptografie nichts! Wie man Passwörter am besten wählt, findet man im [:Sicherheits_1x1:Sicherheits 1x1].


Wirkliche Sicherheit bietet Kryptografie 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 gesamte [:System_verschlüsseln:System verschlüsseln] oder zumindest die [:Vorbereitung Teilverschlüsselung:Vorbereitung zur Teilverschlüsselung] durchgearbeitet haben.
Wirkliche Sicherheit bietet Kryptografie 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 gesamte [:System_verschlüsseln:System verschlüsseln] oder zumindest die [:Vorbereitung Teilverschlüsselung:Vorbereitung zur Teilverschlüsselung] durchgearbeitet haben.


Die Kryptografiesalgorithmen der in diesem Artikel vorgestellten Kryptografiesverfahren gelten als sicher und ungebrochen. Das heißt, es gibt bis heute keine Methode, eine der hier vorgestellten Kryptografiesverfahren zu knacken, außer durch zeitaufwendiges [wikipedia:Brute-Force:Brute Force] bzw. das "einfache" Durchprobieren sämtlicher möglichen Schlüssel.
Die Kryptografiealgorithmen der in diesem Artikel vorgestellten Kryptografieverfahren gelten als sicher und ungebrochen.
* Das heißt, es gibt bis heute keine Methode, eine der hier vorgestellten Kryptografieverfahren zu knacken, außer durch zeitaufwendiges [wikipedia:Brute-Force:Brute Force] bzw. das "einfache" Durchprobieren sämtlicher möglichen Schlüssel.


= Einzelne Dateien verschlüsseln =
= Einzelne Dateien verschlüsseln =
Der große Nachteil dieser Methode ist, dass man eine Datei jedes Mal manuell ver- und entschlüsseln muss. Außerdem muss man die Originaldatei jedes Mal löschen. Dies ist auf Dauer nicht nur etwas mühselig, auch sind die gelöschten Original-Dateien unter Umständen wiederherstellbar, wenn diese nicht mit [:wipe:] oder [:shred:] entsorgt werden.
Der große Nachteil dieser Methode ist, dass man eine Datei jedes Mal manuell ver- und entschlüsseln muss.
* Außerdem muss man die Originaldatei jedes Mal löschen.
* Dies ist auf Dauer nicht nur etwas mühselig, auch sind die gelöschten Original-Dateien unter Umständen wiederherstellbar, wenn diese nicht mit [:wipe:] oder [:shred:] entsorgt werden.


== GnuPG ==
== 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  
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


  gpg -c DATEINAME
  gpg -c DATEINAME


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


Durch das Argument `--cipher-algo` kann der Kryptografiesalgorithmus 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 Kryptografie von Dateien mit einem öffentlichen Schlüssel durch die Option `-e` ist möglich.  
Durch das Argument `--cipher-algo` kann der Kryptografiealgorithmus 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 Kryptografie von Dateien mit einem öffentlichen Schlüssel durch die Option `-e` ist möglich.


Durch Ausführen von  
Durch Ausführen von
  gpg -d DATEINAME.gpg > DATEINAME
  gpg -d DATEINAME.gpg > DATEINAME


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


; Hinweis
; Hinweis
Evtl. wird beim Verschlüsseln das eingegebene Passwort im Cache gespeichert, sodass man die verschlüsselte Datei direkt danach wieder ohne Passworteingabe entschlüsseln kann. Erst durch das Abmelden des Benutzers wird das Passwort im Cache gelöscht. Alternativ kann man auch
Evtl. wird beim Verschlüsseln das eingegebene Passwort im Cache gespeichert, sodass man die verschlüsselte Datei direkt danach wieder ohne Passworteingabe entschlüsseln kann.
* Erst durch das Abmelden des Benutzers wird das Passwort im Cache gelöscht.
* Alternativ kann man auch
`echo RELOADAGENT | gpg-connect-agent ` ausführen.
`echo RELOADAGENT | gpg-connect-agent ` ausführen.


== ccrypt ==
== ccrypt ==
Das Programm [sourceforge2:ccrypt:] kann direkt aus den Paketquellen installiert werden.  
Das Programm [[sourceforge2:ccrypt]] kann direkt aus den Paketquellen installiert werden.


  * Verschlüsseln:
  * Verschlüsseln:
Zeile 71: Zeile 79:


== OpenSSL ==
== 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.
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:  
* Verschlüsseln:
  #!/bin/bash
  #!/bin/bash
  # make sure we get a file name
  # make sure we get a file name
  if [ $# -lt 1 ]; then
  if [ $# -lt 1 ]; then
  echo "Usage: $0 filename"
echo "Usage: $0 filename"
  exit 1
exit 1
  fi
  fi
  openssl enc -e -aes256 -in "$1" -out "$1".enc
  openssl enc -e -aes256 -in "$1" -out "$1".enc
Zeile 86: Zeile 96:
  # make sure we get 2 files
  # make sure we get 2 files
  if [ $# -lt 2 ]; then
  if [ $# -lt 2 ]; then
  echo "Usage: $0 encrypted_file decrypted_file"
echo "Usage: $0 encrypted_file decrypted_file"
  exit 1
exit 1
  fi
  fi
  openssl enc -d -aes256 -in "$1" -out "$2"
  openssl enc -d -aes256 -in "$1" -out "$2"
Zeile 94: Zeile 104:


= Mit LUKS verschlüsselte /home-Partition automatisch beim Anmelden einbinden =
= Mit LUKS verschlüsselte /home-Partition automatisch beim Anmelden einbinden =
Nachdem, wie im Artikel [:LUKS:] beschrieben, eine verschlüsselte Partition angelegt worden ist, 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 umso wichtiger, dass das gewählte Passwort von guter Qualität ist.
Nachdem, wie im Artikel [:LUKS:] beschrieben, eine verschlüsselte Partition angelegt worden ist, 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 umso wichtiger, dass das gewählte Passwort von guter Qualität ist.


{{{#!vorlage Warnung
; 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 Kryptografie möglicherweise wirkungslos.
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 Kryptografie möglicherweise wirkungslos.


== Software installieren ==
== Software installieren ==
Zuerst muss das folgende Paket installiert [1] werden:  
Zuerst muss das folgende Paket installiert werden:
 
libpam-mount
{{{#!vorlage Paketinstallation
libpam-mount
}}}


== Daten migrieren ==
== 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:  
Zuerst wird die verschlüsselte Partition geöffnet, welche als '''/home''' verwendet werden soll.
 
* Dann wird sie kurzfristig unter '''/mnt''' eingehängt:
{{{#!vorlage Befehl
cryptsetup luksOpen /dev/sdPARTITIONS_NUMMER NAME
cryptsetup luksOpen /dev/sdPARTITIONS_NUMMER NAME
mount /dev/mapper/NAME /mnt
mount /dev/mapper/NAME /mnt
}}}
 
Anschließend werden alle Dateien von der ursprünglichen Home-Partition auf die neue, verschlüsselte kopiert[8]:
 
{{{#!vorlage Befehl
rsync -avx /home/ /mnt
}}}


Nachdem überprüft worden ist, 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:  
Anschließend werden alle Dateien von der ursprünglichen Home-Partition auf die neue, verschlüsselte kopiert[8]:
rsync -avx /home/ /mnt


{{{#!vorlage Befehl
Nachdem überprüft worden ist, 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
umount /mnt
cryptsetup luksClose NAME
cryptsetup luksClose NAME
}}}


== pam-mount konfigurieren ==
== 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]:  
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:
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 `UUID` durch die tatsächliche UUID der Partition ersetzt:  
In '''/etc/security/pam_mount.conf.xml''' wird unter der auskommentierten Dokumentation folgende Zeile eingetragen und `UUID` durch die tatsächliche UUID der Partition ersetzt:


; xml
; xml
Zeile 141: Zeile 144:


; Experten
; 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.
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 ==
== Konfiguration überprüfen und neu starten ==
Nachdem die Konfiguration nochmals geprüft worden ist 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'''.  
Nachdem die Konfiguration nochmals geprüft worden ist 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'''.


= Geschwindigkeiten bei Festplattenverschlüsselung =
= Geschwindigkeiten bei Festplattenverschlüsselung =
Aktuell eingesetzte Prozessoren mit [wikipedia:AES_(Befehlssatzerweiterung):AES-NI Befehlssatzerweiterung] erlauben Ver- und Entschlüsselungsvorgänge in Bereichen mehrerer hundert Megabyte bis wenige Gigabyte pro Sekunde. Prozessoren ohne entsprechende Erweiterung hingegen sind ein vielfaches langsamer und erreichen nicht zwangsweise Schreibgeschwindigkeiten von einigen hundert Megabyte pro Sekunde, können also SSDs sowie auch herkömmliche Festplatten nicht unbedingt ausreizen.
Aktuell eingesetzte Prozessoren mit [wikipedia:AES_(Befehlssatzerweiterung):AES-NI Befehlssatzerweiterung] erlauben Ver- und Entschlüsselungsvorgänge in Bereichen mehrerer Hundert Megabyte bis wenige Gigabyte pro Sekunde.
* Prozessoren ohne entsprechende Erweiterung hingegen sind ein vielfaches langsamer und erreichen nicht zwangsweise Schreibgeschwindigkeiten von einigen hundert Megabyte pro Sekunde, können also SSDs sowie auch herkömmliche Festplatten nicht unbedingt ausreizen.


Eine Abschätzung der zu erwartenden Geschwindigkeit durch den Prozessor lässt sich folgendermaßen ermitteln:
Eine Abschätzung der zu erwartenden Geschwindigkeit durch den Prozessor lässt sich folgendermaßen ermitteln:
{{{
sudo cryptsetup benchmark
sudo cryptsetup benchmark
 
}}}
Bei der Ausgabe des Befehls sollte man auf die Zeile mit dem ''aes-xts''-Algorithmus achten, da dieser am häufigsten für die Festplattenverschlüsselung eingesetzt wird bzw. werden sollte.
Bei der Ausgabe des Befehls sollte man auf die Zeile mit dem ''aes-xts''-Algorithmus achten, da dieser am häufigsten für die Festplattenverschlüsselung eingesetzt wird bzw. werden sollte.
 
<noinclude>
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
----
* [:LUKS/Containerdatei:] - LUKS mit Containerdatei verwenden
* [:Steghide:] - Informationen in Dateien verstecken
* [:Sicherheit#Datenschutz-und-Privatsphaere:Datenschutz und Privatsphäre] {Übersicht} Artikelübersicht
 
==== Links ====
===== Weblinks =====
# [wikipedia:Dm-crypt:cryptsetup und LUKS] - Wikipedia
# [http://selbstdatenschutz.info/ Technischer Datenschutz und Kryptografie] {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://wiki.debianforum.de/BenchmarkFestplattenverschl%C3%BCsselung Benchmark für Festplattenverschlüsselung] {de}
 
= TMP =
=== Daten verschlüsseln ===
; Sensible Daten verschlüsseln
Daten, die nicht in die Hände Dritter geraten sollen, können durch geeignete Maßnahmen, wie zum Beispiel mit der Software [[GNU Privacy Guard|GnuPG]] oder mit [[Festplattenverschlüsselung]], geschützt werden (siehe auch [[Kryptographie]]).
* Dies betrifft nicht nur Daten, die sich zwischen zwei Rechnern im Transit befinden, sondern auch Daten, die sich stationär auf [[Massenspeicher]]n befinden.
* Ein typisches Beispiel ist die Übertragung von Kreditkartennummern während des Online-Einkaufs, welche oft via [[Hypertext Transfer Protocol Secure|HTTPS]] geschützt werden.
* Der Zugriff auf den Inhalt ist nur dann möglich, wenn eine Partei über den richtigen [[Nummerung|Schlüssel]] verfügt.
* Besonders gefährdet sind unverschlüsselte, kabellose Netze, wie zum Beispiel offene [[Wireless Local Area Network|WLANs]].
* Sollten keine weiteren Schutzmaßnahmen ergriffen worden sein, wie z.&nbsp;B.&nbsp;der Einsatz von einem [[Virtual Private Network|VPN]], erhalten Unbefugte potenziell unbemerkten Zugriff auf die übertragenen Daten.
 
; Auch für Behörden und Unternehmen ist die Datensicherheit, vor allem in Bezug auf den Datentransport, ein äußerst sensibles Thema.
* Immer wieder erfordern Geschäftsprozesse die mobile Verfügbarkeit von Forschungs-, Finanz-, Kunden- oder Kontodaten.
* Bei der Datenaufbewahrung und dem Datentransport müssen sich Behörden und Unternehmen auf höchste Sicherheit verlassen können.
* Gelangen sensible Daten in unbefugte Hände, entsteht meist ein irreparabler Schaden, insbesondere wenn die Daten verbreitet oder missbraucht werden.
* Um dies zu verhindern und höchste Datensicherheit für den mobilen Datentransport zu gewährleisten, müssen neben dem Kriterium der Datenverschlüsselung auch die Kriterien wie Datenintegrität (siehe [[Authentifizierung]]) und Lebenszyklus der Schlüssel beachtet werden.
 
; Das angestrebte Niveau an Datensicherheit bestimmt die empfohlenen Verschlüsselungsmethoden und Verschlüsselungsstärken.
* Für Anwendungen mit symmetrischer Verschlüsselung empfiehlt das [[Bundesamt für Sicherheit in der Informationstechnik|BSI (Deutschland)]] die Verschlüsselungsmethode [[Advanced Encryption Standard|AES]] mit einer Schlüssellänge ab 128 Bit.
* Als Betriebsart werden [[CCM Mode|CCM]], [[Galois/Counter Mode|GCM]], [[Cipher Block Chaining Mode|CBC]] und [[Counter Mode|CTR]] empfohlen.
 
[[Passwort|Passwörter]], [[persönliche Identifikationsnummer]]n (PIN) und [[Transaktionsnummer]]n (TAN) sollten nicht unverschlüsselt gespeichert oder übertragen werden.


= Links =
== Intern ==
* [:LUKS/Containerdatei:] - LUKS mit Containerdatei verwenden
* [:Steghide:] -  Informationen in Dateien verstecken
* [:Sicherheit#Datenschutz-und-Privatsphaere:Datenschutz und Privatsphäre] {Übersicht} Artikelübersicht
== Extern ==
* [wikipedia:Dm-crypt:cryptsetup und LUKS] - Wikipedia
* [http://selbstdatenschutz.info/ Technischer Datenschutz und Kryptografie] {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://wiki.debianforum.de/BenchmarkFestplattenverschl%C3%BCsselung Benchmark für Festplattenverschlüsselung] {de}


[[Kategorie:Kryptografie/Anwendung]]
[[Kategorie:Kryptografie/Anwendung]]
</noinclude>

Aktuelle Version vom 19. Oktober 2024, 13:34 Uhr

Daten verschlüsseln - Beschreibung

Beschreibung

Motivation

Aus Gründen der Geheimhaltung sensibler Daten, aber auch zur Wahrung der Privatsphäre, bietet es sich an, Daten zu verschlüsseln.

Möglichkeiten
Option Beschreibung
Dateien GnuPG, ccrypt, OpenSSL, AES_Crypt
Verzeichnisse GoCryptFS, ecryptfs, EncFS
Homeverzeichnis LUKS, ecryptfs
Gesamten Systems System_verschlüsseln:auf Basis von LVM, System_verschlüsseln/Schlüsselableitung: ohne LVM
Container zuluCrypt, VeraCrypt, LUKS/Container
Warnung

Das Verschlüsseln von Daten kann der Sicherheit bei der Wahrung der Privatsphäre oder sensibler Daten dienen, beinhaltet aber in der Konsequenz, dass eine eventuell zukünftig notwendige Datenrettung durch eine manuelle Entschlüsselung erschwert werden kann.

  • Eine Entscheidung für oder gegen eine Datenverschlüsselung sollte daher nicht leichtfertig erfolgen.
  • Empfohlen wird eine individuelle Nutzen-Risiko-Abwägung, bezogen auf Anwendungsbereich, Computerkenntnisse des Nutzers oder ähnliche Faktoren, um die Gefahr eines späteren Datenverlusts zu minimieren.

Sicherheit der Kryptografiemethoden

Hinweis

Ohne ein sicheres Kennwort nutzt die stärkste Kryptografie nichts! Wie man Passwörter am besten wählt, findet man im [:Sicherheits_1x1:Sicherheits 1x1].

Wirkliche Sicherheit bietet Kryptografie 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 gesamte [:System_verschlüsseln:System verschlüsseln] oder zumindest die [:Vorbereitung Teilverschlüsselung:Vorbereitung zur Teilverschlüsselung] durchgearbeitet haben.

Die Kryptografiealgorithmen der in diesem Artikel vorgestellten Kryptografieverfahren gelten als sicher und ungebrochen.

  • Das heißt, es gibt bis heute keine Methode, eine der hier vorgestellten Kryptografieverfahren zu knacken, außer durch zeitaufwendiges [wikipedia:Brute-Force:Brute Force] bzw. das "einfache" Durchprobieren sämtlicher möglichen Schlüssel.

Einzelne Dateien verschlüsseln

Der große Nachteil dieser Methode ist, dass man eine Datei jedes Mal manuell ver- und entschlüsseln muss.

  • Außerdem muss man die Originaldatei jedes Mal löschen.
  • Dies ist auf Dauer nicht nur etwas mühselig, auch sind die gelöschten Original-Dateien unter Umständen wiederherstellbar, wenn diese nicht mit [:wipe:] oder [:shred:] entsorgt werden.

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
gpg -c DATEINAME

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

Durch das Argument `--cipher-algo` kann der Kryptografiealgorithmus 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 Kryptografie von Dateien mit einem öffentlichen Schlüssel durch die Option `-e` ist möglich.

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.

Hinweis

Evtl. wird beim Verschlüsseln das eingegebene Passwort im Cache gespeichert, sodass man die verschlüsselte Datei direkt danach wieder ohne Passworteingabe entschlüsseln kann.

  • Erst durch das Abmelden des Benutzers wird das Passwort im Cache gelöscht.
  • Alternativ kann man auch

`echo RELOADAGENT | gpg-connect-agent ` ausführen.

ccrypt

Das Programm sourceforge2:ccrypt kann direkt aus den Paketquellen installiert werden.

* Verschlüsseln:
ccencrypt foobar
* Entschlüsseln:
ccdecrypt foobar
* Entschlüsseln – nur auf die Standardausgabe:
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"
# openssl benutzt ab Version 1.1 (?) nicht mehr -md md5 als Default-Option, ohne diese Option kann eine mit
# Version 1.0 verschlüsselte Datei nicht entschlüsselt werden.

Mit LUKS verschlüsselte /home-Partition automatisch beim Anmelden einbinden

Nachdem, wie im Artikel [:LUKS:] beschrieben, eine verschlüsselte Partition angelegt worden ist, 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 umso wichtiger, dass das gewählte Passwort von guter Qualität ist.
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 Kryptografie möglicherweise wirkungslos.

Software installieren

Zuerst muss das folgende Paket installiert werden:

libpam-mount

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/sdPARTITIONS_NUMMER NAME
mount /dev/mapper/NAME /mnt

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

rsync -avx /home/ /mnt

Nachdem überprüft worden ist, 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]:

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 `UUID` durch die tatsächliche UUID der Partition ersetzt:

xml
<volume user="BENUTZERNAME" fstype="crypt" path="/dev/disk/by-uuid/UUID" mountpoint="/ABSOLUTER/PFAD/ZU/EINHÄNGEPUNKT" options="fsck,relatime" />

In aktuellen Ubuntu-Versionen werden die PAM-Module automatisch verwaltet.

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 worden ist 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.

Geschwindigkeiten bei Festplattenverschlüsselung

Aktuell eingesetzte Prozessoren mit [wikipedia:AES_(Befehlssatzerweiterung):AES-NI Befehlssatzerweiterung] erlauben Ver- und Entschlüsselungsvorgänge in Bereichen mehrerer Hundert Megabyte bis wenige Gigabyte pro Sekunde.

  • Prozessoren ohne entsprechende Erweiterung hingegen sind ein vielfaches langsamer und erreichen nicht zwangsweise Schreibgeschwindigkeiten von einigen hundert Megabyte pro Sekunde, können also SSDs sowie auch herkömmliche Festplatten nicht unbedingt ausreizen.

Eine Abschätzung der zu erwartenden Geschwindigkeit durch den Prozessor lässt sich folgendermaßen ermitteln:

sudo cryptsetup benchmark

Bei der Ausgabe des Befehls sollte man auf die Zeile mit dem aes-xts-Algorithmus achten, da dieser am häufigsten für die Festplattenverschlüsselung eingesetzt wird bzw. werden sollte.


Anhang

Siehe auch


  • [:LUKS/Containerdatei:] - LUKS mit Containerdatei verwenden
  • [:Steghide:] - Informationen in Dateien verstecken
  • [:Sicherheit#Datenschutz-und-Privatsphaere:Datenschutz und Privatsphäre] {Übersicht} Artikelübersicht

Links

Weblinks
  1. [wikipedia:Dm-crypt:cryptsetup und LUKS] - Wikipedia
  2. Technischer Datenschutz und Kryptografie {de} - Anleitungen zum Verschlüsseln von Daten und Kommunikation
  3. UsbCryptFormat {de} - GUI für Linux zum Verschlüsseln externer Datenträger
  4. Benchmark für Festplattenverschlüsselung {de}

TMP

Daten verschlüsseln

Sensible Daten verschlüsseln

Daten, die nicht in die Hände Dritter geraten sollen, können durch geeignete Maßnahmen, wie zum Beispiel mit der Software GnuPG oder mit Festplattenverschlüsselung, geschützt werden (siehe auch Kryptographie).

  • Dies betrifft nicht nur Daten, die sich zwischen zwei Rechnern im Transit befinden, sondern auch Daten, die sich stationär auf Massenspeichern befinden.
  • Ein typisches Beispiel ist die Übertragung von Kreditkartennummern während des Online-Einkaufs, welche oft via HTTPS geschützt werden.
  • Der Zugriff auf den Inhalt ist nur dann möglich, wenn eine Partei über den richtigen Schlüssel verfügt.
  • Besonders gefährdet sind unverschlüsselte, kabellose Netze, wie zum Beispiel offene WLANs.
  • Sollten keine weiteren Schutzmaßnahmen ergriffen worden sein, wie z. B. der Einsatz von einem VPN, erhalten Unbefugte potenziell unbemerkten Zugriff auf die übertragenen Daten.
Auch für Behörden und Unternehmen ist die Datensicherheit, vor allem in Bezug auf den Datentransport, ein äußerst sensibles Thema.
  • Immer wieder erfordern Geschäftsprozesse die mobile Verfügbarkeit von Forschungs-, Finanz-, Kunden- oder Kontodaten.
  • Bei der Datenaufbewahrung und dem Datentransport müssen sich Behörden und Unternehmen auf höchste Sicherheit verlassen können.
  • Gelangen sensible Daten in unbefugte Hände, entsteht meist ein irreparabler Schaden, insbesondere wenn die Daten verbreitet oder missbraucht werden.
  • Um dies zu verhindern und höchste Datensicherheit für den mobilen Datentransport zu gewährleisten, müssen neben dem Kriterium der Datenverschlüsselung auch die Kriterien wie Datenintegrität (siehe Authentifizierung) und Lebenszyklus der Schlüssel beachtet werden.
Das angestrebte Niveau an Datensicherheit bestimmt die empfohlenen Verschlüsselungsmethoden und Verschlüsselungsstärken.
  • Für Anwendungen mit symmetrischer Verschlüsselung empfiehlt das BSI (Deutschland) die Verschlüsselungsmethode AES mit einer Schlüssellänge ab 128 Bit.
  • Als Betriebsart werden CCM, GCM, CBC und CTR empfohlen.

Passwörter, persönliche Identifikationsnummern (PIN) und Transaktionsnummern (TAN) sollten nicht unverschlüsselt gespeichert oder übertragen werden.