Luks-Performance

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
Wiko
Beiträge: 301
Registriert: 11.05.2006 23:07:35

Luks-Performance

Beitrag von Wiko » 12.02.2020 21:45:52

Ist so ein verschlüsselter Bereich mit ecryptfs/cryfs eigentlich beim Zugriff langsamer als ein kompletter Container mit dmcyrpt/LUKS? Nach meinem Gefühl braucht der Rechner ewig, um einen Cryfs Container zu mounten, bzw mit einem Dateimanager diesen Ordner zu öffnen. Wenn ich das für das komplette Home Verzeichnis mache, stelle ich mir das sehr langsam vor im Tagesbetrieb. Hat da jemand Erfahrung?
Zuletzt geändert von TRex am 14.02.2020 16:51:24, insgesamt 1-mal geändert.
Grund: abgetrennt von https://debianforum.de/forum/viewtopic.php?f=8&t=170706

TomL
Beiträge: 4769
Registriert: 24.07.2014 10:56:59

Re: Nachträglich /home-Verzeichnis verschlüsseln

Beitrag von TomL » 13.02.2020 08:42:38

....eigentlich beim Zugriff langsamer als ein kompletter Container mit dmcyrpt/LUKS?
Soweit ich weiss, hat man mit luks so gut wie kaum Performanceverluste. Beim normalen arbeiten bemerke ich das jedenfalls nicht. Das liegt wohl daran, dass ein luks-device gar nicht entschlüsselt wird, sondern nur die einzelnen schreib- und lesevorgänge, was wiederum direkt im Kernel stattfindet. Das ist der markante Unterschied zu anderen crypt-systemen, die alle als zusätzliche Prozesse im userspace laufen, luks resp. dm-crypt ist kernel. Ich hoffe jemand korrigiert mich, wenn ich jetzt hier quatsch erzähle. :roll:
vg, Thomas

MSfree
Beiträge: 5096
Registriert: 25.09.2007 19:59:30

Re: Nachträglich /home-Verzeichnis verschlüsseln

Beitrag von MSfree » 13.02.2020 09:31:17

TomL hat geschrieben: ↑ zum Beitrag ↑
13.02.2020 08:42:38
Das liegt wohl daran, dass ein luks-device gar nicht entschlüsselt wird, sondern nur die einzelnen schreib- und lesevorgänge, was wiederum direkt im Kernel stattfindet.
Daß nur das ver/entschlüsselt wird, das gerade im Zugriff ist, ist keine Besonderheit von LUKS. Und selbstverständlich benötigt jede Verschlüsselung Rechenkapazität, die den Rechner ausbremst. Aber, heutige Rechner haben in der Regel mehr CPU-Kerne als gerade benötigt werden, so daß die Rechenlast durch Verschlüsselung auf einem anderen Kern läuft als die Anwendungsprogramme und so die Verschlüsselung weitgehend unauffällig bleibt.

Wiko
Beiträge: 301
Registriert: 11.05.2006 23:07:35

Re: Nachträglich /home-Verzeichnis verschlüsseln

Beitrag von Wiko » 13.02.2020 12:00:30

stimmt. Ich denke da auch weniger an CPU-Last sondern eher an I/O-Last. Der Laptop hier hat zwar eine SSD. Aber auch dort dauert es mehrere Sekunden bis der Dateimanager ein Verzeichnis mit ~50 Einträgen bei mir aufgebaut hat (viele Unterverzeichnisse mit insgesamt ca 1 GB an Dateien). "Mehrere Sekunden" wäre okay für mich, aber natürlich nur, wenn das auch bei ~500GB so bleibt und dann nicht hochskaliert. Hat jemand Erfahrung damit, wie die Einlesezeit eines cryfs Mounts im Dateimanager sich mit der Größe verändert? Das sehe ich als größtes praktisches Problem.

OrangeJuice
Beiträge: 203
Registriert: 12.06.2017 15:12:40

Re: Nachträglich /home-Verzeichnis verschlüsseln

Beitrag von OrangeJuice » 13.02.2020 12:13:30

Ich merke keinen großen Unterschied mit einer mit Luks verschlüsselte LVM.

Code: Alles auswählen

