Смонтировать зашифрованный HFS в Ubuntu

32116
pagid

Я пытаюсь смонтировать зашифрованный раздел 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. 

Поэтому я попытался ввести его дважды, но это приводит к следующему:

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

Какие-либо предложения?

30
Не уверен, что это имеет значение, но вы пробовали `aes256` вместо` aes-256`? Ansgar Wiechers 11 лет назад 0
да - одинаковый результат для обоих - даже простое использование "aes" дает одинаковый результат pagid 11 лет назад 0

2 ответа на вопрос

55
jaume

You can't mount an HFS+ partition encrypted in OS X using mount's option encryption=aes. The reason is that encrypted HFS+ partitions and volumes use a proprietary format.

Neither Cryptoloop nor Loop-AES, which are the underlying decryption methods used by mount and encryption, understand that format.

This is what I found out:

Cryptoloop can mount partitions or disk images encrypted as a single AES block (this is called single-key mode, see 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 can mount single-key (like above) and multi-key encrypted partitions or disk images:

 /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| | | +------------+ | | | ... | | | +------------+ +-------------+ 

On the other hand, an encrypted HFS+ partition:

Cryptoloop's successor, dm-crypt, can't read encrypted HFS+ either.

But before all hope is gone:

As for the error messages you encountered:

First error:

Error: Password must be at least 20 characters. 

Surprisingly, mount enforces long passwords not only for encryption but also for decryption, although you may not have control over the partition to decrypt. You can only get around this nuisance by downloading and editing the source and recompiling. (Other distributions, like SuSE Linux Enterprise Server (SLES), don't have this restriction.)

Second error:

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

You need to load the Cryptoloop kernel module:

$ sudo modprobe cryptoloop 

because although you installed package loop-aes-utils you are not using Loop-AES.

Loop-AES uses several modified user space tools (mount, umount, losetup, swapon and swapoff, provided by loop-aes-utils) and a modified loop.ko kernel module. Recent Ubuntu versions compile an unmodified loop module into the kernel:

 $ 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 

so Loop-AES can't be used on Ubuntu out of the box. You need to patch and recompile the kernel as explained here: http://loop-aes.sourceforge.net/loop-AES.README. That's why mount still needs Cryptoloop.

If you still get a similar error message after loading cryptoloop.ko the encryption type may be not recognized. For example, my Ubuntu 12.04 didn't recognize aes-128, but aes. SLES only recognizes aes-128.

+1 за подробную информацию и детали, предоставленные в ответе. Daemon of Chaos 11 лет назад 1
Это просто феноменальный ответ. Исключительно информативный, подробный и, по-видимому, чрезвычайно хорошо проработанный. Спасибо за обмен Jaume, большое спасибо. chmac 11 лет назад 4
Просто хотел отметить, что я только что попробовал это на OSX 10.10.3 с успехом. Я также обнаружил, что процесс расшифровки диска не будет прогрессировать, когда я много работаю с компьютером. Однако, когда ноутбук был подключен к электросети и подключен накопитель, я оставил крышку закрытой (полный сон), и она завершила расшифровку, пока он спал в PowerNap. voxobscuro 9 лет назад 3
14
Strongly Typed

На самом деле, есть 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 

Он запрашивает пароль, а затем показывает содержимое изображения. Существует опция (Инструменты -> создать образ диска), которая создает расшифрованный образ диска, который затем можно смонтировать с помощью инструментов hfs из linux.

$ mount vault_decrypted.dmg /mnt/hfs/ 

Работали даже файловые системы HFS + Journaled. Единственным ограничением является то, что поддержка записи в файловые системы HFS + J по умолчанию отключена в Linux.

Это демонстрирует, что шифрование .dmgпонимается hfsexplorerи может быть реализовано в mountкоманде. С созданием незашифрованного .dmgможно в конечном итоге смонтировать образ в Linux.

vfdecrypt у меня тоже не сработало.

Интересно, спасибо за ваш ответ. Jeff Burdges 9 лет назад 0

Похожие вопросы