Wie kann ich die Hash-Spezifikation und die Iterationszeit eines vorhandenen dm-crypt LUKS-Geräts ändern ?
Natürlich kann ich die Optionen übergeben, wenn ich ein neues Gerät erstelle , zum Beispiel so etwas:
sudo cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 --iter-time 2100 --hash sha512 /dev/loop0
Aber , wenn das Gerät bereits vorhanden ist , wie kann ich zum Beispiel ändern sha256
zu sha1
oder die Iteration der Zeit ändern , ohne „ zerstören“ , um das Gerät. (Natürlich müssten Sie Ihr Passwort erneut eingeben, da ein neuer Hash generiert wird.)
hash-spec
ist oder welcheiter-time
Einstellungen spezifischer sind.cryptsetup-reencrypt
. Die Aufzählungsliste klingt wie das, was Sie mir antun wollen: "Ändern Sie beliebige Verschlüsselungsparameter".Antworten:
Jeder Schlüsselschlitz hat seine eigene Iterationszeit. Wenn Sie die Anzahl der Iterationen ändern möchten, erstellen Sie einen neuen Slot mit derselben Passphrase und einer neuen Anzahl von Iterationen und entfernen Sie den alten Slot.
Ich denke, der Hash-Algorithmus kann nicht pro Slot konfiguriert werden, er ist immer PBKDF2 mit einer global ausgewählten Hash-Funktion.
Neuere Versionen von cryptsetup enthalten ein Tool
cryptsetup-reencrypt
, mit dem der Hauptverschlüsselungsschlüssel und alle Parameter geändert werden können. Es wird jedoch als experimentell angesehen (und das gesamte Gerät wird neu verschlüsselt, obwohl dies nicht erforderlich wäre, um lediglich die kennwortbasierte Schlüsselableitungsfunktion zu ändern.) .quelle
Wenn Sie nur den Hash ändern möchten, müssen Sie ihn nicht erneut verschlüsseln. Sie müssen jedoch noch einen neuen LUKS-Header erstellen. Gleiche Chiffre, gleicher Hauptschlüssel, gleicher Offset, unterschiedlicher Hash.
Sie können dies selbst versuchen. Zuerst richten wir ein LUKS-Gerät mit Standardeinstellungen und miesen Iterungszahlen ein:
Zu diesem Zeitpunkt haben wir ein LUKS-Gerät mit den verschlüsselten Daten "Hello World I am LUKS". Insbesondere sieht es so aus:
Wie Sie sehen können, zählt miese Iteration, Standard-sha1-Hashes.
Um dies auf hohe Iterationszahlen und sha512-Hash umzustellen, ohne erneut zu verschlüsseln, benötigen wir einen neuen LUKS-Header, der denselben Hauptschlüssel, dieselbe Verschlüsselung und denselben Nutzlastoffset verwendet.
Erhalten des Hauptschlüssels: (Warnung: In diesem Beispiel wird Ihr Hauptschlüssel an eine weltweit lesbare Datei, an die Prozessliste sowie an den Verlauf Ihrer Shell weitergegeben. Um dies sicher zu tun, tun Sie dies im RAM / auf einer Live-CD / was auch immer.)
Erstellen Sie den neuen LUKS-Header mit diesem Schlüssel: (Fehler ist möglich - sichern Sie zuerst Ihren alten LUKS-Header!)
Und so sieht es aus:
Jetzt haben wir es. Gleiche Chiffre, Offset [wenn sie sich unterscheiden, müssen Sie sie zusammen mit dem luksFormat angeben], neuer Hash und die richtige Anzahl von Iterationen.
Aber ist der Inhalt noch da?
Los geht's.
quelle
cryptsetup-reencrypt --keep-key --hash sha512
macht das gleiche.