So erhalten Sie eine brauchbare vollständige Festplattenverschlüsselung mit unterschiedlichen Verschlüsselungen für verschiedene Benutzer

So erhalten Sie eine brauchbare vollständige Festplattenverschlüsselung mit unterschiedlichen Verschlüsselungen für verschiedene Benutzer

Ich möchte eine vollständige Systemverschlüsselung auf meinem Laptop. Aber ich habe zwei Benutzer, einen für zu Hause und einen für die Arbeit, und möchte für beide eine separate Verschlüsselung. Natürlich könnte ich eine vollständige Festplattenverschlüsselung mit dm-crypt durchführen und eine zweite Verschlüsselungsebene mit ecryptfs verwenden, um die Home-Verzeichnisse zu verschlüsseln. Aus Leistungsgründen scheint dies jedoch keine gute Idee zu sein. Wie kann ich also ein System so einrichten, dass:

  • die gesamte Festplatte ist verschlüsselt
  • Wenn Benutzer 1 angemeldet ist und Benutzer 2 nicht, werden die Daten von Benutzer 2 für Benutzer 1 verschlüsselt und umgekehrt
  • Ich muss beim Booten ein Passwort eingeben, das das System entschlüsselt (wie bei einem normalen LVM/dm-crypt-Setup) und nur ein zweites, das den Benutzer x anmeldet und seine Partition entschlüsselt
  • Die Leistung ist vergleichbar mit einer einfachen Festplattenverschlüsselung
  • Die Lösung sollte mit einer SSD funktionieren, d. h. sie sollte TRIM unterstützen

Ich möchte hierfür Ubuntu als Distribution verwenden, falls das wichtig ist.

Antwort1

  1. Verschlüsseln Sie nicht die gesamte Festplatte (wie in ) /dev/sda, sondern pro Partition (oder genauer pro Dateisystem – siehe unten).

  2. Lassen Sie für die beiden Benutzer separate Dateisysteme in den Home-Partitionen einhängen. Ich vermeide es absichtlich, separate Partitionen zu schreiben, da dies zwar die übliche Vorgehensweise ist, in mancher Hinsicht jedoch einschränkend ist. Es könnte bequemer sein, eine große Home-Partition zu haben, die große Dateien enthält, die die verschlüsselten Dateisysteme enthalten und bei Bedarf eingehängt werden. Der Vorteil besteht darin, dass die Größe der Home-Partitionen der Benutzer einfacher geändert werden kann, während sie getrennt bleiben.

  3. Automounts beim Login sind über PAM möglich. Beachten Sie, dass Sie nicht das gleiche Passwort für den Login und für den eigentlichenDatenverschlüsselung. Stattdessen verwendet man entweder LUKS oder imitiert es, indem man den Verschlüsselungsschlüssel in einer Datei speichert, die wiederum mit dem Login-Passwort verschlüsselt ist. Dadurch wird sichergestellt, dass eine Änderung des Login-Passworts nicht die verschlüsselten Daten, sondern nur den verschlüsselten Schlüssel beeinflusst und man sich somit nicht um die Neuverschlüsselung des gesamten Benutzer-Homepages kümmern muss.

