Ist es möglich, eine Festplatte mit einer Schlüsseldatei anstelle eines Kennworts zu verschlüsseln?

14

Untersuchung der Festplattenverschlüsselung. die go to-lösung scheint dm-crypt mit lucks unter verwendung eines passwortes 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 eine Möglichkeit für mich, die Festplatten mit einer Schlüsseldatei zu verschlüsseln, sie möglicherweise auf ein USB-Laufwerk zu legen und sie bei Bedarf einfach anzuschließen?

Nithin
quelle

Antworten:

11

Eine der besten Möglichkeiten, dies zu tun, besteht darin, eine Smartcard mit einem Kryptoschlüssel zu verwenden, um die Schlüssel für Ihre verschlüsselten Blockgeräte zu entsperren. Sie müssen die Passphrase nur einmal eingeben (von den Tools als "PIN" bezeichnet, es handelt sich jedoch tatsächlich um eine Passphrase). 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 durch etwas, das Sie kennen (die Passphrase).

Formatieren Sie Ihre /etc/crypttabwie folgt:

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

In Debian und Derivaten werden die initramfs-Tools das Keyscript bemerken und alle notwendigen Tools und Daemons für den automatischen Zugriff auf die Smartcard auf das initramfs kopieren.

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

Zu diesem Zweck können Sie unter anderem einen Yubikey 4 oder Yubikey NEO verwenden.

Implementierungshinweise : Diese Funktion hat raue Kanten und funktioniert anscheinend nicht ohne weiteres, also YMMV. Als ich es das letzte Mal erfolgreich geschafft habe, musste ich die folgenden Hacks hinzufügen:

  • Deaktivieren, systemdweil es auf katastrophale Weise versucht, den gesamten Prozess der Einrichtung verschlüsselter Geräte zu übernehmen, /etc/crypttababer nichts darüber weiß, keyscriptwas zu einem großen FEHLER führt. Glücklicherweise können Sie sich in Debian immer noch abmelden systemd.
  • Installieren Sie dieses Fixer-Upper-Skript, /etc/initramfs-tools/hooks/yubipinda die integrierte Funktion nicht genügend Unterstützung bietet, um den Yubikey von initramfs aus zu verwenden. 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 anderes Skript, /etc/initramfs-tools/scripts/local-bottom/killpcscdum aufzuräumen:

    #!/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
    
Celada
quelle
1
Sehr guter Anreiz, Smartcards und Kudos zu verwenden, um dies zu erreichen, aber ich würde sagen, dass eine verteilungsspezifische Methode, die das Ändern von Init-System- und Drittanbieter-Hack-Skripten beinhaltet, die in Systemverzeichnisse mit unlesbaren Pfaden verschoben werden, keine Antwort darauf sein kann, wie Passkey-Dateien Frage zu verwenden. Betont das unglaubliche Durcheinander, das diese Software ist.
dbanet
@dbanet, ich stimme voll und ganz zu und hoffe, dass jemand anderes kommt und eine Antwort hinzufügt, die beschreibt, wie dies auf eine andere, einfachere Art und Weise getan werden kann. Dann kann das OP seinen Favoriten auswählen.
Celada
dbanet und @Celada, genau meine Gedanken. Das ist viel zu kompliziert und selbst wenn ich es schaffe, ist es proprietär, was bedeutet, dass ein anderer Anbieter eine andere Methode haben würde. :(
Nithin
3

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

Ich benutze dies auf meinem Heimcomputer. Das Root-Dateisystem lebt von einem regulären luks-Volume, das ich mit meiner Passphrase beim Booten entsperre. Ein zusätzliches Laufwerk enthält ein luks-Volume mit einem generierten Kennwort.

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.

Mein /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.keyenthält das luks Passwort:

Tm90IHJlYWxseSBteSBwYXNzd29yZC4K

Beachten Sie, dass ein Zeilenvorschub oder ein anderes Leerzeichen als Teil des Passworts verwendet wird! Achten Sie darauf, diese Datei ohne Zeilenumbruch zu generieren. Stellen Sie außerdem sicher, dass es strenge Berechtigungen hat:

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

Sie sollten in der Lage sein, diesen Ansatz für mehrere Volumes zu duplizieren (entweder mit unterschiedlichen Passwörtern oder einem gemeinsamen Passwort Ihrer Wahl).

marcelm
quelle
Können Sie auch angeben, wie LUKS für die Verwendung der Schlüsseldatei anstelle des Kennworts konfiguriert werden soll?
Nithin
@Nithin Die Schlüsseldatei ist das dritte Feld in meinem Beispiel /etc/crypttab. Ich habe einen kleinen zusätzlichen Text hinzugefügt, um dies zu verdeutlichen.
März