web-dev-qa-db-ja.com

暗号化されたHFSをUbuntuにマウントする

暗号化されたHFS +パーティションをUbuntuにマウントしようとしています。

以前の投稿 は、それを行う方法をかなり説明していますが、暗号化されたパーティションの使用方法に関する情報が不足しています。

私がこれまでに見つけたのは:

  # 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.

だから私はそれを2回入力しようとしました、しかしそれはこれをもたらします:

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

助言がありますか?

34
pagid

OSXでmountのオプションencryption=aesを使用して暗号化されたHFS +パーティションをマウントできません。その理由は、暗号化されたHFS +パーティションとボリュームがproprietary形式を使用するためです。

mountおよびencryptionで使用される基本的な復号化メソッドである CryptoloopLoop-AES も、その形式を理解していません。

これは私が見つけたものです:

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 +を読み取ることができません。

しかし、すべての希望が消える前に:

  • 暗号化の専門家グループがvfdecryptを作成しました(Ubuntuパッケージdmg2imgに含まれています)、tar.gzは次のとおりです http://code.google.com/p/iphone-Elite/ downloads/list )、暗号化されたFileVaultディスクイメージを復号化します(デバイスファイルでは機能しません)。

    このツールは非常に有望に見えますが、OS X 10.8.2「Mountain Lion」でDisk Utilityを使用して作成した暗号化されたディスクイメージのいくつかでは機能しませんでした。他の人々( http://bre.klaki.net/blog/2011/08/17/ )は、古い暗号化された画像で成功したようです。

  • 他の専門家がプロジェクトlibfvdehttps://code.google.com/p/libfvde )に取り組んでいます。これには、FileVault暗号化システムボリュームを読み取るためのコマンドfvdemountが含まれています。ここでの制限要因は「システムボリューム」です。リムーバブルメディア上のパーティションはサポートしていません。興味があれば、説明はこちらです https://code.google.com/p/libfvde/wiki/Mounting#Mouting_the_system_volume 。ソースコードはここからダウンロードできます: https://code.google.com/p/libfvde/downloads/list

発生したエラーメッセージについて:

最初のエラー:

Error: Password must be at least 20 characters.

意外にも、mountは、暗号化だけでなくdecryptionにも長いパスワードを適用しますが、復号化するパーティションを制御できない場合があります。この迷惑を回避するには、ソースをダウンロードして編集し、再コンパイルする必要があります。 (SuSE Linux Enterprise Server(SLES)などの他のディストリビューションには、この制限はありません。)

2番目のエラー:

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は、いくつかの変更されたユーザー空間ツール(mountumountlosetupswaponおよびswapoffを使用し、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のみを認識します。

59
jaume

実際には、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ファイルシステムへの書き込みサポートが無効になっていることです。

これは、.dmgの暗号化がhfsexplorerによって理解され、mountコマンドで実装できる可能性があることを示しています。暗号化されていない.dmgを作成すると、最終的にLinuxにイメージをマウントできます。

vfdecryptも私にとってはうまくいきませんでした。

16
Strongly Typed