staging.inyokaproject.org

LUKS

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion der Artikel LUKS, LUKS/Schlüsselableitung.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7795

lionlizard schrieb:

Im Abschnitt Sicherheitsschluessel anlegen wird der Befehl

cryptsetup luksAddKey <Gerät> 

vorgeschlagen. Dieser Befehl funktioniert aber nicht, weil eine existierende Passphrase eingegeben werden muss, um einen weiteren Schlüssel hinzuzufügen. Diese existiert aber nicht, weil der Schlüssel ja abgeleitet wurde - darum will man ja gerade eine Passphrase hinzufügen.

Den abgeleiteten Key bekommst du mit /lib/cryptsetup/scripts/decrypt_derived <Name_des_Ursprungsgeräts> so wie es auch auf dem Artikel der Schlüsselableitung steht und so wie du das mutmasslich ja auch überhaupt erst erstellt hast. Die Variante mit --master-key-file ist eigentlich nur zu gebrauchen wenn man sich den LUKS Header zerschossen, das LUKS Gerät aber noch offen ist. Das kann auch komplett in die Hose gehen... ein Fehler in dieser Master-Key rauspicken und zu Binär-Umwandlung und du hast einen defekten/falschen LUKS-Header...

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Wenn ich den abgeleiteten Key benutzen möchte, so wird dieser zwar anstandslos akzeptiert, aber ich werde nicht aufgefordert, eine Passphrase einzugeben. Wenn ich den Masterkey wie beschrieben übergebe, schon:

root@lubu-16:~# /lib/cryptsetup/scripts/decrypt_derived lubu-16.04 | cryptsetup luksOpen /dev/sdb10 crypt
root@lubu-16:~# /lib/cryptsetup/scripts/decrypt_derived lubu-16.04 | cryptsetup luksAddKey /dev/sdb10 
root@lubu-16:~# cryptsetup luksAddKey /dev/sdb10    --master-key-file <(dmsetup table --showkey crypt | awk '{print$5}' | xxd -r -p)
Geben Sie die neue Passphrase für das Schlüsselfach ein: 
Passphrase wiederholen: 
root@lubu-16:~# 

[Edit:]
frostschutz schrieb:

Die Variante mit --master-key-file ist eigentlich nur zu gebrauchen wenn man sich den LUKS Header zerschossen, das LUKS Gerät aber noch offen ist. Das kann auch komplett in die Hose gehen... ein Fehler in dieser Master-Key rauspicken und zu Binär-Umwandlung und du hast einen defekten/falschen LUKS-Header...

Nöö. das dmsetup table --showkey zeigt nur eine Liste mit den derzeit geöffneten verschlüsselten Laufwerken, die eben an 5. Stelle den Masterkey enthält. Der wird ja nirgendwohin geschrieben, sondern nur ins binärformat gewandelt und dann übergeben. Wenn da ein Fehler drin ist, wird das schlicht nicht akzeptiert.

root@lubu-16:~# cryptsetup luksAddKey /dev/sdb10    --master-key-file <(dmsetup table --showkey crypt | awk '{print$6}' | xxd -r -p)
Kann 64 Bytes aus der Schlüsseldatei »/dev/fd/63« nicht lesen.
root@lubu-16:~# cryptsetup luksAddKey /dev/sdb10    --master-key-file <(dmsetup table --showkey crypt | awk '{print$3}' | xxd -r -p)
Kann 64 Bytes aus der Schlüsseldatei »/dev/fd/63« nicht lesen.
root@lubu-16:~# cryptsetup luksAddKey /dev/sdb10    --master-key-file <(dmsetup table --showkey crypt | awk '{print$5}' | xxd -r -p)
Geben Sie die neue Passphrase für das Schlüsselfach ein: Fehler beim Lesen der Passphrase vom Terminal.
root@lubu-16:~# ^C

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Es funktioniert unter 16.04 jedenfalls, wenn man den Sicherheitsschlüssel zuerst anlegt. Das hatte sich bei mir beim Anlegen der LUKS-Geräte sowieso so ergeben. Wenn dem so ist, könnte man das ja noch ergänzen.

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Benno-007 schrieb:

Es funktioniert unter 16.04 jedenfalls, wenn man den Sicherheitsschlüssel zuerst anlegt. Das hatte sich bei mir beim Anlegen der LUKS-Geräte sowieso so ergeben. Wenn dem so ist, könnte man das ja noch ergänzen.

Was funktioniert?

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Das funktioniert doch:

lionlizard schrieb:

Im Abschnitt Sicherheitsschluessel anlegen wird der Befehl

cryptsetup luksAddKey <Gerät> 

vorgeschlagen. Dieser Befehl funktioniert aber nicht, weil eine existierende Passphrase eingegeben werden muss, um einen weiteren Schlüssel hinzuzufügen. Diese existiert aber nicht, weil der Schlüssel ja abgeleitet wurde - darum will man ja gerade eine Passphrase hinzufügen.

