Ich versuche, ein verschlüsseltes Volume einzurichten, um Dateien sicher zu speichern. Dies geschieht auf einem NextThingCo-Pocketchip, aber das Betriebssystem basiert auf Debian. Ich denke, ich würde es zuerst hier versuchen, da meine Frage eher mit dmcrypt als mit der Plattform selbst zusammenhängt (oder so denke ich).
Das Rezept, das ich bisher gebaut habe, ist folgendes (möglicherweise falsch oder zu kompliziert):
- Erstellen Sie eine Datei
- Richten Sie es als Loop-Gerät ein.
- Führen Sie das Crypsetup zum Formatieren und Öffnen aus. "abc" ist das Passwort, das durch stdin eingegeben wird (ist diese Annahme richtig?).
- Erstellen Sie ein Dateisystem
- Montieren
So sieht es so aus:
sudo dd if=/dev/urandom of=./encrypted.volume bs=512K count=200 sudo losetup /dev/loop0 ./encrypted.volume echo "abc" | sudo cryptsetup luksFormat /dev/loop0 echo "abc" | sudo cryptsetup open /dev/loop0 vault sudo mkfs /dev/mapper/vault sudo mount /dev/mapper/vault /mnt/vault
Nun, das scheint alles gut zu funktionieren, bis ich den --debug -Parameter verwendet habe (ich wollte andere Parameter ausprobieren, zB die Schlüsselgröße). Und ich habe die folgenden Nachrichten erkannt:
# cryptsetup 1.7.0 processing "cryptsetup -v --debug --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --timeout 10 --use-random luksFormat /dev/loop0" # Running command luksFormat. ... # Userspace crypto wrapper cannot use aes-xts-plain64 (-95). ... device-mapper: remove ioctl on temporary-cryptsetup-6661 failed: Device or resource busy <------ appears when I change the --key-size to 512 i.s.o. default 256 ... device-mapper: remove ioctl on temporary-cryptsetup-6698 failed: Device or resource busy
Ich habe auch versucht, den Benchmark zu laufen:
chip@chip:~/data/run$ sudo cryptsetup --debug benchmark [sudo] password for chip: # cryptsetup 1.7.0 processing "cryptsetup --debug benchmark" # Running command benchmark. # Installing SIGINT/SIGTERM handler. # Unblocking interruption on signal. # Tests are approximate using memory only (no storage IO). # Crypto backend (gcrypt 1.6.4) initialized in cryptsetup library version 1.7.0. # Detected kernel Linux 4.4.13-ntc-mlc armv7l. # KDF pbkdf2, hash sha1: 59041 iterations per second (256-bits key). PBKDF2-sha1 59041 iterations per second for 256-bit key # KDF pbkdf2, hash sha256: 79437 iterations per second (256-bits key). PBKDF2-sha256 79437 iterations per second for 256-bit key # KDF pbkdf2, hash sha512: 40705 iterations per second (256-bits key). PBKDF2-sha512 40705 iterations per second for 256-bit key # KDF pbkdf2, hash ripemd160: 50412 iterations per second (256-bits key). PBKDF2-ripemd160 50412 iterations per second for 256-bit key # KDF pbkdf2, hash whirlpool: 7481 iterations per second (256-bits key). PBKDF2-whirlpool 7481 iterations per second for 256-bit key # Cannot initialise cipher aes, mode cbc. Required kernel crypto interface not available. Command failed with code 95: Operation not supported
Hier einige zusätzliche Informationen zu Plattform und Betriebssystem:
chip@chip:~/data/run$ uname -r 4.4.13-ntc-mlc chip@chip:~/data/run$ cat /boot/config-4.4.13-ntc-mlc | grep CRYPTO_USER_API_SKCIPHER # CONFIG_CRYPTO_USER_API_SKCIPHER is not set
Ich verstehe, dass ich den Kernel neu kompilieren muss, nachdem ich CONFIG_CRYPTO_USER_API_SKCIPHER gesetzt habe, damit die Crypto-API des Userspace verfügbar wird. Ich glaube nicht, dass es einen Ausweg gibt, oder?
Ich LuksDump die Informationen über die Speicherdatei:
chip@chip:~/data/run$ sudo cryptsetup luksDump ./encrypted.volume LUKS header information for ./encrypted.volume Version: 1 Cipher name: aes <------- ??? Cipher mode: xts-plain64 <------- ??? Hash spec: sha256 Payload offset: 4096 MK bits: 256 MK digest: ee f8 8d ad 9b 67 d9 7d cb 20 fe a9 25 a3 8b a5 c2 65 56 dd MK salt: 38 74 e8 9d 77 6a 93 b5 03 41 cb 3e ce 79 b4 00 55 f3 98 8f c5 a7 14 05 25 9c 4e 91 68 1a 53 37 MK iterations: 18500 UUID: 36912ea4-9adb-4d1f-b9f2-f6a09a258833 Key Slot 0: ENABLED Iterations: 150587 Salt: e8 4f f3 c1 07 1a 2b 2d d2 d9 f4 55 0f b3 13 28 2a 69 06 aa a0 94 4a 05 5d 5f e9 28 9b 91 39 94 Key material offset: 8 AF stripes: 4000 Key Slot 1: DISABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Ich habe jedoch einige Fragen zur aktuellen Situation:
- Ist die Partition tatsächlich verschlüsselt? Wenn ja, mit welchem Schema?
- Wie kann ich das in der Kommandozeile überprüfen? Beim Versuch, Informationen über die Partition zu sichern, erfahren Sie, dass "es gibt einen LUKS-Header", aber das sagt mir nicht, ob die Daten verschlüsselt sind oder nicht.
- Wie löse ich die Situation mit "Ressourcen beschäftigt", wodurch ich eine Schlüsselgröße von 512 verwenden könnte?
Danke, dass Sie den ganzen Weg hier gelesen haben. Alle Hinweise werden sehr geschätzt.
EDIT (08/12/17): - Letzte Zeilen von crypsetup --help
:
<name> is the device to create under /dev/mapper <device> is the encrypted device <key slot> is the LUKS key slot number to modify <key file> optional key file for the new key for luksAddKey action Default compiled-in key and passphrase parameters: Maximum keyfile size: 8192kB, Maximum interactive passphrase length 512 (characters) Default PBKDF2 iteration time for LUKS: 2000 (ms) Default compiled-in device cipher parameters: loop-AES: aes, Key 256 bits plain: aes-cbc-essiv:sha256, Key: 256 bits, Password hashing: ripemd160 LUKS1: aes-xts-plain64, Key: 256 bits, LUKS header hashing: sha256, RNG: /dev/urandom