
Ich habe die Verwendung von cryptsetup eingeführt, um einen Teil des Speicherplatzes zu verschlüsseln, aber die Schreibgeschwindigkeit ist sehr langsam. Ich habe herausgefunden, dass es ein Modul gibt, mit dem die Hardware direkt für die Verschlüsselungsvorgänge genutzt werden kann, und zwar mit dem Modul cryptodev.
Ich habe cryptodev installiert und gerade ausgeführt
openssl speed -evp aes-128-cbc -engine cryptodev
Getestet habe ich die Schreibgeschwindigkeit mit
time dd bs=5000k count=1 if=/dev/zero of=/home/... conv=fsync
vor und nach dem Einbinden des Cryptodev-Moduls und mit dieser Steuerung kann ich keine Verbesserung erkennen. Gibt es noch andere Dinge, die definiert werden müssen, damit Cryptsetup diese Engine verwenden kann? Danke
[bearbeiten]---------------------------------------------
$ cryptsetup luksDump DISK --debug
# cryptsetup 1.7.0 processing "cryptsetup luksDump DISK --debug"
# Running command luksDump.
# Locking memory.
# Installing SIGINT/SIGTERM handler.
# Unblocking interruption on signal.
# Allocating crypt device DISK context.
# Trying to open and read device DISK with direct-io.
# Initialising device-mapper backend library.
# Trying to load LUKS1 crypt type from device DISK.
# Crypto backend (OpenSSL 1.0.2h 3 May 2016) initialized in cryptsetup library version 1.7.0.
# Detected kernel Linux 4.1.15-xuelk-2.0.1-dirty armv7l.
# Reading LUKS header of size 1024 from device DISK
# Key length 32, device size 204800 sectors, header size 2050 sectors.
LUKS header information for DISK
Version: 1
Cipher name: aes
Cipher mode: cbc-essiv:sha256
Hash spec: sha256
Payload offset: 4096
MK bits: 256
MK digest: 00 a6 fb a5 64 1d 08 47 9d ea 76 d3 34 f2 19 cf 66 b7 e7 94
MK salt: 8c 14 4e 3a 97 d6 d7 18 ca 46 f9 f0 47 d5 44 3f
46 0c c5 4e d7 35 1d 46 ca 2b fc af 13 14 d1 98
MK iterations: 13500
UUID: a808c328-0c0e-43a7-9057-b6b9a49afeb9
Key Slot 0: ENABLED
Iterations: 108472
Salt: 76 be 3e a1 5f 37 9b bc 1b 84 69 9e 36 db 5f ba
43 93 96 34 57 02 59 df 2c 19 f4 df 1a 09 53 7a
Key material offset: 8
AF stripes: 4000
Antwort1
Der Befehl cryptsetup
konfiguriert im Grunde nur das dm-crypt
Kernelmodul. Das bedeutet, dass die Verschlüsselung/Entschlüsselung Ihrer Festplatte innerhalb des Kernels erfolgt. Der Kernel verwendet OpenSSL überhaupt nicht.
Die aktuelle Performance der Festplattenverschlüsselung können Sie zuverlässig testen mit:
cryptsetup benchmark
DerCryptsetup-Standards sind aes-xts, 256b, beim Erstellen des verschlüsselten Geräts mit cryptsetup luksCreate
(vgl. die cryptsetup luksDump
Ausgabe).
Einige experimentelle Ergebnisse von Hardware mittlerer Größe:
CPU cryptsetup benchmark
AMD Phenom 9750 2.4 GHz aes-xts 256b 146.7 MiB/s 148.5 MiB/s
Intel Atom C3758 2.2 GHz aes-xts 256b 874.0 MiB/s 875.4 MiB/s
Intel i5-4250U 1.3 GHz aes-xts 256b 1703.3 MiB/s 1723.1 MiB/s
Intel i7-6600U 2.6 GHz aes-xts 256b 2978.0 MiB/s 3117.5 MiB/s
Der Linux-Kernel enthält mehrere Treiber für Hardware, die Kryptooperationen beschleunigen. Normalerweise werden sie standardmäßig geladen und vom Kryptosubsystem des Kernels verwendet.
Neuere Intel-CPUs verfügen beispielsweise über dieAES-NI-Befehlssatzdie AES deutlich beschleunigen - so können Sie prüfen, ob die CPU sie unterstützt:
tr ' ' '\n' < /proc/cpuinfo | grep aes
Einige Systeme verfügen sogar über Krypto-Coprozessoren (vgl. z. B.Intel QuickAssist – QAT). Sie können die Dinge beschleunigen, aber auch verlangsamen - daher ist es beim Benchmarking sinnvoll, die Boot-Protokolle zu überprüfen, wenn solche spezielle Hardware vom Kernel konfiguriert ist und die erforderlichen Module/Firmware geladen sind. Wenn solche Hardware vorhanden ist, ist es sinnvoll, die Leistung mit aktiviertem bzw. deaktiviertem Coprozessor zu überprüfen (z. B. durch Blacklisting der relevanten *qat*
Module).