当前位置: 首页>>技术教程>>正文


在ubuntu中挂载加密的HFS

, , ,

问题描述

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

older post很好地描述了如何执行此操作,但是缺少有关如何使用加密分区的信息。

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

  # 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

有什么建议么?

最佳办法

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

mountencryption使用的基础解密方法CryptoloopLoop-AES都不理解该格式。

这是我发现的:

Cryptoloop可以挂载作为单个AES块加密的分区或磁盘映像(这称为single-key模式,请参阅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可以挂载single-key(如上)和multi-key加密的分区或磁盘映像:

  /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。

Loop-AES使用多个修改的用户空间工具(loop-aes-utils提供的mountumountlosetupswaponswapoff)和一个修改的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

次佳办法

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

我能够在OS X 10.9.5中创建加密的.dmg文件,然后从运行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文件系统的写支持。

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

vfdecrypt也不适合我。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10290.html,未经允许,请勿转载。