Funktioniert, wenn man den Sicherheitsschlüssel ZUVOR anlegt, bevor man das Script ableitet - dann natürlich die Variante aus dem Wiki OHNE erneute LUKS-Formatierung. Also wenn dem bei dir so ist, ist diese Variante dann im Wiki so zu dokumentieren, dass sie nicht mit Sicherheitsschlüssel funktioniert, weil man diesen ZUERST anlegen und danach Key ableiten muss, ohne erneut mit LUKS zu formatieren.

Ansonsten, ohne Sicherheitsschlüssel, funktioniert theoretisch auch LUKS-Format, praktisch aber laut der anderen Wikidiskussion mit deiner Fehlermeldung auch nicht. Ist das so korrekt zusammengefasst? Soll das bedeuten, dass du diesen Abschnitt quasi als falsch bestätigt haben und entweder aus dem Wiki gestrichen haben oder eine Problemlösung dafür suchen bzw. gefunden haben willst?

Nach längerer Suche bin ich darauf gestoßen, dass man, sofern das Laufwerk derzeit entschlüsselt ist, den Masterkey zur Authentifizierung benutzen kann. Der Befehl würde dann lauten:

 cryptsetup luksAddKey <Gerät> --master-key-file <(dmsetup table --showkey /dev/mapper/<MAP> | awk '{print$5}' | xxd -r -p) 

wobei <MAP> dem Namen entspricht, unter dem das Laufwerk geöffnet wurde und nur in /dev/mapper zu finden ist, während <Gerät> dem Name /dev/SDXY entspricht.

Ok, das wäre also dein Lösungsvorschlag für diese Variante? Ich würde frostschutz Warnung so einordnen, dass die zweite Variante also nicht solide ist, aber mit Warnung unter Problembehebungen könnte? Und meine verwendete (erst LUKS-Format mit Sicherheitsaktualisierungen, dann erst Key ableiten) bliebe dann wie bisher der Standard (war er zumindest für mich, das Wiki lies das offen) und die umgekehrte Variante würde praktisch in Problembehebungen ausgelagert, mit Warnung und deiner Lösung?

Es wäre dann ja nicht mehr empfehlenswert, aber eine nicht zuverlässige, gefährliche Lösung dafür, wenn man den Sicherheitsschlüssel ZUVOR vergessen hat und das nachholen möchte. I Was meinen andere?

Wobei ja deine Lösung offenbar zwar das Ableiten ohne vorhandenen Sicherheitskey erst ermöglicht - aber auch (noch) keine Lösung dafür hat, einen nachträglich anlegen zu können? Dann ist die Frage, wenn das so bleibt, welche Berechtigung im Wiki das Ableiten ohne ZUVOR Sicherheitsschlüssel anzulegen überhaupt noch hat. Praktisch nur für den Fall, das man GENAU weiß, dass man zuvor auf den Sicherheitsschlüssel verzichten will und danach muss - also wenn man generell keinen haben will.

Zwar unsicher im Fehlerfall, aber unter Sicherheitsgesichtspunkten (Knackbarkeit/ Berechtigungen durch PW) durchaus eine zumindest erwähnenswerte Variante, deren Pferdefuß jedoch benannt werden sollte. Eine Lösung hättest du ja dafür, dass die Variante überhaupt noch funktioniert.

Grüße, Benno

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Da es ja 2 eigene Artikel sind, möchte ich auch jeweils nur einen Artikel besprechen. Ansonsten wird mir das ganze zu komplex, ich bitte das zu entschuldigen.

In diesem Artikel wird darauf hingewiesen, dass es sinnvoll ist, einen Sicherheitsschlüssel anzulegen. Dem stimme ich zu. Der Befehl, der dafür angegeben wird, funktioniert aber nicht, denn es wird nach einer aktuellen Passphrase gefragt - die aber nicht existiert, sonst ergäbe sich auch nicht die Notwendigkeit eines Sicherheitsschlüssels. Wenn ich - in Anlehnung ans Öffnen bzw. Formatieren - die Version versuche

/lib/cryptsetup/scripts/decrypt_derived <Name_des_Ursprungsgeräts> | cryptsetup luksAddKey <Gerät> 

so erhalte ich zwar keine Fehlermeldung, werde aber nicht zur Eingabe eines Passwortes aufgefordert, und es wird auch kein neuer Keyslot belegt.

Wenn ich mir bereits einen temporären Schlüssel angelegt habe, so kann ich diesen benutzen, um einen Sicherheitsschlüssel anzulegen. Dann lautet der Befehl aber

cryptsetup luksAddKey <Gerät> --key-file <temporäre_Schlüsseldatei>

Wird die temporäre Schlüsseldatei nicht mit übergeben, erscheint wieder die Frage nach einer aktuellen Passphrase.

Insofern denke ich, dass der Abschnitt geändert werden sollte.

