cryptsetup:创建旧版本的losetup可以打开和挂载的加密映像文件

cryptsetup:创建旧版本的losetup可以打开和挂载的加密映像文件

我需要使用 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 字节密钥,它应该可以理想地工作。狩猎快乐!

相关内容