cryptsetup benchmark
# Die Tests sind nur annähernd genau, da sie nicht auf den Datenträger zugreifen.
PBKDF2-sha1      1598439 Iterationen pro Sekunde für 256-Bit-Schlüssel
PBKDF2-sha256    2088796 Iterationen pro Sekunde für 256-Bit-Schlüssel
PBKDF2-sha512    1521880 Iterationen pro Sekunde für 256-Bit-Schlüssel
PBKDF2-ripemd160  849737 Iterationen pro Sekunde für 256-Bit-Schlüssel
PBKDF2-whirlpool  654541 Iterationen pro Sekunde für 256-Bit-Schlüssel
argon2i       7 Iterationen, 1048576 Speicher, 4 parallele Threads (CPUs) für 256-Bit-Schlüssel (Zieldauer 2000 Millisekunden)
argon2id      7 Iterationen, 1048576 Speicher, 4 parallele Threads (CPUs) für 256-Bit-Schlüssel (Zieldauer 2000 Millisekunden)
#   Algorithmus | Schlüssel | Verschlüsselung | Entschlüsselung
        aes-cbc        128b      1141,9 MiB/s      3435,1 MiB/s
    serpent-cbc        128b        87,8 MiB/s       723,9 MiB/s
    twofish-cbc        128b       202,6 MiB/s       385,4 MiB/s
        aes-cbc        256b       869,6 MiB/s      2780,2 MiB/s
    serpent-cbc        256b        96,0 MiB/s       723,6 MiB/s
    twofish-cbc        256b       212,9 MiB/s       385,7 MiB/s
        aes-xts        256b      2170,4 MiB/s      2146,9 MiB/s
    serpent-xts        256b       695,4 MiB/s       683,0 MiB/s
    twofish-xts        256b       383,0 MiB/s       383,8 MiB/s
        aes-xts        512b      1987,2 MiB/s      1960,6 MiB/s
    serpent-xts        512b       694,9 MiB/s       680,7 MiB/s
    twofish-xts        512b       382,6 MiB/s       384,1 MiB/s

Zuletzt geändert von OrangeJuice am 13.02.2020 12:28:56, insgesamt 1-mal geändert.

MSfree
Beiträge: 5096
Registriert: 25.09.2007 19:59:30

Re: Nachträglich /home-Verzeichnis verschlüsseln

Beitrag von MSfree » 13.02.2020 12:22:18

Wiko hat geschrieben: ↑ zum Beitrag ↑
13.02.2020 12:00:30
Ich denke da auch weniger an CPU-Last sondern eher an I/O-Last.
I/O-Last verschlüsselt ist identisch mit I/O-Last unverschlüsselt. Es müssen ja in beiden Fällen exakt gleich viele Bytes gelesen werden.
Der Laptop hier hat zwar eine SSD. Aber auch dort dauert es mehrere Sekunden bis der Dateimanager ein Verzeichnis mit ~50 Einträgen bei mir aufgebaut hat (viele Unterverzeichnisse mit insgesamt ca 1 GB an Dateien).
Der Dateimanager liest normalerweise nur das Verzeichnis und baut die Liste in der Anzeige entsprechend auf. Das Auslesen des Verzeichnisses ist eigentlich rasend schnell, tausend Dateien entsprechend nur etwa 100-300kByte lesen. Die Dateigrößen selbst spielen gar keine Rolle.

Was da dauert, ist ggfls. das Anzeigen des passenden Symbols für den Dateityp und das Ableiten des Dateityps. "Dumme" Dateimanager leiten den Dateityp nur von der Dateiendung ab und das kostet praaktisch gar nichts. Schlauere Dateimanager lesen von jeder Datei den Dateikopf (also das erste kByte) und leiten daraus den Dateityp ab. In diesem Fall dauert der Listenaufbau merklich länger ist aber auch von der Dateigröße völlig unabhängig, weil es genauso lange dauert, die ersten 1024 Bytes eine 20kByte-Datei zu lesen wie von einer 100GByte-Datei, egal ob verschlüsselt oder nicht. Die Dauer des Listenaufbaus ist also nur abhängig von der Anzahl der Dateien aber nicht von der Größe der einzelnen Dateien.

