Warum sind die Ergebnisse des Truecrypt- und Cryptsetup-Benchmarking (LUKS) so unterschiedlich?

10

Ich möchte einen Teil meiner Festplatte verschlüsseln. Aber vorher wollte ich die verschiedenen verfügbaren Algorithmen vergleichen und mich fragen, ob ich aes-xts-256oder wählen sollte aes-xts-512.

Hinweis: Ich habe keine aesHardwarebeschleunigung. Die Benchmarks wurden ohne große Änderung mehrmals wiederholt. Ich möchte klarstellen, dass diese Benchmarks nur auf meinem Computer gültig sind (Debian, Core 2 Duo). Dies ist kein vollständiger LUKS-TrueCrypt-Vergleich.

TL; DR: Weiter mit Teil 4


1- Cryptsetup

Also habe ich heruntergeladen cryptsetup v1.6.0, um den neuen cryptsetup benchmarkBefehl zu nutzen.

Befehl

$cryptsetup benchmark

Ergebnisse

 #  Algorithm | Key | Encryption |  Decryption
     aes-cbc   128b   128,2 MiB/s   157,2 MiB/s
 serpent-cbc   128b    49,6 MiB/s    57,7 MiB/s
 twofish-cbc   128b   138,0 MiB/s   183,8 MiB/s
     aes-cbc   256b    97,5 MiB/s   121,9 MiB/s
 serpent-cbc   256b    51,8 MiB/s    57,7 MiB/s
 twofish-cbc   256b   139,0 MiB/s   183,8 MiB/s
     aes-xts   256b   156,4 MiB/s   157,8 MiB/s
 serpent-xts   256b    55,7 MiB/s    58,7 MiB/s
 twofish-xts   256b   161,5 MiB/s   165,9 MiB/s
     aes-xts   512b   120,5 MiB/s   120,9 MiB/s
 serpent-xts   512b    55,7 MiB/s    58,5 MiB/s
 twofish-xts   512b   161,5 MiB/s   165,3 MiB/s

Gedanken

  • Im cbcModus serpentist überraschend schnell beim Entschlüsseln!
  • Im xtsModus serpentist eindeutig der schnellste.
  • Die Schlüsselgröße scheint fast keinen merklichen Einfluss darauf zu haben .serpent twofish
  • aes verhält sich nicht gut, wenn die Schlüsselgröße erhöht wird.

Updates von VM


2- TrueCrypt

Ich war wirklich überrascht, da aesbekannt ist, dass es das schnellste ist (auch ohne Hardwarebeschleunigung). Also habe ich heruntergeladen TrueCrypt, um diese Ergebnisse zu überprüfen. TrueCryptVerwendet den xtsModus standardmäßig, daher gehe ich davon aus, dass er auch in seinen Benchmarks verwendet wird.

Methode

  1. Tools> Benchmark
  2. Wählen Sie eine beliebige Puffergröße (hier 5 MB)
  3. Klicken Sie auf "Benchmark"

Ergebnisse

 #  Algorithm | Encryption |  Decryption
         AES     106 MB/s      107 MB/s
     Twofish      78 MB/s       76 MB/s
     Serpent      41 MB/s       42 MB/s

Gedanken

Diese Ergebnisse entsprechen viel mehr den Erwartungen, stimmen jedoch nicht gut mit cryptsetupden Ergebnissen überein .


3- Allgemeine Gedanken

  • cryptsetuplieferte eine bessere allgemeine Leistung als TrueCryptin diesem Fall. Dies könnte folgendermaßen erklärt werden:
    • cryptsetupwurde auf meinem System mit Compiler-Optimierungsroutinen TrueCryptkompiliert, während es bereits generisch kompiliert wurde;
    • AFAIK cryptsetupverwendet Kernelspace-Kryptomodule, während Benutzerraum-Kryptoroutinen verwendet werden TrueCrypt.
  • Ich kann jedoch nicht erklären, warum serpent-xts-512dies der richtige Weg zu sein scheint, cryptsetupobwohl es aes-xtsdie einzige Chiffre ist, die es wert ist, verwendet zu werden.

