Ich verwende ein Ubuntu-basiertes System und habe Schwierigkeiten zu bestimmen, welche Chiffren und Chiffriermodi mir zur Verfügung stehen.
Die Cryptsetup-Manpage sagt:
"Eine Liste der verfügbaren Optionen finden Sie unter / proc / crypto. Möglicherweise müssen Sie zusätzliche Kernel-Kryptomodule laden, um weitere Optionen zu erhalten."
Mein / proc / crypto enthält sehr wenig. Wie finde ich heraus, welche zusätzlichen Kernel-Kryptomodule zum Laden verfügbar sind?
/lib/modules/*/kernel/crypto/
ist ein wahrscheinlicher Ort, um zu suchen, aber Module können sich überall im Dateisystem befinden./proc/crypto
ist großartig, listet aber nicht die gültigen Chiffrierzeichenfolgen auf; Dinge wieaes-xts-plain64
oderaes-cbc-essiv:sha256
. Eine gute Antwort würde diese Informationen liefern und zeigen, welche Module/lib/modules...
geladen werden müssen, um sie zu verwenden./proc/crypto
. Es macht keinen Sinn.Antworten:
Es gibt viele, viele Dokumente und Manpages zum Durchlesen, aber ein Dokument, das Sie besonders interessieren könnte, ist die LUKS On-Disk Format Specification (PDF).
Anhang B (der sich natürlich dem Ende nähert) sagt:
Anmerkung des Herausgebers: Das Obige wurde aus der Spezifikation kopiert. Nach dem Schreiben haben sich die URLs dieser Dokumente geändert:
quelle
Sie können die von Ihren Kerneln unterstützten Chiffren mit dem folgenden Befehl auflisten:
Mit
luks
dem folgenden Befehl können Sie die Verschlüsselungen und Hashes auflisten, die Sie verwenden können, sowie deren E / A-Vergleich nach for .Sie können bestimmte Chiffren mit dem folgenden Befehl vergleichen:
quelle
Der 5.1-Kernel, der zum Zeitpunkt des Schreibens aktuell ist, hat zwei verschiedene Formate: das For-Chiffrier-String, das "alte" Format und das "neue" Format. Alles in dieser Frage und anscheinend auch alle Dokumente befassen sich mit dem "alten" Format, daher werde ich es hier beschreiben. Dies dient nur zur Verschlüsselung. Wenn Sie Integrität mit dm-crypt verwenden, müssen Sie AEAD-Chiffren berücksichtigen, und es wird noch komplizierter.
Das vom Kernel analysierte Format ist " cipher [
:
keycount ]-
mode-
ivmode [:
ivopts ]". Beispiele:aes-xts-plain64
,blowfish-cbc-essiv:sha256
,aes:64-cbc-lmk
.chiffrieren die Chiffre zu verwenden, Beispiele sind
aes
,anubis
,twofish
,arc4
usw. Die Kernel dm-cryptTreiber nichteine Liste von Chiffren. Dies wird an die Linux Crypto API weitergeleitet, sodass jede geeignete vom Kernel unterstützte Verschlüsselung verwendet werden kann.keycount Optionale Leistung von zwei Schlüsseln zur Verwendung mit der Verschlüsselung. Dies ist standardmäßig 1 für alles außer dem
lmk
ivmode, wo es standardmäßig 64 ist. Dies gilt wirklich nur für LMK und andere Werte als 1 funktionieren mit anderen Modi nicht richtig.mode Der Blockverkettungsmodus, der mit der Chiffre verwendet werden soll. Beispiele hierfür sind
ecb
,cbc
,xts
. Abgesehen davon, dassecb
keine IV verwendet wird, leitet der md-crypt-Treiber dies an die Linux Crypto-API weiter und kann jeden vom Kernel unterstützten Verkettungsmodus verwenden.ivmode Der Algorithmus, der zum Generieren des Initialisierungsvektors (IV) für jeden Sektor verwendet wird. Bei der typischen Verschlüsselung mit symmetrischen Schlüsseln ist die IV im Gegensatz zu dm-crypt ein weiteres Datenbit, das beim Ver- oder Entschlüsseln zusammen mit dem Schlüssel an die Verschlüsselung übergeben wird. Für die gesamte Operation wird nur eine Infusion übergeben. Da dm-crypt jeden Sektor einzeln lesen und schreiben kann, wird nicht die gesamte Festplatte als einzelne Operation verschlüsselt. Stattdessen gibt es für jeden Sektor eine IV. Anstatt die IV als Daten zu übergeben, wird hier ein Algorithmus zum Erstellen der IVs angegeben. Dies ist nicht Teil der Linux Crypto API, da die IV-Generierung nicht über die Verschlüsselung erfolgt und die zulässigen ivmode- Werte im dm-crypt-Treiber definiert sind. Sie sind:
plain
,plain64
,plain64be
,benbi
Diese verwenden Sie einfach die Sektornummer, in verschiedenen Formaten, wie die IV. Gemeint für Blockmodi wie XTS, die Angriffen wie Wasserzeichen widerstehen sollen, wenn eine einfache und vorhersehbare IV verwendet wird.plain64
scheint am häufigsten empfohlen zu werden.null
IV ist immer Null. Zum Testen und zur Abwärtskompatibilität sollten Sie dies nicht verwenden.lmk
Kompatibel mit dem Loop-AES-Verschlüsselungsschema.tcw
Kompatibel mit TrueCrypt.essiv
Verwendet die mit einem Hash des Schlüssels verschlüsselte Sektornummer. Gemeint für Modi wie CBC, die bei Verwendung einer einfachen IV nicht wie verschiedene Angriffe resistent sindplain64
.ivopts Der mit
essiv
ivmode zu verwendende Hash , der für alle anderen Modi ignoriert wird.Als Sonderfall wird " Chiffre
-plain
" oder nur " Chiffre " als " Chiffre-cbc-plain
" interpretiert . Ein weiterer Sonderfall ist, dass imecb
Modus kein ivmode angegeben werden muss.Wie das zusammenhängt
/proc/crypto
In Bezug auf
/proc/crypto
sind nur die Verschlüsselung und der Modus relevant. dm-crypt erstellt eine Crypto-API-Spezifikation der Form " mode(
cipher)
" und fordert diese vom Kernel an. Dies ist, was man/proc/crypto
als dasname
für ein suchen sollteskcipher
. Beispiel:Das
type
ofskcipher
gibt an, dass es sich um eine symmetrische Schlüsselverschlüsselung handelt, was dm-crypt verwendet, und der Name vonxts(aes)
wird geschrieben,aes-xts
wenn es mit dm-crypt angegeben wird. Diekeysize
Felder geben auch an, welche Schlüsselgrößen mit dieser Chiffre verwendet werden können.Wenn dies von einem Modul stammt, wird möglicherweise der Modulname in der
module
Zeile angezeigt. Viele Chiffren (normalerweise solche in Software, die keinen hardwarespezifischen Code haben) werden jedoch als generische Verschlüsselung implementiert, die mit generischem Blockverkettungscode kombiniert wird, um die endgültige Verschlüsselung zu erstellen. Beispielsweise:In diesem Fall wird die Anubis-Verschlüsselung mit dem Code des Kernel-XTS-Blockverkettungsmodus kombiniert, um die endgültige Verschlüsselung zu erzeugen
xts(anbuis)
, der ein Modul von zugewiesen wurdekernel
. Um dies jedoch zur Verfügung zu haben, benötigen wir die generische Anubis-Chiffre, die aus demanubis
Modul stammt. Die meisten Chiffren haben einen Modulalias von "crypto-
Chiffre ", mit dem sie geladen werden können, z. B.modprobe crypto-anubis
würde ein Modul geladen, das die Anubis-Chiffre bereitstellt.Bei Verwendung des
cryptsetup benchmark
Befehls sind nur die Verschlüsselung und der Modus von Bedeutung, da dies alles ist, was als Benchmark verwendet wird. Wenn der Modus nicht angegeben ist, wird standardmäßig CBC verwendet. Der ivmode wird völlig ignoriert. So kann zum Benchmarkingaes
,aes-cbc
undaes-cbc-foobar
alle sind gleichwertig.quelle