Die Bedenken von frostschutz zur Alternative

 cryptsetup luksAddKey <Gerät> --master-key-file <(dmsetup table --showkey /dev/mapper/<MAP> | awk '{print$5}' | xxd -r -p)  

ich nicht nachvollziehen, da ja nur der Masterkey des geöffneten Laufwerks ermittelt und als Passphrase übergeben wird. Es wird auf keinen Header schreibend zugegriffen. Schlimmstenfalls bleibt luksAddKey-Befehl wirkungslos (was ich mit meinem Beispiel im vorigen Beitrag verdeutlichen wollte, - wo ich den Parameter von awk '{print$x}' verändert habe.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7795

Ja, okay. Nimm was dich glücklich macht.

Wenn ich den abgeleiteten Key benutzen möchte, so wird dieser zwar anstandslos akzeptiert, aber ich werde nicht aufgefordert, eine Passphrase einzugeben.

Du hast die <(befehl) Syntax doch selber schon ausgegraben, warum verwendest du sie nicht?

# Hinzufügen der Schlüsselableitung bei einem LUKS Gerät mit normaler Passphrase:
cryptsetup luksAddKey <Gerät> <(/lib/cryptsetup/scripts/decrypt_derived <Name_des_Ursprungsgeräts>)
# Hinzufügen einer normalen Passphrase bei einem LUKS Gerät mit Schlüsselableitung:
cryptsetup luksAddKey <Gerät> --key-file <(/lib/cryptsetup/scripts/decrypt_derived <Name_des_Ursprungsgeräts>

oder so ähnlich.

Wenn das jemand testet dann kann man das auch so auf die Wikiseite schreiben und den Quatsch mit dem ramfs rauswerfen.

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Ich kann leider im Moment außer meinen Hinweisen nichts weiter beitragen, weil ich auf Grund meiner Medikamente derzeit nur eingeschränkt konzentrationsfähig bin. Es wäre schön, wenn sich jemand fände, die Fehler im Wiki zu beseitigen.

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Okay, wenn sich niemand findet, würde mir dann bitte jemand den Artikel in die Baustelle schieben? Das muss dann anschließende zumindest gut durchgesehen werden.

crazy-biscuit Team-Icon

Supporter
Avatar von crazy-biscuit

Anmeldungsdatum:
6. November 2010

Beiträge: 4847

Es gibt im Netz verteilt so ein paar schöne Anleitungen, wie man seinen USB Stick mit LVM verschlüsselt und optional auch, wie man diesen automatisch mountet und entschlüsselt mit udev + keyfile das im verschlüsselten root liegt. Wollen wir sowas vielleicht auch aufnehmen? Oder wäre das ein eigener Artikel? Ich fände das super, wenn es eine einfach, detaillierte Anleitung gäbe. Natürlich würde ich daran mitwirken. 😉

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Also zweiteres scheint mir ein ganz anderes Anliegen als ersteres, ansonsten macht das nur mit einem ZWEITEN USB-Stick als Key Sinn. Ersteres gibt es schon im Wiki, es ist lediglich die Kombination aus Installation auf externen Speichermedien und System verschlüsseln, was recht einfach, beim exakten stupiden Abarbeiten sogar trivial ist.

Wobei man gerade bei Sticks am besten auf Swap und gesplittetes Home verzichtet - und damit am besten auch gleich auf das recht komplexe LVM.

Und damit wird es trivial: Normale Installation + Bootloader auf Stick sdX + extra /boot + direkt die zweite Partition statt mit ext4 als Verschlüsselungslaufwerk formatieren - und das Ergebnis in der Partitionsliste dann erst mit ext4.

crazy-biscuit Team-Icon

Supporter
Avatar von crazy-biscuit

Anmeldungsdatum:
6. November 2010

Beiträge: 4847

Mhh nee ich meine keine Installation auf dem Stick, sondern lediglich eine Verschlüsselung eines mobilen Datenträgers. Also auch kein USB-Stick als Schlüssel oder sowas.

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Das steht doch in LUKS, einfach Option luksFormat.

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

crazy-biscuit schrieb:

Mhh nee ich meine keine Installation auf dem Stick, sondern lediglich eine Verschlüsselung eines mobilen Datenträgers.

Das hat ja dann tomtomtoms Lieblingszusammenhang¹ mit Schlüsselableitung.



¹) Nichts.

crazy-biscuit Team-Icon

Supporter
Avatar von crazy-biscuit

Anmeldungsdatum:
6. November 2010

Beiträge: 4847

Mhh stimmt. Damit ist der LUKS-Part eigentlich abgedeckt. Automatisches entschlüsseln und mounten in diesem Kontext fände in noch super.

EDIT: Derived Key funktioniert nur wenn man sich bei der Anmeldung automatisch einloggen möchte mit crypttab und fstab. Das mit dem automatischen mounten beim anstecken ist etwas komplexer. Lediglich einen USB Stick erstellen und verschlüsseln ist kein Thema, das nutze ich schon lange so.