4- Frage

cryptsetupund TrueCryptgeben völlig unterschiedliche qualitative (relative Verschlüsselungsgeschwindigkeit) und quantitative (tatsächliche Geschwindigkeit jeder Verschlüsselung) Ergebnisse in In-RAM-Benchmarks.

  • Ist dir das schon aufgefallen?
  • Sollte ich der Geschwindigkeit vertrauen cryptsetupund sie verwenden serpent-xts-512?

quelle

Antworten:

5

Sie haben keine AES-Hardwarebeschleunigung und haben die Tests in einer virtuellen Maschine ausgeführt. Es ist unwahrscheinlich, dass Ihre Testergebnisse die tatsächlichen Ergebnisse widerspiegeln, da die Verschlüsselungs- / Entschlüsselungsgeschwindigkeiten stark von der aktuellen CPU- und Festplattenlast abhängen. Am besten erstellen Sie zwei unabhängige Truecrypt-Partitionen und führen manuelle Benchmarks durch, indem Sie einige große Dateien auf jede Partition kopieren.

LUKS und Truecrypt haben auch leicht unterschiedliche Implementierungen, und wie Sie sagten, "diese Benchmarks sind nur auf meinem Computer gültig". Sie müssen beide auf Ihrem System mit tatsächlichen Dateiübertragungen testen, um die tatsächliche Leistung zu ermitteln.


Was die Unterschiede betrifft, verwendet Truecrypt FUSE , um ein Userspace-Dateisystem zu implementieren, während LUKS normalerweise im eigentlichen Kernel ausgeführt wird. Aus diesem Grund ist es wahrscheinlich, dass Sie in einem Linux-System mit LUKS / dm-crypt / cryptsetup einen besseren Durchsatz erzielen als mit Truecrypt. Welche Option Sie wählen, hängt jedoch von den Anforderungen Ihrer Verschlüsselung ab (z. B. können Truecrypt-Partitionen zwischen den Vorgängen übertragen werden Systeme, falls erforderlich).

Durchbruch
quelle
Seltsam: Ich habe es direkt in meinem System versucht und im Grunde steht alles außer Ausnahmen, serpentdie viel langsamer wurden. Damit ist das Problem mit der Schlange gelöst. Twofishist immer noch schneller als aesin cryptsetup und langsamer in TrueCrypt. Und ich habe überhaupt keine aesHardwarebeschleunigung ... das ist keine VM-Sache ...
Ich habe die Ergebnisse aktualisiert.
@Gael cryptsetupist schneller als TrueCryptbei Verwendung derselben Verschlüsselungsalgorithmen, da es TrueCryptunter FUSE(User-Space-Dateisystem) ausgeführt wird, während cryptsetupLUKS verwendet wird, bei dem es sich um ein Kernelmodul handelt. Ich erwähnte die virtuelle Maschine, als ob Sie andere Programme unter Ihrem Host-Betriebssystem ausführen würden (sogar Hintergrundaufgaben), dies würde die Ergebnisse Ihrer Benchmarks beeinflussen.
Durchbruch
1

Der Linux-Kernel verfügt über SSE2- und AVX-optimierte Serpent-Module, um parallelisierbare Workloads (wie CBC-Entschlüsselung und XTS enc & dec) zu beschleunigen.

Die Leistung von Serpent bei der CBC-Entschlüsselung und bei XTS mit diesen geladenen Modulen sollte nahezu auf dem Niveau von Software AES und Twofish liegen (je nach genauem CPU-Modell etwas schneller oder langsamer).

user215314
quelle
0

Beachten Sie auch, dass der vom Gastkernel in einigen VMs ausgeführte SSE2-Code viel langsamer ist als auf dem Hostkernel. Ich habe dies mit Oracle VirtualBox erlebt. Daher korrelieren die Ergebnisse für Serpent auf VM möglicherweise nicht unbedingt mit der erwarteten Leistung auf dem tatsächlichen Host.

user215314
quelle