Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

12.11.2011, 20:13

cryptsetup: GPG verschlüsselte Datei nachträglich als Schlüssel hizufügen

Guten Abend,

ich versuche derzeit einem vorhandenen LUKS-Volume eine neue Schlüsseldatei hinzuzufügen. Dabei soll es sich um eine GPG verschlüsselte Datei handeln. Ich scheitere jedoch daran, diese Datei so als Schlüssel hinzuzufügen, dass ich das Volume anschließend damit öffnen kann.

Das ursprüngliche LUKS-Volume habe ich folgendermaßen erzeugt:

Quellcode

1
# cryptsetup -c aes-xts-plain -s 512 luksFormat /dev/sda
Dieses lässt sich über die festgelegte Passphrase erfolgreich öffnen.

Für die Erstellung der neuen Schlüsseldatei habe ich mich an diesem Tutorial orientiert. Die zufällige Zeichenkette habe ich wie folgt erstellt:

Quellcode

1
# head -c 45 /dev/random | uuencode -m - | head -n 2 | tail -n 1 > key.decrypted

Die verschlüsselte GPG-Datei habe ich, nach Anlehnung an ein weiteres Tutorial, so erzeugt:

Quellcode

1
# gpg -c --cipher-algo TWOFISH --digest-algo SHA51n2 --s2k-mode 3 --s2k-digest-algo SHA512 key.decrypted

Um zu überprüfen, ob die verschlüsselte Datei auch enthält, was sie enthalten sollte, habe ich diese entschlüsselt. Die angezeigte Zeichenkette ist identisch mit der ursprünglich erzeugten Zeichenkette.

Quellcode

1
# gpg --decrypt key.gpg

Nach meinem Verständnis muss die entschlüsselte Schlüsseldatei (key.decrypted) dem LUKS-Volume als neue Schlüsseldatei hinzugefügt werden:

Quellcode

1
# cryptsetup luksAddKey /dev/sda key.decrypted

Danach sollte es möglich sein, das LUKS-Volume mit Hilfe des verschlüsselten GPG-Schlüssels zu öffnen:

Quellcode

1
# gpg --decrypt key.gpg | cryptsetup luksOpen /dev/sda luks

Dann kommt die Aufforderung zur Eingabe der GPG-Passphrase und der Vorgang wird mit diesen beiden Zeilen quittiert:

Quellcode

1
2
gpg: encrypted with 1 passphrase
No key available with this passphrase


Das ist nicht, was ich mir erhofft hatte ;)

Um auszuschließen, dass die Schlüsseldateien irgendwelche Fehler beinhalten, habe ich ein neues LUKS-Volume auf einer anderen Festplatte erstellt. Dieses neue Volume habe ich von Anfang an mit der GPG-Schlüsseldatei erzeugt.

Quellcode

1
# gpg --decrypt key.gpg | cryptsetup -c aes-xts-plain -s 512 luksFormat /dev/sdb

Dieses Volume kann ich erfolgreich mit der GPG-Schlüsseldatei öffnen:

Quellcode

1
# gpg --decrypt key.gpg | cryptsetup luksOpen /dev/sdb luks


Sämtliche Anleitungen und Tutorials, die ich zu cryptsetup, gpg etc. finden konnte, beziehen sich immer nur auf die zweite Variante. Ich bin fast gezwungen zu glauben, dass das hinzufügen der Klartextschlüsseldatei nicht funktioniert hat oder vielleicht gar nicht den gewünschten Effekt hat.

Meine Frage an euch daher, was habe ich falsch gemacht oder wie kann ich es erreichen, nachträglich die neue Schlüsseldatei hinzuzufügen?

2

12.11.2011, 20:41

Hi,

mit einem Key habe ich das noch nicht gemacht.
Aber ich habe den Verdacht, dass das, was du da machst eigentlich unsinnig ist, oder ich habe es einfach nicht verstanden.
Du hast einen GPG Key, der mit einem Passwort versehen ist.
Du willst als Passwort für dein LUKS den entschlüsselten Key verwenden.
Aber LUKS nimmt doch bereits einen zufällig erzeugten Key und versieht diesen mit deinem Passwort.
Wenn du anstelle dieses Passworts einen mit Passwort versehenen Key nimmst, dann hast du doppelt gemoppelt.
Denn LUKS ist mit einem guten Passwort bereits sicher.
Es wäre sinnvoller, entweder einen unverschlüsselten PGP private Key als Phrase für LUKS zu verwenden oder eben nur das Passwort.

Falls ich dein Vorhaben nicht verstanden habe oder einfach falsch liege, kläre mich bitte auf, denn ich habe mich erst seit kurzem mit LUKS beschäftigt.

Gruß
Foyaxe

PS: Warum es letztendlich nicht funktioniert, ist mir auch unklar, denn theoretisch sollte das schon klappen.
Kann es sein, dass der Key zu lang ist? Wobei selbst wenn er abgeschnitten wird, sollte er noch funktionieren.
Vielleicht spiele ich das gleiche Szenario mal bei mir durch.

3

13.11.2011, 11:57

Aber LUKS nimmt doch bereits einen zufällig erzeugten Key und versieht diesen mit deinem Passwort.

Die Aussage verstehe ich leider nicht bzw. verstehe ich nicht, was du mir damit gesagt werden soll.

Also, wieso ich das ganze versuche, beruht auf dem zuvor verlinkten Tutorial. Ich möchte, dass sich das LUKS-Volume mit Hilfe der verschlüsselten GPG-Datei öffnen lässt. Somit benötige ich eine Schlüsseldatei und ein Passwort, welches zum Öffnen erforderlich ist. Bedingt durch die Tatsache, dass ich das LUKS-Volume schon erzeugt habe, und sich darin bereits eine fertige Installation befindet, möchte ich die neue Schlüsseldatei per cryptsetup luksAddKey ... hinzufügen.
Und ich dachte mir, dass es dafür doch ausreichen sollte, wenn ich die entschlüsselte Datei als neuen Schlüssel hinzufüge. Denn nichts anderes kommt doch dabei heraus, wenn ich die GPG-Datei entschlüssele gpg --decrypt ... und damit | cryptsetup luksOpen ... füttere.

4

15.11.2011, 12:45

Ich habe es noch nicht getestet, aber vielleicht ist das die Erklärung dafür, dass ich die Klartextschlüsseldatei nicht per cryptsetup luksAddKey ... hinzufügen konnte bzw. der anschließende Versuch, das LUKS-Volume mittels gpg --decrypt .. | cryptsetup luksOpen ... zu öffnen, fehlschlug.

Ich zitiere aus der Quelle en.gentoo-wiki.com/wiki/DM-Crypt_with_LUKS :

Zitat

About keys
  • regular keyfile
    • It'll be passed to cryptsetup as a "--key-file" argument.
  • gpg protected keyfile
    • It'll be decrypted and piped into cryptsetup as if it were a passphrase, the reason is quite simple, after reading in Peter Gutmann's paper that data could theoretically be recovered from volatile memory(RAM), I refrain from storing encryption keys in memory unprotected.
    • Since the key will be piped into cryptsetup, the latter will stop reading from input as soon as it encounters a "\n"(newline/linefeed) character, therefore it will only work if you used the same method(or entered the key yourself as a passphrase) when you "luksFormatted" the partition.
    • It will fail if you first decrypted the gpg file and then used it as an argument of "--key-file" when you "luksFormatted" the partition because in this case the "\n" character is part of the key.
    • This command erases the "\n" character:
      cat key | tr -d '\n' > cleanKey