在ubuntu中挂载加密的HFS


32

我尝试在Ubuntu中挂载加密的HFS +分区。

一个较早的帖子描述的相当不错如何做到这一点,但缺乏信息如何使用加密的分区。

到目前为止,我发现的是:

  # install required packages
  sudo apt-get install hfsprogs hfsutils hfsplus loop-aes-utils
  # try to mount it
  mount -t hfsplus -o encryption=aes-256 /dev/xyz /mount/xyz

但是一旦运行此命令,我将收到以下错误:

  Error: Password must be at least 20 characters.

所以我试图输入两次,但是结果是:

  ioctl: LOOP_SET_STATUS: Invalid argument, requested cipher or key (256 bits) not supported by kernel

有什么建议么?


不知道这是否有所作为,但是您尝试aes256aes-256吗?
Ansgar Wiechers,2012年

是的-两者的结果相同-即使仅使用“ aes”也可得出相同的结果
pagid 2012年

Answers:


59

无法使用mount的选项挂载在OS X中加密的HFS +分区encryption=aes。原因是加密的HFS +分区和卷使用专有格式。

既不Cryptoloop也不环路-AES,它们是由所使用的底层解密方法mountencryption,理解的格式。

这是我发现的:

Cryptoloop可以挂载加密为单个AES块的分区或磁盘映像(这称为单键模式,请参阅http://www.tldp.org/HOWTO/html_single/Cryptoloop-HOWTO/#cryptoloop-introduction):

  /dev/sdXX                                                        
  disk image                                                       /dev/loopX
+-----------+                                                    +-------------+
|           |                                                    |             |
|           |                                                    |             |
|           |                                                    | unencrypted |
| AES block | -AES passwd->AES key->decrypt I/O to loop device-> |  partition  |
|           |                                                    |             |
|           |                                                    |             |
|           |                                                    |             |
+-----------+                                                    +-------------+

AES-Loop可以挂载单键(如上)和多键加密分区或磁盘映像:

  /dev/sdXX                                                        
  disk image                                                         /dev/loopX
+------------+                                                    +-------------+
|AES block #1|                                                    |             |
+------------+                                                    |             |
|AES block #2|                                                    | unencrypted |
+------------+ -AES passwd->AES key(s)->decrypt I/O to loop dev-> |  partition  |
|AES block #3|                                                    |             |
+------------+                                                    |             |
|    ...     |                                                    |             |
+------------+                                                    +-------------+

另一方面,加密的HFS +分区:

Cryptoloop的后继者dm-crypt也无法读取加密的HFS +。

但在所有希望消失之前:

至于您遇到的错误消息:

第一个错误:

Error: Password must be at least 20 characters.

令人惊讶的是,尽管您可能无法控制要解密的分区,但mount不仅要为加密而且要为解密强制使用长密码。您只能通过下载和编辑源代码并重新编译来避免这种麻烦。(其他发行版,例如SuSE Linux Enterprise Server(SLES),没有此限制。)

第二个错误:

ioctl: LOOP_SET_STATUS: Invalid argument, requested cipher or key (256 bits) not supported by kernel

您需要加载Cryptoloop内核模块:

$ sudo modprobe cryptoloop

因为尽管您安装了软件包loop-aes-utils但并未使用Loop-AES。

环-AES使用几个修改用户空间工具(mountumountlosetupswaponswapoff,由提供loop-aes-utils)和改性的loop.ko内核模块。最新的Ubuntu版本将未经修改的loop模块编译到内核​​中:

    $ cd /usr/src/linux-source-3.2.0/linux-source-3.2.0/drivers/block/
    $ diff -q /tmp/loop.c-3.x.patched loop.c
    Files /tmp/loop.c-3.x.patched and loop.c differ

因此Loop-AES不能在Ubuntu上立即使用。您需要按以下说明修补并重新编译内核:http : //loop-aes.sourceforge.net/loop-AES.README。这就是为什么mount仍然需要Cryptoloop 的原因。

如果在加载后仍然出现类似的错误消息,cryptoloop.ko则可能无法识别加密类型。例如,我的Ubuntu 12.04无法识别aes-128,但是aes。SLES仅识别aes-128


1
+1了解答案中提供的详细信息和详细信息。
混沌守护进程

4
这是一个非常惊人的答案。内容丰富,详细且经过非常深入的研究。感谢分享jaume,非常感谢。
chmac

3
只是想指出一下,我已经在OSX 10.10.3上成功进行了尝试。我还发现,当我对计算机进行大量处理时,解密驱动器的过程不会取得任何进展。但是,在笔记本电脑接通电源并插入驱动器的情况下,我关闭了机盖(完全睡眠),当它在PowerNap中睡觉时它完成了解密。
voxobscuro 2015年

14

实际上,有Java应用程序hfsexplorer能够打开加密.dmg文件并创建.dmg可以在Linux中挂载的解密映像。

我能够.dmg在OS X 10.9.5中创建加密文件,然后从运行Ubuntu 14.04.2 LTS的虚拟机中浏览映像。AES-128和AES-256加密都适用于我的测试用例。

这是我创建.dmg图像的方式:

$ hdiutil create -size 10m -layout NONE -fs HFS+ -encryption AES-256 -volname "Vault" vault.dmg

在运行Ubuntu的虚拟机上,我可以打开该映像:

$ ./hfsexplorer-0/bin/hfsexplorer.sh /tmp/vault.dmg

它提示输入密码,然后显示图像的内容。有一个选项(工具->创建磁盘映像)可以创建解密的磁盘映像,然后可以使用linux的hfs工具将其挂载。

$ mount vault_decrypted.dmg /mnt/hfs/

甚至HFS +日志文件系统也可以工作。唯一的限制是,在Linux中,默认情况下禁用对HFS + J文件系统的写支持。

这表明命令的加密.dmg可以理解hfsexplorer并且可以在mount命令中实现。通过创建未加密.dmg的文件,最终可以在Linux中挂载映像。

vfdecrypt 也不适合我

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.