Schlechte Schreibleistung bei E-Verschlüsselungen

15

Ich habe ein bisschen mit ecryptfs und dm-crypt verglichen und dabei interessante Ergebnisse erzielt. Alle folgenden ddSchritte wurden mit einem Btrfs-Dateisystem ausgeführt, mit dem eine ~ 700-MB-Datei auf eine / von einer Ramdisk kopiert wurde, mit der conv=fdatasyncOption, die Datensynchronisierung zu erzwingen. Die Festplatten-Caches wurden vor jedem Test geleert.

No encryption:
 read - 165MB/s
 write - 120MB/s
ecryptfs:
 read - 125MB/s
 write - 15MB/s
dm-crypt:
 read - 150MB/s
 write - 115MB/s
dm-crypt + ecryptfs:
 read - 120MB/s
 write - 15MB/s

Jetzt verstehe ich, dass die Verschlüsselung langsamer ist als ein unformatiertes Dateisystem, aber ich habe nicht damit gerechnet, dass die Schreibleistung mit ecryptfs massiv sinkt. Macht die Tatsache, dass ich die Datensynchronisierung erzwinge, diesen Test unrealistisch? Oder gibt es Optionen, die ich an ecryptfs übergeben kann, um das Schreiben zu beschleunigen?

Ich habe die Dateinamenverschlüsselung für ecryptfs verwendet, aber ansonsten war alles auf die Standardeinstellungen eingestellt.

Xenopathic
quelle
Das Benchmarking kann schwierig sein, und manchmal stößt der Test auf unerwartete Grenzen, insbesondere beim Erzwingen synchroner Schreibvorgänge. Ich bin mit der Funktionsweise von ecryptfs nicht vertraut, aber Sie sollten sicherstellen, dass Probleme mit der Schreibverstärkung ausgeschlossen sind. Welche Blockgröße verwendet ecryptfs und was haben Sie für dd angegeben? Wenn ecryptfs jeweils 16 KB verschlüsselt und Sie kleinere Blöcke schreiben, wird bei jeder Synchronisierung ein Lesevorgang erzwungen, um den Block abzurufen, die Daten zu ändern, dann zu verschlüsseln und schließlich zu schreiben. Das könnte solche Leistungszahlen erklären.
ketil

Antworten:

2

Manpage von ddabout fdatasyncliest:, physically write output file data before finishingalso schreibt es Daten nur "einmal" physisch (lesen Sie es als "nicht alle X Blöcke oder Bytes einen Flush erzwingen, sondern nur einen Flush am Ende"). Wenn Sie ddIhre Tests mit durchführen, ist dies der beste Weg, um die genauesten Ergebnisse zu erzielen. Im Gegenteil, wenn Sie dieses spezielle Flag nicht verwenden, werden Ihre Ergebnisse unrealistisch: Wenn Sie es weglassen, wird wahrscheinlich die Zeit für die Verschlüsselung selbst verpasst, da ddnur Daten kopiert werden.

Trotzdem habe ich auch gedacht, dass etwas los ist, was Ihre Ergebnisse betrifft , aber ich habe diesen Artikel gefunden , der fast dasselbe zeigt: ecryptfs ist schmerzhaft langsam. Und Ihr Test ( eine einzelne Datei wird kopiert) ist das beste Szenario für ecryptfs!

Da Ecryptfs eine verschlüsselte Datei (mit einem benutzerdefinierten Header mit Metadaten) für jede Klartextversion schreibt, bedeutet das Vorhandensein vieler kleiner Dateien einen noch größeren Leistungseinbruch.

Ecryptfs hat jedoch seine Vorteile: Sie können eine verschlüsselte Datei sofort senden, ohne die Verschlüsselung zu verlieren. Ihre Sicherungen (vorausgesetzt, Sie sichern Ihre verschlüsselten Daten) wären schneller, da Sie nur Dateien kopieren würden, die so groß sind wie Ihre Daten (und sogar noch schneller, wenn sie inkrementell sind, da Sie nur geänderte Dateien kopieren würden).

Dm-crypt ist zwar viel schneller, aber Sie müssten den gesamten Container (ein ganzes Dateisystem) senden, um die Verschlüsselung so zu belassen, wie sie ist. Und die Sicherungen würden auch aus dem gesamten Container bestehen und in den meisten Fällen keine inkrementellen Sicherungen durchführen können.

Ich habe beide Methoden verwendet (und verwende sie immer noch) (allerdings nicht dieselben Tools), um verschlüsselte Daten zu speichern: Dateibasierte (ecryptfs) lassen sich über Online-Hosting-Dienste wie Dropbox zwischen PCs einfacher synchronisieren, aber es ist ziemlich langsam, wenn Änderungen vornehmen und einige Probleme mit dem darunterliegenden Dateisystem verursacht haben (es wird davon ausgegangen, dass es die Dateien schreiben kann und Probleme im Zusammenhang mit Einschränkungen des Dateisystems dazu neigen, das Ganze zu zerstören); Ich bevorzuge die Block-Geräteverschlüsselung: Ich behandle sie als einfache Partitionen, damit die Grenzen und Probleme nicht so stark brechen. Der einzige Nachteil ist das Kopieren des Containers, was viel länger dauern kann.

NuTTyX
quelle