我嘗試在 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
有什麼建議麼?
答案1
你無法安裝mount
在 OS X 中使用's 選項加密的 HFS+ 分割區encryption=aes
。原因是加密的 HFS+ 分割區和磁碟區使用所有權格式。
兩者都不加密循環也不循環AESmount
,它們是和所使用的底層解密方法encryption
,了解該格式。
這是我發現的:
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+ 分割區:
- 包括一個標頭(你可以用 轉儲它
xxd
) - 用途一些以未記錄的方式進行金鑰(請參閱http://events.ccc.de/congress/2006/Fahrplan/attachments/1244-23C3VileFault.pdf)
- 從 OS X 10.7“Lion”開始,它被包裝在 CoreStorage 邏輯磁碟區組中(請參閱
man diskutil
或https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/diskutil.8.html) 用途AES-XTS:
$ diskutil coreStorage list (...) +-> Logical Volume Family D1C4665F-EAC8-4DAB-B392-634842A59559 ---------------------------------------------------------- Encryption Status: Unlocked Encryption Type: AES-XTS (...)
Cryptoloop 和 Loop-AES 似乎都不支援它。
Cryptoloop 的後繼者,dm-crypt
也無法讀取加密的 HFS+。
但在所有希望破滅之前:
一組密碼學專家創建了
vfdecrypt
(包含在 Ubuntu 包中dmg2img
,tar.gz 位於此處: http://code.google.com/p/iphone-elite/downloads/list),它解密加密的 FileVault 磁碟映像(它不適用於裝置檔案)。這個工具看起來很有前途,但不適用於我
Disk Utility
在 OS X 10.8.2「Mountain Lion」上建立的多個加密磁碟映像。其他人 (http://bre.klaki.net/blog/2011/08/17/)似乎在舊的加密影像上取得了成功。其他專家致力於專案
libfvde
(https://code.google.com/p/libfvde),其中包括fvdemount
用於讀取 FileVault 加密系統磁碟區的命令。這裡的限制因素是「系統體積」。它不支援可移動媒體上的分區。如果您好奇,說明如下: 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
強制使用長密碼不僅用於加密,還用於解密,儘管您可能無法控制要解密的分割區。您只能透過下載並編輯原始程式碼並重新編譯來解決這個麻煩。 (其他發行版,例如 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
軟體包不是使用循環 AES。
Loop-AES 使用幾個修改的使用者空間工具(mount
、umount
、losetup
和swapon
,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
.
答案2
其實有Java應用程式hfs資源管理器它能夠打開加密.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
也不適合我。