cronoik
Beiträge: 1901
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Nachträglich /home-Verzeichnis verschlüsseln

Beitrag von cronoik » 13.02.2020 17:14:43

TomL hat geschrieben: ↑ zum Beitrag ↑
13.02.2020 08:42:38
Soweit ich weiss, hat man mit luks so gut wie kaum Performanceverluste. Beim normalen arbeiten bemerke ich das jedenfalls nicht. Das liegt wohl daran, dass ein luks-device gar nicht entschlüsselt wird, sondern nur die einzelnen schreib- und lesevorgänge, was wiederum direkt im Kernel stattfindet. Das ist der markante Unterschied zu anderen crypt-systemen, die alle als zusätzliche Prozesse im userspace laufen, luks resp. dm-crypt ist kernel. Ich hoffe jemand korrigiert mich, wenn ich jetzt hier quatsch erzähle. :roll:
Wichtig ist hier auch ob der Prozessor AES-NI [1] hat. Ohne diese merkt man einen deutlichen Unterschied.

[1] https://de.wikipedia.org/wiki/AES_(Befe ... weiterung)
Hilf mit unser Wiki zu verbessern!

OrangeJuice
Beiträge: 203
Registriert: 12.06.2017 15:12:40

Re: Nachträglich /home-Verzeichnis verschlüsseln

Beitrag von OrangeJuice » 13.02.2020 17:24:06

Ehrlich gesagt, habe ich bei einem alten Intel Atom 4 Kern CPU(2930) ohne AES-Ni auch keinen großen Unterschied bemerkt. SSD rein und alles lief dennoch flott. Dazu habe ich aber keine Daten, den Nettop gibt es nicht mehr. Aber das war auch nur für den Desktop-PC, das kann ja je nach Nutzung aber auch anders aussehen.

Wiko
Beiträge: 301
Registriert: 11.05.2006 23:07:35

Re: Nachträglich /home-Verzeichnis verschlüsseln

Beitrag von Wiko » 13.02.2020 23:57:23

MSfree hat geschrieben: ↑ zum Beitrag ↑
13.02.2020 12:22:18
Wiko hat geschrieben: ↑ zum Beitrag ↑
13.02.2020 12:00:30
Ich denke da auch weniger an CPU-Last sondern eher an I/O-Last.
I/O-Last verschlüsselt ist identisch mit I/O-Last unverschlüsselt. Es müssen ja in beiden Fällen exakt gleich viele Bytes gelesen werden.
stimmt auch wieder :-)
Die I/O-Last sollte also keinen Unterschied machen und die CPU-Last ist scheinbar kein großes Problem. Die Verzögerung durch Dateityperkennung oder Vorschaubilder kann ich nicht nachvollziehen. Das dürfte dann ja im cryfs Mount auch nicht langsamer sein als im unverschlüsselten Bereich.
Einen Grund für den langsameren Verzeichnisaufbau innerhalb des cryfs Mounts habe ich noch nicht entdeckt. Trotzdem ist es so. Ich kann ja mitanschauen, wie der Rechner langsam das Fenster aufbaut (ca 0,2-0,3 Sekunden pro Zeile).

Ist am Ende für mich jetzt aber egal: Heute habe ich die SSD platt gemacht und das System neu mit dmcrypt/luks aufgesetzt. Läuft und ich sehe keine Verzögerung dabei.

wanne
Moderator
Beiträge: 6211
Registriert: 24.05.2010 12:39:42

Re: Nachträglich /home-Verzeichnis verschlüsseln

Beitrag von wanne » 14.02.2020 14:14:35

So prinzipiell. Für welche die das Später lesen und etwas fitter sind:
Es gibt die Möglichkeit nachträglich luks zu verschlüsseln.
Live-Cd booten
  1. Backup! (Strom weg führt zu vollständigem Datenverlust.)
  2. root Dateisystem verkleinern (~500MiB)
  3. root Partition verkleinern. (Etwas weniger als die Verkleinerung des Dateisystems )
  4. /boot Partiton in freiem Platz anlegen
  5. /boot auf die neue Partition verschieben
  6. fstab anlegen
  7. cryptsetup-reencrypt (Die verschlüsselten Daten werden 592 Byte größer sein. Deswegen sollte dein Dateisystem kleiner wie die Partition sein. Siehe Punkt 3)
  8. chroot
  9. update intiramfs
  10. update-grub
