我使用 encfs 将数据备份到外部硬盘。直到昨天,一切都很顺利。然后,在格式化我的内部硬盘后,我需要访问加密文件夹中的数据
- 我使用旧的 Lucid (10.04) 安装来挂载我的加密文件夹(我的电脑上使用的是 12.04,这是唯一可用的 Linux 安装)
- Cryptkeeper 接受了我的密码并挂载了目录,但目录是空的
- 我尝试卸载然后重新安装它,但这次我收到了“密码不正确”的消息
- 我尝试挂载另一个加密文件夹(该文件夹具有不同的密码),结果完全相同:密码被接受,挂载的目录为空,然后卸载/重新挂载后,密码不再被接受
我甚至尝试从 13.10 live USB 启动,但这次 encfs 不接受密码(对于加密文件夹)
问题
我现在该如何恢复我的数据?我现在已经丢失了一半的文档,其中一些是专业作品。
答案1
最好最简单的解决方案是获取备份副本,设计加密使得数据恢复几乎不可能,因此备份比以往任何时候都更加重要。
encfs 手册页对不同版本有一些说明,例如
注意:EncFS 从密码程序中读取最多 2k 的数据,并删除任何尾随换行符。1.4.x 之前的版本仅接受 64 字节的文本。
如果使用版本 1.5 修改了 1.4.x 的 EncFS 文件系统配置(例如使用 encfsctl 更改密码时),则将使用新的 PBKDF2 函数,并且旧版本将不再可读取该文件系统。
甚至诸如块大小和不同的文件名编码之类的内容在旧版本中可能不受支持。
我只是猜测,但尝试所有不同版本可能会搞砸事情。如果你很幸运,那么没有一个文件被正确安装,所以文件本身可能没有改变,使用相同版本的 encfs 安装它们可能仍然有效。或者可能只有 .encfs6.xml“配置”文件发生了一些变化。
如果创建文件的相同版本的 encfs 或较新版本不起作用,那么也许您有一个好的 .encfs6.xml 文件的备份副本来解密文件。如果您没有好的备份,那么您可能能够重新创建一个可以工作的配置文件,我正在尝试找出如何自己做这件事,以防配置文件出现问题,并且保留带有密码哈希和如何解密文件的说明的配置文件也不是很安全。
- 我刚刚尝试使用与另一个包含加密文件的文件夹相同的设置和密码创建一个新的空 encfs 文件夹。但是 .encfs6.xml 文件具有不同的“encodedKeyData”,可能是因为“saltData”和“kdfIterations”不同,并且尝试使用新的 .encfs 安装旧文件没有成功(解码文件名时出错,校验和不匹配……)。
- 我将尝试更改新的 .encfs 文件以匹配 saltData 和 kdfInterations,因此只需不同的codedKeyData。--> 仍然不起作用!即使使用 --anykey 也不起作用!
因此,看起来您确实需要一个相同的 .encfs6.xml 文件来解密任何旧文件。使用相同选项重新创建一个新的 .encfs 几乎可以恢复所有文件,但仍然需要“encodedKeyData”、“saltData”和“kdfIterations”,因此,如果您的 .encfs6.xml 文件中的这 3 个选项没有更改,但可能更改了其他一些选项,您可能仍然很幸运?
- 另外,不要使用 cryptkeeper!(至少在您可以解密文件之前不要使用)在终端中直接使用 encfs,以
encfs -f -v encodeddir decrypteddir
了解正在发生的事情,据我所知,这是一个旧的或奇怪的 cryptkeeper 版本,无法正确挂载您的目录,仔细想想。