我需要使用 cryptsetup 创建一个加密的图像文件,并且能够使用 losetup 的加密选项在旧系统上打开该图像文件。
旧系统无法更改,并使用脚本在 python 脚本中使用此命令打开存档(我有 losetup 正在使用的文件中的密码):
losetup -p %d -e aes /dev/loop0 /mnt/encMount' % (fdes)
我试图找出 cryptsetup 使用哪些设置,以便 losetup 能够成功打开图像文件。
这是正在使用的两个版本:
密码设置 2.3.2
util-linux 2.22.2 中的lostup
我已经尝试了以下密码选项,但到目前为止没有一个有效,或者我的做法完全错误
cryptsetup open /media/sda1/aes-cbc-essivmd5.img encryptedfile --type plain --cipher aes-cbc-essiv:md5 -h md5 --key-file /tmp/p
cryptsetup open /media/sda1/aes-cbc-essivsha256.img encryptedfile --type plain --cipher aes-cbc-essiv:sha256 -h sha256 --key-file /tmp/p
cryptsetup open /media/sda1/aes-cbc-plainmd5.img encryptedfile --type plain --cipher aes-cbc-plain:md5 -h md5 --key-file /tmp/p
cryptsetup open /media/sda1/aes-cbc-plainsha1.img encryptedfile --type plain --cipher aes-cbc-plain:sha1 -h sha1 --key-file /tmp/p
cryptsetup open /media/sda1/aes-cbc-plainsha256.img encryptedfile --type plain --cipher aes-cbc-plain:sha256 -h sha256 --key-file /tmp/p
谢谢!
答案1
@user566330在losetup 2.22实现中存在某种错误/歧义,无论您在命令行或通过密钥文件提供给它什么,它都只获取密钥的前31个字节。
https://github.com/util-linux/util-linux/blob/stable/v2.22/lib/loopdev.c#L1091(参见lo_encrypt_key和LO_KEY_SIZE的定义和用法)
维护者在 v2.22+ 中从 losetup 中删除加密支持时也做出了这样的观察:https://github.com/util-linux/util-linux/commit/5cf05c71472bf7230075cbdcd5cd6eb12b1d3654
考虑到这一点,如果您尝试在 cryptsetup/losetup 之间使用 31 字节密钥,它应该可以理想地工作。狩猎快乐!