Allgemeine Anweisungen:

  • Verwenden Sie Partitionierung gdisk(auch manchmal genannt gptfdisk) partedoder ein anderes geeignetes Programm. Lesen Sie die Manpages für weitere Einzelheiten (Partitionierung liegt etwas außerhalb des Rahmens dieser Qualitätssicherung).

  • verschlüsselte dateibasierte Dateisysteme - Ich habe einige Einwände gegen das Design von LUKS, daher verwende ich im Allgemeinen cryptsetupden „einfachen“ Modus, der LUKS in einigen Aspekten imitiert. Wenn Sie LUKS wählen, können Sie die Schritte einfach auf Folgendes reduzieren cryptsetup(mit entsprechend geänderten Optionen).

    1. Bereiten Sie den Verschlüsselungsschlüssel und das Passwort vor. Dies ist ein interessanter Teil - zum Verschlüsseln der Daten möchten Sie etwas mit ausreichender Zufälligkeit (ein 8-stelliges Passwort reicht wirklich nicht aus) und als Passwort etwas, das Sie leicht ändern können (ohne das gesamte Dateisystem neu verschlüsseln zu müssen) und das einigermaßen leicht zu merken und einzugeben ist. Diese Anforderungen widersprechen sich ziemlich. Daher verwenden wir denselben Trick wie LUKS (und der eigentlich als eine Variante einesHybrides Kryptosystemin gewissem Sinne)). DieVerschlüsselungsschlüsselkann mehr oder weniger zufällig sein – verwenden Sie entweder wirklich zufällige Daten (z. B. von /dev/random) oder einen ausreichend langen Hash wie SHA-2 oder SHA-3 (der erste wurde von der NSA entwickelt, falls Sie sich angesichts der jüngsten Ereignisse nicht sicher sind, ob Sie ihn verwenden sollen oder nicht) einer ausreichend langen Passphrase.

      Angemessen lang bedeutet im ersten Fall (und im Fall wirklich zufälliger Daten), dass die Länge etwa der gewählten Schlüssellänge für die verwendete Chiffre entsprechen sollte.Plusdie Länge desInitialisierungsvektor. Im zweiten Fall bedeutet es, dass es schwierig sein dürfte,rohe Gewaltes. Die Verwendung eines Hashs hat den Vorteil, dass der Schlüssel wiederhergestellt werden kann, wenn er beschädigt wird oder verloren geht (vorausgesetzt natürlich, Sie erinnern sich an die ursprüngliche Passphrase, die gehasht wurde). Dieser Schlüssel wird dann verschlüsselt und in einer Datei gespeichert. Die Passphrase für den verschlüsselten Schlüssel ist in Ihrem Fall dieselbe wie das Anmeldekennwort.

      # set up the encrypted encryption key
      printf "Reasonably long and complicated passphrase" \
          | openssl dgst -sha512 -binary \
          | openssl enc -bf > /path/to/key.enc
      

      openssl dgst -sha512 -binaryerzeugt die binäre Form des SHA-512-Hashes aus seiner Standardeingabe, openssl enc -bfverschlüsselt ihn mitKugelfisch- Sie können Hash und Chiffre nach Belieben auswählen (Twofish oder Rijndael sind beide ziemlich bewährt, aber andere im Kernel verfügbare Chiffren sollten auch funktionieren).

      Den Schlüssel außerhalb des verschlüsselten Geräts aufzubewahren hat den Nachteil, dass man neben den verschlüsselten Daten selbst noch etwas anderes braucht - LUKS speichert den Schlüssel in seinen Headern, also ist er in sich abgeschlossen. Andererseits ist man an einen bestimmten Satz von Tools gebunden. Obwohl es nicht nachlässig entworfen wurde und in den meisten Installationen vorhanden ist,brauchendie Spezialwerkzeuge, um darauf zuzugreifen.

      Bei einer separaten Datei hingegen können Sie frei wählen, wie Sie den Schlüssel speichern. Sie können ihn sogar auf einem Wechseldatenträger speichern, ihn vor dem Anmelden einlegen und ihn entfernen, sobald das Dateisystem gemountet ist (Sie könnten wahrscheinlich sogar eine automatische Anmeldung an das Ereignis knüpfen, bei dem der Datenträger an den Computer angeschlossen wird). Natürlich sollte all dies gut durchdacht sein, da die Sicherheitsmaxime„Erfinden Sie nicht Ihre eigene Krypto“gilt (siehe z. B.dieser Beitrag auf Security SE) - was tatsächlich ein Argument für die Verwendung von LUKS sein könnte. Die Sicherung des Schlüssels ist offensichtlich einfach.

    2. Erstellen Sie eine leere Datei, die das Dateisystem enthält

      dd if=/dev/zero of=/path/to/backing_file.enc bs=1M count=X
      
    3. Erstellen Sie das verschlüsselte Gerät

      openssl enc -bf -d -in /path/to/key.enc 2>/dev/null \
          | cryptsetup create \
                  -c twofish-cbc-essiv:sha256 \
                  -s 256 \
                  -h plain \
                  encryptedfs /path/to/backing_file.enc
      

      openssl enc -bf -dfragt nach dem Passwort auf stdin und versucht, den Verschlüsselungsschlüssel zu entschlüsseln. cryptsetup create ... encryptedfs /path/to/backing_file.encerstelltes verschlüsseltes DM-Gerät, das encryptedfsvon der zuvor erstellten Datei unterstützt wird. Wichtige Option ist die, -cdie die Verschlüsselungs-Chiffre auswähltUndseine Funktionsweise

    4. Füllen Sie das Gerät mit Nullen – dadurch wird effektiv „zufälliger Müll“ in die Sicherungsdatei eingefügt und der mögliche Inhalt der Datei wird weniger offensichtlich (andernfalls könnten Sie feststellen, wo Dinge geschrieben wurden, indem Sie nach Blöcken suchen, die in Schritt 2 nicht auf Null gesetzt wurden).

      dd if=/dev/zero of=/dev/mapper/encryptedfs bs=1M
      
    5. Erstellen Sie ein Dateisystem

      mkfs.[favourite_filesystem] [tuning options] /dev/mapper/encryptedfs
      
    6. Fügen Sie eine entsprechende Zeile ein /etc/fstabin falls Sie alles selbst machen wollen, oder in/etc/crypttabwenn Sie eine Art Integration mit Systemtools wünschen.

  • für die automatische (Un-)Montage beim Login/Logout verweise ich auf diepam_mount-Dokumentation.

Antwort2

Mir fallen zwei wertvolle Möglichkeiten ein, ein solches System zu erreichen, ohne Ihr Zuhause zweimal zu verschlüsseln.

  • separate Home-Partition:Erstellen Sie eine separate Partition, die in gemountet wird /home. Jeder Benutzer verschlüsselt dann sein Home-Konto über encfs.
  • separate Home-Partition für jeden Benutzer:Jeder Benutzer erhält eine separate Partition für sein Home, die wiederum mit verschlüsselt ist dm-crypt. Diese Partition wird dann gemountet, /home/userwenn er sich anmeldet.

Natürlich zzgl. Verschlüsselung /;-)

In beiden Fällen können die Homes beim Login automatisch gemountet werden, wenn man für Login und Verschlüsselung das gleiche Passwort verwendet. (kann man zB konfigurieren /etc/security/pam_mount.conf.xml, dazu gibt es jede Menge Howtos) Während bei der ersten Methode die Ordnernamen der Benutzer nicht verschlüsselt werden, wird bei der zweiten Methode wirklich alles verschlüsselt. Ich würde also Methode zwei bevorzugen (und tatsächlich auch verwenden) ;-)

verwandte Informationen