Mir war klar, dass dieses vorgehen für Wiko eher ungeeignet ist. Ein fortgeschrittener User kann das aber machen.
Die I/O-Last sollte also keinen Unterschied machen und die CPU-Last ist scheinbar kein großes Problem. Die Verzögerung durch Dateityperkennung oder Vorschaubilder kann ich nicht nachvollziehen.
Du musst ein bisschen aufpassen. Wie gesagt: Die Rechenleistung ist für moderne CPUs eher lächerlich. So viel wird nicht gelesen, dass das die Performance merkbar beeinträchtigt. Das Problem ist eher der Zusätzliche Verwaltungsaufwand. Gerade bei encfs: Da gehst du Dateibrowser (Userpace) -> Kernel -> Encfs (Userspace) -> Dateisystem (Kernel) -> Block Deviece (Kernel) -> Platte (Hardware). Wenn man das für eine größere Menge Dateien macht und dann eventuell nicht mal parallel wird das langsam.
Mit LUKS hast du Dateibrowser (userspace) -> Dateisystem (Kernel) -> dm-crypt (kernel) -> Platte (Hardware) . Was genau gleich lang ist wie z.B. LVM. Dateibrowser (userspace) -> Dateisystem (Kernel) -> dm (kernel) -> Platte (Hardware). Da wird man schon einen Performance unterschied merken.
Des weiteren mag ich encfs nicht weil es intern deutlich komplexer ist. – Und entsprechend anfälliger für Fehler. (Eventuell sogar sicherheitsrelevante.)
rot: Moderator wanne spricht, default: User wanne spricht.

Wiko
Beiträge: 301
Registriert: 11.05.2006 23:07:35

Re: Nachträglich /home-Verzeichnis verschlüsseln

Beitrag von Wiko » 14.02.2020 21:14:00

wanne hat geschrieben: ↑ zum Beitrag ↑
14.02.2020 14:14:35
Mir war klar, dass dieses vorgehen für Wiko eher ungeeignet ist. Ein fortgeschrittener User kann das aber machen.
Mit meinen 15 Jahren Debian Erfahrung fühle ich mich schon etwas fortgeschritten :-) Auch wenn hier vielleicht noch etwas erfahrenere User schreiben. In der Tat hatte ich letztes Jahr mit einem ähnlichen Vorgehen die Größen der logischen Partitionen innerhalb eines LUKS Containers mit LVM angepasst. Allerdings wusste ich nicht, dass man einen LUKS Container auch nachträglich komplett "erkonvertieren" kann. Der Tipp hätte mir ein paar Stunden Arbeit erspart. Und selbst wenn ich die Partition zerstört hätte: Neu Aufsetzen hätte ich ja immer noch können.

Das hat mich jetzt geärgert (dass ich nicht noch ein wenig gewartet habe UND dass der Tipp für mich ungeignet gewesen wäre).

wanne
Moderator
Beiträge: 6211
Registriert: 24.05.2010 12:39:42

Re: Luks-Performance

Beitrag von wanne » 15.02.2020 02:18:00

Mit meinen 15 Jahren Debian Erfahrung fühle ich mich schon etwas fortgeschritten
OOps. Dann sorry, für die Fehleinschätzung. :oops:
Irgend wie hat sich das beim ersten mal lesen für mich ziemlich naiv angehört. Jetzt gerade nochmal gelesen und ich kann dass da nicht mehr raus lesen... :facepalm:
Tut mir echt leid.
Allerdings wusste ich nicht, dass man einen LUKS Container auch nachträglich komplett "erkonvertieren" kann.
Das ist auch nicht so vorgesehen gewesen und ist ganz neu in Cryptsetup. Lässt sich aber relativ locker Scripten. Ich habe das hier mal im Forum geschrieben.
Du öffnest halt das verschlüsselte Devive und liest dann vom plain-device (sdxX) und schreibst in das verschlüsselte (mapper/disk) Wichtig ist halt, dass du immer zuerst die Blöcke ließt, bevor du sie schreibst.
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten