En faisant des recherches, il semble que d'autres ont des problèmes plus complexes à cause des paramètres de chiffrement, mais mon problème est de faire quelque chose de simple.
En utilisant une installation principalement fraîche de Lubuntu 18.10 32 bits (le noyau a été mis à jour), je peux ainsi créer une partition chiffrée:
cryptsetup --verbose --verify-passphrase luksFormat /dev/mmcblk0
WARNING: Device /dev/mmcblk0 already contains a 'crypto_LUKS' superblock signature.
WARNING!
========
This will overwrite data on /dev/mmcblk0 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/mmcblk0:
Verify passphrase:
Existing 'crypto_LUKS' superblock signature on device /dev/mmcblk0 will be wiped.
Key slot 0 created.
Command successful.
Si le mot de passe donné est la lettre a
, je ne peux pas le déverrouiller ainsi:
cryptsetup --verbose luksOpen /dev/mmcblk0 crypt
Enter passphrase for /dev/mmcblk0:
No key available with this passphrase.
Enter passphrase for /dev/mmcblk0:
(J'ai aussi essayé zulucrypt avec le même résultat)
Depuis que j'ai installé Lubuntu en utilisant la fonctionnalité de chiffrement de son installateur, je peux faire une comparaison entre ce que mon système utilise nativement et ce que cryptsetup
a fait sur mon lecteur mmc.
cryptsetup luksDump /dev/sda1
La partie pertinente semble être:
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha256
Payload offset: 4096
MK bits: 512
La seule différence que je vois entre les deux vidages est que pour mon disque local, les "bits MK" inférieurs sont 512, mais pour le mmc, il est 256.
Je ne sais pas si c'est pertinent, mais je vois aussi que mon lecteur local a deux emplacements de clé et le mmc n'en a qu'un. (Le fait que mon disque local ait deux emplacements de clé me fait espérer/me demander si l'installateur a mis une clé en double au cas où la première serait corrompue.)
Un intervenant m'a demandé d'essayer de fournir une phrase secrète de cette façon:
echo -n 'a' | cryptsetup --verbose luksOpen /dev/mmcblk0 crypt
Can't do passphrase verification on non-tty inputs.
No key available with this passphrase.
Command failed with code -2 (no permission or bad passphrase).
Une autre façon de fournir un mot de passe:
echo 'a' > interactive_pass
cat interactive_pass | cryptsetup luksAddKey /dev/mmcblk0
No key available with this passphrase.
Utilisation d'un fichier clé.
Je ne peux pas comprendre ça. J'ai tâtonné pendant un moment, mais je me suis arrêté parce que je ne peux pas faire la différence entre l'utiliser mal et avoir ses propres problèmes.
zulucrypt a un moyen de créer un fichier de clés, mais il dit simplement Failed To Generate Key
. C'est simple, donc je suis certain de l'utiliser correctement (exécuté en tant que root, j'ai des autorisations d'écriture sur le fichier que je voudrais créer)
TL; DR - Vérifiez si le support est fiable; luksFormat
et luksOpen
pas.
Le problème pourrait être envisagé de plusieurs manières au moins:
Par curiosité, j'ai décidé de faire un formatage complet du lecteur mmc (pour "repartir de zéro"), mais en vérifiant:
Sudo mkfs.ext4 /dev/mmcblk0 -cc
mke2fs 1.44.4 (18-Aug-2018)
/dev/mmcblk0 contains a ext4 file system
last mounted on Tue Mar 5 11:30:02 2019
Proceed anyway? (y,N) y
Discarding device blocks: done
Creating filesystem with 15591936 4k blocks and 3899392 inodes
Filesystem UUID: 0ab72f40-d2a2-408d-b4ca-d5e8fcc27ec7
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Testing with pattern 0xaa: done
Reading and comparing: done
Testing with pattern 0x55: done rs)
Reading and comparing: done rs)
Testing with pattern 0xff: done rs)
Reading and comparing: done rs)
Testing with pattern 0x00: done rs)
Reading and comparing: done rs)
Block 0 in primary superblock/group descriptor area bad.
Blocks 0 through 9 must be good in order to build a filesystem.
Aborting....
Je pouvais déjà voir où cela allait ..
Comme je n'ai jamais formaté comme ça auparavant, j'ai formaté un deuxième périphérique de stockage (une clé USB) avec vérification, et son format s'est terminé avec succès. En passant par le même processus cryptsetup
pour formater et ouvrir cette clé USB a fonctionné . Cela révèle un autre problème qui se produisait:
Je soupçonne que luksFormat
ne fait aucune vérification de bon sens pour voir que ses données peuvent en fait être lues.
À titre de suivi, j'avais déjà fait un format non rapide sous Windows et cela fonctionnait bien. J'ai également effectué un test complet d'écriture-lecture-comparaison et ce fut également un succès. J'ai d'autres tests à effectuer, juste par curiosité, mais cela peut être (en quelque sorte) un problème spécifique à Linux. Je ne dépannerai pas ce trou de lapin, mais je conclurai qu'il est important de faire tout le formatage et les tests sur la plate-forme spécifique sur laquelle le problème est vu.