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?
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).
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
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.
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:
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).
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.
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/crypttab
sieht so aus:Das dritte Feld ist die Schlüsseldatei
none
für das Root-Dateisystem, jedoch/etc/crypt-data.key
für das Datendateisystem./etc/crypt-data.key
enthält das luks Passwort: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:
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).
quelle
/etc/crypttab
. Ich habe einen kleinen zusätzlichen Text hinzugefügt, um dies zu verdeutlichen.