Я пытаюсь смонтировать зашифрованный раздел 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
Какие-либо предложения?
решение1
Тыне могу смонтироватьраздел HFS+, зашифрованный в OS X с помощью mount
опции encryption=aes
. Причина в том, что зашифрованные разделы и тома HFS+ используютзапатентованныйформат.
Ни одинКриптопетляниПетля-AES, которые являются основными методами дешифрования, используемыми mount
и 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
(входит в пакет Ubuntudmg2img
, 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/Монтаж#Монтаж_системного_тома. Исходный код можно скачать здесь: 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
вынес использованием Loop-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-приложение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
Мне тоже не помогло.