进行搜索时,由于密码设置,其他人似乎遇到了更复杂的问题,但我的问题是在做一些简单的事情时。
使用 Lubuntu 18.10 32bit 的最新安装(内核已更新),我可以创建一个加密分区:
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.
如果给定的密码是 letter a
,我无法解锁它:
cryptsetup --verbose luksOpen /dev/mmcblk0 crypt
Enter passphrase for /dev/mmcblk0:
No key available with this passphrase.
Enter passphrase for /dev/mmcblk0:
(我也尝试了 zulucrypt,结果相同)
由于我使用其安装程序的加密功能安装了 Lubuntu,我可以在我的系统本机使用的内容和cryptsetup
我的 mmc 驱动器上制作的内容之间进行比较。
cryptsetup luksDump /dev/sda1
相关部分似乎是:
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha256
Payload offset: 4096
MK bits: 512
我看到的两个转储之间的唯一区别是,对于我的本地驱动器,底部的“MK 位”是 512,但对于 mmc,它是 256。
我不知道这是否相关,但我也看到我的本地驱动器有两个键槽,而 mmc 只有一个。(我的本地驱动器有两个密钥槽这一事实让我希望/怀疑安装程序是否放入了重复的密钥以防第一个密钥损坏。)
一位评论者要求我尝试以这种方式提供密码:
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).
另一种提供密码的方法:
echo 'a' > interactive_pass
cat interactive_pass | cryptsetup luksAddKey /dev/mmcblk0
No key available with this passphrase.
使用密钥文件。
我无法理解这一点。我摸索了一会儿,但停了下来,因为我分不清使用错误和它有自己的问题之间的区别。
zulucrypt 有一种创建密钥文件的方法,但它只是说Failed To Generate Key
. 这很简单,所以我确定我使用它正确(以 root 身份运行,对我要创建的文件具有写权限)
TL;DR - 检查媒体是否可靠;
luksFormat
不要luksOpen
。至少可以从以下几个方面来考虑这个问题:
出于好奇,我决定对 mmc 驱动器进行完整格式化(“从头开始”),但要检查:
我已经可以看到这是怎么回事..
由于我以前从来没有这样格式化过,所以我用检查格式化了第二个存储设备(U盘),格式化成功。通过相同的过程来格式化并
cryptsetup
打开该 USB 记忆棒。这揭示了另一个正在发生的问题:我怀疑它
luksFormat
没有进行任何完整性检查以查看其数据是否可以实际读取。作为后续,我已经在 Windows 下进行了非快速格式化,并且效果很好。我还进行了完整的写读比较测试,也很成功。出于好奇,我还有其他测试要执行,但这很可能(不知何故)是一个特定于 Linux 的问题。我不会对那个兔子洞进行故障排除,但我会得出结论,在出现问题的特定平台上进行所有格式化和测试很重要。