Festplatten-Verschlüsselung unter Linux/Ubuntu
Raphael Vullriede November 21st, 2009
Anlässlich des Kaufes einer externen Festplatte für mein Notebook (Plextor PX-PH500US) habe ich die Gelegenheit genutzt, mir mal die Performance verschiedener Verschlüsselungsmöglichkeiten unter Linux anzuschauen. Da eine für den Nutzer transparente Verschlüsselung des Home-Verzeichnisses möglich sein sollte, blieben nur eCryptfs und LUKS. Zusätzlich habe ich noch TrueCrypt getestet, da ich das bereits unter Windows genutzt habe.
eCryptfs und LUKS/Truecrypt benutzen unterschiedliche Ansätze wie Dateien verschlüsselt werden. Während eCryptfs tatsächlich einzelne Dateien verschlüsselt, operieren LUKS/Truecrypt auf Blocklevel. Zu Vor- und Nachteilen einfach mal Google bemühen.
Testsystem:
uname -a Linux nexus 2.6.31-14-generic-pae #48-Ubuntu SMP Fri Oct 16 15:22:42 UTC 2009 i686 GNU/Linux cat /proc/cpuinfo | grep "model name" model name : Intel(R) Core(TM)2 Extreme CPU Q9300 @ 2.53GHz model name : Intel(R) Core(TM)2 Extreme CPU Q9300 @ 2.53GHz model name : Intel(R) Core(TM)2 Extreme CPU Q9300 @ 2.53GHz model name : Intel(R) Core(TM)2 Extreme CPU Q9300 @ 2.53GHz sudo hdparm -I /dev/sdb | grep Model Model Number: TOSHIBA MK5055GSX
Interessant, Plextor verbaut also Toshiba-Platten…
Um die Test einfach zu halten benutze ich Bonnie 1.03c . Es gibt sicherlich bessere Benchmarks aber um einen ersten Eindruck zu bekommen reicht es! Bei der Interpretation beziehe ich mich in erster Linie auf die Block-Operationen, da diese in einem echten System den Großteil des Workload ausmachen.
Zum Vergleich erstmal die Performance ohne Verschlüsselung im Auslieferungszustand, d.h. VFAT als Dateisystem:
VFAT USB 2.0
Version 1.03c ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP bl018550 6G 28284 56 28552 7 14808 5 33960 75 34282 5 143.8 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 75 64 +++++ +++ 1826 99 107 50 +++++ +++ 665 96
VFAT eSATA
Version 1.03c ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP bl018550 6G 49123 76 60099 12 30173 9 72605 94 75029 11 164.4 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 86 63 +++++ +++ 1834 99 114 51 +++++ +++ 675 98
Wie nicht anders zu erwarten ist eSATA in allen Bereichen um Längen besser. Interessant dabei ist allerdings die höhere CPU-Auslastung. Alle weiteren Tests wurden nur noch mit eSATA durchgeführt.
Alles erstes mal ein vernünftiges Dateisystem testen:
Ext4 eSATA
Version 1.03c ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP bl018550 6G 53860 80 54020 10 25841 6 67645 92 73386 11 174.7 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
53,8MB/s schreiben und 73,4MB/s lesen, nicht schlecht! Auf jeden Fall besser als meine interne Festplatte
Zuerst zum Vergleich eCryptfs:
Ext4 eCryptFS eSATA
Version 1.03c ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP bl018550 6G 29381 97 48973 97 21543 57 46309 97 73448 71 112.2 1 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 4846 52 +++++ +++ 25089 89 9856 96 +++++ +++ 4622 13
Es bleiben 48,9MB/s schreiben und 73,4MB/s lesen bei deutlich höherer CPU-Auslastung. Weiterhin sind die Seeks/s deutlich zurückgegangen. Der Performance-Verlust ist allerdings nicht so hoch wie erwartet.
Ext4 LUKS (aes-xts-plain, 256Bit, cryptsetup 1.0.6)
Version 1.03c ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP bl018550 6G 51435 77 49828 8 27971 7 52273 76 73933 10 167.7 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
49,8MB/s schreiben, 73,9MB/s lesen. Die Werte sind somit nahezu gleich zu eCryptfs, trotz vollkommen unterschiedlicher Ansätze. Allerdings ist die CPU-Auslastung gerade mein Lesen deutlich geringer und es sind mehr Seeks möglich.
Ext4 TrueCrypt eSATA (AES 128Bit, RIPE-160, TrueCrypt 6.3)
Da der TrueCrypt-Wizard auch in der aktuelle Version noch kein Ext4 kennt musste ich das Dateisystem von Hand anlegen, wie zu Beispiel hier beschrieben.
Version 1.03c ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP bl018550 6G 50909 84 52487 8 27557 6 41492 85 74252 12 174.3 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
52,4MB/s schreiben und 74,2MB/s lesen. Schreiben und Seeks/s sind hier also fast genauso schnell wie ohne Verschlüsselung.
Fazit:
- Verschlüsselung muss kein Performancefresser sein (Vorausgesetzt man hat eine CPU dafür über
) - Schreiboperationen sind bei allen Lösungen zwar langsamer als ohne Verschlüsselung, ob der Unterschied in der Praxis allerdings eine Rolle spielt sei dahingestellt.
- eCryptfs hat leichte Nachteile gegenüber Mechanismen die auf Blocklevel-Ebene arbeiten. Dafür ist die Integration in Ubuntu deutlich besser und man kann die verschlüsselten Dateien einfacher sichern.