Ist es möglich, eine Festplatte mit einer Schlüsseldatei statt mit einem Passwort zu verschlüsseln?

Ist es möglich, eine Festplatte mit einer Schlüsseldatei statt mit einem Passwort zu verschlüsseln?

Ich schaue mir die Festplattenverschlüsselung an. Die Lösung scheint dm-crypt mit LUKS unter Verwendung eines Passworts zu sein. Ich arbeite mit mehreren unabhängigen Festplatten, die zum Lesen in einen Festplattenpool eingebunden sind. In diesem Fall muss ich ein Passwort mehrmals eingeben.

Gibt es für mich eine Möglichkeit, die Festplatten mit einer Schlüsseldatei zu verschlüsseln, diese vielleicht auf einen USB-Stick zu packen und diesen bei Bedarf einfach anzuschließen??

Antwort1

Eine der besten Möglichkeiten hierfür ist die Verwendung einer Smartcard mit einem Kryptoschlüssel, um die Schlüssel für Ihre verschlüsselten Blockgeräte freizuschalten. Sie müssen die Passphrase (von den Tools „PIN“ genannt, aber eigentlich ist es eine Passphrase) nur einmal eingeben, danach wird sie zwischengespeichert. Dies hat den zusätzlichen Vorteil, dass die verschlüsselten Daten durch etwas geschützt werden, das Sie haben (die Smartcard selbst, aus der der private Schlüssel nicht extrahiert werden kann) und etwas, das Sie wissen (die Passphrase).

Formatieren Sie es /etc/crypttabwie folgt:

mapper-name /dev/disk/raw-device /var/lib/filename-containing-encrypted-key \
    luks,keyscript=/lib/cryptsetup/scripts/decrypt_opensc

Unter Debian und Derivaten erkennen die Initramfs-Tools das Keyscript und kopieren alle notwendigen Tools und Daemons für den Zugriff auf die Smartcard automatisch in das Initramfs.

Informationen zum Einrichten der Smartcard und zum Erstellen (und Verschlüsseln) der Schlüssel finden Sie in /usr/share/doc/cryptsetup/README.opensc.gz.

Sie können einYubikey 4oderYubikey NEOunter anderem zu diesem Zweck.

Hinweise zur Implementierung: Diese Funktion hat Ecken und Kanten und funktioniert anscheinend nicht sofort, also kann Ihre Erfahrung abweichen. Als ich sie das letzte Mal erfolgreich implementiert habe, musste ich die folgenden Hacks hinzufügen:

  • Deaktivieren Sie es systemd, weil es katastrophal versucht, den gesamten Prozess der Einrichtung verschlüsselter Geräte zu übernehmen, /etc/crypttababer nichts davon weiß, keyscriptwas zu einem großen FEHLER führt. Glücklicherweise können Sie sich in Debian immer noch dagegen entscheiden systemd.
  • Installieren Sie dieses Fixer-Upper-Skript, /etc/initramfs-tools/hooks/yubipinda die integrierte Funktion nicht genügend Unterstützung installiert hat, um den Yubikey vom Initramfs aus nutzbar zu machen. Möglicherweise müssen Sie dies anpassen.

    #!/bin/sh
    
    PREREQ=cryptroot
    
    prereqs()
    {
        echo "$PREREQ"
    }
    
    case $1 in
    prereqs)
        prereqs
        exit 0
        ;;
    esac
    
    # /scripts/local-top/cryptopensc calls pcscd with the wrong path
    ln -s ../usr/sbin/pcscd ${DESTDIR}/sbin/pcscd
    mkdir -p "${DESTDIR}/usr/lib/x86_64-linux-gnu"
    # opensc-tool wants this dynamically, copy_exec doesn't know that
    cp -pL /usr/lib/x86_64-linux-gnu/libpcsclite.so.1 "${DESTDIR}/usr/lib/x86_64-linux-gnu/libpcsclite.so.1"
    mkdir -p "${DESTDIR}/lib/x86_64-linux-gnu"
    # without this, pcscd aborts with a pthread_cancel error
    cp -pL /lib/x86_64-linux-gnu/libgcc_s.so.1 "${DESTDIR}/lib/x86_64-linux-gnu/libgcc_s.so.1"
    # this gets copied as a dangling symlink, fix it
    rm "${DESTDIR}/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist"
    cp -pL /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist "${DESTDIR}/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist"
    # pcscd needs this to open the reader once it has found it
    cp -pL /lib/x86_64-linux-gnu/libusb-1.0.so.0 "${DESTDIR}/lib/x86_64-linux-gnu/libusb-1.0.so.0"
    
  • Installieren Sie ein weiteres Skript zum /etc/initramfs-tools/scripts/local-bottom/killpcscdBereinigen:

    #!/bin/sh
    
    set -e
    
    PREREQ=cryptopensc
    
    prereqs()
    {
        echo "$PREREQ"
    }
    
    case $1 in
        prereqs)
            prereqs
            exit 0
            ;;
    esac
    
    # because cryptopensc does not do it properly
    killall pcscd
    

Antwort2

Es ist möglich, das Luks-Passwort einfach in einer Datei zu speichern.

Ich verwende dies auf meinem Heimcomputer. Das Root-Dateisystem befindet sich auf einem regulären Luks-Volume, das ich beim Booten mit meiner Passphrase entsperre. Ein zusätzliches Laufwerk enthält ein Luks-Volume mit einem generierten Passwort.

Dieses zusätzliche Volume wird durch eine Kennwortdatei entsperrt, die sich auf dem verschlüsselten Root-Dateisystem befindet. Es wird beim Booten automatisch entsperrt, wenn das Root-Dateisystem entsperrt ist.

Meines /etc/crypttabsieht so aus:

crypt-root UUID=c5a2cf25-0aae-457e-874f-fca7ea3d5742 none luks
crypt-data UUID=96d79323-246d-49e0-9149-ec3a4cfc1c1e /etc/crypt-data.key luks

Das dritte Feld ist die Schlüsseldatei nonefür das Root-Dateisystem, jedoch /etc/crypt-data.keyfür das Datendateisystem. /etc/crypt-data.keyEs enthält das Luks-Passwort:

Tm90IHJlYWxseSBteSBwYXNzd29yZC4K

Beachten Sie, dass ein Zeilenumbruch oder ein anderes Leerzeichen als Teil des Passworts verwendet wird! Achten Sie darauf, diese Datei ohne abschließenden Zeilenumbruch zu generieren. Stellen Sie außerdem sicher, dass sie über strenge Berechtigungen verfügt:

-rw------- 1 root root 59 Sep 14 23:57 /etc/crypt-data.key

Sie sollten diesen Ansatz für mehrere Datenträger duplizieren können (entweder mit unterschiedlichen Passwörtern oder einem gemeinsamen Passwort, ganz nach Ihrer Wahl).

verwandte Informationen